07/08/06 19:48:10
>>661
xファイルから取得できるのは点の法線ベクトルだと思います
なんとかして面にしたいのですが方法ありますでしょうか?
663:デフォルトの名無しさん
07/08/06 19:52:23
じゃあ各面について辺の外積を求めれば?
664:デフォルトの名無しさん
07/08/06 20:52:01
>>663
そういう計算じゃ駄目なんです
CGツールでは面の法線ベクトルで指定できるわけですから
それを頂点や辺から求めたのでは結果が異なりませんか?
665:デフォルトの名無しさん
07/08/06 21:22:23
エクスポートされたデータが面の法線を出しているのなら、
面を構成している頂点が面の法線になっているだろう。
頭が弱いのか?
666:デフォルトの名無しさん
07/08/06 21:42:25
つまり、単なる平均じゃなくて重み付けの計算がやりたいが、具体的に教えろということだ。
667:デフォルトの名無しさん
07/08/06 21:57:53
意味不明
668:デフォルトの名無しさん
07/08/06 23:04:33
Xファイルには面の法線データは入っていないので、計算じゃだめってんなら、無理です。
669:デフォルトの名無しさん
07/08/06 23:12:14
DirectXの方で面法線なんて設定できたっけ?
670:デフォルトの名無しさん
07/08/06 23:13:18
あ、1頂点につき面の頂点分持てば可能か・・・
671:デフォルトの名無しさん
07/08/06 23:17:18
意味不明
672:デフォルトの名無しさん
07/08/06 23:20:35
モデリングソフト側で面法線を利用してエクスポートしているのなら、
面を構成している頂点の法線が全て共通になるだけの話。
計算も糞もない。
なぜこんな単純なことが分からないのか、それがさっぱり分からない。
673:デフォルトの名無しさん
07/08/06 23:37:56
モルダーにでも聞け
674:デフォルトの名無しさん
07/08/06 23:50:40
>面を構成している頂点の法線が全て共通になるだけの話。
うそーん?
じゃあ点ABCDから、三角形ABC、BCDのポリゴンがあるとしたら
BとCの法線ベクトルはABCと同値なの?BCDと同値なの?
675:デフォルトの名無しさん
07/08/07 00:24:32
ジオメトリシェーダを使えば
面法線も余裕のよっちゃんかしらね。
676:デフォルトの名無しさん
07/08/07 00:26:26
そういや法線の求め方に「正解」ってのは見たことねぇな。
たいがいは頂点の属する面の法線を足し合わせるだけだろうけど、
(足し合わせる前に法線正規化するorしない派がある)
面の向きに依存しないように頂点の角度を考慮に入れたりする場合もある。
この時点でツールによって実装バラバラなのに、ここから面をスムースにする
角度指定なんか入るとさぁ大変。
ぶっちゃけxファイルからツールの法線を完全に再現したいんなら(質問読み違えてる?)
ツールのSDK等でソースが公開されていることを祈るしかねぇんじゃないの?
677:デフォルトの名無しさん
07/08/07 00:40:18
自分はツールにはあまり詳しくないんだが「頂点の角度」ってなんじゃらほい??
それはさておき、ツールで指定した面法線の値に依存するような
反射を作りたいんなら、そもそもX形式でやることがアレかも?
そのツールからX形式にするときに、求める情報が失われているかどうか
電卓とかで調べて、ダメなら結局自前でエクスポーターとか書くしかないんじゃね?
678:デフォルトの名無しさん
07/08/07 06:23:20
>>674
その場合ってBとCの頂点は法線を2つもつためにBとCの頂点がそれぞれ2つになるんじゃね?
ΔABCと△BCDのBCは別の頂点になるんじゃね?っつこと
679:デフォルトの名無しさん
07/08/07 08:27:09
Xファイルのフォーマットの仕様では法線のベクトル配列とインデックス配列は頂点座標のそれらとは独立しているので、
頂点4つに対して法線を6つ用意して法線を共有しない三角形を2つ作るといったことも記述できるよ。
URLリンク(msdn2.microsoft.com)
ただ、そのような変則的な書き方を利用するかどうかはCGツールのエクスポータ次第だけどね。
680:デフォルトの名無しさん
07/08/07 09:16:48
Xファイルで面法線を記述する例
(頂点座標4個、法線ベクトル2個、三角形2個)
------------------------------
xof 0302txt 0032
Mesh {
4;
-1.0;0.0;0.0;,
1.0;0.0;0.0;;
0.0;-1.0;1.0;,
0.0;1.0;1.0;,
2;
3;0,1,2;,
3;1,0,3;;
MeshNormals {
2;
0.0;-0.7071;-0.7071;,
0.0;0.7071;-0.7071;,
2;
3;0,0,0;,
3;1,1,1;;
}
}
------------------------------
DirectX Viewerではこれで期待通りに動作した。
681:デフォルトの名無しさん
07/08/07 10:00:42
だからモデリング時に面法線を使用した場合、エクスポートした時点でデータが入っているんだから、
これ以上グダグダ言っても始まらないだろ。
入っている物をそのまま使えばいいだけ。
逆に頂点ごとに法線が異なる場合は、モデリング時の指定かエクスポートの仕方が悪い。
結局データを読み込む段階に対処すべき話ではない。
682:デフォルトの名無しさん
07/08/08 00:19:30
面法線を設定したって表示は頂点法線なんだべ?
なんか勝手に反映されてるような気がしないでもないけどねw
されてねぇんかな?