Qt/openGL アプリケーションがあり、3D オブジェクト座標に依存する座標を持つ 2D 要素を画面に表示します。3D ワールドを移動すると、2D 要素がうまく追従します。ここで、openGL で 3D オブジェクトの Y 座標を変更するために、2D 要素を Y 画面軸に移動したいと考えています。したがって、3D オブジェクトの X と Z は変化せず、高度 Y のみが変化します。
どうやってするか?
新しい 2D 座標で gluUnproject を試してみましたが、この関数は new (X1,Y1,Z1) を返します。「X と Z は既に知っているので、X と Z を与える Y1 だけを教えてください」とは言えません。そして、返された Y1 を取り、それを X と Z で使用すると、もちろん機能しません。なぜなら、gluProject(X,Y1,Z) では 2D ポイントが得られないからです。
私もそれを試しました:3Dオブジェクトの2つの点(X、Y、Z)と(X、Y + 1、Z)があります。これらの 2 つのポイントで gluProject を使用すると、(winX,winY,winZ) と (winX1,winY1,winZ1) (もちろん winX=winX1) が得られます。私は deltaY=abs(winY-winY1) を推測します。これは、2 つの 3D ポイント間の Y 軸上の 1 つの openGL unite のピクセルに相当します。それはうまく機能しますが、あまり大きな回転をしない場合に限りますので、良い解決策ではありません.
何か案は?