2

単純な質問です。オブジェクト ファイルに法線が含まれているのはなぜですか。法線を正しく計算できますか?

私が正しければ、ベクトル point1-point2 と point1-point3 の間の外積を取るだけでよいので、ファイルからそれらを読み取る時間を節約できます。

編集:

より具体的にしようとすると、これは私が見つけて使用したいファイルです。

g cube

v  0.0  0.0  0.0
v  0.0  0.0  1.0
v  0.0  1.0  0.0
v  0.0  1.0  1.0
v  1.0  0.0  0.0
v  1.0  0.0  1.0
v  1.0  1.0  0.0
v  1.0  1.0  1.0

vn  0.0  0.0  1.0
vn  0.0  0.0 -1.0
vn  0.0  1.0  0.0
vn  0.0 -1.0  0.0
vn  1.0  0.0  0.0
vn -1.0  0.0  0.0

f  1//2  7//2  5//2
f  1//2  3//2  7//2 
f  1//6  4//6  3//6 
f  1//6  2//6  4//6 
f  3//3  8//3  7//3 
f  3//3  4//3  8//3 
f  5//5  7//5  8//5 
f  5//5  8//5  6//5 
f  1//4  5//4  6//4 
f  1//4  6//4  2//4 
f  2//1  6//1  8//1 
f  2//1  8//1  4//1 

編集2:

人々が不満を言ったので: http://en.wikipedia.org/wiki/Wavefront_.obj_file

4

1 に答える 1

3

法線を計算できますが、計算に時間がかかります。多くのメッシュがあり、60 fps (またはそれ以上) でレンダリングする必要がある場合、事前計算された法線を GPU にロードする方がパフォーマンスが高くなります。また、ベクトル point1-point2 と point1-point3 の間の外積も、面の法線を与えるだけです。ゴラウド シェーディングに必要な頂点ごとの法線を取得するには、すべての頂点で面の法線を平均化する必要があります。計算が深くなることがわかります。

于 2013-05-12T00:50:51.650 に答える