Zmena textúr addonu

Z Armed Assault nápověda

Přejít na: navigace, hledání
Retextúrovací tutoriál

Obsah

Úvod

V tomto rozsiahlom tutoriále si ukážeme základný postup pri editácii textúr addonu, tzv. retextúrovanie. Je to najzákladnejší a najjednoduchší postup ako si "vyrobiť" vlastný addon.
Pomocou nižšie popísaného postupu môžete efektívne zmeniť textúry takmer akéhokoľvek addonu bez priameho zásahu na modeli za použitia programu Oxygen 2.
Tento tutoriál je teda určený hlavne pre tých čo nemajú skúsenosti s týmto programom, resp. nepotrebujú zasahovať do samotného modelu.

 ! Skôr ako začnete s takouto editáciou, zazálohujte si najskôr pôvodný súbor addonu !

Na začiatok si najskôr vysvetlíme základnú štruktúru väčšiny archívov addonov, ktoré sú označované príponou *.pbo.
V tomto archíve po rozbalení zvyčajne nájdete samotný 3D model addonu (objektu), ktorý má príponu *.p3d.
Ďalej je tu nevyhnutný konfiguračný súbor s označením config.cpp a jeho prípadné hlavičkové súbory (prípona *.h) s externými definíciami. Tento konfiguračný súbor môžete niekedy nájsť s príponou *.bin, čo znamená že súbory v *.pbo archíve boli pri pakovaní binarizované. Ako dostať súbor do editovateľnej formy si popíšeme neskôr.
A nakoniec sa môžete stretnúť s adresármi v ktorých sa nachádzajú textúry (prípony *.paa a *.pac), prípadne ešte s adresármi v ktorých sú napríklad doplňujúce skripty (prípony *.sqs a *.sqf). Takto to ale nemusí byť vždy (aj keď je to zaužívané pravidlo). Celá štruktúra adresára a usporiadanie súborov v ňom závisí iba od pôvodného autora .

Nás v tomto tutoriále budú zaujímať iba súbory *.p3d a *.paa (prípadne *.pac), ale o tom neskôr.

Programové vybavenie

Teraz si stručne popíšeme nutné programové vybavenie.
Okrem Kegetysovho nástrojčeka pre prácu s archívmi PBO a oficiálneho prehliadača textúr od BI máte v podstate voľnú ruku vo výbere ostatných programov. Ja tu uvediem iba pár príkladov.

Práca s archívmi *.pbo


  • cpbo - rozpakovanie/pakovanie PBO súborov
  • BinPBO – oficiálny nástroj pre pakovanie adresárov addonov a ich podpisovanie

Práca s textúrami *.paa, *.pac a *.png


  • TexView 2 – oficiálny prehliadač textúr používaný na základnú konverziu
  • Gimp – úprava grafiky v niekoľkých formátoch (pre nás bude zaujímavý formát PNG)
Poznámka:
Ak ste ale šťastnými vlastníkmi legálnej verzie (alebo dema) programu Adobe Photoshop môžete využiť priamo Kegetysov PAA PlugIn pre tento program a tým vám odpadne použitie programu TexView 2. Tento plugin je súčasťou archívu Kegetysových nástrojov (cpbo, UnRap, ...).

Práca s modelom *.p3d


  • XVI32 – tento HEX Editor nám poslúži na manuálnu zámenu textúr v HEX-a režime (prípadne HxD)

Práca so súbormi *.cpp a *.csv


  • PSPad – programátorský textový editor (prípadne Notepad++)
  • UnRap - prípadné dekódovanie binarizovaného súboru config.bin

Rozbalenie archívu addonu

Pre potreby nášho tutoriálu si na ukážku skopírujeme z originálneho adresára Addons súbor air.pbo v ktorom sa nachádza model vrtuľníka UH-60 Blackhawk. Na tomto addone si budeme postupne ukazovať všetky kroky editácie pri retexe.

Na rozpakovanie súboru addonu použijeme programček cpbo.
Prekopírujte si teraz tento DOS-ovksý program aj spolu s kópiou súboru air.pbo do koreňového adresára disku C:/.

Pripravené súbory na hlavnom disku C:\
Zvětšit
Pripravené súbory na hlavnom disku C:\

V menu Štart vyberte Spustit (Run) a do riadku vpíšte jednoducho cmd.

Spustenie príkazového riadku
Zvětšit
Spustenie príkazového riadku

Týmto spustíme príkazový riadok systému Windows.

Po spustení budete mať pravdepodobne zadanú cestu do adresára svojich dokumentov, tak jednoducho použite štandardný DOS-ovksý príkaz cd .. c:\.
Ak sa vám nedarí nájsť na klávesnici opačné lomítko (\ - musíte sa prepnúť na anglickú klávesnicu pomocou Alt + Shift), použite nasledujúci o pár príkazov zdĺhavejší postup.
Napíšte iba cd .. a potom stlačte klávesu Enter. Takto sa postupne presuniete o adresár bližšie (späť) ku koreňovému adresáru disku C:\ kam ste skopírovali súbory cpbo a air.pbo.

Poznámka:
Po každom zápise nových príkazov stlačte pre ich vykonanie klávesu Enter

Až sa konečne dostanete na hlavný adresár disku, zobrazí sa iba C:\>.
Teraz môžete spustiť programček cpbo a nechať ho vytvoriť adresár so všetkými vyextrahovanými súbormi.
Dopíšte do riadku za C:\> nasledujúce parametre:

cpbo –e air.pbo
Poznámka:
Parameter –e znamená extrahovať-rozbaliť (extract) súbor s názvom air.pbo
Extrahovanie súborov pomocou cpbo
Zvětšit
Extrahovanie súborov pomocou cpbo

Celý adresár air.pbo sa po chvíli vyextrahuje do nového (cpbo programom vytvoreného) adresára s názvom air.
Z tohto adresára môžete kľudne vymazať všetko okrem súboru uh_60.p3d (čo je vlastne samotný model vrtuľníka) a adresára Data v ktorom sa nachádzajú textúry ktoré neskôr zmeníme a aplikujeme ich na model vrtuľníka.
Prekliknite sa teraz do tohto adresára a zasa vymažte všetko okrem týchto niekoľkých textúr vo formáte *.paa:

uh60_1_co.paa
uh60_2_co.paa
uh60_3_co.paa
uh60_4_co.paa
uh60_budici_co.paa

Iba s týmito textúrami budeme neskôr pracovať, takže iba tieto textúry nakoniec zameníme na pôvodnom modeli.

Model obsahuje ešte iné textúry (iného druhu), ale tie nie sú teraz podstatné a na modeli môže byť ich cesta nastavená defaultne na pôvodný zdrojový adresár.

Pre náš retextúrovaný vrtuľník si teraz vytvoríme zasa priamo na disku C:\ nový adresár.
Napríklad s názvom AMG_UH60.
Kde AMG bude iba ukážková skratka názvu Addon Maker Group a pre svoj addon použite samozrejme svoj vlastný TAG ktorý používate pri tvorbe misií a addonov.

Do tohto adresára teraz nakopírujte model vrtuľníka vo formáte *.p3d a všetkých päť potrebných textúr.

Pripravené súbory na editáciu
Zvětšit
Pripravené súbory na editáciu
Poznámka:

Ak by ste niekedy editovali textúry nejakého neoficiálneho addonu ktorého konfiguračný súbor config.cpp by ste našli po rozpakovaní vo formáte *.bin, použite iný Kegetysov nástrojček na "debinarizovanie" – UnRap.

Jeho použitie je jednoduché a intuitívne, takže ho tu nebudem popisovať. Proste len treba sledovať a čítať čo sa ma program pýta atď.


Identifikovanie textúr a ich premenovanie

My máme všetky potrebné textúry už vyhľadané a prekopírované vo svojom vlastnom adresári, ale ak sa stretnete s addonom ktorý nebude mať presne pomenované textúry (ktoré sa intuitívne hľadjú), jednoducho použijete HEX-editor. Ako, to si ukážeme v nasledujúcom postupe na príklade nášho vrtuľníka.

Spustite teda svoj editor (napríklad uvedený XVI32 alebo HxD) a súbor modelu vo formáte *.p3d iba jednoducho pretiahnite myšítkom do okna editora. Zobrazí sa kopec čísel, písmen a znakov. Ak máte nejaké základy informatiky, tak pravdepodobne poznáte číselné sústavy a táto tabuľka v ľavo vám určite napovie, že je to vlastne zoznam znakov v HEX-a kóde ktoré vidíte v pravom okne. V podstate to nie je ani dôležité, ale pri nejakých drobných ručných opravách je lepšie sa orientovať v tomto kóde.

Načítanie súboru *.p3d do HEX-editora
Zvětšit
Načítanie súboru *.p3d do HEX-editora

Pustíme sa do vyhľadania požadovaných textúr.
Vieme že všetky na addone použité textúry majú formát *.paa, tak jednoducho vyhľadajte v menu HEX-editora položku SearchFind a zadajte iba .paa (aj s bodkou na začiatku).
Takto sa nám v otvorenom súbore zvýrazní prvé miesto v súbore s výskytom tohto stringu - reťazca znakov. V tomto prípade pracujeme so všetkými písmenkami, číslami, pomlčkami atď. v otvorenom súbore ako so znakmi.

Vyhľadávanie textúr v HEX-editore
Zvětšit
Vyhľadávanie textúr v HEX-editore
Poznámka:
Pri neoficiálnych addonoch sa väčšinou stretnete iba s malým množstvom textúr, takže v takomto prípade našťastie odpadá zdĺhavé hľadanie.

Do nejakého textového súboru (napríklad aj do obyčajného Notepadu) si postupne kopírujte všetky názvy nájdených textúr aj s celou cestou.
V tomto našom príklade si teda odpíšete:

ca\air\data\uh60_budici_co.paa

Samozrejme ak nájdete v súbore string s rovnakými znakmi, nemusíte si tento už zaznamenávať. Ide len o to aby ste si vytriedili zoznam všetkých textúr ktoré daný model používa.

Nakoniec by vám mal zostať iba tento zoznam pretože obsahuje zoznam textúr použitých iba na kamufláž (a nejaké tie doplnky):

ca\air\data\uh60_1_co.paa
ca\air\data\uh60_2_co.paa
ca\air\data\uh60_3_co.paa
ca\air\data\uh60_4_co.paa
ca\air\data\uh60_budici_co.paa

Keďže máme tieto textúry už prekopírované v našom adresári s názvom AMG_UH60, môžeme prikročiť k ich premenovaniu.
Všetky súbory (textúry a model) ponecháme v jednom adresári a nebudeme sa zbytočne zaťažovať ich rozdeľovaním do jednotlivých adresárov. Všetko ale znova závisí od tvorcu.
Môžete si ale samozrejme vytvoriť samostatný adresár pre textúry, samostatný adresár pre scripty atď.

Ale teraz už spomínané premenovanie.
Tomuto kroku retexturizácie treba venovať maximálnu pozornosť a to z toho dôvodu, že ak by ste v modeli zmenili názov textúry za svoj vlastný (so zmenenou cestou), ale s rozdielnym počtom znakov ako mala pôvodná textúra, addon by bol v hre nefunkčný a všetko by ste museli robiť od začiatku.
Čo to znamená ... pozorne sa zadívajte na tento malý príklad:

ca\air\data\uh60_1_co.paa
AMG_UH60\uh60_1_newte.paa

Prvý riadok je skopírovaný zápis pôvodnej textúry z originálneho modelu. Tento string má presne 21 znakov (ako znak sa počíta samozrejme aj _ a .).
Druhý riadok je príklad premenovania našej prvej textúry aj so zadaním novej cesty. Všimnite si že tento má taktiež 21 znakov.

 ! Pri premenovávaní jednotlivých textúr musíte bezpodmienečne dodržiavať pôvodný počet znakov v názvoch nových textúr a to samozrejme aj so zadanou novou cestou k nim.

Ďalšie textúry by sa dali premenovať napríklad takto:

ca\air\data\uh60_2_co.paa
AMG_UH60\uh60_2_newte.paa
ca\air\data\uh60_3_co.paa
AMG_UH60\uh60_3_newte.paa
ca\air\data\uh60_4_co.paa
AMG_UH60\uh60_4_newte.paa
ca\air\data\uh60_budici_co.paa
AMG_UH60\uh60_newt_cockpit.paa

Dúfam že som to dosť názorne popísal.
Inak by ste použitím stringu s iným počtom znakov v podstate prepísali jednotlivé bajty v súbore modelu, ktoré by s danou textúrou (alebo textúrami všeobecne) nemuseli mať nič spoločné a mohli by to byť vlastne časti kódu definujúce nejaké LOD-y modelu.

Konverzia textúr a ich úprava

Potrebné textúry máme premenované, môžeme sa teda pustiť do ich úprav.
Najskôr si všetky textúry prevedieme do editovateľného formátu, alebo ako som už spomínal, ak ste šťastným vlastníkom legálnej verzie programu Adobe Photoshop, môžete tieto textúry upravovať priamo v ňom za pomoci Kegetysovho PAA pluginu.
Väčšina z vás ale zrejme využije služieb nejakého freewarového grafického editora a tak si tu ukážeme základnú úpravu v programe Gimp.

Prvý krok bude konverzia z formátu *.paa do *.png.
Spustite oficiálny BI nástroj TexView 2 a načítajte si v ňom niektorú z textúr. Napríklad uh60_2_newte.paa (naša nová premenovaná textúra).
Z menu File vyberte položku Save As a dole v políčku s názvom len prepíšte príponu súboru na png a následne na to kliknite na Save.

Konverzia na formát *.png
Zvětšit
Konverzia na formát *.png

A je to ... textúra je uložená vo formáte *.png.
Takto postupne prekonvertujte všetky textúry s ktorými chcete pracovať.

Ak všetko prebehlo v poriadku, spustite Gimp a myšítkom si do hlavného okna pretiahnite napríklad textúru s názvom uh60_3_newte.png.

V ukážke vidíte že som sa pohral iba s farbou modelu a pridal som malý nápis na prednú časť kabíny. Porobte si na každej textúre úpravy podľa svojej chuti a postupne uložte všetky upravené textúry.

Úprava textúry v Gimp-e
Zvětšit
Úprava textúry v Gimp-e

Ak ste so svojou prácou spokojný, môžeme prejsť ku konverzii textúry späť do formátu *.paa.
Princíp je úplne rovnaký. V programe TexView 2 si znova otvorte požadovanú textúru (vo formáte *.png) a uložte ju (Save As) s príponou *.paa, pričom budete samozrejme musieť potvrdiť prepísanie pôvodného súboru.

Konverzia na formát *.paa
Zvětšit
Konverzia na formát *.paa

Po prekonvertovaní všetkých PNG textúr ich môžete kľudne z adresára zmazať.

Zámena textúr na zdrojovom modeli

Textúry máme pripravené, môžeme teda pristúpiť k ich zámene priamo na modeli.
Znova spustite svoj HEX-editor a myšítkom presuňte súbor *.p3d do jeho okna.
V menu Search vyberte Replace.

Do horného políčka vpíšte názov originálnej textúry aj s celou cestou ako je to vidieť na obrázku. Do spodného políčka zasa samozrejme názov a cestu k našej zmenenej textúre.
Takto zabezpečíme kompletné prepísanie všetkých vyskytujúcich sa stringov s informáciou o umiestnení pôvodných text úr, našim novým stringom a to v celom súbore naraz.

Zámena textúr na modeli
Zvětšit
Zámena textúr na modeli

Potom stačí kliknúť už iba na tlačítko Replace All.

Ešte upozorním na skutočnosť, že je dobré pri takejto zámene stringov mať umiestnený kurzor na začiatku súboru (Adresa: 0), pretože niektoré editory môžu prevádzať premenovanie od aktuálnej pozície kurzora.
V programe XVI32 je to našťastie ošetrené nastaviteľnou funkciou (ako je videť na obrázku - Scope from) kde si môžete vybrať začiatok vykonávanej operácie - od začiatku súboru, alebo od aktuálnej pozície kurzora.

Po chvíli vyskočí malé okienko s informáciou o počte úspešne nájdených a prepísaných stringov. Pri niektorých rozsiahlych addonoch sa vám môže naskytnúť pohľad na impozantné čísla, takže môžeme byť iba radi že väčšina editorov obsahuje aj túto automatickú funkciu.

Rovnakým spôsobom postupujte aj pri všetkých ostatných textúrach.
Po dokončení sa ešte môžete uistiť že vám nezostala na modeli nejaká nezmenená textúra a to tak že jednoducho vyberiete z menu Search - Find a zadáte vyhľadanie jednej z pôvodných textúr.
Ak program nenájde žiadnu takúto textúru, malo by byť teda všetko v poriadku.

config.cpp a stringtable.csv

Môžeme prejsť k editácii jednoduchého konfiguračného súboru s vyhradeným názvom config.cpp.
Ak máte aspoň nejaké základy objektového programovania, nemal by byť pre vás žiadny problém zostaviť takýto súbor.
Tu je príklad súboru zostaveného špeciálne pre tento tutoriál:

// Sikorsky UH-60 Blackhawk (Retextured original BI UH-60 Blackhawk)
// Author: AMG
// Version: final v1.0
// Contact: http://help.bigames.info
// Minimal version of ArmA: 1.08

#define _arma_ 

#define TEast		0
#define TWest		1
#define TGuerrila	2
#define TCivilian	3
#define TSideUnknown	4
#define TEnemy		5
#define TFriendly	6
#define TLogic		7 

#define true		1
#define false		0

#define private		0
#define protected	1
#define public		2

class cfgPatches
  {
   class AMG
     {
      units[] = { "AMG_UH60" };
      requiredVersion = 1.08; // minimalna verzia hry ktora bude vyzadovana pre pouzitie addonu
     };
  };

class cfgVehicleClasses 
  {
   class AMG
     {
      displayName = "AMG Planes"; // definicia triedy ktoru hrac uvidi v editore - v menu dostupnych jednotiek
     };
  };

class cfgVehicles //zakladna definicia triedy 
  {
   class UH60; // hlavna BI trieda
   class AMG_UH60 : UH60 // odvodena trieda od hlavnej
     {
      scope = 2; // jednotka bude pristupna hracovi v editore
      vehicleClass = "AMG";
      model = "\AMG_UH60\uh_60.p3d"; // linka na vlastny model vrtulnika
      displayName = $STR_NAZOV; // odkaz na string s nazvom vrtulnika

   class library // definovanie triedy pre popis v zbrojnici
     {
      libTextDesc = $STR_POPIS; // odkaz na string samotneho textu ktory bude vidiet v zbrojnici 
     };
  };
};

Podľa tohto vzoru si teda vytvorte vlastný config.cpp a prípadne ak pracujete na inom addone, využite potrebné referencie na oficiálnej wikipédii: config.cpp.

Určite ste si všimli že máme v konfiguračnom súbore uvedené dva odkazy na stringy v súbore s vyhradeným názvom stringtable.csv.
Nadefinujeme si teda aj tieto dva stringy.
Príklad:

LANGUAGE,"English","Czech"

STR_NAZOV,"UH-60 AMG","UH-60 AMG"
STR_POPIS,"This addon was created with helpful tutorial on unofficial czecho-slovak online help for ArmA – http://help.bigames.info","Tento addon bol vytvorený za pomoci tutoriálu na neoficiálnej čeko-slovenskej online nápovede pre ArmA - http://help.bigames.info"

Obidva súbory (config.cpp a stringtable.csv) následne uložte samozrejme do adresára nášho addonu (AMG_UH60).

Pakovanie a podpísanie addonu

Všetky nevyhnutné kroky máme za sebou, môžeme konečne spakovať všetky súbory do jediného archívu *.pbo.

Na pakovanie addonu môžeme znova použiť programček cpbo, tentoraz ale s trocha inými parametrami, alebo oficiálnu tzv. "baličku" – BinPBO a použiť tak zároveň aj svoj vlastný podpisový kľúč pre addony.

V prípade použitia programu cpbo postupujte nasledovne. Znova spustite príkazový riadok systému Windows - ako je to popísané na začiatku tohto tutoriálu a po presunutí sa na koreňový adresár disku C:\ zadjte tieto parametre:

cpbo –p AMG_UH60.pbo
Poznámka:
Parameter –p znamená spakovať-zabaliť (pack) všetky súbory v zadanom adresári AMG_UH60
Pakovanie súborov pomocou cpbo
Zvětšit
Pakovanie súborov pomocou cpbo

Program potom vytvorí priamo na disku C:\ nový súbor s názvom AMG_UH60.pbo, čo je vlastne náš hotový retextúrovaný addon vrtuľníka.

V prípade použitia programu BinPBO využite tieto stručné a výstižné manuály pre pakovanie a podpisovanie addonov.

Použitie addonu

Addon vrtuľníka môžete teraz kľudne presunúť spolu s podpisovým kľúčom (pri použití podpisového kľúča a BinPBO) do adresára hry s vyhradeným názvom Addons, alebo do vášho vlastného Mod adresára ktorý používate na testovanie addonov.

Po spustení hry sa prepnite do Editora a v menu BLUFOR nájdete triedu AMG Planes a náš retextúrovaný vrtuľník UH-60 AMG.

Sprístupnenie novej jednotky v editore hry
Zvětšit
Sprístupnenie novej jednotky v editore hry

Dúfam že všetko prebehlo bez problémov a vy sa kľudne môžete preletieť nad Sahrani.

 ! Skôr ako sa odhodláte zverejniť svoje retexturované dielko, uistite sa že máte dostatočne dôveryhodným spôsobom podložený súhlas k editácii od autora originálneho addonu a nezabudnite ho taktiež uviesť v priloženom ReadMe súbore a to aj keď je autorom originálu spoločnosť Bohemia Interactive.

Odkazy

Kegetysove nástroje (cpbo, UnRap)
TexView 2
BinPBO
config.cpp
stringtable.csv
Mod adresáre
Podpisovanie addonov

Osobní nástroje