

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

第十四週期末考:(2013.05.30)
- 多媒體四AC:
- 成績計算完成,有11位同學拿到100分,預計仍有同學當掉。
- 期中考沒交學號後三碼:118, 157, 038
- 期末考沒交的同學:014, 094, 103, 115, 118, 139, 157, 159, 128,可以補交一個手機遊戲的報告,最慢6月4日前,e-mail: hmhsieh@ms3.hinet.net,我會回你信,有收到表示ok,扣考者最多60。
- 2013.06.05送成績。
- 期末考題:
- 使用範例13進行修改或用你之前做的成果修改,做一個平面有貼圖取代原來的地形,製作一個球有貼圖,開始時掉到地板。
- 製做一個以第三人稱攝影機操作的遊戲,角色由方塊變為一個人形,橫方向的手為你的學號立體物件,縱方向的頭+身體為你的姓名,兩腳可以用圓柱或長方體,並有貼圖。
- 人形可以操作前後移動,左右旋轉,移動碰撞到球後,球會翻滾。
- 繳交檔案為"你的學號_final.ste"及"你的學號_final.stk"。
- 在3ds max製作一個人形物件,頭及身體為你的姓名,手臂為你的學號,雙腳使用圓柱或立方體製作,為這些模型加入貼圖,匯出為.dae格式(不可以有中文路徑及中文圖檔名稱)。
- 開啟範例13的內容,匯入人型模型,拉到場景裡面,位置調到方塊處,位人型物件命名標籤。製作階層關係讓人型為方塊的子物件,則操作鍵盤左右鍵及上下鍵可以控制人型游走,為第三人稱攝影機。
- 範例:範例14
- 可以變通方式:將box01的碰撞體屬性取消、到box01材質編輯器設為完全透明,參考解答:B73602032ok
- 操作錄影:錄影14-、錄影14-1、錄影14-2、錄影14-3、錄影14-4、錄影14-5。

第十三週上課:(2013.05.23)
- 多媒體四AC:
- 期末考題:
- 使用範例12進行修改或用你之前做的成果修改,做一個平面有貼圖取代原來的地形,製作一個球有貼圖,開始時掉到地板。
- 製做一個以第三人稱攝影機操作的遊戲,角色由方塊變為一個人形,橫方向的手為你的學號立體物件,縱方向的頭+身體為你的姓名,兩腳可以用圓柱或長方體,並有貼圖。
- 人形可以操作前後移動,左右旋轉,移動碰撞到球後,球會翻滾。
- 下載範例:範例12。
- 設定專案位置開啟後,到Scene exporter先選攝影機再選方塊,按右鍵建立群組,選下方的check box以後選為父物件,然後play看看方塊移動攝影機是否跟隨。
- 加一顆球掉落可以滾動,加入一個平面設定為方塊運動的地面:
- 再加入一個球體,設定貼圖,拉進場景,讓球位在地形上方,在球體上按右鍵設定為力學的控制器,打開屬性視窗,設定尺寸為1.0,質量設為1.0,地形的幾何頁籤設定為碰撞體。
- 讓方塊可以推著球跑:設定方塊的屬性為碰撞體,按運行石的按鈕,則半透明的綠色、粉紅色會隱藏。
- 新增一個平面物件並貼圖,先切換到預設攝影機,拉到場警調整大小及位置到方塊的上方一點點,設定平面為碰撞體,切到terrain editor地形頁籤,移除地形,到onenterframe程式碼修改為:
- local cam = application.getCurrentUserActiveCamera ( )
local hscene= application.getCurrentUserScene ( )
local box01= application.getCurrentUserSceneTaggedObject ( "box01_tag" )
local plane01= application.getCurrentUserSceneTaggedObject ( "plane01_tag" )
if this.w ( ) or this.kup ( ) then
object.translate ( box01 , 0, 0, -0.05, object.kLocalSpace )
end
if this.s ( ) or this.kdown ( ) then
object.translate ( box01 , 0, 0, 0.05, object.kLocalSpace )
end
if this.a ( ) or this.kleft ( ) then
object.rotate ( box01 , 0, 2, 0, object.kGlobalSpace )
end
if this.d ( ) or this.kright ( ) then
object.rotate ( box01 , 0, -2, 0, object.kGlobalSpace )
end
local x,y,z=object.getTranslation ( box01, object.kGlobalSpace )
local x1,y1,z1=object.getTranslation ( plane01, object.kGlobalSpace )
object.setTranslation ( box01, x, y1+0.42 , z, object.kGlobalSpace )
- 請將平面物件的標籤設為"plane01_tag",將場景儲存,將程式儲存並全部編譯一次,play看看方塊是否會貼這平面運行,攝影機也跟隨,則第三人稱的攝影機功能完成。
- 範例:範例13
- 操作錄影:錄影13-、錄影13-1、錄影13-2、錄影13-3、錄影13-4、錄影13-5、錄影13-6。
- 加分練習:有做練習

第十二週上課:(2013.05.16)
- 多媒體四AC:
- 說明迴圈使用及log.report的使用:範例一。
- 說明有限狀態機的使用(onenter()、onloop()、onleave()三個函式,第一及三只做一次,中間的onloop()會一直做直到切換狀態才會跳出到onleave()結束有限狀態機):範例二。
- 投影片講解:程式教學
- 操作box01作前進後退旋轉替代攝影機:
- 下載上課的範例範例11,改為12。
- 解開壓縮,打開shiva 3d,設定專案路徑。
- 在handler程式碼加入onenterframe()修改程式碼:(box01旋轉前進後退)
- local cam = application.getCurrentUserActiveCamera ( )
- local box01=application.getCurrentUserSceneTaggedObject ( "box01_tag" )
local hscene= application.getCurrentUserScene ( )
if this.w ( ) then
object.translate ( box01 , 0, 0, -0.05, object.kLocalSpace )
end
if this.s ( ) then
object.translate ( box01 , 0, 0, 0.05, object.kLocalSpace )
end
if this.a ( ) then
object.rotate ( box01 , 0, 2, 0, object.kGlobalSpace )
end
if this.d ( ) then
object.rotate ( box01 , 0, -2, 0, object.kGlobalSpace )
end
local x,y,z=object.getTranslation ( box01, object.kGlobalSpace )
object.setTranslation ( box01, x, scene.getTerrainHeight (hscene, x, z )+0.42 , z, object.kGlobalSpace )
- 存所有腳本程式,全部編譯,執行,操作wasd鍵看看box01是不是可以貼地移動,這是第三人稱攝影機設定的前置作業,將攝影機拉到box01底下群組,則攝影機會跟隨box01。
- 範例:範例12
- 操作錄影:錄影12-、錄影12-1、錄影12-2。
- 加分練習:有做練習

第十一週上課:(2013.05.09)
- 多媒體四AC:
- shiva 3d操作。
- 投影片講解:程式教學
- 操作第一人稱攝影機:
- 下載上課的範例範例10,改為11。
- 解開壓縮,打開shiva 3d,設定專案路徑。
- Help功能有關程式說明,有屬性,函式的名稱直翻就知道他在做什麼,constant是環境變數固定值,他用一個名稱代表值。object的函式及application的函式解說。
- 設定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
local x,y,z=object.getTranslation ( cam, object.kGlobalSpace )
object.setTranslation ( cam, x, scene.getTerrainHeight (hscene, x, z )+0.42 , z, object.kGlobalSpace )
- 存所有腳本程式,全部編譯,執行,操作wasd鍵看看攝影機是不是可以貼地移動。
- 範例:範例11
- 操作錄影:錄影11-、錄影11-1、錄影11-2、錄影11-3、錄影11-4。
- 加分練習:有做練習

第十週上課:(2013.05.02)
- 多媒體四AC:
- shiva 3d操作。
- 投影片講解:基礎教學
- 修改場景地形模型及貼圖、改變花草貼圖、加入攝影機:
- 下載第八週上課的範例,解壓縮設定專案路徑。
- 產生一台攝影機,拉到場景,設標籤名稱為Camera_tag。
- 打開主程式,解釋onInit()為初始化時期只執行一次的Handler,onEnterFrame()在每個更新的Frame都要執行一次,如果每秒顯示60次Frame,則1/60秒就會執行它一次。
- 攝影機的操作:切換到新的攝影機(紅點),使用Alt加滑鼠左中右鍵操作視景的呈現位置。
- 到onInit()程式後面加入:
- local hCamera01=application.getCurrentUserSceneTaggedObject ( "Camera_tag" )
application.setCurrentUserActiveCamera (hCamera01 )
- 編譯及執行看看是否在目前的攝影機視野。
- 下載bee套件,匯入套件,啟動場景選不儲存的按鈕"否",以免載入的場景覆蓋了原來terrain的場景,造成做白工。
- 將蜜蜂bee拉進場景,到Anibank看看是否有動畫片段,播播看是否會展翅飛。
- 期中考的內容地形使用我的有扣分,請改變一下地形凹凸及貼圖,順便改變一下草的貼圖,可以補繳期中考。
- 範例:範例10
- 操作錄影:錄影10-、錄影10-1、錄影10-2、錄影10-3、錄影10-4、錄影10-5、錄影10-6。
- 加分練習:有做練習

第九週期中考:(2013.04.25)

第八週上課:(2013.04.18)
- 多媒體四AC:
- shiva 3d操作。
- 投影片講解:基礎教學
- 製作場景地形、天空、海洋、加入物件貼圖:
- 打開上次的專案載入遊戲及場景。
- 到ambience editor周圍環境編輯:點天空頁籤加入左右前後及上的貼圖,點海洋頁籤,設定相關參數,讓海或河的真實感顯示出來。
- 產生一個立方體及產生一個材質,然後模型編輯狀態將才直拉進去給模型,再到場景將模型拉進去調整位置,調一個較佳的角度可以看到山水、天空及物件。
- 範例:範例8
- 操作錄影:錄影8-、錄影8-1、錄影8-2、錄影8-3、錄影8-4。
- 加分練習:有做練習

第七週上課:(2013.04.11)
- 多媒體四AC:
- shiva 3d操作。
- 投影片講解:基礎教學
- 製作場景地形:
- 建立專案、建立新的遊戲、建立新的場景、到左上角回位置下拉選Terrain Editor地形編輯器。
- 建立一個地形2x2,選取地形,加入level=10,使用筆刷刷出凹區,在場景內加一展動態燈光,並到材質位置將接收動態燈光打勾,可以看到有亮度的地形起伏,調整燈光位置到地形上方。
- 到網路找一張無接縫seamless的地表貼圖,匯入到素材庫,材質的位置將這張圖設定進來,按預覽或產生可以看到地表已經有貼圖了,你可以改變加大U及V的倍數讓地表更細緻。
- 到植物頁籤加入一個grass的貼圖(要匯入texture第三章),用筆刷在地圖上刷出植物的範圍,也可以建立道路。
- 選取場景加入Main AI模組,使用AI model editor新增一個Handler為onInit(),可以控制整個遊戲的進行,使用script editor編輯程式(Lua語法)。
- onInit函式:加入application.setCurrentUserScene(“場景名稱”)
- 然後將場景及程式腳本儲存,執行後你可以看到有貼圖的地形在場景裡面,草已經可以擺動了。
- 範例:範例7
- 操作錄影:錄影7-、錄影7-1、錄影7-2、錄影7-3、錄影7-4。
- 加分練習:有做建立地形練習

第六週上課:(2013.04.4)

第五週上課:(2013.03.28)
- 多媒體四AC:
- shiva 3d操作。
- 投影片講解:基礎教學
- 基本操作:中文化、界面解說、載入專案、執行及操作視景與物件
- 到3ds max製做一個茶壺並貼圖,匯出為.dae格式,所有專案位置、檔名及內部命名都不要有中文,命名以至少一個英文字母搭配數字或底線,比較不會發生找不到資料的問題。
- 建立專案、建立新的遊戲、建立新的場景、將茶壺匯入到素材庫、拉模型到場景。
- 如果沒看到物見,可以使用Alt+滑鼠左中右鍵去操作視景看到,或者用滾輪滾動到縮放,調整選取茶壺物件的大小到視窗可以看見的範圍。
- 選取場景加入Main AI模組,使用AI model editor新增一個Handler為onInit(),可以控制整個遊戲的進行,使用script editor編輯程式(Lua語法)。
- onInit函式:加入application.setCurrentUserScene(“場景名稱”)
- 然後將場景及程式腳本儲存,執行後你可以看到有貼圖的茶壺在場景裡面。
- 讓茶壺旋轉:請在Dtat Explorer建立一個查用的AI,然後選擇茶壺按右鍵,加入這個AI給茶壺,在AI model Editor打開這個AI,新增一個Handler為onEnterFrame(),可以控進入遊戲時茶壺在進入舞台後可以做哪些事,使用script editor編輯程式(Lua語法)。
- onEnterFrame()函式:加入object.rotate (this.getObject ( ),0,2,0, object.kGlobalSpace ),為旋轉指令,讓茶壺以每次兩度以Y軸旋轉。
- 範例:範例5-1
- 操作錄影:錄影5-、錄影5-1、錄影5-2、錄影5-3、錄影5-4。
- 加分練習:有開啟Shiva 3D做茶壺旋轉練習

第四週上課:(2013.03.21)
- 多媒體四AC:
- shiva 3d介紹。
- 投影片講解:基礎教學
- 基本操作:中文化、界面解說、載入專案、執行及操作視景與物件
- 到3ds max製做一個茶壺並貼圖,匯出為.dae格式。
- 建立專案、建立新的遊戲、建立新的場景、將茶壺匯入到素材庫、拉模型到場景。
- onInit函式:加入application.setCurrentUserScene(“場景名稱”)
- 範例:範例4-1
- 操作錄影:錄影4-、錄影4-1、錄影4-2。
- 加分練習:有開啟Shiva 3D做練習

第三週上課:(2013.03.14)

第二週上課:(2013.03.07)

第一週上課:(2013.02.28)


版權所有©2013 謝慧民
