接下來就是進行實作的部分,時做的部分這邊我只說明實作可能會想問的問題,詳細內容各位可以下載原始的程式碼。
(本範例程式碼,包含使用基本的basicEffect特效將模型顯示)
模型的部分,這邊我是使用OBJ檔案格式,在XNA Creater club上面有一個範例,裡面是使用自定的content pipeline來將obj檔案資訊分析出來,這邊我們就直接運用它即可。
在renderer.cs的程式碼中,裡面有一個函數use_BasicEffect程式碼如下
接下來就是進行實作的部分,時做的部分這邊我只說明實作可能會想問的問題,詳細內容各位可以下載原始的程式碼。
(本範例程式碼,包含使用基本的basicEffect特效將模型顯示)
模型的部分,這邊我是使用OBJ檔案格式,在XNA Creater club上面有一個範例,裡面是使用自定的content pipeline來將obj檔案資訊分析出來,這邊我們就直接運用它即可。
在renderer.cs的程式碼中,裡面有一個函數use_BasicEffect程式碼如下
這邊推薦兩個方便實用的程式碼,這樣可以節省一些不必要的時間,一個是負責控制攝影機的類別,一個是幫你畫出平面的板子。平面的板子可以方便你做一些額外的處理(像是Deferred Shading和texture space的操作等等,相當好用)
1. Camera.cs
camera類別主要是用來負責控制攝影機的,此類別是繼承GameComponent。
同時,Camera.cs是在SkiningModel的範例中所使用的,藉由這個類別你可以不用再花額外的時間寫關於Camera的程式碼。
A和D是對Y軸旋轉,W和S是對X軸做旋轉,Z和X是負責控制遠近。
使用方式:
這邊只是提供一種方式來使用這個類別,你可以針對你自己的需求在做更改。
1> 在Game.cs中,先引入這個類別的命名空間。 ->using DeferredShadingTutorial;
2> 宣告一個Camera物件。 ->Camera camera;
3> 在建構子當中建立(new)並把它增加到Component Stack裡面。
->camera = new Camera(this);
->Component.Add(camera);
由於本類別是GameComponent類別,所以當你把它加入Component stack的時候,XNA在每次呼叫base.Draw或是base.Update時,會幫你自動更新。
因此,當你按下鍵盤的ASDW按鍵時候,XNA會自動幫你更新Camera狀態。
4> 現在,Draw函數中,當你要畫模型需要使用到Camera的view、projection變數時,只要藉由camera.View和camera.Projection就可以取得相關的矩陣。2. QuadRenderer.cs
此類別主要是用來畫出平板。可以方便的使用在Deferred Shading和texture space相關的操作。
畫出的平板會給定座標和貼圖座標。這邊分享這兩個好用的程式碼,會在接下來的範例中跟各位慢慢介紹。
在右邊的"資源",有個叫做component.rar裡面包含這兩個檔案
XNA 4.0目前是CTP版本,必須使用C# 2010,你可以到XNA的官方網站上面去做下載安裝。
Phong Lighting介紹:
打光模型(lighting model)有很多種,但是大致上分為兩類,具有物理根據的打光模型和以人類視覺的方式做調整的打光模型。
據物理根據的打光模型,會考量到物體的反射係數或是粗糙程度等資訊,像是blinn-phong model、BRDF等等。
以前在寫xna的code,都只要簡單的使用basicEffect的效果就好了。
只是各位可能會覺得basic effect對於模型的打光效果可能不是這麼好看(或是太假了)
現行有很多種lighting model(or lighting system)
1. phong lighting
2. Blinn phong lighting
3. Cook-torrance
今天花了很多時間做這件事情orz
原本想說可以一下就解決的東西
只能說我對GLSL了解沒有很深...
了很久...也多虧同學幫忙我才寫完成這個工作
然後,也發現一件事情...
要傳值到SHADER,不能放在gl_Begin和gl_End之間...
因為這是無效的操作...
我花了六個小時...最後是這個問題囧
哈哈,真的是非常的抱歉
難得要開始繼續寫XNA的文章了…
結果,現在發出這種惡耗orz
現在也不知道有多少人在看這個Blog了...
真的是太久沒有寫了,很多都淡掉了...
因為最近接近期末,很多作業跟考試都接踵而來
Render Target這個詞是在DirectX出現的,XNA同樣的也是沿用這個詞,而用途就是說,現在我們可以設定畫面的輸出位置。通常,我們所指的輸出位置,是指螢幕的部分,現在有了Render Target,我們可以自己設定輸出的位置,像是我們可以輸出到2D貼圖。
如果你有用OpenGL來做這個部分的話,那你可能會聽過一個詞Frame Buffer Object(FBO),這兩個用途是相同的。
在前面的文章中,有說明如何使用VertexBuffer來繪製幾何圖形
由上面一篇可以發現到,我們如果要畫一個方形,需要六頂點,也就是{0,1,2}和{0,2,3}兩個三角型的頂點。
使用環境:
Visual Studio C# 2008任意版本
XNA 3.1
這個計畫是大同大學與SONY聯合徵才的計畫
職稱: | 專案助理(經濟部學研聯合研究專案計畫)。 |
名額: | (1)大同大學(台北市中山區中山北路三段40號) 120名(遊戲設計企劃 30名,遊戲美術設計 60 名,遊戲程式設計 30名) (2)義守大學(高雄縣840大樹鄉學城路1段1號) 50名(遊戲設計企劃 12名,遊戲美術設計 26 名,遊戲程式設計 12名) |
期間: | 本案係專案晉用,預計起始工作日期為98年7月01日至99年6月30日止,隨到隨聘,額滿為止。 |
福利: |
享勞健保與生活津貼(培訓階段11,100元,未來視工作能力作調整)。 |
詳細內容請參閱
潛能創意盃 2009 開跑了! 今年我們不但擴大主題, 更因為許多協辦單位的協助下擴大在台灣的規模!9項挑戰中有2項比賽有台灣區決賽, 並有3項比賽有台灣區暖身賽。台灣區比賽共會決定2項比賽的國家代表隊, 以及3隊全球決賽觀摩隊, 獎項也比歷年豐富。微軟也特地在比賽前期, 提供市面上買不到的訓練 (無料!),名額有限,請加速報名!
前期訓練 (軟性技能與議題分析)
11/22/2008 舉行精兵特訓班: 【曾志朗+盧希鵬+郝廣才+任建誠+Mr.6】,五大名師傾囊相授,提升你的肢體與溝通能力、創意思考、與簡報技巧等軟性技能!讓擁有科技或藝術才能的你能夠軟硬兼施、從A咖變成A+咖!
歡迎所有想要參加比賽但還不知要如何著手的同學參加!
活動網址: http://www.microsoft.com/taiwan/imaginecup/bootcamp/
如有任何問題請email 至: info@ideaplus.com.tw(信件標題:【精兵特訓班】,並註明姓名、就讀系級、email與連絡電話)