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 = 600, Height = 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. //L2
  8. //new一个网格对象Mesh
  9. Mesh Teapot = new Mesh();
  10. //设置坐标
  11. Teapot.Position = new Coordinate(0, 0, 0);
  12. //开启交互操作(可使用鼠标旋转)
  13. Teapot.InteractionEnabled = true;
  14. //读取文件的名字,当前支持ase的文件格式
  15. Teapot.AssetName = new Uri("/Balder_Studio;component/Res/teapot.ase", UriKind.Relative);
  16. //将茶壶添加到Game当中
  17. game.Children.Add(Teapot);
  18. LayoutRoot.Children.Add(game);
请注意,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

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

  1. Silverlight C# 游戏开发:自定义鼠标(一)

    我们在游戏中经常应用自定义鼠标来提升游戏的画面品质,一个好的游戏怎么能没有好看的鼠标呢,关于Silverlight的各种自定义鼠标的方法很多,而我将为大家带来的是在游戏当中的应用效果,当然了,做法更加 ...

  2. silverlight 3D 游戏开发

    http://www.postvision.net/SilverMotion/DemoTech.aspx silverlight 3D 游戏开发 时间:2010-10-22 06:33来源:开心银光 ...

  3. Silverlight C# 游戏开发:L5 3D基本的灯光

    Silverlight C# 游戏开发:L5 3D基本的灯光 我们在设计和开发3D的时候最常用的就是灯光,它有的时候比摄像机还要重要,一些花哨漂亮的表现主要通过灯光实现,相比场景中只有一个的主要摄像机 ...

  4. Silverlight C# 游戏开发:Silverlight开发环境

    Silverlight C# 游戏开发:Silverlight开发环境 所谓工欲善其事必先利其器,没有好的工具也没有办法做事,我以前曾经想学习C++以外的程序语言,当时有java和C#来选择,当时考虑 ...

  5. Silverlight C# 游戏开发:方向键的组合,八方向实现

    Silverlight C# 游戏开发:方向键的组合,八方向实现 在游戏中,有一种情况是斜向移动,就是同时按下两个方向,形成斜线操作,在Win32GDI开发中,可以通过在逻辑循环里加入键盘状态判断取得 ...

  6. Silverlight C# 游戏开发:资源的处理,图像算法(二)

    Silverlight C# 游戏开发:资源的处理,图像算法(二) 也许说,图像算法很过时,那是许久以前的做法,可是作为Silverlight来说,我认为非常有用,这些有趣的处理就像是在Web上实现了 ...

  7. Silverlight C# 游戏开发:面向对象在游戏中的实例(一)

    本系列所有代码都是使用Microsoft Visual Studio 2008开发,为基于Silverlight的游戏开发技术,如果您看完之后觉得不错,回复顶一下,万分感激:) 今天,我将带来一个非常 ...

  8. Silverlight C# 游戏开发:关于精灵for Silverlight容器

    Silverlight C# 游戏开发:关于精灵for Silverlight容器 说明:素材来源于网络,版权归版权所有人所有 游戏中的精灵非常常用,spirit这个小玩意具体谁发明的不得而知,从游戏 ...

  9. Silverlight C# 游戏开发:Flyer06小小的改进让游戏更有趣

    Silverlight C# 游戏开发:Flyer06小小的改进让游戏更有趣 今天这套主题,仅仅是通过改进让游戏更加有趣,游戏中的细节永远是耐人寻味,有的游戏团队为此付诸努力甚至成为整个项目的成功关键 ...

最新文章

  1. MySQL主主配置说明
  2. centos7安装mysql .gz_转:centos7安装mysql.tar.gz
  3. TensorFlow: couldn’t open CUDA library cupti64_80.dll、InternalError: Blas SGEMM launch failed
  4. 解析markdown_利用 markdown 生成页面实践
  5. python变量的理解_如何理解Python中的变量
  6. 6、二、App Components(应用程序组件):1、Intents and Intent Filters(意图和意图过滤器)...
  7. hdu2000——ASCII码排序
  8. python3怎么安装opencv_如何在Ubuntu 16.04上安装支持Python 3.x的OpenCV
  9. python工具箱_python 工具箱
  10. 百度文库复制内容,留作笔记
  11. QT界面添加背景图片
  12. Execl锁定单元格
  13. 利用List集合实现简单的斗地主
  14. ACPC Kickoff 2021
  15. 2G,3G,4G基站区分
  16. 只需7步,魔方6面即刻还原!
  17. linux分区sda和sdb合并,给系统新添加硬盘sdb后,怎么分配给sda下某个分区
  18. java 泛型 type_轻触开源(一)-Java泛型Type类型的应用和实践
  19. 我的世界服务器物品无法合成,《我的世界》MC玩家无法合成的五大物品,最后一个已经被移除了!...
  20. 时间序列建立图模型(四)

热门文章

  1. 聚焦国际农民丰收节贸易会-张桃林:农业谋定开放新格局
  2. ckplayer---vue
  3. 【面试】编译器为我们实现了几个类成员函数?(c++)
  4. java -Math类
  5. 解决11g Rac实例状态为Stuck Archiver
  6. 一次性删除数据库中某库的所有存储过程的方法
  7. hibernate 高级查询 query 或查询 or ,Restrictions
  8. 字节跳动如何做教育? | 详解
  9. 516%增长:微博如何熬过七年之痒?
  10. PMCAFF | 史上最完整的沙龙活动策划总结