3d - 获取3D模型指定方向上最远的顶点 - Unity

标签 3d unity-game-engine vertices

我需要在给定方向向量和模型的情况下获取模型最远顶点的位置。

例如

obj 有以下顶点:

顶点 a = (0,0,1)
顶点 b = (0,1,0)
顶点 c = (1,0,0)
顶点 d = (0,0,0)

所以

GetPoint(obj, Vector3.up);

将返回顶点b

提前致谢

最佳答案

下面的代码将给出最远点,但仅适用于没有子网格的网格,您可以稍微更改代码以针对子网格执行此操作..

Vector3 GetFarPoint (Transform obj, Vector3 direction) {

        Vector3[] vertices;
        Vector3 farthestPoint;
        float farDistance;

        vertices = obj.GetComponent<MeshFilter>().mesh.vertices;
        farDistance=0f;

        foreach(Vector3 vert in vertices)
        {
            float temp = Vector3.Dot(direction,vert);
            if(temp>farDistance)
            {
                farDistance = temp;
                farthestPoint = vert;
            }
        }
        return farthestPoint;
    }

关于3d - 获取3D模型指定方向上最远的顶点 - Unity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17386299/

相关文章:

javascript - 为什么脚本无法处理 3D 文本? (统一5)

3d - 现代 GPU 上的纹理更改(和其他状态更改)成本

c# - 如何旋转 WPF 窗口?

math - 使用点积确定点是否位于平面上

android - 如何在 Unity3d 中指定 Android SDK 版本?

c# - 统一掉落 Sprite

opengl - 如何对用三角形绘制的 "perfect cube"进行纹理处理?

c++ - 用c++做一颗心

3d - 旋转,然后翻译成three.js

three.js - Raycaster 无法检测到立方体