最常用的两种方式:

  • 射线追踪法raycasting)很可能是最常用的方法,其基本原理是:从鼠标处发射一条射线,穿透场景的视椎体,通过计算,找出视锥体中哪些对象与射线相交。 步骤:
  • 获取鼠标的屏幕坐标.
  • 对其应用摄像机的投影和方向的矩阵变换,得到其在世界空间的坐标。
  • 计算出一条射线,从视锥体的近端平面射向远端平面。再然后,对于场景中每一个对象的每一个三角,检查其是否与射线相交。假设你的场景中有1000个对象,每个对象有1000个三角,那么就需要检查一百万个三角。

对此,可以做一些优化:先检查对象的包围球或包围盒是否与射线相交。

  • 基于GPU的拾取方法 需要创建两个场景。一个使用正常的网格对象填充。另外一个使用“拾取材质”的网格对象填充。

评 论:

Last Updated: 9/24/2024, 6:06:00 PM