Silverlight C# 游戏开发:L2 自定义模型导入

简介:

Balder的Geometries里提供了很多的已有的模型,比如立方体、圆柱等等,但是我们在开发游戏的时候大多情况下都是使用3D设计工具制作自定义的3D模型,而本篇则介绍的是如何导入显示一个自定义的3D模型。

 

首先我们可以看看Geometries的自带模型,你可以在对象浏览器或Geometries.来查看。

 

里面的Heightmap我们在后面会专门介绍,今次我们主要介绍Mesh(网格对象),使用它来完成自定义的模型导入。

然后,请准备好一个3D设计工具,3Dmax或者Maya再或者Lightwave再再或者……,好吧,我们简单点,使用大众化的3DMax,打开Max软件,从Object中拉一个壶出来,选择文件->导出,选择ASE文件格式。

 

保存名字为teapot.ase的文件,将这个文件添加到我们的工程中,这个工程完全可以从L1中修改,请参看或下载《Silverlight C# 游戏开发:L1 3D世界的建造》

将文件的编译方式修改成为Resource,即资源方式,建立Silverlight控件名字为Lesson02,然后添加如下代码到构造函数中


 
 
  1. //L1  
  2. Game game = new Game() { Width = 600Height = 400 };  
  3. game.Camera = new Camera();  
  4. game.Camera.Position = new Coordinate(100, 150, 100);  
  5. game.Camera.Target = new Coordinate(0, 0, 0);  
  6. game.Children.Add(new OmniLight() { Position = new Coordinate(0, 0, 0) });  
  7.  
  8. //L2  
  9. //new一个网格对象Mesh  
  10. Mesh Teapot = new Mesh();  
  11. //设置坐标  
  12. Teapot.Position = new Coordinate(0, 0, 0);  
  13. //开启交互操作(可使用鼠标旋转)  
  14. Teapot.InteractionEnabled = true;  
  15. //读取文件的名字,当前支持ase的文件格式  
  16. Teapot.AssetName = new Uri("/Balder_Studio;component/Res/teapot.ase", UriKind.Relative);  
  17. //将茶壶添加到Game当中  
  18. game.Children.Add(Teapot);  
  19.  
  20. LayoutRoot.Children.Add(game);  
  21.    
  22.  
请注意,AssetName赋值的Uri的目录和你添加到的位置需要一样,这方面如果不是太明白,请参看后面附带的工程, 源代码下载

这时你会发现可能会有一些错误,那是因为没有添加命名控件引用,添加命名空间的Using到文件头部:


 
 
  1. using Balder.Execution;  
  2. using Balder.Lighting;  
  3. using Balder.View;  
  4. using Balder.Math;  
  5. using Balder.Objects.Geometries;  
好了,不要忘记将MainPage中的控件添加改成Lesson02,运行起来看看效果吧。下面是Silverlight程序:

 

如果你觉得太小,可以修改摄像机的坐标来调整观测的范围,关于摄像机和灯光,我们在下一个篇章中介绍。

源代码下载地址:点击这里下载工程

工程中如果缺少Balder.dll请在这里快速下载:SL4_Balder.rar



本文转自nowpaper 51CTO博客,原文链接:http://blog.51cto.com/nowpaper/712306

相关文章
|
6月前
|
存储 开发框架 .NET
【C#】C# 基础语法与游戏开发
【1月更文挑战第21天】【C#】C# 基础语法与游戏开发
|
关系型数据库 MySQL C#
C# winform 一个窗体需要调用自定义用户控件的控件名称
给用户控件ucQRCode增加属性: //二维码图片 private PictureBox _pictureBoxFSHLQrCode; public PictureBox PictureBoxFSHLQrCode {   get { return _pictureBoxFSHLQrCode; }   set { this.pictureBoxFSHLQrCode = value; } } 在Form1窗体直接调用即可: ucQRCode uQRCode=new ucQRCode(); ucQRCode.PictureBoxFSHLQrCode.属性= 要复制或传给用户控件上的控件的值
70 0
|
5月前
|
C# C++
C# 自定义时间进度条
本文作者通过参考leslie_xin的一篇文章,成功创建了一个自定义的WinForms控件——时间进度条,该控件带有时间刻度和多种可定制的属性,如颜色、时间间隔等。作者在控件中加入了开始和结束时间,以及自适应的时间刻度间隔。控件能根据设置显示时间标签,并提供了事件处理,如值改变时的触发。代码中包含了计算时间刻度、绘制刻度线和时间标签的逻辑。作者强调了避免循环调用事件、使用OnXXX()形式的事件处理函数以及注意自定义控件中的属性和事件设计。
132 7
|
2月前
|
SQL C# 数据库
EPPlus库的安装和使用 C# 中 Excel的导入和导出
本文介绍了如何使用EPPlus库在C#中实现Excel的导入和导出功能。首先,通过NuGet包管理器安装EPPlus库,然后提供了将DataGridView数据导出到Excel的步骤和代码示例,包括将DataGridView转换为DataTable和使用EPPlus将DataTable导出为Excel文件。接着,介绍了如何将Excel数据导入到数据库中,包括读取Excel文件、解析数据、执行SQL插入操作。
EPPlus库的安装和使用 C# 中 Excel的导入和导出
|
3月前
|
开发框架 .NET 编译器
总结一下 C# 如何自定义特性 Attribute 并进行应用
总结一下 C# 如何自定义特性 Attribute 并进行应用
|
3月前
|
API C# 数据库
SemanticKernel/C#:实现接口,接入本地嵌入模型
SemanticKernel/C#:实现接口,接入本地嵌入模型
83 1
|
3月前
|
图形学 C# 开发者
全面掌握Unity游戏开发核心技术:C#脚本编程从入门到精通——详解生命周期方法、事件处理与面向对象设计,助你打造高效稳定的互动娱乐体验
【8月更文挑战第31天】Unity 是一款强大的游戏开发平台,支持多种编程语言,其中 C# 最为常用。本文介绍 C# 在 Unity 中的应用,涵盖脚本生命周期、常用函数、事件处理及面向对象编程等核心概念。通过具体示例,展示如何编写有效的 C# 脚本,包括 Start、Update 和 LateUpdate 等生命周期方法,以及碰撞检测和类继承等高级技巧,帮助开发者掌握 Unity 脚本编程基础,提升游戏开发效率。
77 0
|
3月前
|
API C#
SemanticKernel/C#:使用Ollama中的对话模型与嵌入模型用于本地离线场景
SemanticKernel/C#:使用Ollama中的对话模型与嵌入模型用于本地离线场景
99 0
|
6月前
|
存储 API C#
C# 实现格式化文本导入到Excel
C# 实现格式化文本导入到Excel
|
6月前
|
移动开发 JavaScript 安全
C# 实现微信自定义分享
C# 实现微信自定义分享