更新顶点时,Mesh.bounds和Renderer.bounds不会更改

时间:2019-02-28 10:54:36

标签: unity3d

我正在通过在每个帧上向其自身添加每个顶点的法线来生成3D模型。该模型在视觉上显然会增大大小,但是在注销边界时它们不会改变。

using UnityEngine;

public class VertexExperiment : MonoBehaviour
{
    private Mesh mesh;
    private Renderer renderer;

    void Start()
    {
        mesh = gameObject.GetComponent<MeshFilter>().mesh;
        renderer = gameObject.GetComponent<Renderer>();
    }

    void Update()
    {
        Vector3[] vertices = mesh.vertices;
        for (int i = 0; i < vertices.Length; i++)
        {

            Vector3 normal = vertices[i].normalized;
            vertices[i] = vertices[i] + normal;
        }
        mesh.vertices = vertices;

        print(renderer.bounds.size);
        print(mesh.bounds.size);
    }
}

注销值的结果

Result of logging

1 个答案:

答案 0 :(得分:1)

因为在更改顶点时必须重新计算边界 在打印边界之前添加以下行:

 mesh.RecalculateBounds();

然后您将看到它会改变。您可以检查this了解更多信息。祝您实验顺利:)