基本的にすでに2Dで作業しているので(3Dボードは0,0,0から10,10,0(x、y、z)まで伸びていると思います)、2D/3Dを変換および補間/外挿することができますgluUnProject()を使用しない画面空間座標からの空間座標。画面の解像度が必要になり、変換する3Dスペースグリッドの解像度を選択する必要があります。画面と3D空間の原点の両方が位置合わせされ(0,0画面空間が0,0,0 3D空間にある)、既存の10x10 3Dグリッドを使用して画面サイズが320x240の場合、320/10 = 32、および240 / 10 = 24であるため、1つの1x1領域の画面スペースサイズは32x24です。したがって、ユーザーが162、40を押すと、ユーザーは3D空間で(5、1、0)(162/32> = 5、<6、40 / 24> = 1、<2)内を押しています。これよりも高い解像度が必要な場合は、より高い3D空間グリッド解像度を選択できます(つまり、10ではなく20を使用します)。この係数を使用するためにGLマトリックスを更新する必要はありません。いくつかの点で簡単になるかもしれませんが、モデリングの観点からは、追加の作業が必要になると確信しています。20、1、3のような係数は(.5、1.5、0)になることに注意してください。画面と3D空間の原点がまだ位置合わせされていない場合は、これより前に画面空間の座標を変換する必要があります。0,0の画面スペースが10,10,0の場合、画面の解像度を取得し、そこから現在のポイントを差し引く必要があります。この例では、0,0を320、240に、この例では162、40のポイントになります。 158(320-158 == 162)、200(240-200 == 40)になります。いくつかの点で簡単になるかもしれませんが、モデリングの観点からは、追加の作業が必要になると確信しています。20、1、3のような係数は(.5、1.5、0)になることに注意してください。画面と3D空間の原点がまだ位置合わせされていない場合は、これより前に画面空間の座標を変換する必要があります。0,0の画面スペースが10,10,0の場合、画面の解像度を取得し、そこから現在のポイントを差し引く必要があります。この例では、0,0を320、240に、この例では162、40のポイントになります。 158(320-158 == 162)、200(240-200 == 40)になります。いくつかの点で簡単になるかもしれませんが、モデリングの観点からは、追加の作業が必要になると確信しています。20、1、3のような係数は(.5、1.5、0)になることに注意してください。画面と3D空間の原点がまだ位置合わせされていない場合は、これより前に画面空間の座標を変換する必要があります。0,0の画面スペースが10,10,0の場合、画面の解像度を取得し、そこから現在のポイントを差し引く必要があります。この例では、0,0を320、240に、この例では162、40のポイントになります。 158(320-158 == 162)、200(240-200 == 40)になります。
投影マトリックスの概要とそのすべてがどのように機能するかを知りたい場合は、非投影マトリックスのどこに画面スペースの寸法を配置するかを理解するのに役立ちます。OpenGLレッドブックのこの章をお読みください。http://www.glprogramming.com/red/chapter03.html
これがお役に立てば幸いです。