我們在上一篇介紹了Balder的3D效果,今天我們用一點時間制作第一個3D例子,一起來研究和學習Silverlight的3D世界,本篇的目标效果如下:
<a target="_blank" href="http://blog.51cto.com/attachment/201111/115149293.jpg"></a>
在開發之前,我們先将Balder下載下傳,下載下傳方法如下:
目錄包含Silverlight3、Silverlight4、WP7,具體使用那個,要看你的需求,我所使用的環境是VS2010+Silverlight4.0。
那麼好,現在建立一個Silverlight工程,為了更好的複用程式和展示,我們使用控件方式來一步一步的學習,那麼我們将其約定為Lesson為開頭,這樣隻需要找到對應的篇章即可,我會在标題上用“L+數字+内容标題”做區分。
現在先将Balder的引擎引用到項目當中:
<a target="_blank" href="http://blog.51cto.com/attachment/201111/115209671.jpg"></a>
現在我們建立一個Silverlight控件,命名請随意,我起名為Lesson01。
<a target="_blank" href="http://blog.51cto.com/attachment/201111/115220904.jpg"></a>
現在開始創造3D世界了,首先呢,要增加Balder的程式引用,将下屬代碼Using到控件當中:
<a target="_blank" href="http://blog.51cto.com/attachment/201111/115232624.jpg"></a>
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換掉,當然了這屬于你的個人喜好。
本文轉自nowpaper 51CTO部落格,原文連結:http://blog.51cto.com/nowpaper/712309