2021年小結(jié)
整理2021年發(fā)過的文章
前言
這是白玉無冰第三篇年度合集文章整理。
2020年一共發(fā)布了47篇原創(chuàng)內(nèi)容,2021年一共發(fā)布了16篇原創(chuàng)內(nèi)容,同比負增長65.96%。總得來說,從每1.1周一更進步到每3.3周一更。
爭取在2022年有新的進步!
開始
按時間順序梳理,隨白玉無冰一起遨游2021吧!
四元數(shù)與3D旋轉(zhuǎn)實例
用幾個實用的例子去理解四元數(shù)。
當時發(fā)這篇文章的時候,四元數(shù)的單詞拼錯了,正確的應該是 Quaternion 。
有時候,白玉無冰也會忘了怎么使用四元數(shù),經(jīng)常翻這篇文章回憶。
其中,繞指定軸旋轉(zhuǎn)四元數(shù)要特別注意是本地空間(局部坐標)的軸,還是世界空間下軸。
/**
??*?@en?Sets?the?out?quaternion?to?represent?a?radian?rotation?around?a?given?rotation?axis?in?world?space
??*?@zh?繞世界空間下指定軸旋轉(zhuǎn)四元數(shù)
??*?@param?axis?axis?of?rotation,?normalized?by?default
??*?@param?rad?radius?of?rotation
??*/
public?static?rotateAroundextends?IQuatLike,?VecLike?extends?IVec3Like>?(out:?Out,?rot:?Out,?axis:?VecLike,?rad:?number)?{
????//?get?inv-axis?(local?to?rot)
????Quat.invert(qt_1,?rot);
????Vec3.transformQuat(v3_1,?axis,?qt_1);
????//?rotate?by?inv-axis
????Quat.fromAxisAngle(qt_1,?v3_1,?rad);
????Quat.multiply(out,?rot,?qt_1);
????return?out;
}
/**
??*?@en?Sets?the?out?quaternion?to?represent?a?radian?rotation?around?a?given?rotation?axis?in?local?space
??*?@zh?繞本地空間下指定軸旋轉(zhuǎn)四元數(shù)
??*?@param?axis?axis?of?rotation
??*?@param?rad?radius?of?rotation
??*/
public?static?rotateAroundLocalextends?IQuatLike,?VecLike?extends?IVec3Like>?(out:?Out,?rot:?Out,?axis:?VecLike,?rad:?number)?{
????Quat.fromAxisAngle(qt_1,?axis,?rad);
????Quat.multiply(out,?rot,?qt_1);
????return?out;
}
基礎(chǔ)光照模型
這是一篇記錄最基礎(chǔ)的光照模型(馮氏光照模型(Phong Lighting Model)的筆記。基礎(chǔ)光照模型可分為三項去考慮
環(huán)境( Ambient) [常數(shù),全局環(huán)境光]漫反射( Diffuse) [入射角與法向量]鏡面高光( Specular) [入射角,觀察點,指數(shù)]

2D 素材 3D 效果
這篇文章非常詳細地記錄了如何巧妙的運用Quad (四方形) ,用2D素材表現(xiàn)出3d場景效果。

標志板 Billboard
講述了布告板的含義以及如何改造代碼,在 Cocos Creator 3.0 中實現(xiàn)。

入侵式的日志大法
講述了使用裝飾器實現(xiàn)快速打印日志。

不過當時寫的有點bug,詳見該文的評論區(qū)~
彈性跟隨相機
參考《游戲編程算法與技巧》實現(xiàn)一個簡易的相機跟隨效果。

豎直文本
一個簡易的豎直字體組件(原本系統(tǒng)字組件Label的mini版本) :
系統(tǒng)字體 空格,斜體,粗體 字體大小、行高

折紙效果
玩轉(zhuǎn)向量與Assembler實現(xiàn)折紙效果。

轉(zhuǎn)向行為(steering behaviors)
參考《游戲人工智能編程案例精粹》 實現(xiàn)簡易的AI智能體。

水排序效果
利用數(shù)學公式模擬杯子傾斜中的水面效果。

各路大神在評論區(qū)給出了更多的思路。

3D折紙
總體思路,細分化網(wǎng)格,旋轉(zhuǎn)網(wǎng)格點。

抄一個 Shader 到 Cocos Creator
保姆級別的教程,從頭開始抄一個簡單的shader!

MatCap && Cocos Creator Shader
在某些層面能替代PBR的次世代渲染方案。

現(xiàn)在已經(jīng)忘記是從哪看到這個詞了,當時翻了一些資料,記錄了一些筆記。作為課外閱讀,拓寬思維。
2D 圖像展示虛擬 3D 的效果
Fake3d && Depth Map && Cocos Creator Shader
生成深度圖與巧用深度圖表現(xiàn)出3d動態(tài)的效果。

Canvas.toDataURL 一種替代方案
記錄遇到的截圖問題,并給出一個解決方案。

寫了一個在線位圖字體制作工具!BitmapFont!
簡單易用,跨平臺,20KB!
為何要重新寫一個輪子呢?
Glyph Designer(Mac) 與 BMFont (Windows) 功能完善,但是有平臺限制。個人不習慣其操作 Cocos Store中也有許多優(yōu)秀的 BMFont 插件,但是依賴Cocos Creator,可能會有對應版本限制。
關(guān)于泰勒公式展開
剛好看書看到泰勒公式展開,白玉無冰重新推導了一遍。
泰勒近似定理: 若在 光滑,則在所有次數(shù)為或更低的多項式中,當 在 附近時,最近似于 的是
泰勒定理: 關(guān)于的N階余項 ,其中c是介于x與a的一個數(shù)。于是可以寫成
主要是大學數(shù)學沒學好,又重新?lián)炱饋砜纯础?/p>
編輯器 Regenerate Points 實現(xiàn)解析!
論壇里遇到挺多人問到這個按鈕用代碼是怎么實現(xiàn)的,把研究成果分享給大家。

這個問題其實想了挺久,時間跨度也挺大。無意中在 Cocos2d-x 中看到了一個類似邏輯,才想到其中的邏輯。

也少不了神秘代碼,幫助白玉無冰更好地去理解其中的原理。
3D數(shù)學基礎(chǔ)
這是白玉無冰開的新坑。重讀《3D數(shù)學基礎(chǔ):圖形與游戲開發(fā)》(第一版),并結(jié)合Cocos Creator 引擎及其他相關(guān)書籍,整理記錄一些筆記。

2021年度已更新兩篇,2022年再接再厲!
后語
不聞不若聞之,聞之不若見之,見之不若知之,知之不若行之。
感謝大家一如既往的支持!
往年總結(jié)
“點贊“ ”在看”?鼓勵一下
▼
