五.转换为glTF格式

五.转换为glTF格式

SolidWorks插件-将SolidWorks文件转换为gltf格式
  • 一.SolidWorks文件转换为glTF格式
  • 二.搭建一个Taskpane的SolidWorks插件
  • 三.获取SolidWorks文件中的网格信息
  • 四.获取SolidWorks中的材质信息
  • 五.转换为glTF格式
  • 六.装配体和多实体格式的转换
  • 去Github查看代码或下载插件安装包

5.1.转换为gltf

  • 在完成信息提取后,我们只需要用SharpglTF库来实现对gltf格式的操作即可
        public List  SaveAs(SWglTFModel Model, string Path, string Name)
        {
            var scene = new SharpGLTF.Scenes.SceneBuilder();
            
            foreach (var Body in Model.BodyList)
            {

                //创建一个网格
                var Mesh = new MeshBuilder("mesh");


                var material = (Body.MaterialBuilder == null ? Model.MaterialBuilder : Body.MaterialBuilder);
                if (material == null)
                {
                    material = new MaterialBuilder()
            .WithDoubleSide(true)
            .WithMetallicRoughnessShader()
            .WithChannelParam("BaseColor", new Vector4(1, 0, 0, 1));
                }
                //确定材质属性
                var prim = Mesh.UsePrimitive(material
                    );

                foreach (var face in Body.FaceList)
                {
                    
                    foreach (var tri in face.FaceTri)
                    {
                        prim.AddTriangle(tri.a, tri.b, tri.c);
                    }
                }

                scene.AddMesh(Mesh, Body.BodyTransform);

            }


            var model = scene.ToSchema2();
            model.SaveAsWavefront(Path + "\\" + Name + ".obj");
            model.SaveGLB(Path + "\\" + Name + ".glb");
            model.SaveGLTF(Path + "\\" + Name + ".gltf");
            return new List()
            {
                Path + "\\" + Name + ".obj",
                Path + "\\" + Name + ".glb",
                Path + "\\" + Name + ".gltf"
            };
        }
  •   SharpglTF帮我们完成了对gltf中JSON格式的序列化,这使我们无需过多关注gltf格式的内部信息。但我们仍然需要理解一下gltf格式的各个节点。

  • 转换完成Win10可以用自带的3D浏览器打开,也可以使用Visual Studio Code的gltf插件浏览,查看生成的Json文件。

你可能感兴趣的:(五.转换为glTF格式)