OpenGL に透視図があり、特定の深さでポイントを選択するとします。z=-10 にあるとしましょう。この点の実際の x 座標と y 座標を知るにはどうすればよいですか? 直交ビューを使用すると、すべての深さで同じになるため簡単です。しかし、パースペクティブ1については、これらのxy値を見つけるにはどうすればよいですか?
2 に答える
あなたが提供する座標は、基本的に「世界」の座標です。つまり、あなたが構築する仮想世界に存在する場所です。つまり、使用する座標は常に直交しています。
たとえば、家の 3D モデルを作成する場合、実際の足で作業するように設定できます。0,0 から 0,10 までの線を引いて、正確に 10 を表すことができます。足が長い。近くで見た場合は 10 フィートのままで、視界いっぱいに表示されますが、遠くから見た場合はわずか数ピクセルの長さでした。
オブジェクトが表示されている場合のみ、透視変換が行われます。システムに供給される座標ではまったく行いません。
オブジェクトの画面座標の計算について質問している場合は、そうです。これを行う通常の方法は、 を使用することですgluUnProject
。少なくとも私の経験では、これを行う必要があることは比較的まれです。
気になるのは、マウスを使って画面上で何かを選択するときです。gluUnProject を使用することは可能ですが、OpenGL にはこの種の目的専用の選択モードがあり、かなりうまく機能します。
gluProject
カーソル位置を「世界」の位置に投影する方法gluUnproject
として (およびオブジェクトが画面上のどこにあるかを見つける方法として) を見てください。