3Dモデルの頂点データを、取得したボーンに対応させたいのですがインターネットで調べたら、
・・・・・・・・・・
1,0,0,0,
0,1,0,0,
0,0,1,0,
x,y,z,1
・・・・・・・・・・
ここのx,y,zをそのまま代入と書いてあったので、直接代入してみたのですが、うまくいきませんでした。
さすがに、直接代入はおかしいかなとは思い色々調べ計算してみたのですが、うまくいきませんでした。
ちょっと見にくいのですが、モデルとボーンの位置が上下反転してしまっています。
このモデルをボーンに対応させるように行列(↑)のx,y,zを設定するにはどうすればいいのでしょうか?
もしよろしければ教えてください<(_ _)>
OpenG
1void obj_SetInitial() { 2 glPushMatrix(); 3 /*for (int i = 0; i < mesh.boneCount; i++){ 4 for (int j = 0; mesh.boneList[i][j] != NULL; j++) { 5 mesh.vertex[mesh.boneList[i][j] * 3] *=mesh.boneCoords[i][0]; 6 mesh.vertex[mesh.boneList[i][j] * 3 + 1] *= mesh.boneCoords[i][1]; 7 mesh.vertex[mesh.boneList[i][j] * 3 + 2] *= mesh.boneCoords[i][2]; 8 } 9 }*/ 10 glPointSize(3); 11 glColor3f(1.0, 0.0, 0.0); 12 glBegin(GL_POINTS); 13 { 14 for (int i = 0; i < mesh.boneCount; i++) { 15 glVertex3f(mesh.boneCoords[i][0], mesh.boneCoords[i][1], mesh.boneCoords[i][2]); 16 } 17 } 18 glEnd(); 19 glPopMatrix(); 20 21 obj_Draw(); 22}
ボーンを適用させるために必要な数学の知識がまだ身についていないように思えます。
そもそもMatrixを理解していない時点で話になりません。
stdioさんご返信ありがとうございます<(_ _)>
すみません。勉強してきまーす!
>さすがに、直接代入はおかしいかなとは思い
なぜそう思ったのでしょうか?
何も座標変換せず、そのままの位置に表示するのであれば、直接代入で問題ないような気がしますが。
ちょっとこれだけの情報では分からない気がします。
mesh.boneList や mesh.boneCoords の値を設定している箇所を確認してみてはどうでしょうか。
nskydivingさんご返信ありがとうございます。
[頂点座標=ボーン座標]の様にローカル座標に変換したのですが、上の写真の様にボーンの形になってしまいました。
stdioさんのおっしゃる通り理解が足りていなかったので、頑張って勉強してきます!!
そもそも全ての頂点がボーンに対応していないので、どこか間違っているかもしれないので、
nskydiving さんのおっしゃった通り設定の確認をしてみます。
回答1件
あなたの回答
tips
プレビュー