Я использую objImporter, это не проблема созданного единства, но я импортирую созданный 3dmax, это проблема - PullRequest
0 голосов
/ 26 апреля 2019

Я использую objImporter, это не проблема созданного единства, но я импортирую созданный 3dmax, это проблема

사용한 스크립트 https://wiki.unity3d.com/index.php/ObjImporter

Произошла эта ошибка

Mesh.vertices is too large. A mesh may not have more than 65000 vertices.
UnityEngine.Mesh:set_vertices(Vector3[])
ObjImporter:ImportFile(String) (at Assets/MyAssets/Scripts/ObjImporter.cs:52)
UIManager:Load() (at Assets/MyAssets/Scripts/UIManager.cs:50)
UnityEngine.EventSystems.EventSystem:Update()

Mesh.uv is out of bounds. The supplied array needs to be the same size as the Mesh.vertices array.
UnityEngine.Mesh:set_uv(Vector2[])
ObjImporter:ImportFile(String) (at Assets/MyAssets/Scripts/ObjImporter.cs:53)
UIManager:Load() (at Assets/MyAssets/Scripts/UIManager.cs:50)
UnityEngine.EventSystems.EventSystem:Update()

Mesh.normals is out of bounds. The supplied array needs to be the same size as the Mesh.vertices array.
UnityEngine.Mesh:set_normals(Vector3[])
ObjImporter:ImportFile(String) (at Assets/MyAssets/Scripts/ObjImporter.cs:54)
UIManager:Load() (at Assets/MyAssets/Scripts/UIManager.cs:50)
UnityEngine.EventSystems.EventSystem:Update()

Failed setting triangles. Some indices are referencing out of bounds vertices. IndexCount: 166833, VertexCount: 0
UnityEngine.Mesh:set_triangles(Int32[])
ObjImporter:ImportFile(String) (at Assets/MyAssets/Scripts/ObjImporter.cs:55)
UIManager:Load() (at Assets/MyAssets/Scripts/UIManager.cs:50)
UnityEngine.EventSystems.EventSystem:Update()

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Я считаю, что ваша проблема связана с размером модели, поскольку сетка может иметь более 65000 вершин.Вы должны прочитать каждый кусок из 65000 вершин и поместить их в кусочек сетки, затем собрать все кусочки сетки в одну сетку, которая является общей сеткой,
Я настоятельно рекомендую использовать этот актив Простой .OBJ , он будетсэкономить время

0 голосов
/ 26 апреля 2019

Проблема в том, что скрипт использует сетки с 16-битными индексами, которые поддерживают только модели размером до 2 ^ 16 вершин. Однако Unity поддерживает 32-битные индексы, которые поддерживают до 2 ^ 32 вершин = ~ 4 миллиардов. Все, что вам нужно сделать, это добавить эту строку:

mesh.indexFormat = Rendering.IndexFormat.UInt32;

После этого:

Mesh mesh = new Mesh();

Внутри функции ImportFile.

Обратите внимание, что некоторые мобильные устройства не поддерживают 32-битные индексы.

https://docs.unity3d.com/ScriptReference/Mesh-indexFormat.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...