沿曲线更新网格

Updating a mesh along a curve

我正在寻找一种沿曲线修改程序网格的方法。 (http://docs.unity3d.com/ScriptReference/Mesh.html) 通过沿着该曲线创建参考 Vector3 点并随后相应地更新各种网格阵列。

我认为我需要通过将每个 vector3 索引设置为该变换处的曲线变换来从曲线创建一个 vector3 数组。 这可以用对象来完成,但我不确定这是否适用于 vector3 数组,例如:

For (int i = 0; i < items.Length; i++, p++) { //gets the array length of custom mesh
    Transform item = Instantiate(items[i]) as Transform; // instantiates item as transform
    Vector3 position = spline.GetPoint(p * stepSize); //references my curve point and creates position vector each update
    item.transform.localPosition = position; //transforms instantiate item to curve point position
}

第二个要解决的问题是使用这个向量数组添加到我的网格中。 每个网格组件的操作相似,所以我将使用三角形作为示例:

初始三角形:(在启动方法上)

0,2,1
2,3,1 

在每次更新时,我希望自然地再添加 2 个三角形 下面的一组三角形是例如:

2,4,3
4,5,3

(不幸的是,由于声誉限制,我无法 post 图片) 这遵循以下规则:对于每个新三角形集:

Triangle I0+2 = (Triangle I1 + 2, Triangle I1 + 1, Triangle I1 +2)
Triangle I0+3 = (Triangle I2 + 2, Triangle I2 + 1, Triangle I1 +2)

顶点将通过使用来自曲线的 'instantiated' vector3 坐标添加到动态列表中。

我已经看到一些类似问题的尝试,但是我还没有看到讨论这种更新方法,因为看起来其他人已经选择使用网格尺寸更新方法。考虑到曲线的使用,显然这是不切实际的。

经过多次修改,我找到了答案:

在三个平行的贝塞尔曲线上取浮动距离。 在更新时将这三个点存储为向量。 调整 distance var 并通过 for 循环将每条曲线上的所有向量放入列表中。 在每个 for 循环实例上,在 vector2 列表中创建三角形。 计算完所有点后:创建一个可自定义的网格和吊杆 track/road/path - 只需确保包括网格渲染器、刚体、碰撞器和过滤器。