c# - 如何在Unity中只找到网格的 "top"

标签 c# 3d unity3d mesh

我需要在 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/

相关文章:

c# - 使用 GET 访问 WCF 休息服务时出现 400 http 错误请求错误

c# - 使用 Controller 名称和操作名称 main.js 时,asp.net core 的 Angular 2 设置问题

c# - 双向绑定(bind)到 WPF 中多个列表框上的 ListBox SelectedItem

graphics - 有谁知道 3d 图形编程基础知识的好教程(从头开始,不是 Direct3d 或 OpenGL)

ios - Xcode 9 GM - 导出和上传到 App Store 崩溃

c# - WPF ScrollViewer - 将水平滚动条对齐到顶部?

javascript - PhysiJS:如何获得旋转物体上给定点的线速度

c# - 为什么它不将 Bool 变量传递给另一个类?

ios - 如何检测游戏对象上的触摸

Java:多线程和二维线程