获得立方体的面
Posted
技术标签:
【中文标题】获得立方体的面【英文标题】:Getting the face of a cube 【发布时间】:2009-08-19 17:46:45 【问题描述】:我想计算立方体上的哪个面被点击了。我已经将鼠标置于 3D 状态,我可以在鼠标的位置以 3D 形式绘制东西。
我现在需要做的就是计算正在触摸立方体的哪个面。
EG。我有一个函数,当我将大小、位置和鼠标位置传递给它时,它会返回人脸。上、下、左、右、前、后。
听起来很简单,但我没有最模糊的。
谢谢大家, 沉默C
【问题讨论】:
【参考方案1】:不确定您使用的是什么 API,但 OpenGL 有一个 selection API,它可以为您执行此操作
【讨论】:
【参考方案2】:您只需为立方体的每个面计算一个line plane intersection,并使用由相机位置和鼠标在视图平面上的位置定义的线。扔掉平面上但不在立方体表面上的所有交点,并选择最近的一个。
如果您将立方体表示为十二个三角形,您也可以使用线三角形交点。但在这两种情况下,您都必须提供更多信息才能获得更具体的答案。
【讨论】:
所以定义的线是从相机到鼠标,对吧? 另外,我假设我会补偿旋转,对吧? 从相机通过鼠标到无穷远的线与一个或多个面相交(如果只有一个立方体,通常是两个)。忽略退化的情况,如边、顶点和任何平行于线的面。剔除背面的面孔可能是值得的。用户几乎肯定想要最近的人脸,但您可能希望提供一种在人脸中进行选择的功能,以便用户可以根据需要选择隐藏的对象。以上是关于获得立方体的面的主要内容,如果未能解决你的问题,请参考以下文章