【发布时间】:2019-02-28 23:41:17
【问题描述】:
目标:在基于网格的图元(即球体、立方体等)表面上的两点之间渲染距离线。
当前解决方案: 迭代遍历两个端点之间的距离线,并以某种方式通过该点“反向”射线投射。 由于距离线通过网格直接连接两个顶点,因此需要网格表面上的对应点。
Ray ray = new Ray();
RaycastHit raycastHit;
ray.origin = posOnDistanceLine;
ray.direction = raycastNormal.normalized;
// Reverse ray since we can't raycast from inside the mesh
ray.origin = ray.GetPoint(1);
ray.direction = -ray.direction;
然后使用 Unity 的 LineRenderer 绘制线条,只要识别出法线(到先前的光线投射)的变化,就会填充顶点的位置。
问题:
糟糕的表现(因为每次端点移动都会投射 100 条光线)。
解决方案并不总是有效,会产生意想不到的锯齿状线条/点。
问题: 有没有更好的方法来实现这一点?
【问题讨论】: