• 締切済み

OpenGLでの軸回転について

はじめまして 早速質問ですが、OpenGLで平面画像をカメラ目線にさせる(視線に合わせる)という動作をプログラムしたいのですが、 そのやり方がわかりません(カメラは動いて、常にその方向に向かせる)。 最初XYZ軸をそれぞれ動かす計算をさせたかったのですが、 その計算式が分かりません どなたか教えていただけないでしょうか? LightWaveみたいにHPBを動かして出来れば楽なんですが…^^;

  • TGold
  • お礼率100% (1/1)

みんなの回答

  • ma2
  • ベストアンサー率100% (2/2)
回答No.1

良く使われるテクニックなので、探せばそれなりに情報が出てくると思います。 DirectX系の参考書やプログラムサイトなんかでも目にしますが、原理は一緒なのでOpenGLでも使えます。 とりあえず「ビルボード」辺りをキーワードに検索してみては?

TGold
質問者

お礼

返信遅れてすみません ビルボードで調べてみましたら、色々と 自分のやりたい内容のページが出てきましたので これらを使って試していきたいと思っています。 ありがとうございました。今後もまた何かあれば、 回答をお願いしたいです。

関連するQ&A

  • 回転した座標軸と一致させるための回転軸と角度の算出

    こんにちは。お知恵をお借りしたく質問致します。 プログラミング中で出た話題なのですが、計算の問題ですので数学カテゴリが適しているだろうと思い、投稿いたします。 ちょっと説明しにくく図を添付致しましたので併せてご覧いただければと思います。(線がふるえていて申し訳ないです。) 図のように、xyz座標を回転してXYZ座標の向きに一致させたいと考えています。 また、「指定した軸(α,β,γ)を回転軸としてθ度回転する」という関数があるので、それを活用しようと考えています。α,β,γはコサイン値(方向余弦)です。回転方向は、ベクトルの向きに時計回り…右ネジの法則みたいな感じです。 x軸から見たXの角度(θxX), y軸からのX(θyX), z軸からのX(θzX) 同様にx軸から見たY(θxY),θyY,θzY、θxZ,θyZ,θzZ といったように、それらの角度(コサイン値)は分かっています。 (=xyz座標からみたXベクトルの方向余弦、Yベクトルの方向余弦、Zベクトルの方向余弦が分かっている。) z軸とZ軸の外積を取ったベクトルを回転軸として、θzZが分かっているのでその角度で回転することでZ軸は一致しますけど、XY軸は合いません。(当然ですが…) そのXY軸を合わせるためにまた回転するというのも遠回りで、任意の軸1本を中心に何度か回転するだけ(上記関数を1度使用するだけ)で、必ず向きが一致する解があると思うのですが、その任意軸と角度を算出する方法が分かりません。 一般にどういう計算をするのでしょうか。アドバイスいただければ幸いです。 なお、上記関数を用いない方法でも構いません。 「X軸(Y軸、Z軸)を回転軸としてφ度回転する」という関数もあるので、オイラー角を求める方法でも構いません。 その他、説明不足な点がありましたら随時追記致しますので、ご指摘願います。 どうかよろしくお願いいたします。

  • 【C++でOpenGL】平面から立体を作るには

    こんにちは。最近大学の研究にOpenGLを利用しようと思っている者です。 今,2次元座標上に平面図形を描画し,それを底面をその形のまま 3次元座標上に立体として起こす,という点で悩んでいます。 現在は,3次元座標上のx,y平面にGL_POLYGONで多角形を描画し, for文でz軸方向に繰り返し描画するよう設定していて, 擬似的に立体っぽくしてはいるのですが, 真横からみるとやはり平面と平面の隙間が目立って上手くいきません。 繰り返し回数を増やし,1回のz座標の増加量を小さくすると, 隙間はあまり目立たなくなるのですが,やはり実行時間が大幅にかかってしまいます。 OpenGLで底面が多角形の3Dオブジェクトを描画する方法を ご存知の方がいらっしゃいましたら,ぜひご指導お願い致します。 また,「こうした方がもっと効率良いのでは?」という意見もございましたら, ぜひお願い致します! 殆ど初心者ですので,受け答えなどに至らない点がございましたらすみません。

  • 直交行列による線形変換の問題

    以下の画像の問題です。 自分でやってみたところ、 √2u+w=1 という平面になりました。 図示は、x+y+z=1をxyz平面に書いて、それとは別に、上で求めた√2+w=1をuvw平面に書きました。 vが消えてしまったので、図形は、v軸方向に無限に長い平面ということになったのですがどうでしょうか? 計算ミスしている可能性もあって心配です。 よろしくお願いします。

  • 回転してできる体積

    x=a,x=b(a<b),x軸,y=f(x)で囲まれる図形をx軸で回転してできる体積Vは V=π∫(a→b){f(x)}^2 dx で与えられる。 それの応用として、 (問)y=x+2,y=x^2で囲まれる図形を、y=x+2で回転してできる体積を求めよ. という問題を考える。 注;ハート型の半分を回転させることに注意 軸が傾いていることと、半ハート型の回転により、分けて積分しなければいけないので、計算がいやらしい。 ところで、xy平面上に直線lがあり、lとある曲線で囲まれる閉領域Dがある. このとき、Dをlを軸に回転してできる体積Vは V=2π∬(D)d(P)dxdy で求めてみたところ、どうやら答えが同じになる。 ここでd(P)とは xy平面上の点P(x,y)に対して d(P):=直線lと点Pとの距離 これを使うと、この問題の計算が格段に楽になる。 ただ問題なのは、この公式は正しいのか?ということである。 だれか、この公式が正しい、または間違っていること分かる方、解答をお願いします。 (lがx軸に平行なときは一致することは自分で確かめてみました)

  • エネルギー軸と時間軸は平行?(単振動の計算より)

    高校の時にやった物理の単振動の範囲で、ちょっと計算してみて、疑問がでてきたので質問します。 私は理系の学生ではないので、感覚的な話になってしまうかと思いますが、どうかお付き合いください。 基本的な単振動を考えます。 バネ定数がkのバネに質量mの物体をつけ、単振動させます。このとき、運動方向には単振動によって生じる力しか働きません。またその他の力(摩擦力、空気抵抗など)は一切考えません。 運動方向にx軸をとり、自然長のときのxの値を0とし、xでの速度をvとします。(1次元の運動です。) プライムは時間微分を表わします。 全エネルギーをEとして、エネルギー保存則より、 (1/2)mv^2+(1/2)kx^2=E 式変形をしていきます。 mv'=-kxですから、kx=-mv'より、 (1/2)mvx'-(1/2)mv'x=E すると、外積の形を利用して、 (1/2) (mv,x,0)×(mv',x',0)=(0,0,E) mv=p(運動量)として、 (1/2) (p,x,0)×(p',x',0)=(0,0,E) のようになるかと思います。 横軸をp,縦軸をxとした(p,x)平面を考えてると(縦軸と横軸とで単位?が違う直交座標です。)、点(p,x)の軌道は楕円軌道を描くと思います。そして、点(p',x')の軌道も楕円軌道を描く思います。そして、原点(0,0)、点(p,x)、点(p',x')を結ぶ三角形の面積がEの大きさであり、Eの方向は原点(0,0)から(p,x)平面に垂直の方向だと思います。 ここで、(p,x)平面に対して、時間軸を考えると、原点(0,0)から(p,x)平面に垂直の方向が一番自然な感じがするんです。(感覚的な話で申し訳ありません。)時間軸も考えると、点(p,x)が楕円のらせんを描くような感じです。 そう考えると、エネルギー軸と、時間軸が平行であり、関係があるような気がするのですが、エネルギーと時間には何か関係があるのでしょうか? 教えてください。よろしくお願いします。

  • 3つの直交する軸で円形に切った立体の体積

    先日の『たけしのコマネチ大学数学科』の「投影図」の回で、正面図と側面図が直径aの円、平面図が1辺aの正方形となる(最大の)立体を取り上げていました。 その立体は円筒を軸と垂直に同じ円で切断した、栗の実とかふくらんだ座布団のような立体で、上下軸のどこで切っても断面が正方形になるため、 この立体の体積:直径aの球の体積 = 正方形の面積:円の面積 となるのは面白いと思いました。 そこで疑問がわいたのですが、この立体をもう一度、上下(平面図の視線方向)の軸を中心に直径aの円で切ってできる立体の体積はどうなるでしょうか? 微分積分は得意ではないので、あまり複雑でなければ知りたいと思うのですが…。

  • 3次元空間において、任意の座標(原点除く)から原点を見通した場合の、2

    3次元空間において、任意の座標(原点除く)から原点を見通した場合の、2軸の見かけの角度について質問があります。 例えば、XYZ空間があったとします。X、Y、Z軸はそれぞれ90°で交わっています。 このとき、XY軸の見かけの角度が90°の場合、”XZ平面、もしくはYZ平面上の任意の座標(原点除く)から原点を見ている”ということがいえると思います。 このように、2軸の見かけの角度がわかっている場合、どの平面上の座標から原点を見通しているかがわかると思うのですが、導出方法や具体的な計算方法がわかりません。 射影幾何学等などに詳しい方がいらっしゃいましたら、ご教示お願い致します。

  • 3軸MCのツール研磨について

    閲覧頂きありがとうございます。 タイトルにもありますが3軸MCのツール研磨について質問いたします。 メタルボンドのツール研磨のためのCAMプログラムを組むことになったのですが 図にもありますように砥石に対して0.01ミリの切り込み量で0.1ミリまで切り込みます。 このときツールが矢印の方向へ一方通行で10回動きます。 この動きをさせるためには2Dの平面加工で設定するのが良いでしょうか? また工具の一方通行の設定の仕方を教えて下さい。 以上になります、よろしくお願いいたします

  • xy平面に一様に電荷が存在したときのz軸上の静電ポテンシャルをガウスの

    xy平面に一様に電荷が存在したときのz軸上の静電ポテンシャルをガウスの法則を使わないで求めることは出来るでしょうか?ガウスの法則を使うと-ρz/2εになりました。 実はこれは、xy平面をx方向に一様な面電流密度Kの電流が流れている時に、平面電流の作るベクトルポテンシャルを計算して、磁束密度を求める問題なのです。しかし解説が省略されていて、Ax=-μK|z|/2となっていました。でも僕が解くとどうしてもzの2乗が出てきてしまいます。どなたかご教授ください。

  • 平面と点の最短距離

    ある平面と点の最短距離を計算するプログラムを作成したいのですが、計算方法がわかりません。 平面はXYZを持った4点で定義されており大体長方形になっています。 最短距離は、この長方形の範囲内にぶつけるような形で求める必要があります。 数学の知識に乏しい為、なるべく簡単な方法を教えて頂けると助かります。 宜しくお願い致します。

専門家に質問してみよう