Units conversion guide using blender by zjb (video
Transkrypt
Units conversion guide using blender by zjb (video
Z cyklu „niedzielny moder” - podstawy modelowania czyli „przybyli Ułani pod okienko” © 2011 bjz Spis treści 1 Wstęp............................................................................................................................................1 2 Czego potrzebujemy.....................................................................................................................1 3 Procedura konwersji w zarysie.....................................................................................................2 4 Rozgrzewka - wstępne poprawki..................................................................................................2 5 Operacja "KASTRAT"..................................................................................................................3 6 Łączymy model i wypalamy nowe tekstury.................................................................................5 7 Finał..............................................................................................................................................7 8 Chcemy więcej (animacji) !..........................................................................................................8 9 A Huzar?.....................................................................................................................................10 10 Podsumowanie..........................................................................................................................10 11 Bibliografia...............................................................................................................................11 1 Wstęp Ten poradnik powstał bazując na efektach cięzkiej pracy uzdolnionych moderów z civfanatics a w szczególności: http://forums.civfanatics.com/showthread.php?t=394056 (Deliverator) oraz http://forums.civfanatics.com/showthread.php?t=392985 (lemmy101) Jeden z użytych programów (Nexus Buddy) jest autorstwa lemmy101 i CaptainBinky i znacznie ułatwia dodawanie przygotowanych modeli do modyfikacji.Ten poradnik nie będzie jednak kopią (bądź tłumaczeniem) powyższych wątków. Po pierwsze robimy wszystko na podstawie Ułana, po drugie oprócz wyjaśnienia techniki konwersji, mamy prosty przykład uproszczania modelu, po trzecie popełnimy kilka edukacyjnych błędów i w końcu po czwarte - nasz poradnik to właściwie poradnik wizualny. Tekst będzie pełnił tylko rolę pomocniczą (choć pewne kwestie zostaną wyjaśnione bardziej szczegółowo). Wszystkich zainteresowanych pogłębieniem wiedzy zapraszam do zacytowanych powyżej wątków na civfanatics. Sam proces konwersji (o ile nie ma problemów z wejściowym modelem) jest naprawdę bardzo prosty. 1 2 Czego potrzebujemy 1. Python http://www.python.org/ 2. PyFFI http://sourceforge.net/project/platformdownload.php?group_id=199269 3. Blender http://www.blender3d.org/ 4. Blender NIF Scripts http://sourceforge.net/projects/niftools/files/blender_nif_scripts/2.5.x/2.5.05/blender_nif_scripts2.5.5.90a8d2f-windows.exe 5. NifSkope http://niftools.sourceforge.net/wiki/NifSkope 6. IndieStone Nexus Buddy http://forums.civfanatics.com/showthread.php?t=392985 7. GIMP wraz z wtyczką pozwalająca na pracę z plikami dds 8. Paczka z Ułanem (civ4) oraz animacje kawalerii (civ4) - wszystko razem tutaj: www.fiz.proste.pl/civ/uhlan_tutorial_pack.rar Pierwsze 4ry rzeczy dają nam przyjemne i darmowe narzędzie do tworzenia grafiki 3D (Blender) wraz z możliwością importu interesujących nas plików (NIF). NifSkope pozwala nam uporządkować plik NIF (przydatne w przypadku Huzara, tutaj niekoniecznie) oraz łatwo i wygodnie testować animacje. Ponadto możemy łatwo wyekstrachować samą siatkę (znowu Huzar) z modelu. Nexus Buddy to generacja plików GR2 oraz automatyczne budowanie projektu dla ModBuddy'ego. Uwaga! Przed rozpoczęciem pracy należy niestety wypakować wszystkie grafiki z Cywilizacji (wymaga to kilku dodatkowych gigabajtów). W tym celu odpalamy Nexus'a (z SDK), uruchamiamy skrypt wypakowujący (nexus->scripts browser->extract PAK files) i możemy pójść do kuchni przygotować sobie kolację. Po powrocie, syci i pełni zapału przystępujemy do pracy. 3 Procedura konwersji w zarysie Symbolicznie rzecz ujmując: NIF (civ4) -> FBX -> GR2 (civ5) Proste prawda? Niestety Blender nie współpracuje za dobrze z wieloma siatkami na jednym szkielecie (przy eksporcie do fbx) a więc potrzebujemy zmodyfikować trochę nasz model. Ponadto przy każdym z kroków tej konwersji może zdarzyć się problem. Najwyraźniej NIF widziany przez Blendera i 3D Studio (tam chyba powstały polskie modele) wygląda troszeczkę inaczej. Dlatego będziemy ostrożni. Co więcej, modele civ5 wymagają aby nasz szkielet miał nie więcej jak 32 segmenty (Huzar przykładowo ma ponad 60). Powyżej tej wartości nie mamy pewności że model będzie się zachowywał poprawnie (najwięcej udało mi się "przemycić 36 segmentów). Najlepiej więc "przycinać" systematycznie i sprawdzać efekty. W przypadku Ułana wystarczy wyciąć 3 segmenty. 2 4 Rozgrzewka - wstępne poprawki Film: www.fiz.proste.pl/civ/uhlan_tut_part1_edited_small.avi Potrzebne skróty: TAB - przełączamy pomiędzy object mode / edit mode a - zaznaczamy/odznaczamy wszystko RMB - zaznaczenie obiektu pod wskaźnikiem myszki g - przesuwamy zaznaczony obiekt g + x (lub y lub z) - j.w ale wzdłuż wybranej osi ctrl-a (apply scale and rotation) - aplikujemy macierze transformacji. Ważne jeśli modyfikujemy cokolwiek zaimportowanego z zewnątrz inaczej po naszych poprawach model się może "rozsypać" po eksporcie. Krok po kroku: 1.Wczytujemy model (kawaleria.nif) do NifSkope a następnie od razu zapisujemy jako uhlan.nif (NifSkope automatycznie dokona kilku poprawek). 2.Wczytujemy model do blendera (import) używając opcji jak poniżej: 3 3.Aplikujemy macierze transformacji (ctrl-a) na każdym z obiektów. 4.Przesuwamy Ułana tak aby wpasował się w swój szkielet. Powtarzamy ze strzelbą, modyfikujemy także lekko ustawienie konia. 5.Zaznaczamy po kolei każdy obiekt, przechodzimy w tryb edycji (tab) i wykonujemy: mesh>vertices->remove doubles (nakładające się na siebie węzły zostaną sklejone w jeden). 6.Zaznaczamy wszystko ("a" w "object mode") i eksportujemy jako "uhlan2.nif" 7.Wczytujemy do NifSkope i sprawdzamy animacje. Jeśli wszystko gra przechodzimy do kolejnej częsci. 5 Operacja "KASTRAT" Film: www.fiz.proste.pl/civ/uhlan_tut_part2_edited_small.avi Potrzebne skróty: shift+LMB - zaznaczanie lassem (lasso select) Krok po kroku: Zaczniemy od usunięcia nadwyżkowych kości. Stosując regułę mniejszego zła decydujemy się "przyspawać" koniowi ogon do zadu. Dodatkowo usuniemy też kość sterującą upadkiem strzelby 4 (zostanie przyklejona do dłoni). 1. Klikamy RMB na szkielecie i przechodzimy w tryb edycji (TAB). Teraz możemy klikać na poszczególne części szkieletu i widzimy ich nazwy. Przechodzimy do ogona - jak widać usunięcie go daje nam w sumie aż 2 segmenty zysku. Widzimy też że najbliższa kość do której możemy "przyszyć" gdzieś pozbawioną rodzica część siatki to "HorseBip Pelvis". 2. Czas na kastrację (po zaznaczeniu - "del"): 3. To samo powtarzamy z ostatnim segmentem prawej ręki. 4. Przełączamy się (TAB) do "object mode", klikamy na koniu i znowu "edit mode" (TAB). Powinna pojawić się siatka. U dołu rozwijamy "vertex groups". Jak widzimy grupy mają takie same nazwy jak segmenty szkieletu które przed chwilą przeglądaliśmy. Przyporządkowanie poszczególnym kościom odpowiednich grup elementów siatki nazywamy usztywnianiem (rigging). Możemy to zobrazować przechodząc z powrotem do "object mode", zaznaczając szkielet, wchodząc w "pose mode" i przesuwając którąś z kości (nie pokazane na filmie). Jak widać siatka rozciąga się podążając za ruchem wybranego segmentu. Co więcej jedne elementy rozciągają się więcej inne mniej - oprócz przyporządkowania siatki do szkieletu musimy więc zdefiniować na ile dany element szkieletu wpływa na dany element siatki ("paint weighting" w blenderze). Na szczęście możemy to robić też automatycznie ("bone heat" w blenderze) ale w naszym przypadku akurat nie będziemy musieli ponieważ zajmujemy się mało istotnym elementem modelu będącym "końcówką" szkieletu. Jest to jednak ważne w przypadku bardziej skomplikowanych modyfikacji i dlatego o tym wspominam (Huzar). 5 5. Pobawimy się jeszcze trochę grupami siatki. Niedaleko mamy opcje "select", "deselect" oraz "assign" , "remove", "new" i "delete". Wybieramy którąś z grup z rozwijanej listy i klikamy "select" - powinny podświetlić się elementy należące do tej grupy (a więc sterowane przez kość/segment o tej samej nazwie). Teraz klikając "remove" usuniemy zaznaczone elementy siatki z tej grupy. Możemy też np. zaznaczyć ręcznie więcej elementów i dodać je do tej grupy "assign". Możemy też stworzyć zupełnie nową grupę "new" lub usunąć już istniejącą "delete". Wybierająć z listy grup ogon konia "tail" zobaczymy te elementy, które musimy przyłączyć do "zadu" ( w tym wypadku będzie to grupa "pelvis"). 6. Przechodzimy do widoku bocznego (side view) i zaznaczamy ogon (lasso select). Obracamy widok sprawdzając czy wszystko zostało poprawnie zaznaczone. Niestety nie, a więc powtarzamy operację z włączonym "occlude background geometry". Teraz już wszystko wygląda poprawnie. 7. Wybieramy z listy grup: "HorseBip Pelvis" i klikamy "assign" a następnie "select" aby zobaczyć pełną grupę. 8. Eksportujemy do uhlan2.nif, otwieramy w NifSkope, dodajemy animacje i co widzimy? Ułan przewraca się z wdziękiem ale strzelba jak zaczarowana wisi w powietrzu. No tak, skasowaliśmy przecież kość sterującą jej upadkiem! No to wracamy do blendera, zaznaczamy strzelbę (w "object mode"), przechodzimy do "edit mode", z listy grup wybieramy... no właśnie co? Lista jest pusta, ponieważ straciliśmy zupełnie powiązanie z modelem. To nic, wracamy do szkieletu i sprawdzamy nazwę kości sterującej dłonią. Znowu idziemy do modelu strzelby i teraz klikamy na "new" pod rozwijaną listą i wpisujemy "Bip01 Hand.R" (dokładnie tak jak nazywa się sprawdzony przed chwilą segment). Klikamy "assign" (strzelba powinna być zaznaczona!). 9. Znowu testujemy model w NifSkope - tym razem wszystko powinno być w porządku - Ułan zachowuje się jak na Polskiego żołnierza przystało - nie puszcza swojej broni aż do śmierci. 6 Łączymy model i wypalamy nowe tekstury Film: www.fiz.proste.pl/civ/uhlan_tut_part3_edited_small.avi Potrzebne skróty: ctrl+j - łączenie dwóch elementów ctrl+c - kopiowanie s - skalowanie s + wartość - skalowanie o daną wartość np s + 0.5 pomniejsza obiekt 2 razy Krok po kroku: 1. Wracamy do blendera i przyłączamy wszystkie siatki do jednej. Wciskamy shift i używająć RMB (w "object mode") zaznaczamy wpierw konia potem Ułana i wciskamy ctrl-J i potwierdzamy ("Join selected meshes"). Powtarzamy to ze strzelbą (najpierw zaznaczamy strzelbę!). 2. Teraz mamy problem, bo choć jeszcze tego nie widać to straciliśmy tekstury. Musimy je na nowo rozplanować. Na szczęście znowu pomoże nam sam Blender ("texture baking"). Zaczniemy od skopiowania istniejącej tekstury. Przechodzimy do "edit mode", zaznaczamy wszystko i klikamy "new" w dolnym oknie w dziale "mesh" obok "UV texture". Model powinien zmienić kolor na 6 jednolity biały a poniżej UVTex będziemy mieć UVTex.001. Teraz w prawym okienku blendera zmieniamy widok na "UV/Image editor". Wracamy do modelu - powininen być cały zaznaczony wciskamy "ctrl-c" i wybieramy "TexFace UVs from layer", następnie "UVTex" i po tej operacji naszym oczom po prawej stronie ukaże się kompletny bałagan. Właśnie rozwinęliśmy siatkę tak aby można było nałożyć na nią teksturę, niestety poszczególne części należące do różnych siatek wcześniej nakładają się na siebie i stąd bałagan. 3. Na szczęście każdej siatce przypisany był inny materiał. W dolnym oknie w dziale "link and materials" możemy łatwo przełączać pomiędzy nimi. Wtedy w prawym oknie zostaną nam elementy siatki związane tylko z danym materiałem. Teoretycznie powinniśmy wszystko rozłożyć na części pierwsze i poskładać tak aby mieściło się w ramach obrazu po prawej stronie. Tutaj pójdziemy na łatwiznę i przeskalujemy tylko wszystkie elementy i rozmieścimy tak aby nie stykały się ze sobą. Używamy w tym celu operacji skali (s + wartość). Dwa razy pomniejszamy ułana i umieszczamy w jednym z rogów, w drugim dwa razy pomniejszonego konia i w końcu dołączamy pomniejszoną strzelbę (3 razy) tak aby na koniec wyglądało to mniej więcej tak: Jak widzimy nie wygląda to ani zbyt ekonomicznie ani inteligentnie. Strzelba która nie składa się ze zbyt wielu elementów ma do dyspozycji prawie taką samą przestrzeń jak koń czy sam Ułan. Zdecydowanie powinniśmy spędzić więcej czasu nad tą operacją - pomniejszyć elementy składające się z gęstszej siatki mniej a takie jak strzelba - więcej i rozplanować wszystko tak aby zajmowało całą dostępną przestrzeń (jak widać sam ułan składa się z kilkunastu elementów które możemy niezależnie przesuwać i skalować). To już jednak zostawiam czytelnikowi. Z drugiej strony jednak modele w civ5 są naprawdę bardzo małe i niewiele widać na nich szczegółów nawet przy maksymalnym powiększeniu więc nie wiem czy warto marnować na to czas. 4. Wypalimy naszą teksturę na nowym obrazku. W tym celu klikamy w prawym oknie na "Image" i 7 "new", ustawiamy rozdziałkę na 256x256. Następnie wracamy do modelu i upewnieamy się ze jest zaznaczony zarówno w "edit mode" jak i "object mode". Teraz wybieramy z górnego menu "render", "bake render meshes" i "textures only". Powinniśmy zobaczyć w prawym okienku że na naszej siatce mamy odpowiednio dopasowane tekstury. W prawym oknie wybieramy "image">"save" i zapisujemy w domyślnym formacie jako "uhlan_textures_all". 5. Kasujemy wszystkie materiały ("link and materials" u dołu) oprócz pierwszego oraz przyporządkowujemy (assign) całą siatkę ("edit mode", "select all" - "a") do materiału pierwszego. 6. Kasujemy definicję tekstury "UVTex" i zmieniamy nazwę "UVTex.001" na "UVTex". 7. Przełączamy prawe okienko na "Scripts" i eksportujemy Ułana jako "uhlan2.nif", następnie ładujemy ten plik w NifSkope 8. W GIMPI'e odczytujemy nasz plik z teksturami i zapisujemy w formacie DDS (kompresja DC3/BXT5) 9. W NifSkope rozwijamy drzewko modelu aż dojdziemy do : scene root->CavalryRider01>NiTexturingProperty->NiSourceTexture i tam ładujemy przed chwilą zapisaną teksturę (dds). 10. Podziwiamy naszego Ułana przez chwilę i przechodzimy do ostatniej części poradnika. 7 Finał Film: www.fiz.proste.pl/civ/uhlan_tut_part4_edited_small.avi W skrócie: 1. Czas na słodką konsumpcję owoców naszej pracy. Przechodzimy do blendera i czyścimy wszystko ("a" w "object mode" i "del", może przedtem warto zapisać to w formacie blendera...). Następnie importujemy do blender'a nasz model jeszcze raz ("uhlan2.nif") ale tym razem wraz z animacją. Ja wybrałem animację spoczynkową: 8 2. Wciskamy ctrl + "strzałka w prawo" aby przejść do trybu edycji animacji. Wciskamy "play" i Ułan powinien nabrać trochę życia. 3. Wracamy do modelu (ctrl + "strzałka w lewo") i eksportujemy model do formatu fbx (wpierw zaznaczamy wszystko oczywiście). Przy eksporcie wybieramy "scene objects". 4. Teraz uruchamiamy ModBuddy'ego i tworzymy nowego moda. Wybieramy mu nazwę, wprowadzamy autora itd. i tak zostawiamy. 5. Uruchamiamy Nexus Buddy. Od razu zapyta się nas o podanie mu pliku fbx. No to wybieramy naszego świeżo przygotowanego Ułana. Teraz musimy już tylko przebrnąć przez kilka zakładek i gotowe. W pierwszej kilkamy u dołu na "CavalryRider01" i po prawej stronie wybieramy odpowiednią teksturę (domyślnie jest "Generic_Grey_8.dds"). 6. Druga zakładka to definicje animacji. Klikamy "add" i animacja zawarta w naszym modelu zostanie wykryta i dodana jako domyślna dla wszystkich akcji. Lista akcji znajduje się u pośrodku w lewej kolumnie. Poniżej mamy wygenerowany na tej podstawie plik fxsxml. Jak widzimy każda akcja posiada unikalny identyfikator za pomocą którego możemy skojarzyć ją z animacją. Tego możemy użyć później do dodania większej ilości animacji. Warto tutaj pobawić się chwilę aby zobaczyć jak zmienia się plik fxsxml kiedy modyfikujemy przyporządkowanie animacji (po kliknięciu jeszcze raz "add" ta sama animacja zostanie dodana drugi raz co pozwoli nam na zabawę). 7. W trzeciej zakładce możemy zdefiniować parametry naszej jednostki oraz jej modelu. Jako że o definiowaniu nowych jednostek wiemy już wszystko stąd http://forums.civ.org.pl/viewtopic.php? TopicID=8752 , to omówimy tylko pokrótce dział "Art info". Tutaj możemy zdecydować jaką domyślnie formacje będzie tworzyć jednostka, jaki dźwięk będzie wydawać, jak duża będzie itd... Na razie ustawiamy skalę na 3 (po to aby dokładnie przyjrzeć się Ułanowi w grze), ilość jednostek w formacji na 1 (z tego samego powodu). 8. W ostatniej zakładce wybieramy tylko projekt ModBuddy'ego do którego chcemy dodać nasz model (zaznaczamy plik projektu a więc "civ5proj") i klikamy "export to ModBuddy". 9. Po przełączeniu na ModBuddy'ego widzimy że wykrył on zmiany w projekcie więc wystarczy już tylko potwierdzić (klikamy "reload"), przestawić odpowiednim plikom "import into VFS" na "true" (a najlepiej wszystkim) i skompilować projekt (ważne aby w opcjach było zaznaczone "reload unit system" ale powinno to być domyślnie ustawione przez "Nexus Buddy"). 10. W ostatnim kroku odpalamy grę, aktywujemy moda (lepiej odznaczyć wszystkie inne na czas testów) i na koniec naszym szczęśliwym oczom powinien ukazać się Ułan dumnie dosiadający swojego rumaka: 9 8 Chcemy więcej (animacji) ! Dodanie większej ilości animacji to także łatwa sprawa. Tutaj obejdziemy się bez wizualizacji. Wróćmy do ModBuddiego i oberzyjmy sobie jakie pliki zostały dołączone do projektu: Uhlan.xml oraz Uhlanlanguage.xml to pliki definiujące parametry jednostek i teksty ale także gdzieś tam jest definicja modelu: 10 <UnitArtInfo>ART_DEF_UNIT_UHLAN</UnitArtInfo> Co oznacza że w civ5artdefines_units.xml musimy mieć taki nagłówek. Szukamy i rzeczywiście na samym końcu mamy Ułana. Dzięki temu że mamy go razem z innymi jednostkami możemy łatwo na podstawie jakiejś innej kawalerii z tego okresu odpowiednio ustawić modelowi parametry. Podobnie jeśli chodzi o civ5artdefines_unitmembers.xml. W tym drugim pliku mamy odniesienie do fxsxml (uhlan.fxsxml) które mówi że tam powinniśmy szukać modelu (zarówno siatki jak i animacji). Przechodzimy więc do katalogu art. Widzimy następujące pliki: 1.Plik z siatką (uhlan.gr2) 2.Plik z animacją (uhlannewanimation1.gr2) 3.Plik z teksturą (uhlan_textures_all.dds) 4.Definicję modelu (uhlan.fxsxml) Oznacza to, że siatka jest rozdzielona z animacją co upraszcza nam sprawę. Możemy teraz powtórzyć cała procedurę z poprzedniej części (Finał) naszego poradnika tylko wybierając inną animację przy importowaniu nifa w pierwszym kroku do blendera. Resztę robimy dokładnie identycznie z tą różnicą że nadajemy inne nazwy czyli zamiast uhlan.fbx mamy uhlan_die.fbx, uhlan_run.fbx itd. Eksportujemy do tego samego projektu ModBuddiego. Powtarzamy to tyle razy, ile animacji potrzebujemy. Na końcu w modelu będziemy mieli tyle jednostek ile animacji wyeksportowaliśmy - każda z jedną tylko animacją. Nie jest to problemem. Oto co robimy: 1.Wybieramy model podstawowy (najlepiej tą pierwszą czyli bez przyrostka - po prostu "uhlan") 2.Kopiujemy tam wszystkie inne animacje (tylko animacje!) tak aby miec w art: uhlan.fxsxml uhlan_textures_all.dds uhlan.gr2 uhlannewanimation1.gr2 uhlan_dienewanimation1.gr2 uhlan_strikenewanimation1.gr2 uhlan_runnewanimation1.gr2 etc... Następnie modyfikujemy uhlan.fxsxml tak aby uwzględnić dodatkowe animacje. Jakie numerki przyporządkować wiemy z analizy dostępnych akcji w Nexus Buddy. Teraz najlepiej przetestować to w grze. Powinniśmy móc zbudować zarówno naszą podstawową jednostkę ze wszystkimi animacjami jak i każdą oddzielnie z jedną przypisaną animacją - to pozwala łatwo sprawdzić która animacja sprawia problemy. Na koniec możemy usunąć niepotrzebne modele - nie zapominamy o usunięciu ich z civ5artdefines_units.xml oraz civ5artdefines_unitmembers.xml. Przykład dla modelu z 7mioma animacjami: 11 (tutaj zmieniłem też uhlannewanimation1.gr2 na uhlan_idlenewanimation1.gr2 dla lepszej czytelności) Definicje w pliku fxsxml: <Asset> <Mesh file="uhlan.gr2" source="Tool" /> <Animation file="uhlan_idleNewAnimation1.gr2" ec="1280, 1285, 1290, 1600, 1620, 1640, 1040, 2040, 1000, 1020, 2000, 2020, 1450, 1440, 2440, 1800" /> <Animation file="uhlan_dieaNewAnimation1.gr2" ec="1200, 1220, 2200, 2220" /> <Animation file="uhlan_fortifyaNewAnimation1.gr2" ec="1500" /> <Animation file="uhlan_fortifya_idleNewAnimation1.gr2" ec="1520, 1540, 1560, 1580" /> <Animation file="uhlan_runNewAnimation1.gr2" ec="1140, 1120, 1400" /> <Animation file="uhlan_strikeaNewAnimation1.gr2" ec="1100, 2100, 1160, 1180" /> [...] </Asset> 12 Pozostaje pytanie w jaki sposób dodać to do naszego moda? Wystarczy skopiować wszystkie pliki z katalogu art oraz civ5artdefines_units.xml i civ5artdefines_unitmembers.xml i zmienić odpowiednio <UnitArtInfo> tak aby wskazywał na nowy model i to wszystko (pliki uhlan.xml i uhlanlanguages.xml są oczywiście zbędne ponieważ już zdefiniowaliśmy prawdopodobnie parametry i opisy naszej jednostki i jedyne czego nam brakuje to model). 9 A Huzar? Na razie ogólny schemat postępowania, jeśli chcemy zachować oryginalny model wygląda tak: 1. W orginalnym nif'ie kasujemy wszystko oprócz pierwszej sceny (scene root) 2. Wczytujemy tego nif'a do blendera, kasujemy wszystko oprócz szkieletu 3. Wracamy do orginalnego nif'a, klikamy na jezdzcu i kiedy pojawi się siatka eksportujemy jako "obj" 4. To samo z koniem 5. W blenderze importujemy obydwie siatki 6. Nakładamy je na szkielet i używamy "bone heat" do usztywnienia. Następnie ręcznie poprawiamy złe wagi. 7. Testujemy model z animacjami. Zachowujemy pełny model. 8. Eksportujemy jako nifa i importujemy jeszcze raz razem z pierwsza animacja 9. Kastrujemy do około 33 kości i zapisujemy, oddzielnie zapisujemy też nową wersję animacji kompatybilną z tym modelem 10. Testujemu w grze 11. Importujemy jeszcze raz niewykastrowany model wraz z kolejną animacją 12. Kastrujemy go DOKŁADNIE tak samo jak zrobiliśmy to w punkcie 9 (te same kości) i zapisujemy model oraz kompatybilną animację 13. Znowu test 14. I tak w kółko aż mamy wszystkie animacje lub (w przypadku gdy używamy tylko siatki): 1. W orginalnym nif'ie kasujemy wszystko oprócz pierwszej sceny (scene root) 2. Bierzemy z civ5 podobną jednostkę, wczytujemy do blendera i kasujemy wszystko oprócz szkieletu 3. Wracamy do orginalnego nif'a, klikamy na jezdzcu i kiedy pojawi się siatka eksportujemy jako "obj" 4. To samo z koniem 5. W blenderze importujemy obydwie siatki 6. Nakładamy je na szkielet i używamy "bone heat" do usztywnienia. Następnie ręcznie poprawiamy złe wagi. 7. Testujemy model z animacjami. (pominąłem kroki z łączeniem w jedną siatkę i wypalaniem tekstur) 13 10 Podsumowanie Oczywiście podziękowania dla lemmy101 oraz captainbinky za rozwiązanie problemu dodawania/konwersji jednostek oraz dla użytkowników civ.org.pl za inspirację. 11 Bibliografia [1] Deliverator, Getting Civ4 units into Civ5, http://forums.civfanatics.com/showthread.php? t=394056 (Deliverator) [2] lemmy101, How to add new units in mods – the easy way, http://forums.civfanatics.com/showthread.php?t=392985 [3] Derek „Kael” Paxton, The Modders Guide to Civilization 5, http://forums.civfanatics.com/showthread.php?t=385009 [4] http://forums.civfanatics.com [5] www.civ.org.pl © notka o prawach autorskich © Dokument może być kopiowany, powielany i modyfikowany do woli z zachowaniem licencji GPL. 14