1、在unity中生成导航网格
2、导出网格的顶点和索引数据
这是导出数据的C#文件代码
using System.IO;
using UnityEditor;
using UnityEngine.SceneManagement;
using UnityEngine;
using System.Security.Cryptography;
//navmesh导出数据
public class NavMeshExport : MonoBehaviour
{
[MenuItem("NavMesh/Export")]
static void Export()
{
Debug.Log("NavMesh Export Start");
UnityEngine.AI.NavMeshTriangulation navMeshTriangulation = UnityEngine.AI.NavMesh.CalculateTriangulation();
//文件路径
string path = Application.dataPath + "/AStar/obj/" + SceneManager.GetActiveScene().name + ".obj";
//新建文件
StreamWriter streamWriter = new StreamWriter(path);
double[] arr = new double[navMeshTriangulation.vertices.Length];
//顶点
for (int i = 0; i < navMeshTriangulation.vertices.Length; i++)
{
streamWriter.WriteLine("v " + navMeshTriangulation.vertices[i].x + " " + navMeshTriangulation.vertices[i].y + " " + navMeshTriangulation.vertices[i].z);
}
double[] farr = new double[navMeshTriangulation.indices.Length];
Debug.Log("triangles number--->" + farr.Length);
//索引
for (int i = 0; i < navMeshTriangulation.indices.Length;)
{
streamWriter.WriteLine("f " + (navMeshTriangulation.indices[i] + 1) + " " + (navMeshTriangulation.indices[i + 1] + 1) + " " + (navMeshTriangulation.indices[i + 2] + 1));
i = i + 3;
}
streamWriter.Flush();
streamWriter.Close();
AssetDatabase.Refresh();
Debug.Log("NavMesh Export Success");
}
}
3、安装python(实测2.7可以)
通过 convert_obj_three.py
执行
python convert_obj_three.py -i xx.obj -o xx.json
生成threejs能够使用的数据文件
如果生成失败
从Autodesk公司官网找到FBX的sdk,注意要是python版本
这里用的是 fbx202001_fbxpythonbindings_win