摘"要:本文在可視化編程軟件scratch基礎上,探討通過3d軟件創建模型,轉換可視化編程為具體的程序代碼,以3d游戲引擎完成項目融合,在游戲中提升小學生編程能力的可行性策略。
關鍵詞:家庭教育;可視化編程;3d建模
中圖分類號:G4"文獻標識碼:A""doi:10.19311/j.cnki.16723198.2024.13.078
1"項目教學
隨著信息技術的普及和深入,學生在可視化編程方面的能力獲得了較大的提升。但是,scratch等可視化編程軟件不能成為編程行業主流,也不能進一步提升學生的編程能力。為此,在家庭教育中,針對有興趣和特長的學生,可以設計以godot游戲編程平臺為主導的編程,在保留趣味性的同時,提高學生編碼水平,為以后的學習和工作打下堅實的基礎。
2"算法分析
現假設雞兔放在超市購物車里,上面數有20個頭,下面數有58只腳,問共有多少只雞和兔子。
在scratch中用可視化編程來描述算法,在算法中通常用偽代碼來描述解題過程,這樣方便轉化為具體的編程語言。
在編程語言里,解題通常用判斷和循環來解決,這道題目,可以通過循環計算求得結果,偽代碼如下:
假設有1只雞,則兔子有(20-1)只;從1循環至20;如果雞*2+(20-雞)*4=58,則計算出最終結果;否則繼續循環。
從上面偽代碼可以看出,整個解題思路和可視化編程類似,可以作為編寫程序的過渡。
具體編碼如圖1:首先設置初始值var"chicken=1,設計循環while"chickenlt;=20,實現判斷語句if"(chicken*2+(20-chicken)*4)==58,如果條件成立print(chicken),否則條件不成立chicken+=1。
3"模型創建
模型可以用簡單的3d形狀,如果學生動手能力比較強,同時為了增強趣味性,我們也可以自己創建模型。首先創建超市購物車3d模型,這里介紹3d模型在開源軟件blender中的搭建過程。
3.1"購物車外邊框的創建
在物體模式下,布局選項卡中,選擇添加網格平面,90度旋轉該網格平面,使其平行于正視圖。切換至編輯模式,正視圖視角下,刪除四邊形的一個頂點,移動其他三個頂點分別至外邊框的左上、左下和右下三個位置,并通過擠出命令生成新頂點,沿手推桿生成外輪廓。選中所有頂點,切換至右視圖視角,按E鍵擠出該輪廓移動至購物車另一側外邊框位置,生成對稱的外輪廓。刪除不需要的手推桿位置的邊,只保留需要的點和邊。將以上四邊形轉換為曲線,并且設置倒角為0.03m,此時顯示出購物車的外輪廓,通過倒角命令還可以將棱角加以光滑。這種方式生成的模型布線不夠規則,所以也可以直接用多邊形創建模型。
切換至物體模式,布局選項卡中,選擇添加網格圓環,在彈出的菜單中,設置頂點數為12,半徑為0.01米。選擇網格圓環,正視圖視角下,切換至編輯模式,沿著x軸旋轉90度,拖動至購物車外輪廓右下角。選擇網格圓環所有頂點,左鍵點擊擠出選區,沿著y軸移動選區至購物車外輪廓左下角。接著需要向上生成外輪廓,將剛才的選區沿著x軸旋轉45度,左鍵點擊擠出選區,沿著z軸移動至外輪廓左上角。此時的折角是直的,我們選擇輪廓左下角的一圈頂點,左鍵點擊倒角命令,在彈出的菜單中,設置寬度為0.01米,段數為4,這時的直角就變得圓滑了。回到輪廓左上角,并選擇一圈頂點,沿著x軸旋轉-45度,左鍵點擊擠出選區,沿著y軸移動選區至購物車把手。繼續選擇該選區一圈頂點,沿著z軸旋轉45度,接著旋轉外輪廓右下角一圈頂點,同樣沿著z軸旋轉45度。回到物體模式,選擇整個右輪廓,復制該輪廓沿著x軸移動到左輪廓位置,沿著x軸鏡像該輪廓,這樣我們就創建了外輪廓的左、右兩個部分。將購物車左、右輪廓合并,選擇左、右輪廓的把手部分,依次選擇對應的兩組頂點,右鍵點擊從頂點創建面命令,完成購物車把手部分的橫桿。同理,選擇購物車底框前端的左、右兩部分,依次選擇對應的兩組頂點,右鍵點擊從頂點創建面命令,完成購物車底框橫桿的創建。
3.2"購物車內邊框的創建
切換至物體模式,布局選項卡中,選擇添加柱體網格。沿x軸旋轉90度,分別縮放x軸、y軸和z軸至內邊框上邊緣大小。選擇該柱體網格,添加陣列修改器,適配類型選擇固定數量,并設置數量為4,相對偏移系數x為0,y為-6,z為0,選擇應用該修改器,這樣我們就創建了購物車內邊框的橫梁。用同樣的方式繼續添加柱體網格,分別縮放x軸、y軸和z軸至內邊框右邊緣大小。選擇該柱體網格即內邊框右豎梁,繼續添加陣列修改器,適配類型仍然選擇固定數量,并設置數量為5,相對偏移系數x為0,y為6.2,z為0,然后選擇應用該修改器,這樣我們就創建了購物車內邊框的豎梁。復制內邊框豎梁,切換至右視圖,沿著x軸移動復制的網格至購物車左內邊框位置,這樣購物車的左、右內邊框就創建完成了。合并購物車左、右內邊框,切換回主視圖調整邊框位置。選擇外輪廓,在把手處我們添加2處環切,選擇中間一圈平面點擊擠出命令,然后按法線方向進行縮放,這樣我們可以生成比外邊框厚一些的扶手,再次回到主視圖查看生成的效果。
3.3"購物車車輪的創建
添加圓形多邊形,在正視圖下填充平面,在側視圖下擠壓生成厚度。分別選擇車輪的內外一圈頂點,點擊倒角命令,在彈出的菜單中設置影響范圍為邊,寬度類型為偏移量,寬度為0.05米,段數為4。分別選擇內外最內一圈頂點,點擊縮放命令,在彈出的菜單中設置x軸、y軸和z軸的縮放量為0.25。選擇外側從車輪中心數第2圈頂點,點擊縮放命令,在彈出的菜單中設置x軸、y軸和z軸的縮放量為0.5,同時沿著x軸方向移動0.001米。接著選擇外側從車輪中心數第3圈頂點,點擊縮放命令,在彈出的菜單中設置x軸、y軸和z軸的縮放量為0.75,同第2圈頂點一樣也沿著x軸方向移動0.001米。這樣車輪的基本形狀就創建好了。創建四邊形網格,生成幾何節點,添加實例化于點上節點,組輸入中的幾何數據連接實例化于點上的輸入頂點,實例化于點上的輸出項實例,連接到組輸出中的幾何數據。添加物體信息幾何節點,物體選擇車輪,物體信息中的輸出項幾何數據連接到實例化于點上的輸入項實例。調整四邊形位置,完成購物車輪子的創建。切換到著色編輯器,在原理化PSDF節點中,給購物車各個部件設置基礎顏色。
4"題目拓展
為了增強趣味性,我們把購物車加載到Godot中,制作成簡單的游戲。
首先,為了增強程序的可讀性,我們把根目錄中的默認的Node3D重命名為根節點。接下來右鍵單擊該節點,并選擇添加子節點,也可以選用快捷鍵Ctrl+A。在彈出的對話框中搜索角色身體3D節點,這是一個Godot內部的節點,我們在編碼過程中可以通過它的屬性和函數控制這個3D節點。我們將之前在blender中制作的購物車導出為glb格式,glb是一種開放的3d模型存儲格式,方便在不同的3d軟件里傳輸。將該文件放在Godot項目文件夾中,Godot會自動加載該模型。我們左鍵拖動該模型并放置在剛才建立的角色身體3D節點上,Godot主視圖界面里就會出現我們導入的購物車模型。Godot和Blender的兼容性非常好,現在主流3d軟件通常選用PBR(Physically"Base"Rendering,基于物理渲染)渲染引擎,我們可以看到在Blender設置的顏色和材質屬性,都完整的保留在Godot里。如果希望描述更多的細節,也可以采用貼圖的方式。
其次,為了模擬現實世界里物體的運動,需要給購物車加上碰撞器。購物車雖然結構并不復雜,但是在進行實時的游戲運算過程中,頂點過多會耗費大量的時間,所以Godot里對物體的形狀進行了化簡。我們右鍵單擊角色身體3D節點,在彈出的對話框中搜索碰撞形狀3D節點,點擊確定添加該3D節點。接下來我們需要選擇適合購物車模型的形狀。常用的3D形狀有球體形狀3D、箱體形狀3D、膠囊形狀3D和圓柱體形狀3D。如果覺得這些設置不夠精細也可以選擇凸面多邊形形狀3D或者凹面多邊形形狀3D,同時在角色身體3D模型上加以適配。
最后,我們給項目加上迷宮地圖。地圖的創建可以在blender中,也可以直接在Godot中創建。在blender中創建的地圖導入到Godot中同樣需要添加碰撞器;在Godot中可以通過GridMap(網格地圖)直接創建迷宮地圖。在文件系統中新建文件夾并命名為地板磚,右鍵該文件夾新建場景并命名為brick,右鍵brick節點在彈出的對話框中搜索網格實例并創建。我們可以在Godot右邊的檢查器中設置brick的類型,這里我們選擇箱體網格,并設置喜歡的顏色和箱體的長、寬、高。與購物車模型的碰撞設置不同,我們左鍵單擊brick網格,并選擇創建三角網格靜態實體,就可以給地板磚添加碰撞形狀。可以設置不同顏色和形狀的brick網格,分別代表不同的區域和墻體。選擇場景導出為網格庫,選擇樹節點類型保存brick模塊。回到主場景在根節點下添加網格地圖,將我們保存的brick模塊添加到網格地圖的網格庫中,這時就可以在主視圖中繪制地圖了。此外,如果在blender中給購物車創建了動畫,Godot中也可以引用這些動畫。Godot游戲開發平臺要比Scratch復雜,其中涉及到建模、動畫、渲染和編程等知識,但是其趣味性和擴展性也更強,家長可以啟發孩子一步一步來解決實際問題。
5"總結
隨著信息時代的發展,社會對各行各業的從業者信息化水平要求越來越高,單純的可視化編程已不能滿足社會對未來人才的需求。本文以Godot為例,介紹了在不失趣味性的同時,讓學生進一步學習編程的方法,可以作為有編程興趣或特長學生的家長作為參考。
參考文獻
[1]秦玉學,孫在麗.新時代我國家庭教育中家長角色的價值重塑[J].中國成人教育,2022.
[2]于冬青.家庭教育知識體系構建的邏輯與實踐進路[J].東北師大學報(哲學社會科學版),2023.
[3]劉曄.基于Scratch平臺的小學信息技術課堂教學模式探究[J].中國新通信,2020.
[4]李劍雄.Scratch編程走進小學信息技術課堂[J].科學咨詢(科技·管理),2019.
[5]徐英.多元融通,打造健康家校“共育場”[J].教育界,2022.
[6]滕倩,張偉.把握“雙減”契機,構建家校協同共育[J].中小學班主任,2022.