Silverlight 5 3D 初步
2011年12月10日(正好是本人的生日)微软终于发布了Silverlight 5的正式版,终于可以开始研究Web上的3D实现了。作为一个物理教师,我研究3D的主要目的还是制作课件,前几年的重点放在了XNA上,但是要运行XNA,需要在PC上安装.NET环境和XNA运行时,这对使用课件的物理教师来说是一个复杂的过程,这应该也是flash课件占主流的原因所在——只要PC上装有flash插件或flash播放程序,直接就可以运行课件了,因此曾经研究过一阵flash 3D,但用起来总是不顺手。现今,Silverlight无缝整合了XNA,可以在Web上制作出漂亮的3D效果了,而且只需安装一个5、6MB的Silverlight插件,也可以下载到本地运行。
Silverlight 5开发环境的安装
你可以到微软的Silverlight官网(http://www.silverlight.net/downloads)下载所需的软件,首先需要安装Visual Studio 2010 SP1,然后是Silverlight 5 Tools for Visual Studio 2010 SP1(其中已经包含Developer Runtime for Windows和Silverlight SDK)。在这里我遇到了第一个问题,我的Visual Studio 2010是简体中文版,而Silverlight 5 Tools目前还没有中文版,如果直接安装,系统会提示语言不对导致安装失败,从网上搜索了解决方法:
1. 用解压缩软件将Silverlight5_Tools.exe解压到任意一个目录。
2. 用文本编辑器(例如记事本)编辑其中的ParameterInfo.xml文件,将所有的1033替换为2052,编辑后保存。
3. 运行文件夹中的SPInstaller.exe 完成安装。
要进行Silverlight 3D程序的开发,强烈建议去CodePlex去下载Silverlight 5 Toolkit - December 2011(http://silverlight.codeplex.com/releases/view/78435)。这个Toolkit提供了一个3D开发模板,可以极大地简化初期的开发步骤,而且还提供了几个非常好的示例。具体内容可参见Silverlight Toolkit (December 2011)的新功能。
安装完成后你可以在电脑的C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Toolkit\dec11\Source目录中看到示例的源代码,包含Sample source code.zip,Source code.zip,Template source code.zip三个压缩文件,你可以将这些代码解压到其他目录中进行研究。
但是在Visual Studio中并没有出现3D开发模板,这仍是因为版本语言的问题。解决方案如下:
1.找到目录C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp\Silverlight\1033,发现需要的模板文件Silverlight3dApp.zip、Silverlight3dLib.zip和Silverlight Unit Test Project.zip已经就位,这不过是在英文版本的1033目录下,我们要做的就是将这两个文件复制到对应中文版本的2052目录下。
2.关闭所有运行的Visual Studio实例,然后在命令行中执行C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv /setup,稍等片刻安装即可完成,保险起见,最好重启一次电脑。
现在打开Visual Studio,选择文件→新建→项目,你就会在新建项目选择栏中看到新的Silverlight Unit Test Application模板、Silverlight 3D Application模板和Silverlight 3D Library模板,如下图所示:
Toolkit还包含一个Item模板Silverlight Effect,它可以提供一个基本的Effect文件,但这个模板只有在内容管道项目的添加→新建项中才可以看到,如下图所示:
Silverlight 3D Application项目的基本结构
新建项目后,解决方案的结构如图所示:
其中Silverlight3dApp为主程序,Silverlight3dAppContent为内容管道项目,处理程序所需的纹理、模型、Effect文件等素材,因为我对XNA有过研究,所以觉得Silverlight3dAppContent是理所应当要有的,如果你觉得奇怪,最好先补一下XNA的知识。
另两个项目是承载Silverlight的Web网站。
在Silverlight中显示3D是通过原生的DrawingSurface(http://msdn.microsoft.com/en-us/library/system.windows.controls.drawingsurface)控件实现的。而模板中的Scene类封装了这个控件,使用起来更简便,定义立方体的顶点和绘制代码位于Cube类中,而立方体的自定义顶点结构位于VertexPositionColorNormal中。
因为我认为这个模板并不是实现3D效果的最简单的代码,所以本文并不会对这个代码进行详细的分析,我会在下一篇文章中不用模板实现一个最简单的3D程序。可以参考的文章为3-D Graphics Overview(http://msdn.microsoft.com/en-us/library/gg197424(v=XNAGameStudio.35).aspx)(这篇文章中的shader在SL5正式版中可以更方便地实现)。
下面是由这个模板创建的程序:
如果显示不正常,通常的原因是:
1.Silverlight插件未升级到最新版本。
2.显卡太差不支持directX 9.0c。
3.未提升程序运行的权限,你需要在程序上手动右击鼠标打开配置菜单,点击允许。
发布时间:2012/1/2 下午2:02:09 阅读次数:16336