{"id":225,"date":"2009-09-18T21:55:48","date_gmt":"2009-09-18T20:55:48","guid":{"rendered":"http:\/\/netrix.org.pl\/index.php\/2009\/09\/18\/kilka-zmian\/"},"modified":"2009-12-11T23:53:29","modified_gmt":"2009-12-11T22:53:29","slug":"kilka-zmian","status":"publish","type":"post","link":"https:\/\/netrix.org.pl\/index.php\/2009\/09\/18\/kilka-zmian\/","title":{"rendered":"Kilka zmian"},"content":{"rendered":"<p><a href=\"http:\/\/netrix.org.pl\/wp-content\/2009\/09\/rpot.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border-bottom: 0px; border-left: 0px; margin: 5px 0px 5px 5px; display: inline; border-top: 0px; border-right: 0px\" title=\"rpot\" border=\"0\" alt=\"rpot\" align=\"right\" src=\"http:\/\/netrix.org.pl\/wp-content\/2009\/09\/rpot_thumb.png\" width=\"244\" height=\"184\" \/><\/a>Stwierdzi\u0142em, \u017ce wypada\u0142oby si\u0119 wreszcie odezwa\u0107 po kolejnej d\u0142ugiej nieobecno\u015bci. W ko\u0144cu uda\u0142o mi si\u0119 zaimplementowa\u0107 Skinning w silniku, oczywi\u015bcie bazuj\u0105c na przyk\u0142adzie SkinnedMesh z DX SDK. W praktyce zrobi\u0142em&#160; to co by\u0142o w \u00f3w sample\u2019u, a jedyn\u0105 r\u00f3\u017cnic\u0105 jest miejsce po\u0142o\u017cenia ko\u015bci, kt\u00f3re u mnie znajduj\u0105 si\u0119 w hierarchii zaraz za modelem. Sam\u0105 hierarchi\u0119 tworz\u0105 modele (zwyk\u0142e drzewo, kt\u00f3re ustanawia hierarchi\u0119 na podstawie kt\u00f3rej tworzone s\u0105 wynikowe macierze \u015bwiata dla tych modeli). P\u00f3ki co mam tylko dwa rodzaje modeli: StaticMesh i SkinnedMesh, ale bez problemu mo\u017cna do niej wstawi\u0107 innego rodzaju obiekty, kt\u00f3re wyst\u0119puj\u0105 na scenie.<\/p>\n<p>Kolejn\u0105 spraw\u0105 s\u0105 stosowane przeze mnie formaty. Ot\u00f3\u017c w poprzedniej notce napisa\u0142em jakoby format .x by\u0142 bardzo prostym formatem. Nic bardziej mylnego, jest on bardziej z\u0142o\u017cony ni\u017c my\u015bla\u0142em (chodzi mi tylko o format modeli, nie o system zapisu danych). W standardowym pliku .x mo\u017ce znajdowa\u0107 si\u0119 wi\u0119cej modeli, kt\u00f3re s\u0105 u\u0142o\u017cone w hierarchi\u0119, a do ich za\u0142adowania s\u0142u\u017cy funkcja: <\/p>\n<pre lang=\"cpp\">D3DXLoadMeshHierarchyFromX(\u2026);<\/pre>\n<\/p>\n<p>Funkcja ta \u0142aduje nie tyko wspomnian\u0105 hierarchi\u0119 meshy, ale r\u00f3wnie\u017c informacje o ko\u015bciach i&#160; animacji. Niestety format materia\u0142\u00f3w dalej nie zawiera nic wi\u0119cej poza struktur\u0105 D3DMATERIAL9 i nazw\u0105 tekstury diffuse.<\/p>\n<p>Natomiast format SDKMesh jest jeszcze gorszy (mimo jednej zalety, \u017ce posiada nazwy dla tekstur normal i specular), poniewa\u017c nie posiada on \u017cadnych informacji o ko\u015bciach mimo, \u017ce s\u0105 informacje o animacji. Po prostu wczytywany mesh jest ju\u017c przekonwertowany i gotowy do wy\u015bwietlenia (co blokuje mo\u017cliwo\u015b\u0107 prostego u\u017cycia ID3DXSkinInfo, kt\u00f3rym m\u00f3g\u0142bym software\u2019owo przekszta\u0142ci\u0107 model np. do kolizji per vertex).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Stwierdzi\u0142em, \u017ce wypada\u0142oby si\u0119 wreszcie odezwa\u0107 po kolejnej d\u0142ugiej nieobecno\u015bci. W ko\u0144cu uda\u0142o mi si\u0119 zaimplementowa\u0107 Skinning w silniku, oczywi\u015bcie bazuj\u0105c na przyk\u0142adzie SkinnedMesh z DX SDK. W praktyce zrobi\u0142em&#160; to co by\u0142o w \u00f3w sample\u2019u, a jedyn\u0105 r\u00f3\u017cnic\u0105 jest miejsce po\u0142o\u017cenia ko\u015bci, kt\u00f3re u mnie znajduj\u0105 si\u0119 w hierarchii zaraz za modelem. Sam\u0105 hierarchi\u0119 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[179,10,180,100,99],"_links":{"self":[{"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/posts\/225"}],"collection":[{"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/comments?post=225"}],"version-history":[{"count":4,"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/posts\/225\/revisions"}],"predecessor-version":[{"id":369,"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/posts\/225\/revisions\/369"}],"wp:attachment":[{"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/media?parent=225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/categories?post=225"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/tags?post=225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}