OpenGLで世界座標に変換された座標に変換するにはどのように?
-
21-09-2019 - |
質問
私はこのようなOpenGLで設定変換を持ってます:
glPushMatrix();
glTranslated(pntPos.X(), pntPos.Y(), pntPos.Z());
glRotated(dx, 1, 0, 0);
glRotated(dy, 0, 1, 0);
glRotated(dz, 0, 0, 1);
//I use this to Render a freely placeable textbox in 3d
//space which is based on the FTGL-Toolkit [1] (for TTF support).
m_FTLayout.Render(m_wcCaption, m_iCaptionSize);
glPopMatrix();
予想通りこの作品。
しかし、私はワード空間に私のテキストの境界ウィッヒ3D-にBoundingBoxを計算したいと思います。私は私のGL-変革への相対このバウンディングボックスの座標を知っています。
しかし、私はこれらの中から自分の世界座標を計算する苦労を持っています。 あなたは私のバウンディングボックス?
の4つの頂点のそれぞれの世界座標を取得する方法についていくつかの洞察を与えることができます解決
最も簡単な方法は、現在のモデルビュー行列がglGetFloatv(GL_MODELVIEW_MATRIX, m)
何であるかGLを依頼し、結果の行列で、あなたのバウンディングボックスの頂点を変換することです。
m[0] m[4] m[8] m[12] v[0]
m[1] m[5] m[9] m[13] v[1]
M(v) = m[2] m[6] m[10] m[14] X v[2]
m[3] m[7] m[11] m[15] v[3]
それはあなたの頂点のビュー空間4-D均質なポジションが得られます。
それとも、あなたはglTranslatedとglRotated
のmanページで入手可能です数学に基づいて、モデルビューを自分で計算することができ所属していません StackOverflow