zoukankan      html  css  js  c++  java
  • Wpf中用HelixToolkit轻松加载SolidWorks导出3D模型

    时隔多年,HelixToolkit.SharpDX真的加强不少,得益于assimp-net这个项目,HelixToolkit可以加载各种模型并播放动画,下面就来看看HelixToolkit如何与SolidWorks碰撞出火花

    一、加载SolidWorks导出的XAML来显示模型

    我们在SolidWorks工程内,另存为XAML格式,我就不贴全了

    <Viewport3D>
        <Viewport3D.Camera>
            <OrthographicCamera Position="1.186027,1.102421,1.711027" LookDirection="-0.577382,-0.577288,-0.577382" UpDirection="-0.408204,0.816541,-0.408204" NearPlaneDistance="1.027074" FarPlaneDistance="3.081221" Width="2.054147"/>
        </Viewport3D.Camera>
        <Viewport3D.Children>
            <ModelVisual3D>
                <ModelVisual3D.Transform>
                    <RotateTransform3D>
                        <RotateTransform3D.Rotation>
                            <AxisAngleRotation3D Angle="0" Axis="0,1,0"/>
                        </RotateTransform3D.Rotation>
                    </RotateTransform3D>
                </ModelVisual3D.Transform>
                <ModelVisual3D.Children>
                    <ModelVisual3D>
                        <ModelVisual3D.Content>
                            <Model3DGroup>
                                <Model3DGroup.Children>
                                    <AmbientLight Color="#262626"/>
                                    <DirectionalLight Color="#6F6F6F" Direction="3.150000,-8.090000,-4.960000"/>
                                    <DirectionalLight Color="#454545" Direction="8.610000,4.820000,-1.640000"/>
                                    <DirectionalLight Color="#332835" Direction="-9.490000,3.090000,0.600000"/>
                                    <DirectionalLight Color="#151515" Direction="-5.500000,-8.300000,-1.100000"/>
                                </Model3DGroup.Children>
                            </Model3DGroup>
                        </ModelVisual3D.Content>
                    </ModelVisual3D>
                    <ModelVisual3D>
                        <ModelVisual3D.Transform>
                            <MatrixTransform3D Matrix="1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 "/>
                        </ModelVisual3D.Transform>
                        <ModelVisual3D.Content>
                            <Model3DGroup>
                                <Model3DGroup.Children>
                                    <GeometryModel3D>
                                        <GeometryModel3D.Material>
                                            <MaterialGroup>
                                                <DiffuseMaterial>
                                                    <DiffuseMaterial.Brush>
                                                        <SolidColorBrush Color="#C6C1BC" Opacity="1.000000"/>
                                                    </DiffuseMaterial.Brush>
                                                </DiffuseMaterial>
                                                <SpecularMaterial SpecularPower="0.700000">
                                                    <SpecularMaterial.Brush>
                                                        <SolidColorBrush Color="#8A8783" Opacity="1.000000"/>
                                                    </SpecularMaterial.Brush>
                                                </SpecularMaterial>
                                            </MaterialGroup>
                                        </GeometryModel3D.Material>
                                        <GeometryModel3D.Geometry>
                                            <MeshGeometry3D Positions="-0.182068,0.380704,0.052289 -0.223695,0.357833,0.000000 -0.178693,0.382299,0.051022 -0.171721,0.385481,0.000000 -0.171721,0.385481"/>
                                        </GeometryModel3D.Geometry>

    把它放到自己的wpf里面去,这个时候可以用代码随意的控制里面的元素了,但是操作不是很方便,能不能搞个旋转缩放的默认操作呢? 这时候就用到HelixToolkit.Wpf了,

    我们把ModelVisual3D节点,放到HelixToolkit的<HelixToolkit:HelixViewport3D ZoomExtentsWhenLoaded="True">控件节点中,便可以进行鼠标操作

     

     导出xaml不能导出太复杂的东西,因为所有格式里,xaml是最大的,贴到VS里去搞不好要崩溃

    二、使用HelixToolkit.SharpDX加载SolidWorks导出的3mf

    solidworks导出的格式里都比较奇葩,没有常见的.x .obj .fbx,剩下的格式里最通用的就是这个3mf格式了,这个格式就比xaml强多了

    我们可以使用HelixToolkit.SharpDX工程里的FileLoadDemo去加载他看看

    HelixToolkit.SharpDX会拥有更好的光照,更多的特性,潜力更大,性能更好。

    大家自己也可以用普通的3dsmax,maya导出点常规格式玩玩,还支持fbx动画哦。

  • 相关阅读:
    调整精力记录
    cucumber系列(四) RubyGems下载源更新的问题
    cucumber系列(三)BDD与相关测试框架资料收集
    cucumber系列(二) cucumber的基本操作命令
    cucumber系列(一) 如何让cucumber识别中文
    centos与ubuntu的区别 (转)
    Excel 导出组件,10W级数据5秒内导出
    如何本地调试测试环境的代码
    .net core 在Startup.cs 的Configure方法中扩展 IApplicationBuilder
    mysql 统计一周每天得数据
  • 原文地址:https://www.cnblogs.com/gxrsprite/p/12880823.html
Copyright © 2011-2022 走看看