Balder 是一款開源的3D圖形引擎,它支持Silverlight, Windows Phone 7, Xna and OpenGL。html
它的下載地址以下:vim
http://balder.codeplex.com/releases/view/53579 在進行此次與Sprite的接觸以前,你必須得先下載它(假設你沒下載過:) )app
爲何要使用它呢?由於目前silverlight4中還不支持3D,因此咱們暫且就先用它吧,再說它確實很優秀,不使用就浪費了,不使用就對不起做者。ide
再上一個Balder開發的3D地圖:http://maps.esri.com/sldemos/terrainmap/default.html動畫
固然,在不久的未來,silverlight 5將會有本身的3D的API,那時候silverlight開發人員就又多了一種選擇,多麼幸福啊,好了,廢話很少說了,等等...差點忘了,最後在這裏推薦一個寫Balder的優秀博客:nowpaper。spa
它位於Balder.Objects.Flat 命名空間下。code
繼承層次結構:component
System.Object
System.Windows.DependencyObject
System.Windows.UIElement
System.Windows.FrameworkElement
System.Windows.Controls.Control
System.Windows.Controls.ItemsControl
Balder.Node
Balder.HierarchicalNode
Balder.RenderableNode
Balder.Objects.Flat.Sprite
從這裏,咱們能夠看出,它最接近 與ItemControl。htm
再看看它的定義是如何的:blog
Sprite最一般的用法是使用它來加載圖片並顯示出來,而後經過動畫,形變等對它進行操做。正如其意思,精靈,若是你看過深藍的文章,你很容易理解它,而通常在2D遊戲中,一個sprite主要由:圖像,一個vector,和其它先關信息組成,而在balder中的這個sprite與之相似 ,不一樣的是它是一個定義在3維座標系下的sprite,所以由(x,y,z)來肯定它在三維空間中的位置。至於它的其它屬性和方法,在之後具體用到了再說,今天主要來使用AssetName屬性來完成一個小實例。
首先,將下載來的balder相關dll文件添加引用到程序集,如何操做和關於balder的基本結構請參考:http://www.cnblogs.com/nowpaper/archive/2010/11/05/1869705.html 這裏寫得很詳細,我就再也不多囉嗦了。
完成以上步驟後,就開始動手了。
打開MainPage.xaml文件,在開頭添加以下:
而後就開始構造咱們的一個sprite例子了:
其中Game是一個場景類,咱們在這個場景中放入了下面幾個東西:Light(燈光)Camera(攝像機) 一個Box(立方體的箱子) 三個sprite(精靈)。其實也沒多少東西,由於每一個東西都是由很類似的屬性來組成的,例如,Position,這個是一個(x,y,z)的座標很好理解吧?其它不同的就box那邊有個InteractionEnabled="True",使用這個可使得box能用鼠標轉動。在sprite那邊不同的就是一個AssetName屬性,其實它就是一個Uri,可是它實現了一個類型轉換,從Uri到Image的轉換,這樣,你在這裏只要輸入圖片的uri就能獲得相應的圖片。因此,你還得事先導入一張圖片到項目中。
最後,咱們在實現一些動畫效果,這裏咱們經過對Camera的位置變化來實現動畫,能想像?你拿這攝像機拍外面的風景,只要攝像機動了,那你拍攝的某樣物品或者什麼也就動了,其實它們有沒有動呢?它們固然在動,由於地球在動(哈哈哈~)。
好了,看加入什麼東西吧
最後看看效果如何:
:)~~~~~~~