我需要在 Unity 中确定构成其“顶部”的多面体(网格)的顶点;即,沿 y 轴的最远点。
这样做的原因是我正在创建一个程序环境,其中包含许多活跃的网格动力学;其中之一将海洋塑造成波形。它工作得很漂亮,但也会扭曲水底,这并不理想。
我觉得答案可能涉及某种转换,但我不确定如何转换。
最佳答案
免责声明:我以前没有以这种方式处理过网格,但我相信这里有 2 种思考方式可能会让您进一步实现完全可行的解决方案。
可能的解决方案:
使用 Mesh.Bounds 属性。
虽然我怀疑这只适用于平面。
来源:https://docs.unity3d.com/ScriptReference/Mesh-bounds.html
使用 Mesh.Vertices 并根据您使用的轴作为顶部(y 轴),使用每个数组索引中的其他 2 个轴(x 和 z)来计算网格特定部分的最高点.把这些和 tadah 做成一个完整的集合,你就有了表面。
Mesh.Vertices 返回一个 Vector3 数组。
假设您有这些坐标。
Vector3 (443, 31, 543);
Vector3 (443, 32, 543);
Vector3 (443, 33, 543);
Vector3 (443, 34, 543);
Vector3 (443, 35, 543);
这里的最高坐标是 y 为 35 的坐标,假设正 y 轴是您认为的顶部。
可能需要根据给定的顶点编号将某些顶点组合在一起,以便 Vector3 (443, 35, 543);
和 Vector3 (443.1, 35, 543.2 );
属于同一个比较。
来源:https://docs.unity3d.com/ScriptReference/Mesh-vertices.html
希望对您有所帮助。
关于c# - 如何在Unity中只找到网格的 "top",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48838632/