Zmiana kości głównego modelu hum_body_naked i problem z animacją 4388 13

O temacie

Autor pagi111

Zaczęty 5.11.2018 roku

Wyświetleń 4388

Odpowiedzi 13

pagi111

pagi111

Użytkownicy
posty51
Propsy2
Profesjabrak
  • Użytkownicy
Witam,
Chciałem stworzyć nową animację walki do Gothica 2 (na razie po prostu podmiana ataku combo 2H). Używam Blendera 2.78. Zaznaczam, że jeszcze mało wiem na temat Blendera i tworzenia animek do G2.

Spoiler
Żeby ta animacja trochę ładniej wyglądała, to dodałem do szkieletu hum_body_naked kilka dodatkowych kości (w sumie 3 i jedną trochę zmieniłem). Najpierw wyeksportowałem tylko animację i gdy na próbę podmieniłem animację ze standardowej mistrza 2H na moją nową to normalnie wszystko się odpala i nowa animka jest w grze. Problem taki, że wygląda ona trochę "dziwnie" :P tzn nie tak, jak w Blenderze. W Blenderze postać wykonuje 2 ataki, z czego drugi to jest taki jakby atak z wyskoku i postać kończy animację "na ziemi". Jednak w grze, po tym skoku postać zamiast kończyć na poziomie gruntu (chodzi mi o wysokość położenia postaci), zapada się pod ziemię. Podczas animacji postać przenika też jakby przez ściany.

Pomyślałem, że problemem może być to, że nie wyeksportowałem nowego modelu (tzn z tymi dodanymi przeze mnie kośćmi). Zrobiłem więc to, zapisałem model jako hum_body_naked - czyli ten podstawowy model, który jest we wszystkich animacjach z ludźmi. Wtedy jednak, gdy próbuję wykonać atak, gra wywala Access Violation.

Pomyślałem dalej, że może problem leży w tym, że inny jest ten model postaci dla standardowej animacji postaci (czyli całego pliku humanS.mds), a inny dla mojej animacji i nie można go podmieniać podczas gry. Wypakowałem więc pliki standardowej animacji Gothic Sourcerem, podmieniłem plik hum_body_naked na mój nowy. Wrzucam wszystko (czyli całą zawartość wypakowanego Humans.MSB wraz ze wszystkimi plikami asc) do folderu Anims, włączam startera z zaznaczonym script parsen i... pojawia się błąd, że brakuje jakiegoś pliku asc (Hum_Amb_1hRunT0_A01.asc). Sprawdziłem w folderze, do którego wypakowałem wcześniej plik Humans.MSB i rzeczywiście nie ma tam takiego pliku, chociaż jest do niego odniesienie w pliku humanS.mds.

A zatem, kilka spraw:
1) jak to jest do jasnej ciasnej możliwe, że brakuje tam tego pliku asc?? Skoro nawet nic nie zmieniając po prostu wypakowuje plik, potem chce z powrotem sparsować i się nie da bo brakuje jakiegoś asc... To jakim cudem w ogóle Gothic działa? I co na to poradzić, skąd ja mam wziąć ten plik?

Myślałem, że może istnieje jakaś paczka z plikami tego typu (tak jak np. na WoG jest do ściągnięcia paczka z plikami asc zbroi, to może tak samo trzeba zrobić z jakimiś podstawowymi animacjami?). Ale nie znalazłem takiej paczki nigdzie.

W tym wątku: https://themodders.org/index.php?topic=8005.0
@inż. Avallach napisał:
Cytuj
bo sam mam problemy z błędami znajdywanymi nawet w niemodyfikowanych mdsach gry.
Czyli jak rozumiem, błędy w oryginalnych plikach gry nie są niczym niezwykłym? Pytanie, czy da się temu jakoś zaradzić?

2) druga sprawa - dlaczego animacja w blenderze wygląda inaczej w grze? Dla jasności, w blenderze postać skacze, wykonując atak, i ląduje "na ziemi", tzn na ten samej wysokości, co zaczynała. Do tego przemieszcza się też trochę w bok (ten skok jest po skosie, do przodu i w bok). W grze natomiast przemieszczenie w bok jest ok, ale postać "ląduje" pod ziemią, tzn. skacze tak trochę w dół, zamiast do góry :D

Do tego, przy innych animacjach, chociażby wojownika 1h, gdzie przecież też jest skok do przodu, postać normalnie zatrzymuje się na przeszkodach (np. na ścianie), a moja postać trochę przez nie przenika. tzn. nie do końca - nie znajduje się pod drugiej stronie ściany, ale na chwilę w nią wnika, postaci nie widać i za chwilę znów pojawia się przed ścianą. No niezbyt ładnie to wygląda :/

Dlaczego tak się dzieje? Czy trzeba w Blenderze dodać jakąś "fizykę" do kości czy modelu? Chociaż to bez sensu bo ja tą animację robiłem właśnie na podstawie 1h wojownika, więc tam wszystko powinno w zasadzie być ok.

3) czy w ogóle ma sens zmiana kości w tym modelu hum_body_naked? Tzn. czy wtedy muszę w grze zmienić ten model we wszystkich animacjach, w których on występuje? Czy wtedy wszystkie animacje sie popsują?

Da się zrobić tak, żeby nowy model był wykorzystywany tylko w mojej nowej animacji? Czy wystarczy wtedy w mdsie zmienić tę linijkę na początku z wykorzystywanym modelem na mój nowy? I dlaczego występował ten błąd Acces Violation u mnie - tzn. że nie da się podmienić modelu (nawet kilku kości) w trakcie rozgrywki?

4) czyż modowanie Gothica nie jest frustrujące?  :hmmm: :trollface:

TL;DR
Trochę się rozpisałem, ale najważniejsze pytania, poza tymi powyżej, są w zasadzie takie:
5) Jak mogę edytować plik humans.mds (gdybym np. chciał podmienić standardowy atak z poziomu nowicjusza), skoro występuje błąd przy jego parsowaniu?

6) W jaki sposób podmienić model ludzi w grze (np, gdybym chciał dodać nowe kości albo coś tam zmienić, żeby był bardziej szczegółowy, itp)?
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
5. Starczy, że wyjebiesz skompilowane pliki "humans." (bez żadnych dodatkowych dopisków) i nie popełnisz błędów przy pisaniu.

6. Normalnie, podmieniasz model, po czym ładujesz każdą animację po kolei na swój nowy model. W przypadku, gdzie ten model był oryginalnym modelem z gry, ale zmodyfikowanym, starczy dodać ciało jako nową "teksturę" ciała, tak jak na przykład mają orkowie.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

pagi111

pagi111

Użytkownicy
posty51
Propsy2
Profesjabrak
  • Użytkownicy
5) czyli te 2 pliki humans.mdh i msb, tak? Właśnie tak robię. Nie w tym jednak problem. Po prostu podczas parsowania wywala błąd, że brakuje jakiegoś tam asc i właśnie tak jest - nie ma tego pliku asc w folderze po wcześniejszym zdekompilowaniu humans.msb. I nie ma mowy o jakichś błędach podczas pisania, bo na próbę po prostu zdekompilowałem ten plik, a potem chciałem skompilować z powrotem bez zmiany czegokolwiek. I jest ten błąd.

I się nie dziwię, bo rzeczywiście tego pliku asc tam nie ma. Ale dlaczego to już nie mam pojęcia. Próbowałem też zdekompilować to jeszcze raz, ale jest to samo.

6) każdą animację? Czyli jeśli chciałbym zrobić jakąkolwiek modyfikację modelu hum_body_naked0 to muszę potem KAŻDĄ animację, która używa tego modelu, dostosować do niego ponownie? Jeśli tak, to chyba "sporo" roboty :D

A czy jest opcja, żeby zmienić ten model tylko dla wybranej animacji? Czyli tak, jak ja chciałem, po prostu robię sobie jedną nową animację walki i robię ją na zmodyfikowanym modelu. Tak, jak mówię, wywala mi błąd Access Violation - i to na pewno jest przez model, bo jak dam oryginalny, to działa. Czy czegoś takiego nie da się zrobić  i muszę albo zmienić model dla WSZYSTKICH animacji, albo w ogóle go nie mogę modyfikować?
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Nie masz wypakowanych (wszystkich) animacji. Jako tako nie musisz ich nawet wypakować, prawdopodobnie, bo możesz też dodać jakikolwiek plik z tą samą nazwą (rozszerzenie .asc) i będzie działać. Niemniej jednak, musisz sprawdzić czy aby na pewno nie spierdzieliło Ci to animacji (starczy w konsoli wywołać, sprawdzić czy nazwa z animacją się zgadzają).

6. Normalnie, podmieniasz model, po czym ładujesz każdą animację po kolei na swój nowy model. W przypadku, gdzie ten model był oryginalnym modelem z gry, ale zmodyfikowanym, starczy dodać ciało jako nową "teksturę" ciała, tak jak na przykład mają orkowie.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Siemekk

Siemekk

Złote Wrota
Untersturmfuhrer
posty2143
Propsy1151
ProfesjaProgramista
  • Złote Wrota
  • Untersturmfuhrer
Mi udało się dodać około 10 nowych slotów dla postaci. Jak wiadomo sloty to też kości ZS_* (ZenGine Slot _ Nazwa slotu)
Ogólna zasada jest prosta - zrób wszystko za jednym razem. Postawy potrzebne do wykonania takiego czynu to zasadniczo znajomość plików .MDS. (Nie wiem jak z nowymi BIP ... ) Robi się to tak:
1) Dekompilacja Humans.msb
2) Przerobienie bazowego modelu
3) Usunięcie skompilowanych animacji
4) Kompilacja pliku Humans.MDS (W niektórych miejscach są błędy! Należy je naprawić. U mnie zajęło to około 2 godzin)
5) Jeżeli gra się uruchomi i postać może się poruszać to pierwszy krok gotowy.
6) Teraz należy przerobić pozostałe MDS (Mistrz walki, Pochodnia itd.) Jest ich chyba 20.
7) Jeżeli wszystko działa, to musimy podpiąć wszystkie zbroje pod nowy model!

I tak to się robi. Silnik sam postara dostosować animację do nowego modelu (Ale tak działa to dla nowych slotów, wypróbuj dla kości i opowiedz mi o efekcie.) Gdzieś na discordzie wysyłałem nawet nowy szkielet postaci, ale nie pamiętam kiedy to było :F

Pozdrawiam.
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

pagi111

pagi111

Użytkownicy
posty51
Propsy2
Profesjabrak
  • Użytkownicy
@Siemekk
O slotach jeszcze nic nie wiem :D a jutro spróbuję coś porobić z kośćmi według tego, co napisałeś.
W punkcie 4) o co chodzi z tymi błędami? Miałeś na myśli coś własnie w stylu brakujących asc, itp? Zrobiłeś to tak jak Bogdan proponował, że dodałeś tylko byle jaki plik z nazwa, czy gdzieś znalazłeś te asc w innych plikach, czy jak?

@Bogdan Zwei
Jeszcze nie do końca rozumiem o co chodzi z tą "teksturą" jutro zerknę na te modele orków. Ale tak czy inaczej w przypadku Humans.MDS musiałbym podmienić ten zmodyfikowany model we wszystkich plikach animacji, które go wykorzystują (to co Siemekk napisał w 6 pkt), tak? I jak rozumiem tu się rozchodzi o modyfikację modelu jako takiego, a nie kości?
 

Siemekk

Siemekk

Złote Wrota
Untersturmfuhrer
posty2143
Propsy1151
ProfesjaProgramista
  • Złote Wrota
  • Untersturmfuhrer
Co do punktu 4, To odzyskalem te pliki poprzez edycję plików .MAN
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
7) Jeżeli wszystko działa, to musimy podpiąć wszystkie zbroje pod nowy model!



Spoiler, nie trzeba. Zbroja podmienia ciało, a jeśli kości są w takim samym ułożeniu jak w zbroi, to wszystko się będzie zgadzać. I tak lepiej to zrobić, dla pewności.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

pagi111

pagi111

Użytkownicy
posty51
Propsy2
Profesjabrak
  • Użytkownicy
@Siemekk
W jaki sposób? Czym edytowałeś te pliki .MAN?
Próbowałem otwierać notatnikiem i da się między "krzaczkami" wyczytać w nich o jakichś asc, ale to chyba nie o to chodzi, bo tym sposobem niczego nie odzyskam :P


@Edit
Próbowałem coś z tym Humans.MDS zrobić, ale na razie to tylko jest tak:
1) gdy używam standardowego Hum_body_naked0, to trzeba było zmienić tylko jedną nazwę animacji w mdsie, potem gra się uruchamia i działa
2) gdy używam swojego, zmodyfikowanego modelu z nowymi kośćmi, to nie wiedzieć czemu podczas kompilacji jest więcej błędów. Już samo to mnie wystarczająco zdziwiło, że jakieś błędy są tylko ze względu na inny model (nazwa jest ta sama - hum_body_naked0). Tu znów chodziło o jakiś .asc - mający chyba coś wspólnego ze skręcaniem podczas biegu. Ale w ogóle nie znalazłem tego typu animacji (sprawdzałem importując do Blendera).

Zrobiłem więc tak, jak radził Bogdan, czyli zrobiłem nowy plik i nazwałem go tak jak ma być. Wtedy podczas wczytywania gry jest pełno błędów tego typu, ale gra się wczytuje:
Spoiler
D: zModel(zCModelAni::LoadMDM)
: the file's node-hierarchy is incompatible to 'meshAndTree';applied mesh and mds-'meshAndTree' entry need to have exactly the same hierarchy => adjust them
Do tego modele postaci sa całe jakieś powykręcane i gdy próbuje się ruszyć do wywala Access Violation. No cóż to jest chyba spowodowane tym, że nie dostosowałem jeszcze swojego modelu do pancerzy/animacji. Ale tak szczerze, to chyba sobie to daruje. Nie myślałem, że będzie z tym tyle roboty, a koniec końców właśnie po to niby zrobiłem te nowe kości - zeby sobie zaoszczędzić pracy przy animacjach. Ale w takim wypadku już chyba lepiej mi będzie robić moje nowe animacje na starym modelu, niż dostosowywać wszystkie stare animki do nowego :D No i w sumie nie ma gwarancji, że to w ogóle by zadziałało, skoro tyle różnych błędów się pojawia :P
 

Siemekk

Siemekk

Złote Wrota
Untersturmfuhrer
posty2143
Propsy1151
ProfesjaProgramista
  • Złote Wrota
  • Untersturmfuhrer
@pagi111
W niektórych plikach .MAN brakuje tej linii, albo jest ona źle zbudowana.
Spoiler
Przez to przy dekompilacji niektóre animacje nie pojawiają się jako plik .asc. Dlatego trzeba ręcznie naprawić niektóre pliki (Jest ich chyba tylko 5 ;) )
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

pagi111

pagi111

Użytkownicy
posty51
Propsy2
Profesjabrak
  • Użytkownicy
Oki, dzięki.
Ja znalazłem 3 takie pliki (HUMANS-S_1HRUN.MAN, HUMANS-T_RUNTURNL.MAN, HUMANS-T_RUNTURNR.MAN). Teraz wszystko kompiluje i dekompiluje się poprawnie, bez żadnych błędów (przynajmniej Gothic Sourcerem; czy wszystko działa w Gothicu to jeszcze muszę sprawdzić :P)

Taka dygresja jeszcze na boku: bardzo mnie zastanawia jak to jest możliwe, że te pliki zawierają błędy, skoro gra działa. To jak twórcy gry je skompilowali?
 

Siemekk

Siemekk

Złote Wrota
Untersturmfuhrer
posty2143
Propsy1151
ProfesjaProgramista
  • Złote Wrota
  • Untersturmfuhrer
Miałem to samo pytanie jak to odkryłem :F
Należy pamiętać, że twórcy używali innych narzędzi niż my, więc mógł być to swojego rodzaj zabezpieczenia ;)
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

inż. Avallach

inż. Avallach

Administrator
posty7662
Propsy5238
NagrodyV
ProfesjaProgramista
  • Administrator
To nie było zabezpieczenie, tylko bugi. W miarę jak je łatali i wprowadzali nowe, de facto format się subtelnie zmieniał. Do kompilowania plików używali głównie narzędzi tych samych co my (gothic.exe z ewentualnymi parametrami), po prostu w nieco starszej wersji. Ponieważ kolejne wersje silnika były w stanie jako tako załadować te pliki, nigdy nikt ich nie przekompilował ostatnią wersją silnika. Niestety różnice są dość duże że potrafią wykrzaczyć dekompilację starych plików skompilowanych albo kompilację starych plików źródłowych.

pagi111

pagi111

Użytkownicy
posty51
Propsy2
Profesjabrak
  • Użytkownicy
Próbowałem się jednak pobawić trochę z edycją istniejącego szkieletu, dodając kilka kości, tak żebym mógł sprawnie używać Inverse Kinematics. Oryginalne animacje zaimportowane na mój nowy szkielet wyglądają dokładnie tak, jak powinny, więc tu nic nie trzeba zmieniać. Jednak w grze pojawiają się błędy, i to dość dziwne, jak na mój gust :P

Po pierwsze podczas wczytywania gra się minimalizuje i pojawia się sporo komunikatów, że nie pasują do siebie jakieś tam meshandtree. Jednak gra się wczytuje dalej. Natomiast w zSpy pojawiają się błędy tego typu:
Spoiler
00:37 Warn:  0 OH    : zCArchiverBinSafe::SkipChunk - expected entry not found: symValue105 .... <zArchiver2.cpp,#1762>
00:37 Warn:  0 OH    : zCArchiverBinSafe::SkipChunk - expected entry not found: symValue106 .... <zArchiver2.cpp,#1762>
00:37 Fault: 0 M:     really many entries not found! The archive is probably outdated. .... <zArchiver2.cpp,#1767>
00:37 Info:  5 X:     Vid_SetScreenMode: No changes ... .... <zRndD3D_Vid.cpp,#559>
00:37 Info:  5 X:     Vid_SetScreenMode: No changes ... .... <zRndD3D_Vid.cpp,#559>
00:37 Warn:  0 OH    : zCArchiverBinSafe::SkipChunk - expected entry not found: symValue107 .... <zArchiver2.cpp,#1762>
00:37 Warn:  0 OH    : zCArchiverBinSafe::SkipChunk - expected entry not found: symValue108 .... <zArchiver2.cpp,#1762>
Takich linijek z entry not found jest ponad 500.

Bardziej jednak zastanawiają mnie inne błędy. Mianowicie, w grze psują się modele niektórych obiektów, np. mebli w wieży Xardasa. To takie standardowe "zepsucie sie" modelu, tzn. jest cały powykrzywiany, nie przypomina kształtem oryginału, tekstura jest cała rozmazana. Tak samo jest z jedną bronią (Toporem berserkera), niektórymi roślinkami w ekwipunku i miksturami. Ale zaznaczam, że tylko z kilkoma przedmiotami są takie problemy.

Wydaje mi się to dziwne, bo co ma szkielet postaci do modeli tego typu przedmiotów. Jeszcze żeby się coś stało ze zbrojami to rozumiem, bo one używają szkieletu, ale takie przedmioty?

@Edit
Koniec końców, obszedłem ten problem tak, że robię sobie nowe animacje na moim nowym szkielecie, ale potem nie zmieniam już w plikach tego szkieletu, tylko animacja odgrywa się na starym. O dziwo, działa bez zarzutu, przynajmniej jeśli chodzi o proste animacje - mam nadzieję, że tak samo będzie z bardziej skomplikowanymi.
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry