when I try to read triangle indices from TriMesh object indices are nor correct value.
Can you check this?
here is sample code and sample import file
public static void LoadMesh(string filePath)
{
var fullPath = Path.GetFullPath(filePath);
var directory = Path.GetDirectoryName(fullPath);
var scene = new Scene();
scene.Open(filePath);
var rootNode = scene.RootNode;
var childNodes = rootNode.ChildNodes;
var childNodeCount = childNodes.Count;
for (var i = 0; i < childNodeCount; i++)
{
var node = childNodes[i];
foreach (var entity in node.Entities)
{
switch (entity)
{
case Mesh mesh:
var vertexDeclaration = new VertexDeclaration();
var vertexFieldForVertex = vertexDeclaration.AddField(VertexFieldDataType.FVector3, VertexFieldSemantic.Position);
var vertexFieldForNormal = vertexDeclaration.AddField(VertexFieldDataType.FVector3, VertexFieldSemantic.Normal);
var vertexFieldForUv = vertexDeclaration.AddField(VertexFieldDataType.FVector2, VertexFieldSemantic.UV);
var triMesh = TriMesh.FromMesh(mesh);
var vertices = new List<Vector3>();
var normals = new List<Vector3>();
var uvs = new List<Vector2>();
triMesh.IndicesToArray(out int[] triangles);
foreach (var vertex in triMesh)
{
var vertexRaw = vertex.ReadFVector3(vertexFieldForVertex);
var normalRaw = vertex.ReadFVector3(vertexFieldForNormal);
var uvRaw = vertex.ReadFVector2(vertexFieldForUv);
vertices.Add(new Vector3(vertexRaw.x, vertexRaw.y, vertexRaw.z));
normals.Add(new Vector3(normalRaw.x, normalRaw.y, normalRaw.z));
uvs.Add(new Vector2(uvRaw.x, uvRaw.y));
}
var vertexCount = vertices.Count;
foreach (var triangleIndex in triangles)
{
if (triangleIndex >= vertexCount)
{
throw new Exception("Triangle Index is bigger then vertexCount!");
}
}
break;
default:
break;
}
}
}
}