在运行时将.OBJ加载到Unity中

Aka*_*ngh 7 c# unity-game-engine unityscript

我的工作是编写一个代码,在运行时将.OBJ加载到Unity中.Unity在其维基页面中提供了示例代码.我使用以下代码来使用链接中给出的类:

public class Main : MonoBehaviour {

    // Use this for initialization
    void Start () {
        Mesh holderMesh = new Mesh ();
        ObjImporter newMesh = new ObjImporter();
        holderMesh = newMesh.ImportFile("C:/Users/cvpa2/Desktop/ng/output.obj");
    }
Run Code Online (Sandbox Code Playgroud)

我在Unity Monodevelop中没有收到任何错误,但模型也没有加载.可能的解决方案是什么?

Bar*_*art 6

仅仅创建一个Mesh对象是不够的.你将不得不做至少两件事:

  • 创建一个MeshRenderer组件
  • 创建一个MeshFilter组件

因此,如果您将代码更改为以下内容,则至少应该看到您的网格是否已成功创建.

using UnityEngine;
using System.Collections;

public class Main : MonoBehaviour
{

    // Use this for initialization
    void Start()
    {
        Mesh holderMesh = new Mesh();
        ObjImporter newMesh = new ObjImporter();
        holderMesh = newMesh.ImportFile("C:/Users/cvpa2/Desktop/ng/output.obj");

        MeshRenderer renderer = gameObject.AddComponent<MeshRenderer>();
        MeshFilter filter = gameObject.AddComponent<MeshFilter>();
        filter.mesh = holderMesh;
    }
}
Run Code Online (Sandbox Code Playgroud)

从那里开始你仍然需要分配一个材料(如果加载/创建)和其他这样的东西,但它将是一个开始.

  • 看来 ObjImporter 是错误的。其中有一些代码似乎没有意义,并且在大文件上肯定会崩溃。它使用面数来定义顶点数组的大小(应该要小得多),因此 Unity 会抱怨顶点数超过 65000,而实际上却低于该值。 (2认同)