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.zipSilverlight3dLib.zipSilverlight 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文件,但这个模板只有在内容管道项目的添加→新建项中才可以看到,如下图所示:

SilverlightEffect模板

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.未提升程序运行的权限,你需要在程序上手动右击鼠标打开配置菜单,点击允许。

提升权限

文件下载(已下载 2529 次)

发布时间:2012/1/2 下午2:02:09  阅读次数:16651

2006 - 2024,推荐分辨率 1024*768 以上,推荐浏览器 Chrome、Edge 等现代浏览器,截止 2021 年 12 月 5 日的访问次数:1872 万 9823 站长邮箱

沪 ICP 备 18037240 号-1

沪公网安备 31011002002865 号