Xファイルエクスポーター:頂点カラー

頂点カラーのAPI仕様みてるとどうもこいつもUVのように面単位で持ってるよう。
また頂点カラーだけのために頂点追加かと思ったが、面単位で頂点カラーを必要と
するケースも想像できないので同一頂点インデックス内で平均化してやることにした。

こんな感じ。
DirectXViewerが頂点カラー出してくんないので他所からサンプルプログラム引っ張ってきて確認。
例のごとく四角形ポリのままコンバートしてるので微妙に表示結果がちがいまする。
 

  • 頂点カラー実装で気がついた事とか

同一頂点インデックスにある頂点カラーのリストを作っていて気がついたのだが
一つの頂点インデックスあたり一つだけ頂点カラーのアルファに255が入っている。
(VertexPainModeの設定はAllFaceとVertexDistのみオンの時)
 
そもそも頂点ペイントの設定を一瞥するかぎり頂点カラーアルファを指定できる仕組みが無さそう。

頂点カラーの存在確認なんだがAPI仕様書によるとMeshのhasVertexColoursメソッドは
UVがあると正常な結果を返さないらしいのでマテリアルのVColPaintフラグに立てろハゲ
と書いてあるのだが、正直マテリアル単位でチェックなんかめんどくさくてやってらんねー。
ので面のcolリストの数が0なら(Noneではないみたい)とにかく白をぶち込むようにしておいた。
 
平均化のところをもうちょっとリストの内包表記でうまく書けると思うんだが
俺の想像力が足らない。今月末のPythonクックブックは絶対読まないと駄目だな。
 
さーてモデルデータの再現はほぼ完成なので次はとうとうモーションかしーら。