DirectX 法線の求め方で質問 – プログラミング – Home

DirectX 法線の求め方で質問
 
通知
すべてクリア

[解決済] DirectX 法線の求め方で質問


ナギ
 ナギ
(@ナギ)
ゲスト
結合: 14年前
投稿: 6
Topic starter  

サンプルとかみながら法線の求め方を作っていたんですが
分からなくなったので質問させてください
正規化した後どうやって角度を求めたら良いのでしょうか…

// 独自頂点フォーマット
typedef struct {
D3DXVECTOR3 position;
D3DXVECTOR3 normal;
DWORD color;
float a;
} CUSTOMVERTEX2;

~現在自分の乗っている三角形ポリの座標を求める~
↓求めた後

//P1~P3に求めたXYZの頂点座標を代入
CUSTOMVERTEX2 P1=triVertex[I1];//頂点情報その1
CUSTOMVERTEX2 P2=triVertex[I2];//その2
CUSTOMVERTEX2 P3=triVertex[I3];//その3

D3DXVECTOR3 vec1, vec2; // ベクトル
D3DXVECTOR3 normalize; // 法線ベクトル
vec1 = P1.position - P2.position;
vec2 = P3.position - P2.position;

// 外積を求める
D3DXVec3Cross( &normalize, &vec1, &vec2 );

CUSTOMVERTEX2 vertices;
//正規化する
D3DXVec3Normalize( &vertices.normal, &normalize );

ここまではやってみました
足りない所があったり
皆様からしたらアホすぎる質問かもしれませんがもしよかったらお願いします


引用未解決
トピックタグ
ナギ
 ナギ
(@ナギ)
ゲスト
結合: 14年前
投稿: 6
Topic starter  

解決していませんが

vec1 = P1.position - P2.position;
vec2 = P3.position - P2.position;
だと上向きの水平ポリゴンが
X 0
Y -1
Z 0
という下向きのベクトルを示す結果になっていたので

vec1 = P1.position - P3.position;
vec2 = P2.position - P3.position;
こっちに訂正します(これであってるのかな…)


返信引用
ナギ
 ナギ
(@ナギ)
ゲスト
結合: 14年前
投稿: 6
Topic starter  

自己解決しました

//外積を求める
D3DXVec3Cross( &normalize, &vec1, &vec2 );

//正規化する
D3DXVec3Normalize( &vertices.normal, &normalize );

//角度を求める
rotX = atan2f(vertices.normal.z,vertices.normal.y);
rotZ = -atan2f(vertices.normal.x,vertices.normal.y);
rotY = atan2f(vertices.normal.x,vertices.normal.z);

アークタンジェントというものを使うことで角度を取得することが出来ました
…そもそもプログラムより数学的な問題であってここで質問すること自体が
場違いだったようです
すいませんでした


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました