使用3dmax將模型導成obj格式的時候,可以導出材質或者不導出。
1、如果不導出,則按下圖不勾選導出材質和創建材質庫選項。這樣生成的obj是可以直接再blend或者vs中打開的。
2、如果導出,不僅需要勾選導出材質和創建材質庫,還需要點一下材質導出,再跳出的對話框中選擇使用材質路徑,不然導出的模型是無法在blend或者vs中打開的。
3、vs讀取3d模型的類,這個類是網上找的別人的,並且只能讀取obj格式的,優點是可以直接讀取obj並加載到xmal中。缺點是只有調用這個類才能才能加載到界面中,不能在程序運行前就加載模型,無法對模型進行交互式編程。
下面是這個這個類的引用:
首先是xmal代碼的Viewport3D。
1 <Viewport3D x:Name="vp" Margin="49.2,23.8,35.8,27.8"> 2 <Viewport3D.Camera> 3 <PerspectiveCamera FieldOfView="45" FarPlaneDistance="10" LookDirection="0,0,-3.4142135623731" NearPlaneDistance="0.1" Position="0,0,3.4142135623731" UpDirection="0,1,0"/> 4 </Viewport3D.Camera> 5 </Viewport3D>
下面是c#代碼讀取obj並加載到Viewport3D中。這里的m實際是ModelVisual3D類型。
1 Model3DGroup myModel3DGroup = new Model3DGroup();
3 DirectionalLight myDirectionalLight = new DirectionalLight(); 4 myDirectionalLight.Color = Colors.White; 5 myDirectionalLight.Direction = new Vector3D(-0.61, -0.5, -0.61); 6 myModel3DGroup.Children.Add(myDirectionalLight); 7 var m = wfl.LoadObjFile(@"D:\Documents\3dsMax\export\直升機.obj");//ModelVisual3D類型實例直接通過Viewport3D的Add方法添加。
8 m.Content = myModel3DGroup;
9 vp.Children.Add(m);
這段代碼的邏輯圖如下圖:
這是那個讀取obj模型的類的入口
這個類的代碼,我上傳到csdn了,以下是地址:
http://download.csdn.net/detail/lelehellow/9706591
以上只是個人理解,如果有錯誤,歡迎指出。