—
大家好,我因为工作原因,需要将Unity中的单体模型上的点,进行数据实时移动变换,
但我发现同样的模型在建模软件中,和引擎中是不一样的点数量,同样,点序号也不一样,所以我在后台无法进行有效的规则化控制;
所以想问问大家,有没有什么方法?或者已知脚本,可以做到将Unity中的模型点数量和序列,能调成与建模软件中一致?
或者能够在Unity中将一个单体模型上的点序号显示出来,再或者说能够在后台编辑器中,显示分辨出来?
—

—
大家好,我因为工作原因,需要将Unity中的单体模型上的点,进行数据实时移动变换,
但我发现同样的模型在建模软件中,和引擎中是不一样的点数量,同样,点序号也不一样,所以我在后台无法进行有效的规则化控制;
所以想问问大家,有没有什么方法?或者已知脚本,可以做到将Unity中的模型点数量和序列,能调成与建模软件中一致?
或者能够在Unity中将一个单体模型上的点序号显示出来,再或者说能够在后台编辑器中,显示分辨出来?
—

关注Unity在导入模型时,可能会对模型进行优化,这可能会改变模型的顶点数量和顶点的顺序。如果你需要在Unity中使用和建模软件中完全相同的顶点数据,你可能需要禁用这些优化选项。
在Unity中,你可以通过以下步骤来禁用模型的优化:
这应该可以保证Unity中的模型顶点数据和建模软件中的数据一致。
至于显示模型的顶点序号,Unity本身并没有提供这样的功能。但你可以通过编写脚本来实现。以下是一个简单的示例,它会在每个顶点的位置显示其序号:
using UnityEngine;
[RequireComponent(typeof(MeshFilter))]
public class VertexNumberDisplay : MonoBehaviour
{
void OnDrawGizmos()
{
Mesh mesh = GetComponent<MeshFilter>().mesh;
Vector3[] vertices = mesh.vertices;
for (int i = 0; i < vertices.Length; i++)
{
Gizmos.DrawSphere(transform.TransformPoint(vertices[i]), 0.1f);
UnityEditor.Handles.Label(transform.TransformPoint(vertices[i]), i.ToString());
}
}
}
这个脚本使用了Gizmos和Handles来显示顶点序号,所以它只在Scene视图中有效,不会在Game视图中显示。你可以将这个脚本添加到你的模型上,然后在Scene视图中查看顶点序号。
请注意,这个脚本使用了UnityEditor命名空间,所以它不能在构建的游戏中使用,只能在Unity编辑器中使用。