我們在上一篇介紹了Balder的3D效果,今天我們用一點時間製作第一個3D例子,一起來研究和學習Silverlight的3D世界,本篇的目標效果如下:
在開發之前,我們先將Balder下載,下載方法如下:
進入http://balder.codeplex.com/,點擊右側的DownLoad按鈕,簡單的確認之後就下載下來了,當前的版本是0.8.8.9,所以你看到的ZIP包是Balder_0_8_8_9.zip,將其解壓縮。
目錄包含Silverlight3、Silverlight4、WP7,具體使用那個,要看你的需求,我所使用的環境是VS2010+Silverlight4.0。
那麼好,現在建立一個Silverlight工程,爲了更好的複用程序和展示,我們使用控件方式來一步一步的學習,那麼我們將其約定爲Lesson爲開頭,這樣只需要找到對應的篇章即可,我會在標題上用“L+數字+內容標題”做區分。
現在先將Balder的引擎引用到項目當中:
Balder.dll是主要的引擎框架和程序集,而Ninject是一個.net的輕量級開發框架,Balder使用了其中的一些方法,如果對Ninject有興趣,可以參看和了解:http://ninject.org/
現在我們創建一個Silverlight控件,命名請隨意,我起名爲Lesson01。
現在開始創造3D世界了,首先呢,要增加Balder的程序引用,將下屬代碼Using到控件當中:
Execution當中提供了主要的Game類,Lighting是燈光有關的命名空間,View是視圖,Math內包含了很多3D數學有關的類和方法,至於Geometries是3D模型的命名空間,包含了很多有用的模型。
在構造函數中添加如下代碼:
- //起初神創造天地。
- Game game = new Game() { Width = 800, Height = 600 };
- //地是空虛混沌。淵面黑暗。
- game.Camera = new Camera();
- game.Camera.Position = new Coordinate(100, 150, 100);
- game.Camera.Target = new Coordinate(0, 0, 0);
- //神說,要有光,就有了光。
- game.Children.Add(new OmniLight() { Position = new Coordinate(0,0,0) });
- //神創造萬物
- game.Children.Add(new Box() { Dimension = new Coordinate(100,100,50),InteractionEnabled = true });
- LayoutRoot.Children.Add(game);
就是這麼簡單,對於3DGame來說,主要由場景、攝像機、燈光、物體組成,和神創世沒什麼區別,上面的座標數據可以隨便修改,通過調整這些數值來感受3D的世界是一種不錯的享受,現在運行一下看看效果吧。
但是在那之前,要找到MainPage添加一行代碼:
- LayoutRoot.Children.Add(new Lesson01());
源代碼下載地址:點擊這裏下載工程
工程中如果缺少Balder.dll請在這裏快速下載:SL4_Balder.rar