public MeshPtr LoadStaticBrfMeshIntoOgre(SceneManager sceneManager, MBBrfMesh brfMesh, int frame = 0) { //Convert Vertex and Faces to Ogre Mesh Format if (brfMesh == null) { return(null); } if (meshes.ContainsKey(brfMesh.Name)) { return(meshes[brfMesh.Name]); } ManualObject mo = sceneManager.CreateManualObject(brfMesh.Name + "-" + Guid.NewGuid().ToString()); mo.Begin(brfMesh.Material); int np = 0, nv = 0; for (int i = 0; i < brfMesh.Frames[frame].pos.Count; i++) { mo.Position( brfMesh.Frames[frame].pos[i].x, brfMesh.Frames[frame].pos[i].y, brfMesh.Frames[frame].pos[i].z ); np++; } for (int i = 0; i < brfMesh.Frames[frame].norm.Count; i++) { mo.Normal( -brfMesh.Frames[frame].norm[i].x, brfMesh.Frames[frame].norm[i].y, brfMesh.Frames[frame].norm[i].z ); mo.TextureCoord( brfMesh.Vertex[i].ta.X, brfMesh.Vertex[i].ta.Y ); nv++; } for (int i = 0; i < brfMesh.Faces.Count; i++) { for (int j = 0; j < 3; j++) { mo.Triangle( (uint)(brfMesh.Vertex[brfMesh.Faces[i].index[j]].index + 1 + cp), (uint)(brfMesh.Faces[i].index[j] + 1 + cv), (uint)(brfMesh.Faces[i].index[j] + 1 + cv) ); } } mo.End(); cp += np; cv += nv; return(mo.ConvertToMesh(brfMesh.Name + "-" + Guid.NewGuid().ToString())); }
public MBBrfMeshRenderable(MBBrfMesh brfMesh) { this.brfMesh = brfMesh; texture = new Texture(); }