Silverlight 5 輕松開啟絢麗的網頁3D世界


Silverlight 5 輕松開啟絢麗的網頁3D世界

Silverlight 5已正式發布,新版本的最大亮點是通過引入輕量級的XNA游戲開發框架,從而可以在瀏覽器內輕松實現網頁的3D應用。與此同時,微軟正式發布了Silverlight Toolkit (December 2011) for Silverlight 5,這是一個超出開發者想象的工具包,你可以在這里下載,在這一版本中提供了大量對3D的支持工具,提供與3D項目相關的多種Visual Studio項目模板(如圖1所示),包括:

lSilverlight3DApp:Silverlight 3D主程序(客戶端)

lSilverlight3Dlib:Silverlight 3D主程序類庫(客戶端類庫)

lSilverlightEffect:Silverlight 3D特效庫(客戶端庫)

lSilverlight3DAppContent:Silverlight 3D主程序附帶的素材庫(客戶端)

lSilverlight3DWeb:Silverlight 3D寄宿的Web應用程序(服務端)。

lSilverlight3DWebContent:直接發在服務器端的素材庫,用於減少XAP包的大小。

1.png


 

圖1 Toolkit中3D模板項目

使用Silverlight Toolkit可以非常容易地實現以前在Web中無法想象的3D特效,包括粒子效果(如圖2)、光照效果、角色Skinning效果(如圖3)。

2.png

 

圖2 通過粒子效果形成煙霧特效

3.png

 

圖3 角色Skinning效果

注:使用Silverlight Toolkit for Silverlight 5新建Silverlight3D項目前,需要在開發環境中安裝XNA Game Studio 4否則無法打開素材項目。


伴隨Silverlight 5正式版發布,已經有第三方3D引擎進行了框架更新,這其中包括非常優秀的Babylon 3D開源引擎,有興趣的朋友可以通過一下地址獲取基於Silverlight 5正式版的3D引擎源碼,其中還包括一個頂點着色器、一個像素着色器、一個3D模型導入器和一個示例。對於主流的3D建模軟件(包括MAYA、3D Studio Max、Modo、Blender)來說都可以導出.obj文件,這一類型文件可以無縫地集成到Babylon 3D開源引擎中,使得開發Silverlight 3D應用具有更好的兼容性(圖4是源碼包中的示例)。

4.png

 

圖4 Babylon 3D示例

對於Silverlight 5而言,瀏覽器內的權限控制顯得有點苛刻,如果我們需要在實際項目中開發瀏覽器內的3D應用,那么需要打開應用在瀏覽器內的權限,操作步驟如下:

1.在Silverlight項目屬性中,勾選“允許在瀏覽器外運行應用程序“和”在瀏覽器內運行時需要提升的信任“(如圖5所示),這時項目的Properties目錄下將產生對應的OutOfBrowserSettings.xml和InBrowserSettings.xml兩個文件,而后續步驟的設置將改變這兩個文件的內容。

未命名.jpg

 

圖5 提升Silverlight應用程序信任級別

2.點擊“瀏覽器外設置”,勾選“使用GPU加速”與“在瀏覽器之外運行時需要提升的信任” (如圖6所示),以保證使用GPU加速,如果此兩項不選,則會出現RenderModeReason.GPUAccelerationDisabled的情況。

未命名2.jpg

 

圖6 開啟GPU加速

3.現在我們需要將第一步生成的OutOfBrowserSettings.xml和InBrowserSettings.xml兩個文件加入到生成的XAP文件內容中,具體做法是在項目中分別選擇兩個文件,在其屬性中的“生成操作”選擇為“內容”(如圖7所示)。

未命名3.jpg

 

圖7 權限配置文件的生成操作選擇

4.最后由於Silverlight 5正式版考慮到客戶端環境的差異(包括有無顯卡、顯卡是否支持3D加速等多種情況),加入了對瀏覽器內3D內容的顯示權限管理,因此,我們需要根據客戶端實際情況提示使用者打開對本網站的3D顯示權限。代碼如下:

if (GraphicsDeviceManager.Current.RenderMode != RenderMode.Hardware){ switch (GraphicsDeviceManager.Current.RenderModeReason)
{
case RenderModeReason.GPUAccelerationDisabled: MessageBox.Show("3D加速被禁用,請啟用顯卡3D加速后刷新本頁面!"); break; case RenderModeReason.SecurityBlocked: MessageBox.Show("請在右鍵的Silverlight菜單中打開權限,找到本站點域名后允許3D安全策略!"); break; case RenderModeReason.Not3DCapable: MessageBox.Show("沒有找到顯卡!"); break; case RenderModeReason.TemporarilyUnavailable: MessageBox.Show("暫時無法使用!"); break;
}
}

瀏覽器的權限可通過Silverlight程序的右鍵菜單中選擇“權限”選項卡,然后找到應用程序的宿主域名,並將其3D權限設置為“允許”(如圖8所示)

未命名0.jpg

 

圖8 客戶端3D權限設置

如果您想體驗Silverlight 5絢麗的網頁3D世界,筆者已經為你整理了更多精彩的示例,還等什么?現在就點擊下面的網頁來體驗一下吧!

http://space.silverlightchina.net/xpeter/demo/3D.htm

Silverlight 5 Toolkit的3D示例程序源碼,您可以在其安裝目錄下找到,默認目錄如下:

C:\Program Files\Microsoft SDKs\Silverlight\v5.0\Toolkit\dec11\Source

解壓縮該目錄下的Sample source code.zip,可以在其中的Xna目錄下找到示例源碼。

本文筆者只是給大家介紹了Silverlight 5中3D Web應用中的鳳毛麟角,對於Silverlight來說構建類似於XNA的大型3D應用基本已經具備條件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM