時隔多年,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動畫哦。