Exporterの高速化にはまってますよ・・・
結局ファイルはマテリアルによる並び替えだけ
Exporter内でやって
頂点結合とかはポスビの読み込み部分でやろうと思います
しかし、Exporterを作る度ですが
今回も、XSIの仕様にいらついてますよ~
(高速化前)
中でも、エンベ管理がはらたつ!
ウェイトが0の物も所持していて
ウェイトを習得するにはデフォーマーごとに頂点を回らなければいけないって言う仕様・・・
1万頂点で、50個のデフォーマーの場合は
50万回ループしなきゃいけないって事がかなり不満・・・
頂点側で管理してくれれば楽なのに・・・
↑の場合は30デフォーマー&1800頂点で400ミリ秒かかってますね
例えば、XSIが保持しているのがArray型なので
FindAllで0以上の数値を出してやれば、ループ回数が減るとは思うんですが
ウェイト値なので100がたくさんあるので
無理という結論に・・・
FindAllで条件のマッチした要素+インデックスが帰ってくるのであればOKなんですけどね・・・
で、もう一つの不満は
ノードインデックス
ポリゴン管理があるのに、三角形ポリゴン管理がない・・・
これは意味がわからない・・・
ノード管理の法線は三角形からアクセスできるのに
そのインデックスはアクセスできないと言う謎の現象が・・・
その為、四角ポリゴン以上の場合
ポイント数から三角形数を割り出して
ポリゴンからアクセスしたノードインデックスを習得しなくてはいけない・・・
↑の場合は600ミリ秒
約32000三角形の場合は
2100ミリ秒と絶望的な数値が・・・
で、C#の高速化テクニックとか
構造体のマーシャルとか色々試した結果(マーシャルは逆に遅かった)
こんな感じで、ちょいと高速化出来ましたよ・・・
ただ、XSI標準のFBXExporterがかなり早いので
まだ何か隠れてる部分がありそうってな雰囲気
そんな中
今日こんなメールが
・・・
ひゃっふぅ!!
コメント