Creating Mesh from meshes with different materials and UVs / Создание Mesh'а из разных мешей с разными UV и материалами

English:
I disassemble the old game, and there are text files of models that I now want to load into the game.
The format of the models is quite simple:

(Material1) (shader name, material index, texture index, additional parameters)

(Material2)

(Vertex1) (simply Vector3)

(Vertex2)

(Polygon1) (material index, Vector3 vertices (to describe the polygon), Vector2 [3] UV coordinates for this material and texture)

(Polygon2)

(Polygon3)

So that’s it. Each polygon is built on these vertices, BUT uses its material and UV relative to this material (by “material index”).

How can this be implemented in Unity? Break everything down into subMeshes? But how then for each submesh to define different materials + textures?

Accordingly, everything is done only through scripts in C #.

Русский:
Суть такова:
Разбираю старую игрушку, и там есть текстовые файлы моделек, которые я сейчас хочу загружать в игру.
Формат моделек довольно прост:

(материал1)(название шейдера, индекс материала, индекс текстуры, дополнительные параметры)

(материал2)

(вершина1)(просто Vector3)

(вершина2)

(полигон1) (индекс материала, Vector3 вершин(для описания полигона),Vector2[3] UV координат для этого материала и текстуры)

(полигон2)

(полигон3)

Так вот. Каждый полигон строится на этих вершинах, НО использует свой материал и UV относительно этого материала.
Как такое возможно реализовать в Unity? Разбивать всё на subMesh’ы? Но как тогда для каждого субмеша определить разные материалы+текстуры?
Соответственно всё делается только через скрипты на C#.

Yes, the solution is called “submeshes”. A single Mesh can be split into several submeshes. Each submesh will have it’s own material. The submeshes share the same vertices but have seperate index lists. Each element in the “materials” array of the MeshRenderer corresponds to the same submesh index. So your MeshRenderer needs as many materials as there are submeshes.

So you would collect all “polygons” / triangles and sort them into seperate lists based on the material used. Set the subMeshCount to the number of materials used. Finally you can use SetTriangles to pass in the different submesh- triangle lists

@Luminisc
из какой игры? :slight_smile: