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