0

顔の中心にあり、法線に沿って指しているジオメトリ面に通常のハンドル (今までの背の高い長方形) を描画しようとしています。

私は以下のコードでそれをやっています:

Vec3 up(0.0, 1.0, 0.0);
Vec3 angle_to_rotate = up.cross(face_normal);
double dot = up.dot(normal);
float rotate_angle = std::acos(dot);

Mat4 matrix;
matrix.translate(face_center.x, face_center.y, face_center.z);
matrix.rotate(angle_to_rotate, rotate_angle);

glMultMatrixd(matrix.copyGL());

次に、ワールド空間に背の高い立方体を描いています (y 上)。

これはうまくいく場合もありますが、(2 次元で 45 角度) 失敗するか、角度の方向は正しいのですが、長方形が z 軸上で回転したように見え、正しく配置されていません。

OpenGL でオブジェクトを描画する正しい方法はありますか (将来的には垂直になる可能性もあります)。それとも、より良い方法がありますか?

4

1 に答える 1