public void GetArraysforVBO(out PrimitiveType primitives, out VertexClass[] vertices, out uint[] indices) { primitives = PrimitiveMode; vertices = new VertexClass[VertexArray.Length]; for (uint i = 0; i < VertexArray.Length; i++) { //vertices[i].Normal = VertexArray[i].Normal; vertices[i].Position = new Vector3Class(VertexArray[i].Position); } indices = IndexArray; }
} // FinalizeAsset() #region Util Functions void UnifyVerts(ClassImportedModel impModel) { int i, j; int[] polyVerts = impModel.GetPolyVerts(); int[] uvIndex = impModel.GetUVIndex(); Vector3[] verts = impModel.GetVerts(); Vector3[] norms = impModel.GetNorms(); Vector2[] uvs = impModel.GetUVs(); List <VertexClass> vList = new List <VertexClass>(); VertexClass vc; for (i = 0; i < polyVerts.Length; i++) { vc = new VertexClass(); vc.pos = verts[polyVerts[i]]; vc.uv = uvs[uvIndex[i]]; if (norms.Length == verts.Length) { vc.norm = norms[polyVerts[i]]; } // if else { vc.norm = norms[i]; //HERE } if (vList.Count < 1) { polyVerts[i] = i; vList.Add(vc); continue; } // if for (j = 0; j < vList.Count; j++) { if (vList[j].pos == vc.pos && vList[j].uv == vc.uv && vList[j].norm == vc.norm) { polyVerts[i] = j; break; } if (j == vList.Count - 1) { polyVerts[i] = i; vList.Add(vc); } //if } // for } // for verts = new Vector3[vList.Count]; norms = new Vector3[vList.Count]; uvs = new Vector2[vList.Count]; for (i = 0; i < verts.Length; i++) { verts[i] = vList[i].pos; norms[i] = vList[i].norm; uvs[i] = vList[i].uv; } // for impModel.SetVerts(verts); impModel.SetNorms(norms); impModel.SetUVs(uvs); impModel.SetPolyVerts(polyVerts); return; } // UnifyVerts()
} // FinalizeAsset() #region Util Functions void UnifyVerts(ClassImportedModel impModel) { int i,j; int[] polyVerts = impModel.GetPolyVerts(); int[] uvIndex = impModel.GetUVIndex(); Vector3[] verts = impModel.GetVerts(); Vector3[] norms = impModel.GetNorms(); Vector2[] uvs = impModel.GetUVs(); List<VertexClass> vList = new List<VertexClass>(); VertexClass vc; for(i=0;i<polyVerts.Length;i++) { vc = new VertexClass(); vc.pos = verts[polyVerts[i]]; vc.uv = uvs[uvIndex[i]]; if(norms.Length == verts.Length) { vc.norm = norms[polyVerts[i]]; } // if else { vc.norm = norms[i]; //HERE } if(vList.Count<1) { polyVerts[i] = i; vList.Add(vc); continue; } // if for(j = 0; j<vList.Count; j++) { if(vList[j].pos == vc.pos && vList[j].uv == vc.uv && vList[j].norm == vc.norm) { polyVerts[i] = j; break; } if(j==vList.Count-1) { polyVerts[i] = i; vList.Add(vc); } //if } // for } // for verts = new Vector3[vList.Count]; norms = new Vector3[vList.Count]; uvs = new Vector2[vList.Count]; for(i=0;i<verts.Length;i++) { verts[i] = vList[i].pos; norms[i] = vList[i].norm; uvs[i] = vList[i].uv; } // for impModel.SetVerts(verts); impModel.SetNorms(norms); impModel.SetUVs(uvs); impModel.SetPolyVerts(polyVerts); return; } // UnifyVerts()