

課程名稱:3D遊戲進階(多媒體四A)
謝慧民的網站 > 課程網站 > 首頁 > 台首大多媒體_謝慧民_102_2_3D遊戲進階

第十四週上課:(2014.05.21)
- 多媒體四A:
- 最晚繳交期限:103年5月28日(使用e-mail:hmhsieh@ms3.hinet.net)
- 期末考題下載:期末考
- 期末考第二題參考答案:第二題
- 使用參考答案進行修改,shiva 3d操作期末考題。
- 將你的人形置換我的人形:從3ds max 2009使用shiva tools匯出為.dae格式(不能有中文路徑,貼圖要複製到同一個目錄),在shiva 3d將人形匯入,拉到場景,將座標改跟裡面的人形相同,然後將原來的人形標籤去除,換成你的人形設標籤為person_tag,程式都不用改。將原來的人形移除,若有操作wasd鍵的問題要去改程式碼的座標對應。
- 將原來的附屬物件一樣設到你的人形底下為子物件,為你的人形材質加入接收動態燈光,投射動態陰影。
- 最後產生"你的學號_final.ste"檔繳交。
- 範例:範例14
- 操作錄影:錄影14-、錄影14-1、錄影14-2、錄影14-3。

第十三週上課:(2014.05.14)
- 多媒體四A:
- 期末考題下載:期末考
- 期末考第二題參考答案:第二題
- shiva 3d操作期末考題。
- 下載範例8。
- 到3ds max 2009製作一個人形,立體學號是手臂,直立立體姓名是人形的頭跟身體,腳用兩根圓柱,全部做好reset Xform等四項設定,用shiva tools匯出為.dae格式,匯入shiva 3d後也設為碰撞體。
- 到shiva 3d匯入這個模型,設定為碰撞體,放在攝影機的前方,將操作攝影機的程式碼換為操作人形。
- 到sketch up找一個足球場,匯出.fbx格式,到3ds max 2009匯入後使用shiva tools轉為.dae格式,匯入到shiva 3D並拉到場景內,足球場設為碰撞體,足球(可用原來的球替代)設定具有力學機制。
- 為攝影機加一個cam_AI,在onenterframe()加入:
- local pos=application.getCurrentUserSceneTaggedObject ( "cam_pos_tag" )
local people=application.getCurrentUserSceneTaggedObject ( "person_tag" )
local cam3=this.getObject ( )
local kg=object.kGlobalSpace
local x, y, z= object.getTranslation ( pos, kg )
object.translateTo ( cam3, x, y, z, kg, 0.05 )
local xd, yd, zd = object.getTranslation ( people, kg )
object.lookAt ( cam3, xd, yd, zd, kg, 1 )
上面程式在控制攝影機跟著人形,且注視著人形。
- 然後將人形拉到攝影機前方,再加入一個球放在人形的下方,掉到地上後,人形跟著球的垂直座標設定在地板上,人形位置改變後球的位置跟著改變,隱藏球,執行後人形及足球都掉到足球場上,可以操作人形去推足球到門框中,並設定有陰影效果。
- 然後全部儲存重新編譯。
- 範例:範例13
- 操作錄影:錄影13-、錄影13-1、錄影13-2、錄影13-3。
- 加分練習:操作shiva 3d。

第十二週上課:(2014.05.7)
- 多媒體四A:
- 下一次上課做期末考題。
- shiva 3d操作。
- 到網路下載三張png透空圖檔,使用範例11的成果繼續做2D介面的互動程式,投影片講解:基礎教學
- HUD 與AI Model溝通方式為傳送事件給AI Model ,指令設定為SendEventToUser。
- 產生一個新的hud,將hud物件拉到資源內,然後在mainAI的onInit()加入使介面看的見的指令:hud.newTemplateInstance ( ) ,設定為按鈕。
- 行為加入command為in,將圖片設為新的圖片。
- 再加入command為out,圖片設為第三張。將這三張圖都拉進資源內。
- 事件的地方要指定滑鼠進入是in,滑鼠移出是out,滑鼠按下是press,都有不同的對應圖。
- 在mainAI加入兩個state(有限狀態機),為idle及rotate,然後在rotate_onloop()寫入球旋轉的程式碼。在handler加入onGo()的handler,寫入程式碼:this.sendStateChange(a),參數加入a,在按鈕的行為加入sendEventToUser的command,將handler設為onGo()參數a設定為rotate,複製到其他的行為改參數為idle,當按下滑鼠不放,球會透過sendEventToUser送訊息給onGo(),然後使球旋轉,放開滑鼠則球不轉,狀態切到 idle。
- 然後全部儲存重新編譯,場景重新載入,執行一下程式試試看滑鼠滑入離開按下等動作圖有沒有切換,按下去球是否旋轉,放開則不轉。
- 範例:範例12
- 操作錄影:錄影12-、錄影12-1、錄影12-2、錄影12-3、錄影12-4、錄影12-5。
- 加分練習:操作shiva 3d。

第十一週上課:(2014.04.30)
- 多媒體四A:
- shiva 3d操作。
- 自Sketch up下載一個地形匯出為.fbx,在3ds max 2009匯入,使用Shiva tools匯出,到匯入shiva 3d投影片講解:基礎教學
- 做模型細化之前請用點焊接(Welt),讓模型沒有破面。
- 製作一個全新的專案,新增遊戲場景及AI,設定場景,然後拉進這個地形,設為碰撞體,拉進一個球設為力學控制器,然後球掉到不平的地面產生滾動,調係數讓球有彈跳:
- Sketch up的3d warehouse找一個terrain,轉為.obj或FBX,到3ds max 2009匯入,貼圖設定好後,按榔頭的reset Xform及階層的scale、transform、reset pivot,然後使用shiva tools匯出為.dae格式,注意路徑不能有中文。
- 到shiva使用匯入模型的方式,勾選y軸向上,設定比例為0.001,匯入完點兩下打開是否正常,如果正常再拉到場景,設定以上所說的步驟
- 範例:範例11
- 操作錄影:錄影11-、錄影11-1、錄影11-2、錄影11-3。

第十週上課:(2014.04.23)
- 多媒體四A:
- shiva 3d操作。
- 角色自3ds max製作到會匯入shiva 3d投影片講解:基礎教學
- 設定球為力學的控制器,地面、攝影機及樹設為碰撞體,移動攝影機則攝影機碰到球會滾動:範例8
- 製作一個全新的專案,新增遊戲場景及AI,設定場景,然後拉進一個地形,設為碰撞體,拉進一個球設為力學控制器,然後球掉到不平的地面產生滾動,調係數讓球有彈跳:
- Sketch up的3d warehouse找一個terrain,轉為.obj或FBX,到3ds max 2009匯入,貼圖設定好後,按榔頭的reset Xform及階層的scale、transform、reset pivot,然後使用shiva tools匯出為.dae格式,注意路徑不能有中文。
- 到shiva使用匯入模型的方式,勾選y軸向上,匯入完點兩下打開是否正常,如果正常再拉到場景,設定以上所說的步驟
- 範例:範例10
- 操作錄影:錄影10-、錄影10-1、錄影10-2。

第九週期中考:(2014.04.16)

第八週上課:(2014.04.9)
- 多媒體四A:
- shiva 3d操作。
- 投影片講解:基礎教學
- 下載上次上課的專案:範例7
- 期中考題:4A期中考middle
- 製作第一人稱攝影機貼著地面:
- onEnterFrame():程式加入:
- local scene1= application.getCurrentUserScene ( )
local x,y,z = object.getTranslation ( cam , object.kGlobalSpace )
object.setTranslation ( cam, x, scene.getTerrainHeight ( scene1, x, z )+1.5,z,object.kGlobalSpace )
- 意思是先取得當前的場景,然後取得攝影機的位置,再設定攝影機放在Terrain地面上方1.5的位置,然後play移動看看攝影機與地面高差是否一致。
- 設定按上下鍵讓攝影機上下擺動可以看到高處跟地面,在主程式terrain_AI的onkeyboardkeydown、onkeyboardkeyup、onenterframe()三個handler加入以下程式
- 設定AI變數up, down等,都設為boolean的false,handler onkeyboardkeydown加入程式碼:
- if kKeyCode == input.kKeyUp then -- command
this.up ( true )
elseif kKeyCode == input.kKeyDown then
this.down ( true )
end
- 在handler onkeyboardkeyup加入程式碼:
- if kKeyCode == input.kKeyUp then -- command
this.up ( false )
elseif kKeyCode == input.kKeyDown then
this.down ( false )
end
- 在handler onenterframe()加入程式碼:(攝影機上下擺動)
- if this.up( ) then
object.rotate ( cam, 2, 0, 0, object.kLocalSpace )
elseif this.down ( ) then
object.rotate ( cam, -2, 0, 0, object.kLocalSpace )
end
- 存所有場景、腳本程式,全部編譯,執行,操作上下鍵看看攝影機是不是可以上下擺動並沿著地形走。
- 範例:範例8
- 操作錄影:錄影8-、錄影8-1。

第七週上課:(2014.04.2)
- 多媒體四A:
- shiva 3d操作。
- 投影片講解:基礎教學
- 下載上次上課的專案:範例6
- 期中考題:4A期中考middle
- 製作第一人稱攝影機:
- Help功能有關程式說明,有屬性,函式的名稱直翻就知道他在做什麼,constant是環境變數固定值,他用一個名稱代表值。object的函式及application的函式解說。
- 產生一台攝影機,拉到場景,設標籤名稱為Cam_tag。
- 打開主程式,解釋onInit()為初始化時期只執行一次的Handler,onEnterFrame()在每個更新的Frame都要執行一次,如果每秒顯示60次Frame,則1/60秒就會執行它一次。
- 攝影機的操作:切換到新的攝影機(紅點),使用Alt加滑鼠左中右鍵操作視景的呈現位置。
- 到onInit()程式後面加入:
- local cam1=application.getCurrentUserSceneTaggedObject ( "Cam_tag" )
application.setCurrentUserActiveCamera (cam1 )
- 編譯及執行看看是否在目前的攝影機視野。
- 在主程式terrain_AI加入onkeyboardkeydown、onkeyboardkeyup、onenterframe()三個handler
- 設定AI變數a, w, s, d等,都設為boolean的false,handler程式碼加入onkeyboardkeydown加入程式碼:
- if kKeyCode == input.kKeyA then
this.a ( true)
end
if kKeyCode == input.kKeyW then
this.w ( true)
end
if kKeyCode == input.kKeyS then
this.s ( true)
end
if kKeyCode == input.kKeyD then
this.d ( true)
end
- 在handler程式碼加入onkeyboardkeyup加入程式碼:
- if kKeyCode == input.kKeyA then
this.a ( false)
end
if kKeyCode == input.kKeyW then
this.w (false)
end
if kKeyCode == input.kKeyS then
this.s (false)
end
if kKeyCode == input.kKeyD then
this.d ( false)
end
- 在handler程式碼加入onenterframe()加入程式碼:(攝影機旋轉前進後退)
- local cam = application.getCurrentUserActiveCamera ( )
local hscene= application.getCurrentUserScene ( )
if this.w ( ) then
object.translate ( cam , 0, 0, -0.05, object.kLocalSpace )
end
if this.s ( ) then
object.translate ( cam , 0, 0, 0.05, object.kLocalSpace )
end
if this.a ( ) then
object.rotate ( cam , 0, 2, 0, object.kGlobalSpace )
end
if this.d ( ) then
object.rotate ( cam , 0, -2, 0, object.kGlobalSpace )
end
- 存所有場景、腳本程式,全部編譯,執行,操作wasd鍵看看攝影機是不是可以移動及轉動。
- 範例:範例7
- 操作錄影:錄影7-、錄影7-1、錄影7-2、錄影7-3。

第六週上課:(2014.03.26)
- 多媒體四A:
- shiva 3d操作。
- 投影片講解:基礎教學
- 下載上次上課的專案:範例5-1
- 期中考題:4A期中考middle
- 製作場景地形、天空、海洋、加入草透空貼圖(.png):
- 打開上次的專案載入遊戲及場景。
- 到ambience editor周圍環境編輯:點天空頁籤加入左右前後及上的貼圖,點海洋頁籤,設定相關參數,讓海或河的真實感顯示出來。
- 利用sample的專案模型及貼圖,產生包裝檔,從地形專案匯入,設定模型陰影,設定燈光投射陰影,調一個較佳的角度可以看到山水、天空及物件。
- 範例:範例6
- 操作錄影:錄影6-、錄影6-1、錄影6-2、錄影6-3、錄影6-4、錄影6-5。

第五週上課:(2014.03.19)
- 多媒體四A:
- shiva 3d操作。
- 投影片講解:基礎教學
- 到sample找一個遊戲,練習匯出為.ste及.stk(advanced才有),然後使用Authoring tools轉檔為windows執行檔格式,測試看看能不能run。
- 參考發佈資料:愛迪斯科技講義
- 用terrain editor製作地形:
- 建立專案、建立新的遊戲、建立新的場景、到左上角回位置下拉選Terrain Editor地形編輯器。
- 建立一個地形2x2,選取地形,加入level=20,使用筆刷刷出凹區,在場景內加一盞動態燈光,並到材質位置將接收動態燈光打勾,可以看到有亮度的地形起伏,調整燈光位置到地形上方。
- 到網路找一張無接縫seamless的地表貼圖,匯入到素材庫,材質的位置將這張圖設定進來,按預覽或產生可以看到地表已經有貼圖了,你可以改變加大U及V的倍數讓地表更細緻。
- 到植物頁籤加入一個grass的貼圖(要匯入texture),用筆刷在地圖上刷出植物的範圍,也可以建立道路。
- 選取場景加入Main AI模組,使用AI model editor新增一個Handler為onInit(),可以控制整個遊戲的進行,使用script editor編輯程式(Lua語法)。
- onInit函式:加入application.setCurrentUserScene(“場景名稱”)
- 然後將場景及程式腳本儲存,執行後你可以看到有貼圖的地形在場景裡面,草已經可以擺動了。
- 範例:範例5-1
- 操作錄影:錄影5-、錄影5-1、錄影5-2、錄影5-3、錄影5-4、錄影5-5、錄影5-6、錄影5-7。
- 加分練習:有開啟Shiva 3D做茶壺旋轉練習

第四週上課:(2014.03.12)
- 多媒體四A:
- shiva 3d操作。
- 投影片講解:基礎教學
- 基本操作:中文化、界面解說、載入專案、執行及操作視景與物件
- 到3ds max製做一個茶壺並貼圖,有兩種匯出方式,一種為使用shivatools外掛按鈕,一種使用export選autodesk collada(.dae)格式,匯出為.dae格式,所有專案位置、檔名及內部命名都不要有中文,命名以至少一個英文字母搭配數字或底線,比較不會發生找不到資料的問題。
- 載入test專案路徑、將茶壺匯入到素材庫、拉模型到場景。
- 如果沒看到物見,可以使用Alt+滑鼠左中右鍵去操作視景看到,或者用滾輪滾動到縮放,調整選取茶壺物件的大小到視窗可以看見的範圍。
- 讓茶壺旋轉:將立方體的AI設給茶壺,在AI model Editor打開AI,在Handler為onEnterFrame()裡面,加入
- local o1 = scene.getTaggedObject ( s, "hCube_tag" )
object.rotate ( o1, 0,2,0,object.kGlobalSpace )
- 也讓茶壺以每次兩度以Y軸旋轉。
- 範例:範例4-1
- 操作錄影:錄影4-、錄影4-1、錄影4-2、錄影4-3、錄影4-4、錄影4-5。
- 加分練習:有開啟Shiva 3D做茶壺旋轉練習

第三週上課:(2014.03.5)
- 多媒體四A:
- shiva 3d介紹。
- 投影片講解:基礎教學
- 基本操作:中文化、界面解說、載入專案、執行及操作視景與物件
- 建立專案、建立新的遊戲、建立新的場景、從shiva裡建立一個立方體、拉模型到場景。
- 為遊戲加入mainAI(),在onInit函式:加入application.setCurrentUserScene(“場景名稱”)
- 立方體賦予材質,然後加入標簽,再加入一個objectAI給他,在onEnterframe()的Handler加入以下程式碼控制立方體轉動:
- local s = application.getCurrentUserScene ( )
local o = scene.getTaggedObject ( s, "hCube_tag" )
object.rotate ( o, 0,2,0,object.kGlobalSpace )
- 儲存場景、儲存所有程式、編譯所有程式、執行看看立方體會不會轉動
- 範例:範例3-1
- 操作錄影:錄影3-、錄影3-1、錄影3-2、錄影3-3。
- 加分練習:有開啟Shiva 3D做練習

第二週上課:(2014.02.26)
- 多媒體四A:
- shiva 3d介紹。
- 投影片講解:基礎教學
- 基本操作:中文化、界面解說、載入專案、執行及操作視景與物件
- 介紹神魔之塔為什麼是手機遊戲營收的冠軍,以及跟他相似的轉珠遊戲有哪些。
- 開啟一個sample的遊戲,然後執行看看畫面有沒有東西,熟悉操作環境
- 加分練習:有開啟Shiva 3D做練習

第一週上課:(2014.02.19)


版權所有©2014 謝慧民
