忘れない為にメモ。
lightwaveからobjファイルを書き出す。
とりあえず一辺500mmのplaneを作った。正面の向きはxz方向。(lw上で回転させてxyにしてません。)
objファイルを分解すると
v:頂点座標
vt:uvt座標(一辺が0〜1で表される)
f:頂点座標/uvt座標/頂点番号
になっている。
fは頂点番号に対応する頂点座標ナンバーと
uvt座標ナンバーとなる・・・気がする。
ちなみに、fのuvt座標はlwでuvテクスチャをつくり
色質感編集でtでテクスチャ編集を立ち上げ、uvtextureと画像を選択してから
objファイルで書き出さないとブランクになった。
・・・lwよくわかってないので・・・すみません。
#### # # OBJ File Generated by LightWave3D # LightWave3D OBJ Export v2.3 # #### o a.obj mtllib a.mtl g default v -0.5 0 0.5 ・・・① v 0.5 0 0.5 ・・・② v 0.5 0 -0.5 ・・・③ v -0.5 0 -0.5 ・・・④ vt 0.0121951 0.0121951 ・・・① vt 0.0121951 0.987805 ・・・② vt 0.987805 0.0121951 ・・・③ vt 0.987805 0.987805 ・・・④ vn 0 1 -0 vn 0 1 -0 vn 0 1 -0 vn 0 1 -0 g Default usemtl Default s off f 2/3/1 3/4/2 4/2/3 1/1/4
vが頂点座標なので図にするとこんな感じ。
lightwaveの頂点座標は時計回りに書かれている・・・
といいきっていいのかわからないが、そういう事にする。
次にuvt座標。
これはuvテクスチャを書き出している時の
一辺を0〜1で表した時の座標値。
こんな感じ。時計回りではなかった・・・。
ちなみに、書き出していたuvテクスチャ。
んでここからが大事。
頂点座標とuvt座標のobjファイルに書かれている順番。
上で図にしているけど
頂点座標 uvt座標
①② ①③
④③ ②④
のようになっていて、
時計回りや反時計回りなどのルールがない。
ここで登場するのがfです。
f 2/3/1 3/4/2 4/2/3 1/1/4だと、
頂点座標の②のところへuvt座標の③
頂点座標の③のところへuvt座標の④
頂点座標の④のところへuvt座標の②
頂点座標の①のところへuvt座標の①
となっていて頂点座標に対応するテクスチャ座標(vt)の順番がわかる。
あとはdrawtrianglesの時に、順番をうまく入れ替えておけばOK!なはず。
多分こんな感じ。これで時計回りで場所が同期してるはず。
頂点座標②③④①
uvt座標③④②①
頂点番号①②③④
で、f1つで1面を構成している気がするので
f 2/3/1 3/4/2 4/2/3 1/1/4だと
頂点4つで四角形になっている。
多角形の一つの頂点から各頂点に線を引いて
三角形が何個できるかだが
両辺には線が引けないので4から2ひいて
2つ三角形が出来る。
三角形の頂点の結び方は
カリングに関係していて、これは自分で決めれるので
TriangleCulling.NEGATIVEのときに
反時計まわりに三角形をつくると画面に対し
正面で描画されることにする。
裏側は同じパス順で描画すると時計回りになるので描画されない。
TriangleCulling.NONEにしてると両面描画で
裏側は逆回りなので反転して描画される。
POSITIVEだと時計回りで正面を描画。
これで全てがつながった。気がする。
後は細かい部分を、つめてきます。
コメント