示例#1
0
        public void LoadTgcMeshFromObjOk()
        {
            var     _tgcObjLoader = new TgcObjLoader();
            TgcMesh tgcMesh       = _tgcObjLoader.LoadTgcMeshFromObj(_fullobjpath, 0);

            Assert.NotNull(tgcMesh);
        }
示例#2
0
        public void LoadTgcMeshFromObjwithOutMaterialsOk()
        {
            var     _tgcObjLoader = new TgcObjLoader();
            TgcMesh tgcMesh       = _tgcObjLoader.LoadTgcMeshFromObj(_fullobjpathmeshcolorsolo, 0);

            Assert.NotNull(tgcMesh);
        }
示例#3
0
        public void ProcessLineThrowWithBadAction()
        {
            var _tgcObjLoader = new TgcObjLoader();
            var line          = "badAction Blender v2.79 (sub 0) OBJ File: ''";

            Assert.That(() => { _tgcObjLoader.ProccesLine(line); }, Throws.InvalidOperationException);
        }
示例#4
0
        public void ProccesLineNewObjet()
        {
            var _tgcObjLoader = new TgcObjLoader();
            var line          = "o Cube";

            _tgcObjLoader.ProccesLine(line);
            Assert.True(_tgcObjLoader.ObjMeshContainer.ListObjMesh.First().Name.Equals("Cube"));
        }
示例#5
0
        public void GetListOfMaterialsWithNameOK()
        {
            var _tgcObjLoader = new TgcObjLoader();
            var lines         = File.ReadAllLines(_fullobjpath);

            _tgcObjLoader.GetListOfMaterials(lines, _fullobjpath);
            Assert.True(_tgcObjLoader.ListMtllib.First().Equals("cubotexturacaja.mtl"));
        }
示例#6
0
        public void GetListOfMaterialsWithWhiteSpaceOK()
        {
            var _tgcObjLoader = new TgcObjLoader();
            var lines         = File.ReadAllLines(_fullobjpathmeshcontextura);

            _tgcObjLoader.GetListOfMaterials(lines, _fullobjpathmeshcontextura);
            Assert.True(_tgcObjLoader.ListMtllib.First().Equals("tgcito con textura.mtl"));
        }
示例#7
0
        public void FilterByKeyWordOk()
        {
            var    _tgcObjLoader = new TgcObjLoader();
            var    lines         = File.ReadAllLines(_fullobjpath);
            string mtllib        = _tgcObjLoader.FilterByKeyword(lines, "mtllib")[0];

            Assert.True(mtllib.Equals("mtllib cubotexturacaja.mtl"));
        }
示例#8
0
        public void LoadObjFromFileOk()
        {
            var _tgcObjLoader = new TgcObjLoader();

            _tgcObjLoader.LoadObjFromFile(_fullobjpath);
            Assert.True(_tgcObjLoader.ObjMeshContainer.ListObjMesh.Count > 0);
            Assert.True(_tgcObjLoader.ObjMeshContainer.VertexListV.Count == 8);
        }
示例#9
0
        public void ProcessLineReturnWithSpaceBlanck()
        {
            var _tgcObjLoader = new TgcObjLoader();
            var line          = "        ";

            _tgcObjLoader.ProccesLine(line);
            Assert.IsTrue(_tgcObjLoader.ObjMeshContainer.ListObjMesh.Count == 0);
        }
示例#10
0
        public void ProcessLineReturnWithFirstCaracterHastag()
        {
            var _tgcObjLoader = new TgcObjLoader();
            var line          = "# Blender v2.79 (sub 0) OBJ File: ''";

            _tgcObjLoader.ProccesLine(line);
            Assert.IsTrue(_tgcObjLoader.ObjMeshContainer.ListObjMesh.Count == 0);
        }
示例#11
0
        public void CreateMaterialIdsArrayOk()
        {
            TgcObjLoader _tgcObjLoader = new TgcObjLoader();

            _tgcObjLoader.LoadObjFromFile(_fullobjpathmultimaterial);
            resObjMesh = _tgcObjLoader.ObjMeshContainer.ListObjMesh.First();
            Assert.True(resObjMesh.FaceTrianglesList.Count == resObjMesh.CreateMaterialIdsArray().Length);
        }
示例#12
0
        public void IndexMaterialIdsArrayOk()
        {
            TgcObjLoader _tgcObjLoader = new TgcObjLoader();

            _tgcObjLoader.LoadObjFromFile(_fullobjpathmultimaterial);
            resObjMesh = _tgcObjLoader.ObjMeshContainer.ListObjMesh.First();
            int[] materialIds = resObjMesh.CreateMaterialIdsArray();
            Assert.True(materialIds[15810] == 0);
            Assert.True(materialIds[17010] == 1);
        }
示例#13
0
        public void CreateMeshOnlyColor()
        {
            TgcObjLoader _tgcObjLoader = new TgcObjLoader();

            _tgcObjLoader.LoadObjFromFile(_fullobjpathmeshcolorsolo);
            resObjMesh = _tgcObjLoader.ObjMeshContainer.ListObjMesh.First();
            MeshBuilder meshBuilder = new MeshBuilder().AddDxMesh(resObjMesh.FaceTrianglesList.Count).ChargeBuffer(_tgcObjLoader.ObjMeshContainer, 0);

            Assert.NotNull(meshBuilder.GetInstaceDxMesh());
        }
示例#14
0
        public void AddMultiMaterialToBuilderOk()
        {
            TgcObjLoader _tgcObjLoader = new TgcObjLoader();

            _tgcObjLoader.LoadObjFromFile(_fullobjpathmultimaterial);
            resObjMesh = _tgcObjLoader.ObjMeshContainer.ListObjMesh.First();
            MeshBuilder meshBuilder = new MeshBuilder()
                                      .AddMaterials(_tgcObjLoader.ObjMaterialsLoader).ChargueMaterials();

            Assert.NotNull(meshBuilder.MeshMaterials);
        }
示例#15
0
        public void CreateInstanceDxMeshWithNumberFacesOK()
        {
            TgcObjLoader _tgcObjLoader = new TgcObjLoader();

            _tgcObjLoader.LoadObjFromFile(_fullobjpath);
            resObjMesh = _tgcObjLoader.ObjMeshContainer.ListObjMesh.First();
            MeshBuilder auxMeshBuilder = new MeshBuilder()
                                         .AddDxMesh(resObjMesh.FaceTrianglesList.Count);

            Assert.True(auxMeshBuilder.GetInstaceDxMesh().NumberFaces == resObjMesh.FaceTrianglesList.Count);
        }
示例#16
0
        public void LoadObjMaterialFromFileOk()
        {
            TgcObjLoader _tgcObjLoader = new TgcObjLoader();
            var          lines         = File.ReadAllLines(_fullMaterialPath);

            _tgcObjLoader.GetListOfMaterials(lines, _fullMaterialPath);
            ObjMaterialsLoader _objMaterialLoader = new ObjMaterialsLoader();

            _objMaterialLoader.LoadMaterialsFromFiles(_fullMaterialPath, _tgcObjLoader.ListMtllib);
            Assert.NotNull(_objMaterialLoader.ListObjMaterialMesh.First());
        }
示例#17
0
        public void EnsureRightTypeRenderIsLoadedOnlyColorBranch()
        {
            //TODO asegurar que si tiene material el tipo de render sea difuse map, o si tiene ligth map que sea difuse mas ligth map
            TgcObjLoader _tgcObjLoader = new TgcObjLoader();

            _tgcObjLoader.LoadObjFromFile(_fullobjpathmeshcolorsolo);
            resObjMesh = _tgcObjLoader.ObjMeshContainer.ListObjMesh.First();
            MeshBuilder meshBuilder = new MeshBuilder()
                                      .AddDxMesh(resObjMesh.FaceTrianglesList.Count);

            Assert.True(meshBuilder.ChargueBufferStrategy.RenderType == TgcMesh.MeshRenderType.VERTEX_COLOR);
        }
示例#18
0
        public void GetTextureCountOk()
        {
            TgcObjLoader _tgcObjLoader = new TgcObjLoader();

            _tgcObjLoader.LoadObjFromFile(_fullobjpathmultimaterial);
            resObjMesh = _tgcObjLoader.ObjMeshContainer.ListObjMesh.First();
            MeshBuilder meshBuilder = new MeshBuilder()
                                      .AddMaterials(_tgcObjLoader.ObjMaterialsLoader)
                                      .ChargueMaterials();

            Assert.True(meshBuilder.GetTextureCount() == 2);
        }
示例#19
0
        public void EnsureRightTypeRenderIsLoadedDiffuseMapBranch()
        {
            //TODO asegurar que si tiene material el tipo de render sea difuse map, o si tiene ligth map que sea difuse mas ligth map
            TgcObjLoader _tgcObjLoader = new TgcObjLoader();

            _tgcObjLoader.LoadObjFromFile(_fullobjpathmultimaterial);
            resObjMesh = _tgcObjLoader.ObjMeshContainer.ListObjMesh.First();
            MeshBuilder meshBuilder = new MeshBuilder()
                                      .AddMaterials(_tgcObjLoader.ObjMaterialsLoader)
                                      .ChargueMaterials();

            Assert.True(meshBuilder.ChargueBufferStrategy.RenderType == TgcMesh.MeshRenderType.DIFFUSE_MAP);
        }
示例#20
0
        public void CreateDxMeshWithVertexLimit()
        {
            // 21845 * 3 = 65535
            // Int range 0 to 65535

            TgcObjLoader _tgcObjLoader = new TgcObjLoader();

            _tgcObjLoader.LoadObjFromFile(_fullobjpathmeshcolorsolo);
            resObjMesh = _tgcObjLoader.ObjMeshContainer.ListObjMesh.First();
            MeshBuilder meshBuilder = new MeshBuilder().AddDxMesh(21844);

            Assert.NotNull(meshBuilder.GetInstaceDxMesh());
        }
示例#21
0
        public void CreateMeshColorAndDifusseMap()
        {
            //TODO el test de cuando el mesh es color y difuse
            TgcObjLoader _tgcObjLoader = new TgcObjLoader();

            _tgcObjLoader.LoadObjFromFile(_fullobjpathmultimaterial);
            resObjMesh = _tgcObjLoader.ObjMeshContainer.ListObjMesh.First();
            MeshBuilder meshBuilder = new MeshBuilder()
                                      .AddMaterials(_tgcObjLoader.ObjMaterialsLoader)
                                      .ChargueMaterials()
                                      .AddDxMesh(resObjMesh.FaceTrianglesList.Count)
                                      .ChargeBuffer(_tgcObjLoader.ObjMeshContainer, 0);

            Assert.NotNull(meshBuilder.GetInstaceDxMesh());
        }
示例#22
0
        public void CheckIndexBufferIsChargedOk()
        {
            //TODO verificar que el idexbuffer se cargo .
            TgcObjLoader _tgcObjLoader = new TgcObjLoader();

            _tgcObjLoader.LoadObjFromFile(_fullobjpathmultimaterial);
            resObjMesh = _tgcObjLoader.ObjMeshContainer.ListObjMesh.First();
            MeshBuilder meshBuilder = new MeshBuilder()
                                      .AddMaterials(_tgcObjLoader.ObjMaterialsLoader)
                                      .ChargueMaterials()
                                      .AddDxMesh(resObjMesh.FaceTrianglesList.Count)
                                      .ChargeBuffer(_tgcObjLoader.ObjMeshContainer, 0);

            Assert.True(meshBuilder.GetInstaceDxMesh().IndexBuffer.SizeInBytes > 0);
        }
示例#23
0
        public void BuildTgcMeshWithEnableTrueOk()
        {
            TgcObjLoader _tgcObjLoader = new TgcObjLoader();

            _tgcObjLoader.LoadObjFromFile(_fullobjpath);
            resObjMesh = _tgcObjLoader.ObjMeshContainer.ListObjMesh.First();
            TgcMesh tgcMesh = new MeshBuilder()
                              .AddMaterials(_tgcObjLoader.ObjMaterialsLoader)
                              .AddDxMesh(resObjMesh.FaceTrianglesList.Count)
                              .ChargeBuffer(_tgcObjLoader.ObjMeshContainer, 0)
                              .SetEnable(true)
                              .Build(resObjMesh);

            Assert.True(tgcMesh.Enabled);
        }
示例#24
0
        public void BuildTgcMeshWithBoundingBoxOk()  //TODO el boundingbox no deberia estar acoplado al mesh
        {
            TgcObjLoader _tgcObjLoader = new TgcObjLoader();

            _tgcObjLoader.LoadObjFromFile(_fullobjpath);
            resObjMesh = _tgcObjLoader.ObjMeshContainer.ListObjMesh.First();
            TgcMesh tgcMesh = new MeshBuilder()
                              .AddMaterials(_tgcObjLoader.ObjMaterialsLoader)
                              .AddDxMesh(resObjMesh.FaceTrianglesList.Count)
                              .ChargeBuffer(_tgcObjLoader.ObjMeshContainer, 0)
                              .SetEnable(true)
                              .AddAutotransform(true)
                              .SetHasBoundingBox(false)
                              .Build(resObjMesh);

            Assert.NotNull(tgcMesh.BoundingBox);
        }
示例#25
0
        public void TgcMeshBuildedCanSet()
        {
            TgcObjLoader _tgcObjLoader = new TgcObjLoader();

            _tgcObjLoader.LoadObjFromFile(_fullobjpath);
            resObjMesh = _tgcObjLoader.ObjMeshContainer.ListObjMesh.First();
            TgcMesh tgcMesh = new MeshBuilder()
                              .AddMaterials(_tgcObjLoader.ObjMaterialsLoader)
                              .AddDxMesh(resObjMesh.FaceTrianglesList.Count)
                              .ChargeBuffer(_tgcObjLoader.ObjMeshContainer, 0)
                              .AddAutotransform(true)
                              .SetEnable(true)
                              .SetHasBoundingBox(false)
                              .Build(resObjMesh);

            tgcMesh.Rotation = new TGCVector3(8.0f, 8.5f, 8.5f);
            Assert.True(tgcMesh.Rotation.Equals(new TGCVector3(8.0f, 8.5f, 8.5f)));
        }
示例#26
0
        public void TgcMeshBuildWithTextureOk()
        {
            TgcObjLoader _tgcObjLoader = new TgcObjLoader();

            _tgcObjLoader.LoadObjFromFile(_fullobjpath);
            resObjMesh = _tgcObjLoader.ObjMeshContainer.ListObjMesh.First();
            TgcMesh tgcMesh = new MeshBuilder()
                              .AddMaterials(_tgcObjLoader.ObjMaterialsLoader)
                              .ChargueMaterials()
                              .AddDxMesh(resObjMesh.FaceTrianglesList.Count)
                              .ChargeBuffer(_tgcObjLoader.ObjMeshContainer, 0)
                              .AddAutotransform(true)
                              .SetEnable(true)
                              .SetHasBoundingBox(true)
                              .Build(resObjMesh);

            Assert.True(tgcMesh.Materials.Length > 0);
        }
示例#27
0
        public override void Init()
        {
            //CurrentPath = MediaDir + @"Obj\cubotexturacaja.obj";
            CurrentPath = MediaDir + @"Obj\bb8\bb8.obj";
            //CurrentPath = MediaDir + @"Obj\tgcito\tgcito con textura.obj";
            //CurrentPath = MediaDir + @"Obj\tgcito\tgcito color solo.obj";

            MeshModifier = AddFile("Mesh", CurrentPath, "*.obj | *.obj");

            MeshDelObj = TgcObjLoader.LoadTgcMeshFromObj(CurrentPath, 0);

            MeshDelObj.AutoTransformEnable = true;
            MeshDelObj.Scale    = new TGCVector3(5f, 5f, 5f);
            MeshDelObj.Position = new TGCVector3(-25, 0, 0);
            MeshDelObj.BoundingBox.move(new TGCVector3(25, 0, 0));

            Camera = new TgcRotationalCamera(MeshDelObj.BoundingBox.calculateBoxCenter(), MeshDelObj.BoundingBox.calculateBoxRadius() * 2, Input);
        }