3d 获取三维模型指定方向上的最远垂直-Unity

3d 获取三维模型指定方向上的最远垂直-Unity,3d,unity3d,vertices,3d,Unity3d,Vertices,我需要得到给定方向向量和模型的模型的最远垂直的位置 乙二醇 obj具有以下顶点: vertice a=(0,0,1) vertice b=(0,1,0) vertice c=(1,0,0) vertice d=(0,0,0) 所以 GetPoint(obj,Vector3.up) 将返回vertice b 提前感谢下面的代码将给出最远的点,但仅对于没有子网格的网格,您可以稍微更改代码以对子网格执行此操作 Vector3 GetFarPoint (Transform obj, Vector3 di

我需要得到给定方向向量和模型的模型的最远垂直的位置

乙二醇

obj具有以下顶点:

vertice a=(0,0,1)

vertice b=(0,1,0)

vertice c=(1,0,0)

vertice d=(0,0,0)

所以

GetPoint(obj,Vector3.up)

将返回vertice 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;
    }
Vector3 GetFarPoint(变换对象,Vector3方向){
向量3[]个顶点;
向量3点;
漂浮距离;
顶点=obj.GetComponent().mesh.vertices;
远距=0f;
foreach(顶点中的矢量3顶点)
{
浮动温度=矢量3.点(方向,垂直);
如果(温度>远距离)
{
远距=温度;
点=垂直;
}
}
返回点;
}

您需要一个距离概念来计算最远的点,而不仅仅是一个方向。如果有一个方向+一个参考点,则可以构造一条线,沿该线搜索距离参考的最远点或构造一个平面,并且只能在平面的一侧搜索,除非使用方向定义特殊度量或度量。