Cocos 3D功能初探學習筆記 光照

2021-08-15 09:51:14 字數 1990 閱讀 4094

原創 2023年10月06日 20:30:22

3d遊戲中光照對於遊戲效果占有舉足輕重的作用,也是與2d遊戲的重要區別。cocos引擎也提供了完善的光效效果支援。

光照就是光源照到物體上的效果,cocos引擎支援四種光源,繼承自node類,也就是說可以作為子節點防止到場景裡,四種光源的基類是baselight,它是所有燈光的基類,cocos2d-x支援4種燈光,環境光、方向光、點光源和聚光燈。每個燈光都有乙個燈光標記lightflag, 只有當物體的燈光掩碼lightmask與(1<

環境光(ambientlight)是不來自任何特定方向的光,在整個場景中經典光照模型把它當作乙個常量,組成乙個合適的第一近似值來縮放場景中的光照部分。計算這個光照並不涉及任何關於光源方向或者眼睛觀察場景的方向,它也可以當成積累每個光源的基礎貢獻值或者當成預先計算的單一全域性效果。

使用方法

_ambientlight = ambientlight::create(color3b(200, 200, 200));

_ambientlight->retain();

_ambientlight->setenabled(true);

addchild(_ambientlight);

_ambientlight->setcameramask(2);

引數就是光的顏色,作為子節點加入到場景中就可以了

方向光(directionlight)是乙個無限遠的光源,他可以與我們表面上所有的點近似有相同的方向。這樣的假設簡化了數**算,因此方向光的實現**很簡單,比其他光源的執行速度更快,方向光的典型例子是太陽光。

使用方法

_directionallight = directionlight::create(vec3(-1.0f, -1.0f, 0.0f), color3b(200, 200, 200));

_directionallight->retain();

_directionallight->setenabled(false);

addchild(_directionallight);

_directionallight->setcameramask(2);

第乙個引數是方向,方向光的方向就是燈光的區域性座標系的-z方向,第二個引數是顏色。

點光源(pointlight)是模擬靠近場景或者在場景中的光源,就像電燈或者路燈。點光源和方向光有兩個區別,一是點光源表面的光源方向都是不同的,二是表面接收的光源會隨著離光源的距離越遠而變少。

使用方法

_pointlight = pointlight::create(vec3(0.0f, 0.0f, 0.0f), color3b(200, 200, 200), 10000.0f);

_pointlight->retain();

_pointlight->setenabled(false);

addchild(_pointlight);

_pointlight->setcameramask(2);

第乙個引數是光源位置,第二個是顏色

聚光燈(spotlight)是乙個強大的光束來照亮乙個明確的區域,照射區域可以進一步通過在光源的側面使用擋板或者窗板的形狀來設定。

使用方法

_spotlight = spotlight::create(vec3(-1.0f, -1.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f), color3b(200, 200, 200), 0.0, 0.5, 10000.0f);

_spotlight->retain();

_spotlight->setenabled(false);

addchild(_spotlight);

_spotlight->setcameramask(2);

引數分別是方向、位置、顏色、內徑,外徑和衰減範圍

需要說明的是sprite3d有乙個setlightmask方法,用於設定哪個光照對它起作用,-1是所有光照都對它起作用(預設值),剩下的值就可以根據光源設定的setlightflag的值來選擇特定的光源(light0-light15)

cocos 3D座標變換

cocos 3d座標變換 世界空間 攝像機空間 螢幕點 param pos 世界座標 param camera 攝像機 return 螢幕座標 function toolutils.camerapos2screenpos pos,camera local screensize cc.director...

cocos2d學習筆記

粒子系統,使用系統自己的粒子系統的書寫方法 if cclayer init return false cctexture2d fire cctexturecache sharedtexturecache addimage fire.png ccparticlesystem firepartical ...

cocos2d 學習筆記

ccdirector類,簡稱director 導演 是cocos2d遊戲引擎的核心。director是乙個單例 它儲存著 cocos2d的全域性配置設定,同時管理著cocos2d的場景。director的主要用處如下 1.訪問和改變場景 2.訪問cocos2d的配置細節 3.訪問檢視 opengl,...