自己做, 自己玩 Xbox 遊戲實作 視覺化實驗室 VLAB 莊世坤 2010/11/24 自我介紹

Slides:



Advertisements
Similar presentations
第三章:材質製作與模型.
Advertisements

Unity3D.
CATIA V5 Training CATIA V5 装配设计 Assembly Design.
操作系统结构.
Xbox one计算机系统介绍 刘一帆.
第 1 章 使用 APP INVENTOR 2 開發 ANDROID APP
第2章 建立Android應用程式 2-1 Java語言、XML文件與Android 2-2 建立第一個Android應用程式
Installation for Visual Studio 2008
臺北市立大學 資訊科學系(含碩士班) 賴阿福
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
佐登妮斯大樓監控系統簡介 圓 泰 科 技 1.
Chapter 1 用VC++撰寫程式 Text book: Ivor Horton.
MIT App Inventor簡介及 「Hello World」程式初體驗 靜宜大學資管系 楊子青
Chapter 2. The Graphics Rendering Pipeline 图形绘制流水线
Proteus 可视化设计 Drag, Drop and PLAY! Slide 1.
Q101 在701 SDX Linux上的標準安裝與使用程序v2
JDK 安裝教學 (for Win7) Soochow University
第1章 認識Arduino.
MPLAB IDE 8 建立專案.
簡易 Visual Studio 2010 C++ 使用手冊
SOLUTIONACCELERATORS Windows Vista Hardware Assessment 1
Working with Databases (II) 靜宜大學資管系 楊子青
App Inventor 2體驗 靜宜大學資管系 楊子青
Android 课程讲义 智能手机开发
XBRL未來發展趨勢 2009年12月 For information on applying this template onto existing presentations, refer to the notes on slide 3 of this presentation. The Input.
R教學 安裝RStudio 羅琪老師.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
Introduction to OpenGL (1)
2D / 3D 遊戲程式設計入門 使用 XNA 3.0 與 C# 2D圖形與字型的呈現.
安裝JDK 安裝Eclipse Eclipse 中文化
第三章 基本觀念 電腦繪圖與動畫 (Computer Graphics & Animation) Object Data Image
第三章 项目设定.
PowerPoint + Multimedia Files
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
Word與PowerPoint的結合 建功國小 陳旻杰 健行國小 張慧如.
2D / 3D 遊戲程式設計入門 使用 XNA 3.0 與 C# 第五章 頂點定義與基本形狀的繪出.
2D / 3D 遊戲程式設計入門 使用 XNA 3.0 與 C# 第九章 相機類別與玩家角色.
2D / 3D 遊戲程式設計入門 使用 XNA 3.0 與 C# 第七章 音樂音效.
OpenID與WordPress使用說明
Android App簡介及 App Inventor 2體驗 靜宜大學資管系 楊子青
系統設定 IE8相容性檢視
ICG 2018 Fall Homework1 Guidance
簡易 Visual Studio 2005 C++ 使用手冊
PowerCam快速數位教材製作 黃雲龍 NCCU/ NTSU.
第三章 基本觀念 電腦繪圖與動畫 (Computer Graphics & Animation) Object Data Image
VS.NET 2003 IDE.
Microsoft SQL Server 2008 報表服務_設計
App Inventor 2初體驗 靜宜大學資管系 楊子青
Ch20. 計算器 (Mac 版本).
TA教育訓練 微處理機系統實習.
虚 拟 仪 器 virtual instrument
Google協作平台+檔案分享(FileZilla+網路芳鄰)
CVPlayer下載及安裝& IVS操作說明
FTP使用教學 簡介: 軟體名稱:FileZilla 軟體性質:Freeware 版本: 繁體中文版
Inspiration From Above 1 Chinese Evangelical Free Church
2D / 3D 遊戲程式設計入門 使用 XNA 3.0 與 C# 第三章 XNA 遊戲程式基本架構.
利用 EditorConfig 自訂文字編輯器設定
Video 影像 (VideoPlayer 影像播放器、Camcorder 錄影機) 靜宜大學資管系 楊子青
取得與安裝TIDE 從TIBBO網站取得TIDE
反覆迴圈、陣列、副程式 靜宜大學資管系 楊子青
反覆迴圈、陣列、副程式 靜宜大學資管系 楊子青
班級:博碩子一甲 授課老師:鐘國家 助教:陳國政
直 接 插 簡 介 DirectX.
Activity的生命週期: 播放音樂與影片 靜宜大學資管系 楊子青
小畫家教學 電子版儲存於 學校網頁/學科資訊/電腦科
MGT 213 System Management Server的昨天,今天和明天
99美元 微軟99美元Xbox 360綁約方案 月繳14.99美元、綁約2年 2年Xbox Live金會員資格
Windows Phone Game 行動遊戲開發
Develop and Build Drives by Visual C++ IDE
Section 1 Basic concepts of web page
Presentation transcript:

自己做, 自己玩 Xbox 遊戲實作 視覺化實驗室 VLAB 莊世坤 2010/11/24 自我介紹 VALB 簡介, 虛擬測量儀器, 虛擬化平台, 網站架設, 工科海洋 聲納視覺化, 虛擬流力教室, 機場禁限建( Google Earth + Sketchup + 網頁 ) 使用 XNA視覺化平台, 康老師視覺化工程應用課 CAE ( VLAB + RLAB + BIM ) VLAB Interests Group

大綱 Microsoft Xbox 與 XNA 介紹 SimuSurveyX 實例 Demo 程式範例與開發經驗 XNA 開發環境 遊戲賣場與網路資源 連線上傳 SimuSurveyX 實例 Demo 程式範例與開發經驗 基本架構 模型下載與使用 座標轉換整合 控制介面 特殊效果 1. 先Demo 實作案例 SimuSurveyX 2. 介紹 XNA 整個開發環境 3. 功能示範, 對照遊戲實例

Microsoft Xbox 與 XNA 介紹

Xbox HDMI 或 專用連接線提供 AV/ 色差/ S-Video 網路連線 Xbox Live 付費下載或免費試玩 支援 Media Center HDD 儲存遊戲 Facebook, Twitter Kinect 點選圖片Show Xbox 操作介面或實際操作 Xbox 支援 Facebook, Twitter, Kinect

Xbox 遊戲控制器 有線 1500 , 無線 1000

Microsoft XNA 簡化遊戲開發流程, 以 Net.Framework 為基礎, 整合Windows/ Xbox 360/ Windows Phone 等開發平台。 開發環境 ( on Windows 7), 下載並安裝 : VS 2008 ( Express ), ( 程式語言 : C# ) http://www.microsoft.com/express/Downloads/#2008-Visual-CS ( 因為現在微軟開發工具以2010為主, 所以要特別點選2008 ) XNA 3.1 , http://www.microsoft.com/downloads/en/details.aspx?FamilyID=80782277-d584-42d2-8024-893fcd9d3e82&displaylang=en 網路資源與遊戲賣場 XNA Creators Club -> ( http://creators.xna.com ) -> APP HUB 微軟官方遊戲網站 http://www.microsoft.com/taiwan/games/default.aspx XNA Developer Center http://msdn.microsoft.com/zh-tw/xna/default.aspx Xbox LIVE Marketplace, 讓業餘遊戲開發者有了發行管道 。 XNA 3.1->4.0, Windows/Xbox360/Zune -> Windows Phone 7 入門者學習平台,專業遊戲公司用C++, Direct3D

會員資格 Membership (http://create.msdn.com/en-US ) 金會員 ( $99 /year ), 銀會員, 試用會員 可以開發和上傳 Xbox 360 和 Windows Phone 遊戲 DreamSpark https://www.dreamspark.com/default.aspx 點選 XNA Game Studio 3.1 之後有詳細說明 要發佈 XBOX 360 遊戲需要加入 XNA Creator Club, 每年 US $99 或是每季 US $49 要發佈 XBOX 360 遊戲, 主機需要買硬碟版本而非無線網路版 玩家欣瑞說, 連線功能相當重要, 值得花錢購買 XNA 遊戲上傳需要付費帳號, 至少是Trial membership

會員資格比較 需輸入信用卡資訊, 每年自動續約, 需主動上網取消 Microsoft 扣款發生錯誤事件

電腦基本需求 最低硬體需求: Xbox debugging : 繪圖卡支援 Shader Model 1.1, DirectX 9.0c, Windows Phone 7: DirectX 10, with a supporting WDDM 1.1 driver 沒有繪圖卡沒辦法順利執行 ! CPU + GPU = APU, Intel Sandy Bridge nVIDIA SLI Bridge, Scalable Link Interface WDDM 是Vista 之後在Direct3D 之上加速Windows 繪圖的Driver

SimuSurveyX Demo

SimuSurveyX ( http://simusurveyx.caece.net ) 網站介紹 播放SimuSurveyX影片, 點選

完整遊戲範例 以下都有 Source Code 可以參考 2D – Shooting Game ALIEN GAME ( use Game Controller) Space Shooter Mini Game 3D - Robot Game Space Shooter: CreatorsClub\Space Shooter Mini Game, 使用chase camera, 前後/ 左右, 可以用距離與方向, 決定 追蹤攝影機本身的速度 3D Robot 在目錄下有捷徑

程式範例與開發經驗

開始 安裝完之後.來試試看是否OK~ 1.開啟 Microsoft XNA Game Studio 3.1裡的Microsoft Visual Studio C# 2008 Express Edition。 2.【檔案】→【新增專案】→選擇【Windows Game 3.1】。 3.然後就可以開始執行,【偵錯】→【開始偵錯】,或是按下F5, 如果看到藍色畫面, 就成功了!

Update() Draw() XNA 程式基本架構 Game1.cs Initialize() LoadContent() 變數宣告 內容載入 更新頻率: 60 Hz, 即相隔時間 16.7 ms 效能不足時, Draw()會被忽略, 產生 Jerky Movement Update() Draw() 檢查使用者操作 依照邏輯改變物體位置 Camera 視角更新 畫面更新

XNA 遊戲程式的基本 Life Cycle 遊戲開始 (建立 Game) 初始化 (建立 GraphicsDeviceManager, 就是管理螢幕畫面的類別) 載入內容 (呼叫 LoadContent 方法) 遊戲進行 (呼叫 Update 與 Draw 方法) 不斷重複 Step 4. 直到遊戲結束 釋放資源 (呼叫 UloadContent 方法) 遊戲結束 (呼叫 Exit 方法)

在螢幕上顯示一個3D Model 別忘了Content 加入/現有項目 , 選取 landscape.fbx 檔 宣告變數 Model landscape; 載入內容 protected override void LoadContent() { landscape = Content.Load<Model>("landscape"); } 畫出 protected override void Draw(GameTime gameTime) foreach (ModelMesh mesh in landscape.Meshes) mesh.Draw(); base.Draw(gameTime); ( 部分內容省略, 例如指定視點和視角) 別忘了Content 加入/現有項目 , 選取 landscape.fbx 檔 可以用2d3d\06\01 說明程式

關於Update() Update 方法的呼叫時機 預設為 fixed-step 模式, IsFixedTimeStep 為 True Game 的 TargetElapsedTime 預設為 1/60, 原則上每 1/60 秒呼叫 Update 和 Draw 一次 PC 和 XBOX : 1/60 秒 Zune 與 Windows Phone 7 : 1/30 秒 如果 1/60 秒內沒有辦法完成 Update, 則 IsRunningSlowly 會被系統設定為 True. 之後, 僅會呼叫 Update 而不呼叫 Draw 以讓系統跟上更新的頻率 如果始終無法跟上, 則放棄 1/60 秒

GameComponent DrawableGameComponent 和 GameComponent 的差別 在不同圖層 使用場合: 例如 Menu, OnScreen Keyboard 在專案上滑鼠右鍵, 加入/新增項目/ XNA Game Studio 3.1/ Game Component DrawableGameComponent 和  GameComponent 的差別 多了兩個函數 protected override void LoadGraphicsContent(bool loadAllContent) public override void Draw(GameTime gameTime) 用法 主程式Game1.cs 的 Initialize() 中    _g3DMenu = new g3DMenu(State, this); _g3DMenu.Visible = false; _g3DMenu.Enabled = false; _g3DMenu.DrawOrder = 100; _g3DMenu.UpdateOrder = 100;  Components.Add(_g3DMenu); 之後程式裡面以 Enabled, Visible 屬性來決定要不要讓此 GameComponent 有作用 程式獨立, 唯一要做的事情就是把結果傳回來 在不同圖層 在 VS2008 裡面 加入\ 新增項目

內建的 Content Pipeline 類型 2D 圖形 3D 模型 音效/音樂 字型 支援格式 .fbx .fx , .x 字型描述檔案 .spritefont 圖片檔 (紋理texture) : .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, .tga XACT 建立的聲音檔 (.xap), .mp3, .wmv, .wma 不支援格式會造成執行時期 LoadContent 失敗, 無法進行遊戲 不支援格式需要自行撰寫 Importer XML

XNA 常用類別 2D 與 3D : Texture2D, Model 座標 : Vector2(二維 xy ), Vector3(三維 xyz), Vector4 碰撞偵測 : (1) BoundingBox 建立元件的邊框模型, 缺點是比較不精確 ( 2D 下使用, 但是需搭配 Vector3, z軸填 0 ) (2) BoundingSphere 遊戲核心 : Game , GameComponent 音效與音樂 : (1) SoundEfffect (簡易版, 播放後無法再控制) (2) SoundEffectInstance (3) MediaPlayer 載入控制 : (1) KeyBoardState 鍵盤 (2) TouchState 觸控 (3) MouseState 滑鼠 (4)GamePadState 遊戲搖桿 3D 模型 : Matrix, ModelMesh, ModelBone, BasicEffect 其他 : (1) GameTime (記錄遊戲開始至結束的時間狀態) (2) SpriteBatch (繪圖) (3) SpriteFont (繪文字) (4) MathHelper (數學運算)

XNA Start - A first application 一般都是新建 Windows 專案 Create Copy of Project for Xbox 360 Create Copy of Project for Zune 由屬性和可以加入的參考的差別 可以看出其差異 XNA Start - A first application http://www.toymaker.info/Games/XNA/html/xna_start.html

網路資源 快速引導手冊- 建立一個遊戲 http://msdn.microsoft.com/zh-tw/xna/ee373492.aspx Toymaker http://www.toymaker.info/Games/XNA/index.html XNA 3.1 /4.0 所附說明文件

從程式範例中學習 http://create.msdn.com/en-US/education/ 依會員資格下載不同等級範例。 一個簡單的 Xbox 遊戲, 只要以下元素, 可以作3D Navigation 3D 模型檔 ( 包含環境, 主角, 敵人 ) 使用者控制 ( 鍵盤, 滑鼠, 搖桿 ) 攝影機控制 網址可以直接打http://www.xna.com 點選education 看 Billboard 範例, 即包含這些元素

連線上傳到 Xbox Create copy of project for Xbox 360 建置方案 Xbox 360 copy of your project Package as XNA Creators Club Game Xbox – 我的遊戲庫/ XNA Game Studio Connect 工具/ Launch XNA Game Studio Device Center 第一次連線需輸入序號 Double click on .ccgame file Xbox 端開始接收 連線示範

區域網路 家裡 ADSL PC 和 Xbox 都在同一個區網, 且都可以連到 Internet, 例如透過 IP分享器上網 學校   PC, Xbox 要註冊 MAC ( 土木系 ) 以便 DHCP 並連上網路

安裝檔製作 Unpack 一般作法 告訴安裝者必須先安裝 VS2008與XNA3.1, Double Click .ccmage 檔案 缺點: 安裝目錄在 使用者\AppData\Local\XNA Creators Club Games\... 為隱藏目錄, 若要安裝新版需要手動移除舊版

NSIS is a professional open source system to create Windows installers 安裝檔製作 -2 使用 NSIS NSIS is a professional open source system to create Windows installers http://nsis.sourceforge.net/Main_Page Nullsoft 網頁, 程式集 , 使用範例 參考 SimuSurvey\ SimuSurveyX_安裝檔製作 執行檔範例在SimuSurvey\ SimuSurveyX_安裝\1.0.2 下一步, 下一步..

遊戲製作流程 企劃 發行 遊戲元素 場景, 角色, 任務 使用者 透過控制介面 控制主角, 在場景中克服重重 關卡, 完成 任務。 實作  企劃 實作 美工+程式 發行 遊戲元素 場景, 角色, 任務 使用者 透過控制介面 控制主角, 在場景中克服重重 關卡, 完成 任務。

架構 - SimuSurveyX 目錄下有捷徑連到Robot Game 的文件

Artificial Intelligence 以 Robot Game 為例 GameEnemy 如何 Move , Search, Turn Left(Right), Attack 遊戲 開發文件

設計參考 參考各種 Xbox 遊戲 , 網路遊戲 http://games.softpedia.com/ 遊戲程式 http://www.gamedev.net

向量與矩陣運算 2D/ 3D 座標系統 向量 Vector3及 矩陣 Matrix 幾何轉換 Geometric Transformations 平移 Matrix.CreateTranslation( x, y, z ); 旋轉 Matrix.CretaeRotationX ( a ); 縮放 Matrix.CreateScale( a ) ; 以矩陣相乘即可

3D Primitives How To: Draw Points, Lines, and Other 3D Primitives Ms-help://MS.VSCC.v90/MS.VSIPCC.v90/MS.XNAGS31.1033/XNA/Draw_3D_Primitives.htm#ID4EWC 開啟 說明檔 + 3D_Primitives 程式 ( 工具/ 選項, 環境/ 字型和色彩 9 -> 20 )+ 小畫家 InitializeTransform() 說明 視點 ( 0, 0, 1 ) Game1.cs Line80 加入 typeToDraw = PrimType.TriangleList; 說明按鍵 Polling 說明 WorldMatrix 指定給 basicEffect.World, ViewMatrix 指定給 basicEffect.View 在 Line 140, and ProjectMatrix

座標軸

Camera Camera 類別 Draw () 中指定世界、觀測、投影矩陣, 從Camera類別取得 Azimuth Pan Elevation Horizon effect.World = transforms[mesh.ParentBone.Index] * Matrix.CreateScale(0.01f); effect.World = effect.World * Matrix.CreateRotationY(modelRotation); effect.View = Matrix.CreateLookAt(new Vector3(0.0f, 1.2f, 1.2f), Vector3.Zero, Vector3.Up); effect.Projection = Matrix.CreatePerspectiveFieldOfView ( MathHelper.ToRadians(45.0f),1.333f, 1.0f, 10000.0f); Tilt

物理引擎 nVIDIA PhysX physical Exgine 萬有引力 , 慣性, 碰撞… 萬有引力 , 慣性, 碰撞… 2D遊戲 Jelly car http://www.youtube.com/watch?v=qwbtkUwSufw Demo SampleTerrain. SampleSoftBody 基本原理 應該有 Xbox 用的版本, 但是還沒找到 C:\Program Files (x86)\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.1\Bin\win32\SampleTerrain.exe C:\Program Files (x86)\NVIDIA Corporation\NVIDIA PhysX SDK\v2.8.1\Bin\win32\SampleSoftBody.exe

nVIDIA PhysX http://www.nvidia.com.tw 注意 : 必須安裝 Visual Studio 2008 C++ ( Express )注意是C++ 不是C Sharp!! 才能夠 正常編譯及執行 PhysX.Net 的範例 http://www.nvidia.com 1. 先裝 System Software PhysX_9.09.0408_SystemSoftware.exe 2. 再裝 SDK PhysX_SDK_2.8.1_build_13_for_PC.msi 3. PhysX.Net 範例 PhysX.Net_0.11.0.0\ http://physxdotnet.codeplex.com 必須詳讀此網頁的相依性說明 3. 裝 PhysX.Net 0.11.0.0 .Net Wrapper for NVidia's Physx library. 4. 網站上可以下載 Sample Code, PhysX.Net 目錄裡面也有 另外, 參考http://www.stilldesign.co.nz VS2008 C#-XNA 中的 Project 必需含有額外的3 個項目 NxCharacter.dll NxCooking.dll PhysXLoader.dll VS2008 中 做以下設定 Add StillDesign.PhysX.Net into refrence Add NxCharacter.dll, NxCooking.dll and PhysXLoader.dll into the project

Kinematic model 運動學, 請參考 視覺化工程應用 Slides\lec11 Spherical joint Revolute joint Prismatic joint Cylindrical joint Fixed joint 桌面\ 視覺化技術工程應用\ Slide\ lec09.pptx Distance joint

3D Model 工具軟體 3Ds Max Blender Google SketchUp -> 輸出成為 fbx 檔

3D Model - Fbx檔 1. 可由 3DsMax, Google SketchUp 用 Export FBX 的方式 2. XNA 是 Y-Up, 3DsMax 內定是 Z-Up, 要設定一下 3. 有些奇怪的問題, 例如 Google SketchUp 的模型到了 3DsMax 少了一部份, 或材質不對 4. Export 成 ASCII( 非 Binary )再手動改材質檔的目錄, 目錄全部去掉, 留下檔名. 將外部圖檔都放在相同目錄下. 5. 如果檔案太雜, 在 XNA Project 中新建一個目錄, 不要直接右鍵點該目錄去選檔案, 應該 還是在Content 處選好, 在 XNA 內部樹狀結構拖進去 6. 程式中, Content.Load<Model>(@"ddd\fff.fbx") 7. XNA 規定材質圖檔長寬都必須要2 的次方( 64, 128,256 ... )用 PhotoShop 作放大縮小 8. 希望可以順利在 SketchUp 中建立, 3DsMax 中觀察修改與轉檔. XNA 中使用 9. 如果可以的話, 使用 Embedded Material, 但在 3DsMax 使用此選項有問題 *** 10. 手動把材質路徑改好之後, 進入3DsMax 調一下位置, 再重新 Export 成 FBX, 從XNA 中可 以直接使用, 不用再改一次. 已經自行撰寫程式過濾路徑

網路下載免費資源 ( Daily download credit : 15 ) 3D Model 免費資源 網路下載免費資源 ( Daily download credit : 15 ) http://www.3dxtras.com/ 必須先註冊一個帳號

3D Model 連結 SimuSurveyX 範例

Free FBX Viewer http://www.ozone3d.net/ http://www.ozone3d.net/repository_lynx_lite_win32_installer.php Download LynX Lite Edition open Content\Model_Other\tree10.fbx

天空 ( Sky sphere ) 半球, 天空貼圖, 內側

地形 ( Terrain ) 使用現成地形範例

音效檔 ( 簡單 ) Audio01 Audio02 網路上有Free Audio 網站 XNA 提供很多現成音效檔案 最簡單的音效播放範例: SoundEffect[] SndBird; SndBird = new SoundEffect[3]; SndBird[0] = Content.Load<SoundEffect>(@"birds001"); SndBird[_rn].Play(); Example\CreatorsClub\soundLab\SoundLab\Audio

2D 圖檔 使用.png 檔, 可以鏤空和有透明度 例如: SimuSurveyX 的望遠鏡頭和雷達圖 宣告 Texture2D 載入圖檔 用PhotoShop 開啟Telescope.psd

使用者控制介面 (User Interface ) 介面種類 Game Controller, 無線/ 有線 Keyboard 其他 函數範例 調整大小, 與虛擬世界座標大小有關 按鍵對應

選單 CreatorsClub\Menu-GameStateManagemen\ GameStateManagementSample\GameStateManagemen

使用者控制介面 (User Interface ) 宣告 KeyboardState currentKeyboardState = new KeyboardState(); GamePadState currentGamePadState = new GamePadState(); 掛在 Update() 裡面檢查按鍵狀態 protected override void Update(GameTime gameTime)d { HandleInput(); UpdateCamera(gameTime); base.Update(gameTime); } 詳細內容 private void HandleInput() currentKeyboardState = Keyboard.GetState(); currentGamePadState = GamePad.GetState(PlayerIndex.One); // Check for exit. if (currentKeyboardState.IsKeyDown(Keys.Escape) || currentGamePadState.Buttons.Back == ButtonState.Pressed) Exit();

使用 Shader 使3D Model 有動態變化 不佔用 CPU 效能, 交給GPU 處理 Example : Billboard ( CreatorsClub ) 原理: 使用 2D Sptrite 代替 3D Model 說明檔 C:\Users\skc\Desktop\SimuSurvey\Examples\CreatorsClub\Billboard\BillboardSample\Billboard.htm 兩個重點 1. Content Importer 2. Effect File .fx http://www.toymaker.info/Games/html/effects_files.html 以PhotoShop 開啟Content 圖檔( *.tga ) Shader make you powerful !

HLSL 高級著色器語言(High Level Shader Language,簡稱HLSL),由微軟擁有及開發的一種語言,只能供微軟的Direct3D使用。HLSL不能與OpenGL標準兼容。他跟Nvidia的Cg非常相似。 HLSL的主要作用為將一些複雜的圖像處理,快速而又有效率地在顯示卡上完成,與組合式或低階Shader Language相比,能降低在編寫複雜特殊效果時所發生編程錯誤的機會。 Example 彩色轉成灰階 sampler2D Texture0; float4 ps_main( float2 texCoord : TEXCOORD0 ) : COLOR { float4 _inColor = tex2D( Texture0, texCoord ); float gray = 0.3*_inColor.x + 0.59*_inColor.y + 0.11*_inColor.z; float4 _outColor = float4(gray, gray, gray, 1.0); return _outColor; }

Shader Shaders come in two flavours, vertex shaders which allow the manipulation of vertex data and pixel shaders which allow the manipulation of pixel data. The shader code is loaded into the graphics card memory and plugged directly into the graphics pipeline. Shader code is in assembly however nowadays there are a number of higher level 'C' type languages that can be compiled down to the assembly and making them much easier to program. Microsoft have HLSL (High-Level Shading Language) for use with DirectX and OpenGL has the GLSL (OpenGL Shading Language). Hardware vendors also provide some high level languages, NVidia have Cg and ATI have ASHLI (Advanced Shading Language Interface). http://www.toymaker.info/Games/html/shaders.html

Direct3D Pipeline

Vertex Shader A vertex shader is a graphics processing function used to add special effects to objects in a 3D environment. Vertex shaders are run once for each vertex given to the graphics processor. The purpose is to transform each vertex's 3D position in virtual space to the 2D coordinate at which it appears on the screen (as well as a depth value for the Z-buffer). Vertex shaders can manipulate properties such as position, color, and texture coordinate, but cannot create new vertices. The output of the vertex shader goes to the next stage in the pipeline, which is either a geometry shader if present or the rasterizer otherwise. http://www.toymaker.info/Games/html/vertex_shaders.html

Pixel Shader A pixel shader is a computation kernel function that computes color and other attributes of each pixel. Pixel shaders range from always outputting the same color, to applying a lighting value, to doing bump mapping, shadows, specular highlights, translucency and other phenomena. They can alter the depth of the pixel (for Z-buffering), or output more than one color if multiple render targets are active. A pixel shader alone cannot produce very complex effects, because it operates only on a single pixel, without knowledge of a scene's geometry.

BasicEffect Shader XNA 內建簡單好用的 Shader XNA 範例中含 Source Code 及說明檔 To use this shader, at minimum you must set the World, View, and Projection matrix parameters, plus the EyePosition vector parameter (which is specified in world space). This will produce untextured, unlit, and flat color t riangles. 使用自己的Shader 範例, 2d3d\06\01

Effect Files (.fx) 用載入模型的的方式將. fx檔載入 http://www.toymaker.info/Games/html/effects_files.html Wave Demo An effect file is a text file with a .fx extension. It is split into 3 main sections: Variable declarations - these are values that can be set before rendering and then used in this effect file. Examples include: textures, world matrix, lighting parameters Functions - the shader code written in Techniques & Passes- defines how something is to be rendered. It includes state information along with vertex and shader declarations. 舉例 2d3d\06\02

座標轉換 Draw() effect.World = transforms[mesh.ParentBone.Index] *…. Effect.View =Matrix.CreateLookAt(… Effect.Projection= MatrixCreatePerspectiveFieldOfView(… 移動 Matrix.CreateTranslation( new Vector3(1.0f, 1.0f, 1.0f)) 轉動 – Matrix.CreateRotationY(MathHelper.ToRadians(45.0f) 注意矩陣前後順序 縮放 Matrix.CreateScale(0.01f)

使用現成特效 - 程式合併 Billboard Pipeline加入專案 Particle \creatorclub\billboard 加入現有專案 Content Processor 加入 VegetationProcessor 兩個專案的攝影機角度剛好相反, Particle 為真正3D

輔助工具 XACT Program files(x86)/Microsoft XNA/XNA Game Studio/v3.1/Tools 先在XACT 準備所用到的聲音素材, 成為xap檔 在 Game 裡面加入現有項目( xap檔) 只是簡單音效用 SoundEffect, 例如爆炸 XACT- 新增wav bank, sound bank 把 .wav檔拉到 wav bank, 從wav bank 拉到sound bank 視窗下半部cue 存成 xap 檔, 從Game 專案裡面加入現有項目 可以使用有loop 的 Sound Cue

3D Sound Effect angle += 0.01f; // rotate the emitter around a little bit listener.Position = Vector3.Zero; // the listener just stays at the origin the whole time emitter.Position = CalculateLocation(angle, distance); // calculate the location of the emitter again cue.Apply3D(listener, emitter); // apply the 3D transform to the cue

3D Model 調整 3DsMax 大小調整 Boolean 連結物件

螢幕鍵盤 OnScreenKeyboard 直接在SimuSurveyX 測量模式下按 Y進入 用搖桿輸入名字或數字 將 DrawableGameComponent 加入專案

Avatar 必須在Xbox 360 才看的到 設定範例 avatarRenderer.World = Matrix.CreateRotationY(MathHelper.ToRadians(180.0f)); avatarRenderer.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f), GraphicsDevice.Viewport.AspectRatio,.01f, 200.0f); avatarRenderer.View = Matrix.CreateLookAt(new Vector3(0, 1, 3), new Vector3(0, 1, 0), Vector3.Up);   avatarRenderer.Draw(avatarAnimation.BoneTransforms, avatarAnimation.Expression); 其他網站的 Avatar http://www.imvu.com/signup/index/ 看那一台 Xbox 360 目前已經傳上去的範例 在Xbox 上面 我的Xbox/skc1125/自訂 虛擬人偶 遊戲賣場/ 專賣店 按右上角圖片連結自行開發的Avatar

Video Video Support in XNA Game Studio 3.1 Demo 這部分如果找不到例子就省略

XNA 4.0 支援 Windows Phone 7 800 * 480 的解析度 多點觸控 (目前支援四點) ARMv7 CPU Silverlight (支援事件驅動) XNA XBOX Live (撰寫線上遊戲) Demo http://chinese.engadget.com/2010/10/13/xbox-live-for-windows-phone-7-your-xbox-isnt-in-your-phone-yet/

輸入與輸出介面 3D Mouse 3Dconnexion SpaceNavigator 3D Display 加一行 graphics.IsFullScreen = true ; 支援 3D 3D, Full Screen 無法 Capture 畫面

Q&A 莊世坤 skc@caece.net 土木新館 611 VLAB Interests Group 虛擬化平台, 網站架設PHP, Joomla, XNA, PhysX or Shader Unity3D, 莊世坤 skc@caece.net 土木新館 611