最近、OpenGLで、3Dの物体を動かすプログラムを書き始めた者です。
シリンダーなどを置く時に、物体の向きが考えているようになりません。
例えば、中心座標にシリンダーを置いて、x軸周りに30度、y軸周りに30度、z軸周りに30度の方向を向くように、シリンダーの向きを変えたいと思って、
glRotatef(30, 1.0, 0.0, 0.0);
glRotatef(30, 0.0, 1.0, 0.0);
glRotatef(30, 0.0, 0.0, 1.0);
と書いてみたのですが、思ったようにはならず、調べてみると、最初のglRotatefで、x軸周りに回転させた時点で、座標系ごと回転しているということなんですよね?
そして、次のy軸周りの回転は、その前に回転させた座標系のy軸周りに回転し、さらに、その次のz軸周りの回転は、前2回の回転がかかっている、座標軸のz軸周りに回転するという認識でいいでしょうか?
おそらくそれで、思った方向にシリンダーが向かないのだなということはわかったのですが、
動かない座標(絶対座標?)に対して、上記の角度に物体を向かせるには、どのようにすればよいでしょうか?
座標系が回転したことを考慮して、次の回転角を計算する必要があるのでしょうか?
それは、ものすごく、大変そうなので、なんとか、回避したいのですが、できますでしょうか?
お知恵をお借りできればと思います。よろしくお願いしたします。
回答2件
あなたの回答
tips
プレビュー