public void Init() { ObjMeshContainer = new ObjMeshContainer(); var line = "o Cube"; _createNewMeshStrategy.ProccesLine(line, ObjMeshContainer); }
public override void ChargeBuffer(ObjMeshContainer objMeshContainer, Mesh dxMesh, int index) { var objMesh = objMeshContainer.ListObjMesh[index]; //Cargar VertexBuffer using (var vb = dxMesh.VertexBuffer) { var data = vb.Lock(0, 0, LockFlags.None); var v = new VertexColorVertex(); objMesh.FaceTrianglesList.ForEach(face => { v.Position = objMeshContainer.VertexListV[Convert.ToInt32(face.V1) - 1]; v.Normal = objMeshContainer.VertexListVn[Convert.ToInt32(face.Vn1) - 1]; v.Color = -16777047; //TODO que corresponde poner aca con respecto obj Mesh data.Write(v); v.Position = objMeshContainer.VertexListV[Convert.ToInt32(face.V2) - 1]; v.Normal = objMeshContainer.VertexListVn[Convert.ToInt32(face.Vn2) - 1]; v.Color = -16777047; //TODO que corresponde poner aca con respecto obj Mesh data.Write(v); v.Position = objMeshContainer.VertexListV[Convert.ToInt32(face.V3) - 1]; v.Normal = objMeshContainer.VertexListVn[Convert.ToInt32(face.Vn3) - 1]; v.Color = -16777047; //TODO que corresponde poner aca con respecto obj Mesh data.Write(v); }); vb.Unlock(); } ChargeIndexBuffer(objMesh, dxMesh); }
/// <summary> /// Procesa la linea para crear un nuevo Poligono /// </summary> /// <param name="line">Clase ObjMaterialLader</param> /// <param name="objMeshContainer">Clase ObjMaterialLader</param> public override void ProccesLine(string line, ObjMeshContainer objMeshContainer) { var f = CheckFaceFormatCorrect(line); var arrayVertex1 = CheckTriangleFormatCorrect(f[0]); var arrayVertex2 = CheckTriangleFormatCorrect(f[1]); var arrayVertex3 = CheckTriangleFormatCorrect(f[2]); var face = new FaceTriangle(arrayVertex1[Vertex], arrayVertex2[Vertex], arrayVertex3[Vertex]); if (arrayVertex1.Length + arrayVertex2.Length + arrayVertex3.Length == CompleteArray) { face.SetTexturesValues(arrayVertex1[Texture], arrayVertex2[Texture], arrayVertex3[Texture]); } else { if (!string.IsNullOrWhiteSpace(arrayVertex1[Texture])) { face.SetTexturesValues(arrayVertex1[Texture], arrayVertex2[Texture], arrayVertex3[Texture]); } face.SetNormalValues(arrayVertex1[Normal], arrayVertex2[Normal], arrayVertex3[Normal]); } face.Usemtl = objMeshContainer.ListObjMesh.Last().Usemtl.Count > 0 ? objMeshContainer.ListObjMesh.Last().Usemtl.Last() : null; objMeshContainer.ListObjMesh.Last().FaceTriangles.Add(face); }
public void Init() { ObjMeshContainer = new ObjMeshContainer(); var line = "o Cube"; _createNewMeshStrategy.ProccesLine(line, ObjMeshContainer); line = "usemtl Material.001"; _addUsemtlStrategy.ProccesLine(line, ObjMeshContainer); }
/// <summary> /// Procesa la linea para habilitar el shadow. /// </summary> /// <param name="line">Clase ObjMaterialLader</param> /// <param name="objMeshContainer">Clase ObjMaterialLader</param> public override void ProccesLine(string line, ObjMeshContainer objMeshContainer) { string attribute = CheckAttribute(line); // if (attribute.Equals("1")) { objMeshContainer.ListObjMesh.Last().Shadow = true; } }
/// <summary> /// Procesa la linea para crear un vector normal /// </summary> /// <param name="line">Clase ObjMaterialLader</param> /// <param name="objMeshContainer">Clase ObjMaterialLader</param> public override void ProccesLine(string line, ObjMeshContainer objMeshContainer) { var indices = line.Split(' '); if (indices.Length != 4 && indices.Length != 3) { throw new ArgumentException("El Archivo .obj no fue exportado de forma triangular"); } var vertex = CreateVector3(line); objMeshContainer.VertexListVn.Add((Vector3)vertex); }
/// <summary> /// Carga el buffer del mesh de DirectX /// </summary> /// <param name="objMesh">ObjMesh</param> /// <param name="dxMesh"></param> /// <param name="index"></param> /// <returns>MeshBuilder</returns> public abstract void ChargeBuffer(ObjMeshContainer objMesh, Mesh dxMesh, int index);
/// <summary> /// Procesa la linea para guardar el material que va a usar los siguientes poligonos /// </summary> /// <param name="line">Clase ObjMaterialLader</param> /// <param name="objMeshContainer">Clase ObjMaterialLader</param> public override void ProccesLine(string line, ObjMeshContainer objMeshContainer) { var attribute = CheckAttribute(line); objMeshContainer.ListObjMesh.Last().Usemtl.Add(attribute); }
public abstract void ProccesLine(string line, ObjMeshContainer objMeshContainer);
/// <summary> /// Procesa la linea para crear un nuevo ObjMesh /// </summary> /// <param name="line">Clase ObjMaterialLader</param> /// <param name="objMeshContainer">Clase ObjMaterialLader</param> public override void ProccesLine(string line, ObjMeshContainer objMeshContainer) { var split = line.Split(' '); objMeshContainer.ListObjMesh.Add(new ObjMesh(split[nameObject])); }
public void Init() { _objMeshContainer = new ObjMeshContainer(); }
public override void ProccesLine(string line, ObjMeshContainer objMeshContainer) { return; }
public override void ProccesLine(string line, ObjMeshContainer objMeshContainer) { //There is no need to perform any operation. }