ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Assimp.net 으로 새로운 Scene 만들기.
    개발실/Assimp 2021. 3. 17. 10:31
    반응형

    CCd.AssimpNet을 이용해서 Scene을 만들어 보자.

    Nuget.org 에서 CCd.AssimpNet 를 다운받아서 실행할 수 있음.

     

    Assimp에서 Scene 객체는 Import를 해서 얻을 수 있는 코드들만 인터넷에 있는것 같다.

    내가 가진 어떤 geometry를 이용해서 Assimp의 Export를 이용하려면, Scene 객체가 필요한데.

    해당 Scene을 만드는 법이 구체적으로 없어서, 시도해봤다.

     

    우선 단순한 obj를 시도했음.

    아래와 같이 하면 됨.

    출력된 obj도 뷰어에서 잘보임.

    Assimp.Mesh testSimpleMesh()
    {
        Assimp.Mesh outMesh = new Assimp.Mesh("testName", PrimitiveType.Triangle);
        outMesh.Vertices.Add(new Vector3D(100, 0, 0));
        outMesh.Vertices.Add(new Vector3D(50, 100, 0));
        outMesh.Vertices.Add(new Vector3D(10, 10, 0));
        outMesh.Faces.Add(new Face(new[] { 0, 1, 2 }));
        return outMesh;
    }
    
    
    void test_exportEmptyScene()
    {
        string outputFilePath = "출력경로";
        var e = ModelConverter.getExportFormatDescription(ModelType.obj);
    
        using (AssimpContext exporter = new AssimpContext())
        {
            PostProcessSteps processSteps = PostProcessSteps.None;
    
            var testScene = new Scene();
            testScene.Meshes.Add(testSimpleMesh());
            testScene.RootNode = new Node("testNode1");
            testScene.RootNode.MeshIndices.Add(0);
            testScene.Materials.Add(new Material());
    		
            Directory.CreateDirectory(Path.GetDirectoryName(outputFilePath));
            Assert.IsTrue(exporter.ExportFile(testScene, outFile, e.FormatId, processSteps));
        }
    }

     

    material은 실제로 사용하지 않지만,

    assimp 내부코드에서 material이 하나도 없으면, 에러가 나서 그냥 넣어줘야 함.

    반응형

    '개발실 > Assimp' 카테고리의 다른 글

    모델 데이터를 Glb (Embedded Texture)로 변환하기  (0) 2023.03.08
    CCd.AssimpNet  (0) 2023.02.27
    Assimp를 이용해서 Cesium용 Glb 변환.  (0) 2023.02.13
    Viewer for VWorld XDO  (0) 2020.08.21
    Assimp.net library for VWorld XDO  (2) 2020.08.13
Designed by Tistory.