|
こんにちは、おひさしぶり、
今、何をしているの?---->あなたで メール相談についてmadokapark@gmail.com
ご返答いただき、ありがとうございます。
まだFVFの中には、用途が明瞭でない情報がいくつか存在しています。
もしかしたら、その中にはまくちゃん様の仰るように、
何らかの圧縮が行われたボーンインデックスが存在しているかも知れません。
まずはその視点からFVFを攻めてみて、ダメなら別のチャンクをあたってみることにします。
ありがとうございました。
どもです。ボーン関連は解析していないので不明です。
FVFのグループにないとしたら別のチャンクにボーンインデックスがあるかもしれません。
人型だと255本で済ませるので1頂点に1byte x ボーン4本分で4byteのインデックスが並んでいると思うのですが同じ組み合わせの頂点は沢山あるのでベタではなく更にインデックを持ってデータを圧縮している可能性もありますね。
お久しぶりです。
to-ruと申します。
前回、こちらに書き込みをさせていただいてから、
「エスカ&ロジーのアトリエ」や「シャリーのアトリエ」で使用されている
g1m形式の解析を行っておりました。
解析については、頂点・面・法線・uv・ボーンなど、ひと通りの要素を構成することはできたのですが、
ウェイトの設定がどうしてもうまく行かず、そこから長らくストップしてしまっています。
ウェイトに関する解析については、おおむね下記の状況です。
a) 分かっていること
*) ウェイトの値
ウェイトの値は、頂点1つ1つの属性が格納されているチャンクの中に、
法線等と一緒に配置されていると捉えています。
b) 分かっていないこと
*) ウェイトの値を適切なボーンに紐付けるための情報
ウェイトの値とボーンを紐付ける情報は、ボーンのインデックス値が
一般に挙げられると思います。しかしながら、上記のチャンクの中には、
それと分かるような値は見つけられませんでした。
ご多忙中のところ申し訳ございませんが、
ウェイトの値とボーンを紐付ける方法をご教示いただけましたら嬉しく思います。
ご返信ありがとうございます。
エスカ&ロジーのモデルファイルは、圧縮されているため展開の必要があるようですね。
圧縮ファイルの展開についてはまるでダメなので、この過程が私にとって最大の壁になりそうです。
無双シリーズのモデルは海外でも人気のようですので、まずはそちらから情報収集を始めてみようと思います。
スクリーンショット等の公開について、ご忠告ありがとうございます。
解析については、ひっそりと個人の趣味で行っている程度なので大丈夫かとは思いますが、
警告を受けるようなことはしないよう注意いたします。
おーおめでとうございます。
エスカ&ロジーからは無双シリーズと同じコーエーのエンジンを使用しているので別フォーマットになってしまいましたね。
エスカ&ロジーは解析済みで一時スクリーンショットを公開していましたがガストさんから警告を受けたので公開を停止しています。
気をつけた方が良いですよ。
ご返信ありがとうございます。
教えていただいた順にインデックスを設定したところ、見事に顔が構成されました!
おかげさまで、アーシャやリンカのかわいい顔を拝むことができます(*´艸`*)ムフフ
画像やコードなども合わせて親切に教えていただいて、本当に感謝しています。
次は、同シリーズである「エスカ&ロジーのアトリエ」や「シャリーのアトリエ」の解析をしたいと思っています。
ただ、こちらはモデルデータを解析する以前に、アーカイブファイルを展開することすらできていません。
もう少し調べてみて、どうしても行き詰ってしまったときは、またこちらに書き込みをさせていただくかも知れません。
そのときはまた、ご返信いただけると嬉しく思います。
ありがとうございました。
顔のパーツの頂点のみ表示するとこんな感じになります。
http://www.cute.or.jp/~makuchan/images14/pssg_vertex.png
フェースのインデックスは例としてこんな感じです。
for( i = 0; i < vertexElementCount / 3; ++i )
{ face[i * 3] = i * 3;
face[i * 3 + 1] = i * 3 + 2;
face[i * 3 + 2] = i * 3 + 1;}
ご返信ありがとうございます。
お忙しいところコードまで読み返していただいて、とても嬉しいです。
さっそく、primitiveがtrianglesの場合に処理を分岐させるようにしました。
しかし、肝心の「頂点順に面を構成する」方法が分からず。。。(;^_^A
「こんな感じかな?」とコードを書いてはみたものの、スキマだらけのひどい状況に(笑)
今までに解析したファイルフォーマットは(pssgを除けばたったの2種類ですが)、いずれも頂点インデックスを拾う方法で面を構成していたので、
頂点インデックスを拾わずに面を構成する方法を理解できていないのですね。
折角教えていただいたのに、勉強不足ですみません。。。
精進いたします。
すみません。自分の掲示板なのに放置状態で今気づきました。
2年前のことなので、かなり記憶がなくなっていますがコードを読み返してみたところ・・・自分が書いたコードなのにさっぱりわかりません(爆)
一箇所だけ頂点モーフのコメントがあったので辿ってみると
RENDERDATASOURCEチャンクのサブチャンクprimitiveの定義がtrianglesの場合モーフデータとして扱っていました。
通常は面を構成する頂点のインデックス値を拾いますがモーフにはインデックス値がないのでトライアングルリストとして頂点順に面を構成するだけでOKです。
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | |