我們在上一篇介紹了Balder的3D效果,今天我們用一點時間製作第一個3D例子,一起來研究和學習Silverlight的3D世界,本篇的目標效果如下:
前篇連結:Silverlight C# 遊戲開發:Balder的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());
上面的一行是為了將剛才Lesson01的控制項添加到首頁面當中,這隻是我的做法,你可以找到程式的入口,將App的RootVisual換掉,當然了這屬於你的個人喜好。
下面是實際的效果示範,滑鼠按住方體移動,感受一下吧:)
原始碼:點擊這裡下載工程
工程中如果缺少Balder.dll請在這裡快速下載:SL4_Balder.rar
推薦Silverlight遊戲開發部落格:深藍色右手