3D建模與運算思維
課程總覽
教學軟體:Blender
教學網站:Scratch、codecombat
課程規劃:
電腦遊戲創作/8
立體建模/6
文字型程式遊戲/4
單元一:電腦遊戲創作
電腦遊戲是遊戲的一種,而遊戲的主要成份有目的、規則、挑戰及互動,這些成分可以統稱為「遊戲性」。遊戲性就是一個遊戲之所以吸引人的原因,遊戲性可以帶來「脫離現實」的解放感,也導致有些人會沈溺於遊戲當中。
目的:在遊戲當中,我們都有明確性的目標。而在平時的工作和生活當中,我們未必有明確的目標,這也是很多人感到生活迷茫的原因。很多人是因為在生活當中沒有目標,所以就到遊戲這個虛擬世界裡去尋找目標。
規則:在遊戲當中,規則是相對固定的,而且你玩得越久,對規則就把握得越好,遊戲規則是公平的,只要努力總能獲得相應的回報。而在現實社會當中,卻未必都有公平的規則。
互動:只要玩遊戲就會有相應的收穫,例如:稱號、級別、得分、進度條、金幣、裝備。人與遊戲的互動,都是可以預期結果的。而現實世界卻不是可以預測的。
挑戰:所有遊戲都是自願參與的,當面對困難的挑戰時自己可以隨時退出,就算失敗了還可以重新挑戰,有充分的自主權。而現實生活卻不是這樣,總是有許多迫於無奈的事情,而且常常失敗了就沒機會重來。
以遊戲設計的角度來看,電腦遊戲可以簡單分成三個最基礎部分:遊戲內容(contents)、核心玩法(core gameplay)和遊戲系統(game system)。
遊戲內容是指遊戲的故事背景、環境設定、角色設計、配樂、音效、視覺藝術...等等內容,也就是遊戲所具備的文學與藝術成分。
核心玩法是指人與遊戲互動的方式,不同的玩法也會產生不同的遊戲類型,例如:探索、戰鬥、生產、建設、冒險任務、行商、歷史模擬......等等。
遊戲系統是指為了支持核心玩法所設計出來的遊戲機制,例如:探索時的地圖迷霧系統(沒去過的地方在地圖上只看到霧)、戰鬥時的勝負系統、生產時的環境適性加值系統、建設時的資材消耗系統......等等。
在這個單元我們要設計的是動作遊戲「敲磚塊」,遊戲規則如下:
目的:消除所有的磚塊
規則:控制反射板將鋼珠彈到空中撞擊磚塊,磚塊就會消失,清除所有磚塊就過關,如果沒接到鋼珠,遊戲就結束
互動:鋼珠擊中反射板的位置不同,反彈角度就不同,也可以想成反射板中間彈性最好,兩邊彈性較差,玩家透過練習可以控制鋼珠反彈到自己想要的角度,發展出遊戲技巧。
挑戰:遊戲中鋼珠速度會突然變快或突然變慢,考驗玩家的反應能力。不同關卡也有不同難度設計,例如:磚塊較多,排列較不規則。磚塊本身堅固程度也有不同,有的磚塊要敲兩次才會消失,有的磚塊敲不破。
從遊戲設計觀點來看,「敲磚塊」遊戲的三個基礎部分:
遊戲內容:必須要想一個故事來說明遊戲的背景,同時故事也決定了遊戲場景、提示訊息的樣式。
核心玩法:這是動作遊戲,玩家須擁有三項能力:預測鋼珠的位置、滑鼠控制能力、即時反應能力。
遊戲系統:已經在遊戲規則中討論過了,包含:速度突然變化、特殊磚塊設計、關卡難度增加...等要素。
佈置場景與角色
繪製舞台背景
開啟新專案,點選「舞台」,切換到「背景」分頁
在舞台背景下面找到「轉換成點陣圖」按鈕並點擊
將「填滿」顏色修改為「垂直漸層」,然後挑選兩個不同的顏色。
在空白的背景中央點擊左鍵,把漸層色填入背景圖。
填好背景色後,「轉換成向量圖」
將「外框」顏色修改為紅色,寬度修改為「20」
使用「線條」工具在背景底部畫一條橫線。
新增鋼珠角色
在角色窗格點選右下角的「新增角色」圓形按鈕,然後點擊「繪畫」
在向量圖模式下作畫,不要轉換到點陣圖。
首先將「填滿」顏色修改成「由內到外漸層」,左邊的顏色降低彩度(往左拉),直到看起來像灰色,右邊的顏色則降低亮度(往左拉),變成黑色。
使用「圓形」工具,在造型視窗正中央有一個準星符號,這個位置稱為旋轉中心,請把圓畫在準星上。
點擊「角色窗格」中的「方向」,將旋轉方式改成「不旋轉」。
新增反射板角色
跟鋼珠一樣,反射板我們也自己畫。
將「填滿」和「外框」都改成黑色,降低亮度即可。
使用「方形」工具畫出一個扁平的矩形。
請使用「選取」工具(斜箭頭),把反射板的中心點對齊準星。
反射板的四周有 8 個控制點,請利用控制點調整高度,讓反射板高度約為紅色底線的 2 倍。
在舞台窗格中,把反射板拖曳到底線上以便測量高度。
新增磚塊角色
「新增角色」,然後點擊「繪畫」。
將「填滿」改成鮮豔的顏色,彩度和亮度都拉到最右邊。
將「外框」改成「透明」,寬度會自動變成 0。
使用「方形」工具畫出矩形。
請使用「選取」工具(斜箭頭),把磚塊的中心點對齊準星。
調整磚塊的大小,並觀察造型的尺寸是否為 48x24。
操控與反彈
發射鋼珠
鋼珠的起始位置是在舞台中央靠下的位置(0,-40),這是因為要把舞台的上半區域預留給磚塊。
遊戲開始時要向下發射鋼珠,為了增加樂趣,所以發射角度不要固定,使用隨機取數範圍是向下(180度)的左右各 20 度,也就是 160度 ~ 200度。
等候 1 秒讓玩家有時間準備,然後顯示鋼珠,因為切換關卡時會隱藏鋼珠,所以在這裡要讓鋼珠顯示出來。
然後是大家很熟悉的動畫程式。
按綠旗子執行程式,檢查程式運作是否正常,每次按綠旗子是否鋼珠發射的角度都不同呢?
控制反射板
我們打算使用鍵盤來控制反射板的移動,新增兩個變數「控制」和「移動」,兩個都設定為「僅適用當前角色」(私有變數)。
變數「控制」用來記錄目前的按鍵狀態,當按下「向右鍵」時,1 - 0 = 1,按下「向左鍵」時,0 - 1 = -1,其他狀況為 0 - 0 = 0 或 1 - 1 = 0。
根據變數「控制」的按鍵狀態進行「移動」距離的修改。持續按下「向右鍵」或「向左鍵」會加速,放開按鍵則會減速 80%。
將反射板的 X 座標加上剛剛計算出來的「移動」距離。
完整程式如右。
遊戲「全域變數」
按照遊戲規則的規劃,鋼珠速度是可變的,必須使用變數。
我們還要計算得分,需要一個變數記錄分數。
由於每一個關卡磚塊數量不一樣多,所有我們需要把它記錄到變數裡,這樣才能判斷是否已經過關。
為了紀錄鋼珠打中磚塊的位置,需要一個變數「撞擊方向」。
建立好 4 個變數後,將分數顯示出來,請把舞台左上角的分數移到舞台正上方。
在舞台上撰寫程式將分數歸零。
修改鋼珠的動畫程式,將「移動 10 點」改成「移動 速度 點」
計算反彈角度
為了簡化計算,我們假設鋼珠的反彈跟光線一樣屬於完全反射,那麼反射角度會等於入射角度
假設鋼珠的方向是 135 度,計算入射角為 180 - 135 = 45,因此反射角等於 45 度
使用「運算」積木來表示,就是「 180 - 鋼珠的方向」
如遊戲規則規劃反射板兩端彈性較差,我們以鋼珠敲擊反射板的位置偏離反射板中心點的間距,當成偏移角度。
使用「運算」積木表示為「 鋼珠的 x 座標 - (反射板的) x 座標」
把兩次運算結果加起來,就是「反彈角度」
反彈程式
建立一個新積木「移動鋼珠」。
把鋼珠程式中「重複無限次」裡面的「移動速度點」和「碰到邊緣就反彈」拿出來(不要丟掉)替換成「移動鋼珠」。
當鋼珠「碰到反射板」時,計算反彈角度並播放音效。
將剛剛拿出來的程式,接在「移動鋼珠」最下面,如右圖。
防止鋼珠卡在反射板上
當鋼珠移動速度過快時,有時候會直接卡進反射板中,無法正常彈出來,為了避免這種情況發生,我們加入一段處理程式。
右邊的程式會將鋼珠持續退回原來位置,一直到沒有碰到反射板為止,這個位置剛好貼著反射板的上邊界。
將右側的程式碼插入到上面程式的「如果」積木中,放在「面朝」積木的上面。
變更音效
切換到「音效」分頁
按左側窗格最下面的「新增音效」圓形按鈕,進入「範例音效」畫面
滑鼠移動到音效右上角的「Play」按鈕會聽到聲音,以這個方式挑選想要的範例音效
挑選好之後,不要忘記修改「播放音效」積木喔!
鋼珠到目前為止的完整程式如下:
勝負判斷
按綠旗子測試程式,練習反射板的操作技巧,應該會發現鋼珠碰到紅線時不會結束遊戲。
在鋼珠的程式中,加入碰撞偵測積木「碰到顏色 紅色」。
「廣播訊息」遊戲結束,是為了將來要顯示挑戰失敗的動畫,動畫程式以後再寫。
將寫好的程式放入主程式(綠旗子)「重複無限次」積木中,放在「移動鋼珠」積木下面。
測試鋼珠碰到紅線後,鋼珠會不會停止移動。
本體與分身
分身是本體的複製版本,跟直接複製角色不一樣的地方有三個:
分身可以跟本體共用造型和音效,而不需要反覆載入相同的造型和音效檔,所以可以節省記憶體使用量。如果直接複製角色,則複製的越多越浪費記憶體。
分身可以跟本體執行不一樣的程式,也就是設計程式時,可以同時寫兩份程式碼,一份給本體執行,一份給所有的分身執行。如果是直接複製角色,則必須針對不同角色編寫不同程式。
分身只在程式執行期間存在,當結束所有程式時,會自動被註銷。複製的角色則會永遠存在,除非手動刪除。
為了在分身與本體之間分配程式碼,請使用「當分身產生時」積木,把程式碼指派給分身執行(本體不會執行這一段程式)。要給本體執行的程式,請使用「當綠旗子被點擊」積木(分身將不會執行這一段程式)。如果使用「當收到訊息...」積木,則無論本體或分身都會執行該程式。
「分身刪除」積木的作用是將自已刪除,所以必須分配給分身執行才會有效果。如果以後還會用到這個分身,可以直接使用「隱藏」積木,而不需要刪除,等到要用到時再「顯示」就可以了。如果確定不會再用到它,則可以在遊戲結束之前直接刪除,以便進一步減少記憶體的使用量。
佈置關卡
Scratch 舞台大小為 480 * 360,下半個螢幕用來發射鋼珠和控制反射板,磚塊放置於螢幕上半部,也就是說有 480 * 180 的空間可以佈置關卡。由於磚塊的大小是 48 * 24,可以佈置一列 10 個磚塊共七列,合計 70 個磚塊,如下圖:
為了方便排列關卡,我們需要建立兩個變數「行」、「列」,這兩個變數都是「私有變數」。
放置磚塊
建立一個新積木「放置磚塊」,添加輸入方塊「type」代表磚塊的造型編號(目前只有一個造型)。
為了加快執行速度,將「執行完畢再更新畫面」打勾。
由於磚塊的大小是 48x24,所以首先要把變數「行」「列」分別乘以 48 和 24,換算成實際的大小。
磚塊從最左邊往右擺放,最左邊的位置 X 座標是 -240,減掉磚塊中心點的位置 48 / 2 = 24,所以是 -264。
磚塊由下往上擺放,最下面的位置 Y 座標是 0,減掉磚塊中心點的位置 24 / 2 = 12,所以是 -12。
將磚塊切換到指定造型,稍後將會新增兩種不同造型。
建立分身。
放置多個磚塊
建立一個新積木「放置(num)個磚塊(type)」。
為了加快執行速度,將「執行完畢再更新畫面」打勾。
根據輸入方塊 num 變數重複執行「放置磚塊」函式積木。
每放置一個方塊就往右邊移動一行,也就是把變數「行」加 1,當 「行」大於 10 的時候,該行已經擺滿,則必須上移一列,也就是把變數「列」加 1,同時把「行」還原為 1。
建立一個新積木「放置(num)個空格」,為了加快執行速度,將「執行完畢再更新畫面」打勾。
複製剛才的程式積木,但是將「放置磚塊」函式積木移除。
排列關卡
磚塊的本體並不打算在關卡中使用,所以先「隱藏」起來。
設定本關卡的磚塊總數為 20,鋼珠的移動速度為 4。
從第一行第一列開始排列磚塊,總共要排 20 個磚頭。
按綠旗子執行程式,檢查磚塊分身是否有出現在正確的位置。
磚塊的分身程式
磚塊分身製作完成時,先把分身「顯示」出來。
然後重複檢查是否有碰到鋼珠,如果有碰到鋼珠就要將變數「磚塊數量」減 1,並將變數「分數」加 10 分。
播放音效,然後將分身刪除。
被鋼珠擊中的音效
點擊積木類別窗格最下面的「擴充功能」按鈕
出現「選擇擴充功能」畫面後,點選左上角的「音樂」
將「音樂」分類中的「演奏節拍」積木拉出來,並選取自己想要的「節奏樂器」,點擊該積木就可以聽聽看聲音適不適合。
我們接下來會設計三種不同的磚塊,包含:原來的木磚、石磚和鐵磚。這三種磚塊要配上不同的音效。
執行程式,檢查是否已經可以敲掉磚塊。(擊中磚塊時鋼珠並不會反彈,這個問題在下一小節處理)
多方向的反彈判斷
鋼珠敲中磚塊時的位置變化有 8 種可能,如右圖。
其中 2 打中磚塊上緣和 6 打中磚塊下緣,其反彈方式是一樣的,不是往右就是往左回彈。反彈角度計算公式為「 180 - 鋼珠的方向」。
4 打中磚塊右側和 8 打中磚塊左側, 反彈方式一樣,都是往上或往下回彈。計算公式為「 0 - 鋼珠的方向」。因為在 Scratch 裡面左半邊的角度為「負數」。
若是打中四個頂角,則是朝鋼珠原本的方向回彈,即「 180 + 鋼珠的方向」。
建立碰撞偵測遮罩
點選鋼珠角色,打開造型分頁。
首先將原本的造型改名為「ball」,然後複製三次造型。
第二個造型用來偵測上下,畫一個小的實心圓放在鋼珠正中間上緣的位置,注意不要凸出鋼珠外面,複製一份小圓放在下方,不可以凸出到鋼珠外面,然後再將鋼珠造型刪除。
第三個造型用來偵測左右,方法與前面雷同。
第四個造型則用來偵測四個斜角。
將造型分別改名為「ns」(北南)、「ew」(東西)、「conor」
碰撞偵測
點選鋼珠角色,打開程式分頁。
建立一個新積木「檢查碰撞」,勾選下方的「執行完畢再更新畫面」以避免切換遮罩造型時顯示在舞台上。
先切換到 ns 遮罩,檢查是否碰到磚塊,若是則讓鋼珠方向套用上下反彈公式。
將剛剛寫好的程式複製兩份,修改第一份程式,將造型 ns 改成造型 ew,計算公式修改為左右反彈。
修改第二份程式,將造型 ns 改成造型 conor,計算公式修改為斜角反彈。
這三段程式的組合方式如最右圖。
將剛剛寫好的「檢查碰撞」積木加入到鋼珠的主程式中,放置在「移動鋼珠」積木的下面。
執行程式測試擊中磚塊時鋼珠會不會正常反彈。
關卡控制
為了讓遊戲擁有超過一個以上的關卡,需要修改以下程式:
在舞台主程式中,在變數「分數」歸零的積木下面,加入「劇情介紹」的廣播積木,劇情介紹動畫程式先不寫。
在舞台主程式中加入 2 個「廣播訊息並等待」積木,訊息分別為「第一關」和「遊戲開始」。
配合舞台主程式的修改,將「磚塊」和「鋼珠」程式也修改如下:
將磚塊主程式中的「變數磚塊數量設為 20」積木往下拉,加上「當接收訊息 第一關」積木,變成兩支程式。
把鋼珠的主程式「當綠旗子被點擊」積木,換成「當接收訊息 遊戲開始」積木。
在鋼珠的主程式中加入過關判斷,把原本的「重複無限次」積木改為「重複直到磚塊數量等於0」積木。
在鋼珠的主程式中加入過關時的處理,先隱藏鋼珠,然後廣播訊息「過關」,以便將來顯示過關音效和動畫。
5. 點選反射板角色,打開程式分頁。
6. 將主程式分成兩支,如右圖。
7. 將迴圈「重複無限次」改為「重複直到磚塊數量等於0」
以上遊戲修改完成後,程式流程改變為:
按下綠旗子按鈕執行程式,將會啟動舞台的主程式
舞台主程式把變數「分數」歸零,然後廣播訊息「劇情介紹」,這時候應該出現字幕動畫
舞台主程式廣播訊息「第一關」時,將變數「磚塊數量」設定為第一關的磚塊總數,然後
磚塊程式收到訊息「第一關」後,將關卡佈置完成
舞台主程式在關卡佈置完成後,廣播訊息「遊戲開始」
當鋼珠主程式收到「遊戲開始」訊息,玩家就可以開時玩遊戲
鋼珠主程式會檢查鋼珠是否壓到紅線,如果壓到紅線會廣播訊息「遊戲結束」,這時候應該出現 Game Over 字幕動畫
鋼珠主程式會檢查磚塊是否已經打完,如果玩家已經過關則隱藏鋼珠並廣播訊息「過關」,這時候應該出現過關字幕動畫
製作第二關和第三關
新增造型
點選磚塊角色,打開造型分頁。
將第一個造型名稱修改為「wood」
將造型複製一份並修改新造型為橘色,命名為「stone」。
再複製一份造型並修改為灰色,名稱修改為「iron」。
修改磚塊程式
切換到程式分頁。找到分身程式中的「如果碰到鋼珠那麼」積木,將中間的所有積木取出來移到旁邊。
拿出「如果...否則」積木,判斷磚塊分身的造型,如果是「stone」則播放不同音效並將造型切換成「wood」。
將原本磚塊的音效和「分身刪除」積木移到「否則」的中間。
再拿出一個「如果...否則」積木,判斷磚塊分身的造型,如果是「iron」則
播放不同音效
檢查是否過關,若是則將分身刪除(如果還沒過關則鐵磚永遠不刪除)
將剛才組合好的積木,塞到「否則」的中間。
將這支完整的程式放回分身程式中,「如果碰到鋼珠」積木的中間。
佈置第二關和第三關
請將三種不同磚塊佈置成第二關和第三關。
可以直接複製第一關的程式再修改。
計算每一個關卡的磚塊數量:
木磚只算一次。
因為石磚要打 2 次才會消失,所以每個石磚都要算 2 次。
鐵磚敲不破,所以不要計算鐵磚的數量。
設定鋼珠移動的速度,速度越快難度越高,請務必測試是否會太難。
如果需要檢視佈置成果是否適當,請修改舞台主程式中的「廣播訊息 第一關」積木,改成自己想觀察的關卡。
修改舞台主程式
在舞台上加入新背景,作為第二關和第三關的佈景。
在廣播「劇情介紹」之前,先把背景設定好。
複製下面兩行程式,並修改為第二關,依此類推。
修改完成後執行程式,檢查打完磚塊後是否能正確進入下一關。
提示與過關訊息製作
新增字幕角色
我們至少需要製作 3 個不同字幕,分別是「劇情」、「獲勝」、「失敗」。
如果故事已經想好了,就開始來製作。
新增角色後,切換到「造型」分頁,使用「文字」工具在造型中新增文字框。
文字顏色可以從「填滿」顏色修改。
文字輸入完畢後,使用「選取」工具,將文字框的中心點(十字)對齊造型的旋轉中心(準星)。
從角色窗格中,將字幕角色設定為不顯示(禁止眼睛圖示)。
新增字幕配樂
Scratch 將時間較長的配樂分類為「循環」
請從其中挑選適合遊戲氣氛的 3 首音效,並新增到字幕角色中
字幕動畫
切換到「程式」分頁撰寫程式如右,「滑行」積木在四年級「動畫故事書」單元已經學過了。
如果動畫想要由下向上移動,起點座標位於舞台下方 Y 座標為 -230,而終點座標位於舞台上方 Y 座標為 230。
如果動畫想要由上向下移動,則應將 Y 座標正負顛倒,起點為 230,終點為 -230。
如果想要製作左右滑行動畫,則 Y 座標設為 0,X 座標設為 300 以及 -300。
請根據字幕的長短控制「滑行」積木的秒數。
遊戲結束動畫展示完畢時,增加一個「停止全部」積木。
開場字幕
將寫好的字幕動畫程式複製一份,改寫成劇情介紹字幕動畫
因為劇情介紹字數較多,因此滑行的秒數要長一些,配樂也要找長一點的音效。
試玩與難度調整
試玩之後,如果覺得遊戲太難過關或是太容易過關,可以怎麼調整呢?
修改鋼珠的速度,範例是使用 5、10,可以自行修改快或慢一點
增加「水泥」和「鋼筋」的數量可以有效提高難度,把這兩種磚塊數量減少就會降低難度
增加時間限制,例如:40 秒內沒有過關遊戲就結束
可以增加鋼珠的生命數,死三次才會結束遊戲
增加鋼珠數量,一次出現多個鋼珠
設計新種類磚塊,更難打或是打中就會掉新的鋼珠下來
萬一鋼珠呈現水平一直線,只能左右來回移動時,怎麼辦?
可以在鋼珠角色中加入角度變化程式,當玩家按下空白鍵時,讓鋼珠稍微向左或向右傾斜。
單元二:立體建模
三維座標系
在幾何學概念中,「點」是不佔有空間的,僅用來表示「位置」,所以是 0D。「線」是點運動的軌跡,除了位置之外還佔有長度空間,稱為 1D。將線連續排列在一起形成「面」,除了在立體空間的位置外,還佔有長、寬兩種空間,也就是 2D,而「體」則是將面疊在一起而有了高度,因此稱為 3D。
三維座標系即三維空間座標系統,使用三個參數來標示三維空間中的每一個點,右圖是常用的直角座標系,分別用 X、Y、Z 代表三維,而 x、y、z 則是點(x,y,z)與原點 O 在三維上面的距離。
利用電腦來表示 3D 物體的方法就是建立 3D 模型,要將 3D 模型顯示在 2D 螢幕上,需要運用「投射」數學對 3D 模型進行演算,稱為「算圖」(render)。
投射數學源於文藝復興時期的畫家「達文西」所發明的「透視法」,是一種把立體三維空間的形象表現在二維平面上的繪畫方法。達文西是一個博學者:在繪畫、音樂、建築、數學、幾何學、解剖學、生理學、動物學、植物學、天文學、氣象學、地質學、地理學、物理學、光學、力學、發明、土木工程等領域都有顯著的成就。
取自維基百科
三視圖
除了「透視法」以外還有另外一種將立體投影成平面的方法,稱為「三視圖」。當我們觀察一個物體時,隨著觀測者位置的不同會有上面、下面、左面、右面、前面、後面共六個角度,將看到的物體輪廓測量繪製出來的圖形稱為「視圖」,由於上、下視圖方向相反但圖形相同,左、右視圖和前、後視圖也是如此,因此可以把六個視圖歸納成兩個兩個一組,上視圖和下視圖合稱「俯視圖」,左視圖和右視圖合稱「側視圖」,前視圖和後視圖合稱「正視圖」,這三種視圖合稱「三視圖」。
下圖取自國家教育研究院「三視圖-從哪裡看?」教師手冊,請仔細觀察圖表,是否有發覺「透視圖」與「三視圖」之間的關係呢?
視錯覺,是指透過幾何排列、視覺成像規律等手段,製作有「視覺欺騙」成分的圖像進行眼球欺騙,引起的視覺上的錯覺,達到藝術或者類似魔術般的效果。當我們觀察立體圖形時,兩隻眼睛的可視範圍合起來大約是 124 度左右,無法同時看到圖形的左右兩側,而人類的大腦會根據有限的視覺訊息去想像和推測不足的部分,因此很容易造成視錯覺,例如:凹面看成凸面、斷裂的圖形看成是連接的......等等。
Blender
是專業的自由及開放原始碼3D電腦圖形軟體,擁有極豐富的高階模組塑造功能,可用於捏塑、建立 3D 模型、材質貼圖、製作 3D 動畫......等等。
在家分作業系統安裝 Blender 軟體示範
在Windows上安裝Blender
在Mac (蘋果電腦) 上安裝 Blender
使用平板怎麼建立模型?
使用平板可以到應用程式商店搜尋「tinkercad」,雖然 tinkercad 功能比較陽春,但要拿來製作雪人模型還是很好用的。有關 tinkercad 的操作示範,請看「四年級下學期浮雕建模」單元。
跟著一起做:3D建模示範操作教學影片~~堆雪人
單元三:文字型程式遊戲
什麼是程式語言?
所謂「程式語言」是指用來向電腦發出指令,讓電腦能因應不同狀況採取適當行動的「人工語言」,與自然演化而來的「自然語言」不同(例如:國語、英語......等)兩者之間的差異除了產生方式不同、使用目的不同之外,主要的差異是:人工語言有嚴格的語法定義,不符合規範的語法將無法解析意義,具有「單義性」;而自然語言則會根據個別使用者允許有語法、意義上的差異,這種特性稱為「多義性」。
最早的程式語言是在電腦發明之前產生的,當時是用來控制提花織布機及自動演奏鋼琴的動作,而在電腦發明之後,專為電腦設計的「電腦程式語言」大量出現,至今已將近有 1000 種,並且每年仍有新的電腦程式語言誕生。隨著電腦科學的發展,無論是提花織布機或自動演奏鋼琴都已經改由電腦直接控制,也因此「程式語言」通常就是指「電腦程式語言」。
自然語言是先用語音來表達語意(程式語言中稱為語義)然後才發明文字,有了文字以後才發展出文法(程式語言中稱為語法)。而程式語言則一開始就先發展語法,透過語法來定義語義。「語法」是說明程式設計語言中,哪些符號或文字的組合方式是正確的,「語義」則是對於程序的解釋。
過去學過的 Scratch 算不算是一種程式語言呢?如果從 Scratch 積木僅有「語義」沒有定義「語法」的特性來判斷,Scratch 並非傳統所說的「程式語言」,之所以沒有語法是為了避免輸入程式時會有「語法錯誤」導致程式無法正常運作,對於不熟悉程式語言的小朋友來說,要檢查出語法錯在哪裡,會是一件痛苦而且耗時的工作,也可能因此導致小朋友喪失學習興趣。
然而 Scratch 積木所堆積出來的程式是可以確實執行的,在「語義」方面是完整可行的,與傳統所說的「程式語言」並沒有不同。因此有些程式語言專家認為 Scratch 是一種「視覺化」程式語言,因為 Scratch 是透過視覺操作介面用滑鼠拖拉來寫程式,而不是用文書處理軟體(例如:記事本)來寫程式。「視覺化」程式語言只是讓小朋友在接觸真正的「程式語言」之前,培養邏輯與運算思維的工具,其最終目標是要讓小朋友熟悉「文字型」程式語言。
CodeCombat
Python 是一種擁有簡潔語法,容易理解的語言,因此非常適合作為「文字型」程式語言入門學習使用。除此之外,Java Script 也是一種適合作為入門學習的程式語言。透過遊戲方式來學習 Python(或 Java Script)是一件輕鬆又有趣的方法,特別是底下推薦的「CodeCombat」遊戲網站。
請點選右圖右上角的圖示,進入 CodeCombat 網站,然後點選「我是學生」,輸入班級代碼(由老師提供)
進入登入畫面後,請點選右下角的「Sign in with Google」按鈕,使用學校提供的學生信箱帳號密碼登入。
打開 gmail 信箱收取 CodeCombat 網站寄給你的「確認信」,並啟用帳號。
看老師示範前面 2 關並講解遊戲玩法,然後自己嘗試闖關,祝你好運囉!