2022-11-21 20:29:03|已瀏覽:1270次
怎樣用scratch實現3d?相信大家應該都接觸過3D游戲和3D動畫,那些栩栩如生的畫面,其實它們并不是照片,而是通過編程讓計算機實時畫(計算)出來的。下面就來說說怎樣用scratch實現3d,大家千萬別錯過。
怎樣用scratch實現3d
基本思路
首先必須明確,3D這種東西不論那個平臺的實現(已有的3D引擎不算,我指自己編寫一個新的3D引擎)都是需要一定的數學基礎的。如果你沒有過多的去研究數學的話,我建議初二(含初二)以下的吧友不要闖3D領域,你會覺得無從下手。對于3D的研究最適合高中的吧友們,這時候不僅可以增長編程水平,而且對你的高中數學的學習也有極大的幫助。
對于3D的實現,最重要的是思路,公式及圖像的形成原理大家都懂,我就不普及這種基礎知識了。實現的思路有很多,這篇文章我會給你們提供我實現3D時使用的思路,并不會教你們那里怎么做哪里怎么做(這樣我不如直接放源碼出來),只是給你們一個可行的探索方向。
接著我們來看下一個3D實現的基礎思路,我的這個思路很像計算機成像的思路:
用戶腳本-->運算-->成像;
是不是很類似于計算機成像;
二進制欲顯示圖像-->GPU處理-->顯示器發光.
沒錯,就是這樣的。也就是這是我們3D成像主攻的3大塊:用戶腳本、運算、成像。我看過我們吧友的一些3D實現方法,他們都犯了一個大錯:將這3大塊揉和在了一起。這是大錯特錯的,這三大塊應該是可以分別從你的腳本中獨立出來的(也就是3個角色)。 這樣有利于對腳本的維護,學過高級語言的吧友們就知道了,這樣“塊”狀的腳本是特別利于開發的。
對于這3大塊的開發順序應該是先開發運算、再成像、最后用戶腳本。為何這么說,拿計算機成像來看,目前的顯示器只支持GPU輸出的圖像,所以你得先研發GPU,然后GPU研發完了顯示器就順理成章了,接著在于CPU配對接受二進制,不然的話先給你二進制顯示不出來有何意義?對于3D實現同理。如果你直接開發成像你會發現你在不知不覺中也開發了運算,然而這樣開發出來的運算是和成像揉在一起的,違反了我們的開發原則。
第一階段
我們開發的第一階段運算是最難啃的,這個階段的開發猶如混水摸魚。你并不知道你的運算結果是什么,你看不到圖像,只知道運算而得到的數字。這要求對各類函數的確切掌握。那我們如何快速進階呢?這個就很像矢量圖了,大家可以在此處參考矢量圖的實現。那我們要得到些什么數字?首先對于3D我們肯定得拋棄Scratch原有的二維坐標系統(xy),要自行再開發一個三位坐標系統(xyz),這個系統里要有長度單位、以及三維基本的三個軸。你3D里的每一個實體,都需要一個確切的坐標以及長寬高。這是第一步。第二步,你要確定一個視界與被觀察實體的相對位置及相對距離,注意實體的坐標是固定的,但是視界不是固定的,所以我們需要一個實時相對位置與相對距離算法,通過這個算法得知一些數據(至于是什么數據,就看你數學學怎么樣了)以測算角度來成像。
例如p1(作圖抽象,請自行想象)里的正方體是實體,長方體是你的可視范圍,那么紅線延長出去的就是視界。接下來就要介入成像了。
第二階段
在成像方面,我比較推崇位圖式與矢量式結合的思路。矢量式描繪實體邊框,位圖式給一個面填色。矢量方面并不難,你只要運算出了關鍵數據,一根線(剛開始不要介入曲線)的長度、大小、位置、角度自然都是可以通過公式測算的出來的。假設p2(作圖抽象,請自行想象)是我們看到的圖像,那么我們需要確定圖上幾個關鍵性的紅點把他們連起來,如何確定這些紅點可以參考紅線(我稱之基準線),確定這些在成像時沒有基準線就是運算要做的,這些基準線必須從視界的一個角出發其終點就是我們要的關鍵點。成像難在位圖式(建議大家不要馬上研究位圖式這一塊),你需要研究在Scratch里實現MS-Paint里油漆桶的方式,研究出了這個,也就沒什么難的了。但是實現個看似簡單的油漆桶并不簡單。
第三階段
啃完了兩塊大難關,接著用戶腳本的研究自然就特別簡單了。我們只要自定義函數后提交到運算創建實體,然后給成像模塊提供運算結果成像就完成了。
注:尊重原創文章,轉載請注明出處和鏈接 http://www.hebeijilong.cn/news-id-70034.html 違者必究!部分文章來源于網絡由培訓無憂網編輯部人員整理發布,內容真實性請自行核實或聯系我們,了解更多相關資訊請關注少兒編程頻道查看更多,了解相關專業課程信息您可在線咨詢也可免費申請試課。關注官方微信了解更多:150 3333 6050
姓名:
手機:
地區: