【发布时间】:2015-01-21 22:55:22
【问题描述】:
我正在寻找一种沿曲线修改程序网格的方法。 (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
(很遗憾,由于声誉限制,我无法发布图片) 这遵循对于每个新三角形集的规则:
Triangle I0+2 = (Triangle I1 + 2, Triangle I1 + 1, Triangle I1 +2)
Triangle I0+3 = (Triangle I2 + 2, Triangle I2 + 1, Triangle I1 +2)
将使用曲线中的“实例化”vector3 坐标将顶点添加到动态列表中。
我已经看到了一些类似问题的尝试,但是我还没有看到讨论过这种更新方法,因为看起来其他人已经选择使用网格尺寸更新方法。显然,考虑到使用曲线,这是不切实际的。
【问题讨论】:
-
欣赏编辑章节。
-
更新:设法让列表最终工作(使用 System.Collections.Generic 时似乎有一个看似随机的错误)
-
更新 2:我错误地假设一个新三角形可以引用以前的三角形。以下三角形将是:4,5,6 4,6,7
标签: c# arrays unity3d bezier procedural-generation