我有一个存储为Vertices数组的网格,其中一个Index数组用于绘制它。还使用着色器重绘了四个顶点以突出显示这些点,并将这些顶点的索引存储在另一个数组中。
用户可以使用触摸来旋转模型,这会影响modelViewMatrix:
modelViewMatrix = GLKMatrix4Multiply(modelViewMatrix, _rotMatrix);
我的问题是,当用户轮换时,我需要检测我的四个突出显示点中哪一个最接近屏幕。
我认为最好的方法是计算从视锥体的近剪辑到该点的距离,但是如何计算这些点呢?
答案 0 :(得分:1)
您可以从相机/眼睛空间[1]轻松完成此操作,其中所有内容都相对于相机(因此,相机将位于(0,0,0)并向下看负z轴)。
使用modelViewMatrix将顶点转换为相机空间,例如vertex_cs。那么顶点距摄像机(平面)的距离就是-vertex_cs.z。