wpf动态加载obj格式的3D模型
前几天一个网友发现一个工具中有一个3D加载的代码,于是抽了出来加以修改。我也有幸拿到一份。现在拿出来和大家分享。
以下是我的一简单的加载代码:obj文件所在的路径请自行修改
1: PerspectiveCamera myPCamera;
2:
3: public MainWindow()
4: {
5: InitializeComponent();
6: WavefrontObjLoader wfl = new WavefrontObjLoader();
7: slider1.ValueChanged += new RoutedPropertyChangedEventHandler<double>(slider1_ValueChanged);
8: slider2.ValueChanged += new RoutedPropertyChangedEventHandler<double>(slider1_ValueChanged);
9: slider3.ValueChanged +=new RoutedPropertyChangedEventHandler<double>(slider1_ValueChanged);
10:
11: myPCamera = new PerspectiveCamera();
12:
13: // Specify where in the 3D scene the camera is.
14: myPCamera.Position = new Point3D(0, 0, 200);
15:
16: // Specify the direction that the camera is pointing.
17: myPCamera.LookDirection = new Vector3D(0, 0, -1);
18:
19: // Define camera's horizontal field of view in degrees.
20: myPCamera.FieldOfView = 1000;
21:
22: // Asign the camera to the viewport
23: vp.Camera = myPCamera;
24:
25: Model3DGroup myModel3DGroup = new Model3DGroup();
26:
27: DirectionalLight myDirectionalLight = new DirectionalLight();
28: myDirectionalLight.Color = Colors.White;
29: myDirectionalLight.Direction = new Vector3D(-0.61, -0.5, -0.61);
30:
31: myModel3DGroup.Children.Add(myDirectionalLight);
32: var m = wfl.LoadObjFile(@"d:\3d\1.obj");
33: m.Content =myModel3DGroup;
34: vp.Children.Add(m);
35: }
36:
37: void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
38: {
39: myPCamera.Position = new Point3D(slider2.Value , slider1.Value, slider3.Value);
40: }
41:
此类有一部份的obj文件加载不到,可能是因为支持不了太新的3Dmax工具生成的文件.
分类:
WPF 相关内容
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?