Silverlight 3D:模型创建、移动、动画及相机控制
1. 使用模型创建复杂 3D 对象
在创建 3D 场景时,简单的几何形状如平面三角形和 3D 立方体已不能满足需求,现实的 3D 场景通常包含数千个三角形组成的复杂对象。创建这类对象有三种方法:
- 手动创建 :这是之前常用的方法,但对于复杂对象很快就变得不切实际。若仅依靠手写顶点集,很难构建出比立方体更复杂的物体。不过,使用他人现成的 3D 类可提高效率,如 Cube3D 示例,这些类封装了冗长的代码细节,但编写代码并非易事。
- 代码算法创建 :通过循环和计算组合来构建形状。例如,编写代码用数百个三角形创建球体,但这需要一定的数学技能。此方法常用于将动态数据映射到 3D 内容,如构建从 Web 服务获取科学结果的 3D 绘图工具。
- 设计工具创建 :使用 3D 建模程序准备 3D 对象,有多种选择,如昂贵的 3ds Max 和 Maya,以及免费且功能强大的 Blender(www.blender.org)。完成 3D 模型后,可将其导出为文件,导入到 Silverlight 应用程序中,并使用熟悉的技术(如世界、视图和投影矩阵)进行操作。
然而,Silverlight 的 3D 支持目前无法直接加载模型,因为它缺少完整 XNA 平台的内容管道。不过,有两个开源框架有望解决此问题:Babylon(http://babylontoolkit.codeplex.com)和 Balder(http://balder.codeplex.com)。这两个框架最初为早期版本的 Silverlight 开