カメラと魔女の3Dオブジェクトの間の距離を取得する必要がある場合は、を使用しますGL11.GL_DEPTH_COMPONENT
。問題は、カメラと、カメラに最も近いオブジェクトの背後にあるオブジェクトとの間の距離を取得したいということです。それは可能ですか?どのように?
2 に答える
This is becomming my most oftenly written OpenGL clarification:
OpenGL is not a scene graph. It merely draws points, lines and triangles to a 2D framebuffer. There's no such thing like objects or a camera in OpenGL. There's only geometry primitives, which OpenGL forgets about the moment it rasterized them, and the result of this process in the framebuffer. OpenGL has no notion of "in front" or "behind".
What you're asking about is completely outside the scope of OpenGL. What you want is a scene graph implementing ray - triangle intersection picking.
And I can only reiterate what Nicol Bolas already answered:
OpenGL is for rendering; it's for drawing stuff. It's depth buffer exists for that purpose. And the depth buffer only stores the distance from the Z-plane of the camera, not the radial distance from the point to that point on the triangle.
2点(カメラとオブジェクトの中心点など)間の距離が必要な場合は、通常のベクトル計算で計算する必要があります。sqrt(dot(pt1 - pt2, pt1 - pt2))
OpenGLはレンダリング用です。ものを描くためのものです。その目的のためにデプスバッファが存在します。また、深度バッファには、カメラのZ平面からの距離のみが保存され、三角形上のポイントからそのポイントまでの半径方向の距離は保存されません。