从带有皮肤的 3ds MAX 导入后,我的游戏内网格统一反转
My in-game meshes are inverted in unity after importing from 3ds MAX with skin
从带有皮肤的 3ds MAX 导入后,我的游戏内网格统一反转,
网格和法线看起来 "upside down",就像我在看某种幽灵一样。
如果我取消选中皮肤,它会正常工作。
第 1 步:设置模型并导出为 FBX。
第 2 步:统一导入。顶点和法线将被翻转。
第 3 步:附加此 C# 脚本,并且 运行 仅一次。
public class meshInverter : MonoBehaviour {
// Use this for initialization
void Start () {
Mesh mesh = GetComponent<SkinnedMeshRenderer>().sharedMesh;
mesh.triangles = mesh.triangles.Reverse().ToArray();
}
// Update is called once per frame
void Update () {
}
}
第 4 步:删除最后一个脚本,附加此 JS 脚本,运行 仅一次:
#pragma strict
import System.Linq;
function Start () {
var mesh = (transform.GetComponent("SkinnedMeshRenderer") as SkinnedMeshRenderer).sharedMesh;
var normals : Vector3[] = mesh.normals;
for (var i=0;i<normals.Length;i++){
normals[i] = -normals[i];
}
mesh.normals = normals;
}
function Update () {
}
第 5 步:删除最后一个脚本,现在模型已修复。
编辑
还要确保您的骨骼 o 网格没有任何负比例,这也可能会搞砸并且不会是 .fbx 导出失败。
从带有皮肤的 3ds MAX 导入后,我的游戏内网格统一反转,
网格和法线看起来 "upside down",就像我在看某种幽灵一样。
如果我取消选中皮肤,它会正常工作。
第 1 步:设置模型并导出为 FBX。
第 2 步:统一导入。顶点和法线将被翻转。
第 3 步:附加此 C# 脚本,并且 运行 仅一次。
public class meshInverter : MonoBehaviour {
// Use this for initialization
void Start () {
Mesh mesh = GetComponent<SkinnedMeshRenderer>().sharedMesh;
mesh.triangles = mesh.triangles.Reverse().ToArray();
}
// Update is called once per frame
void Update () {
}
}
第 4 步:删除最后一个脚本,附加此 JS 脚本,运行 仅一次:
#pragma strict
import System.Linq;
function Start () {
var mesh = (transform.GetComponent("SkinnedMeshRenderer") as SkinnedMeshRenderer).sharedMesh;
var normals : Vector3[] = mesh.normals;
for (var i=0;i<normals.Length;i++){
normals[i] = -normals[i];
}
mesh.normals = normals;
}
function Update () {
}
第 5 步:删除最后一个脚本,现在模型已修复。
编辑
还要确保您的骨骼 o 网格没有任何负比例,这也可能会搞砸并且不会是 .fbx 导出失败。