Light
조명은 게임의 분위기를 장식하기 위해서 굉장히 중요합니다.
Cocos2d-x는 네가지 조명기술을 지원합니다.
각기 다른 조명기술을 사용하여 여러 조명효과를 얻을수 있습니다.
AmbientLight
환경광이라고 하는 앰비언트 조명은 씬에 있는 모든 내용에 균일한 조명을 입힙니다.
일반적인 사무실 환경에서 조명을 시뮬레이션하는 방법으로이 방법을 사용할 수 있습니다.
코드:
C++
auto light = AmbientLight::create (Color3B::RED);
addChild(light);
효과:
DirectionLight
DirectionLight는 특정방향에서 평행한 빛입니다.
모든 광선이 평행하기 때문에 빛의 방향은 장면의 각 객체마다 일관되므로 객체와 광원의 위치가 어떻게 유지되는지는 중요하지 않습니다.
Direction Light 의 가장 좋은 예는 태양광입니다.
코드:
C++
auto light = DirectionLight::create(Vec3(-1.0f, -1.0f, 0.0f), Color3B::RED);
addChild(light);
효과:
Point Light
PointLight는 하나의 점에서 모든공간으로 빛을 쏩니다.
광원에 가까울수록 조명의 세기는 더욱 세지고 멀어질수록 조명의 세기는 약해집니다.
Point Light의 예로는 전구가 있습니다.
코드:
C++
auto light = PointLight::create(Vec3(0.0f, 0.0f, 0.0f), Color3B::RED, 10000.0f);
addChild(light);
효과:
Spot Light
스포트 라이트는 어떤 점에서 모든방향으로 빛을 쏘는게 아닌,한쪽의 방향으로만 빛을 발사합니다.
쏘는방향의 정의한 반경내의 물체만 조명을 받습니다.
Point Light의 예는 손전등입니다.
코드:
C++
auto spotLight = SpotLight::create(Vec3(-1.0f, -1.0f, 0.0f), Vec3(0.0f, 0.0f, 0.0f),
Color3B::RED, 0.0, 0.5, 10000.0f) ;
addChild(spotLight);
효과:
조명 차단
만약 당신의 씬에 여러개의 조명을 설정하였는데 어떤 노드개체는 그중에 하나의 조명만 적용시키고 싶다면 setLightFlag(LightFlag) 메서드를 사용하여 컨트롤할수 있습니다.
주의해야 할점은 여러 조명효과도 한번의 렌더링으로 완성됩니다.
모바일 플랫폼의 성능문제로 여러개의 조명을 사용하는건 좋지않습니다.
디폴트 조명의 최대치는 하나가 좋습니다.
만약 여러 조명을 키고 싶다면 info.plist에 아래의 설정을 해주십시오.
Xml
<key> cocos2d.x.3d.max_dir_light_in_shader </key>
<integer> 1 </integer>
<key> cocos2d.x.3d.max_point_light_in_shader </key>
<integer> 1 </integer>
<key> cocos2d.x.3d.max_spot_light_in_shader </key>
<integer> 1 </integer>
출처: <http://cocos2d-x.org/docs/cocos2d-x/zh/3d/lighting.html>
'Cocos2d-x v3.17 > 고급 기능' 카테고리의 다른 글
[Cocos2d-x 고급기능]3D환경에서 자주 사용하는 툴 (2) | 2018.08.11 |
---|---|
[Cocos2d-x 고급기능]지형 Terrain (0) | 2018.08.11 |
[Cocos2d-x 고급기능]Skybox (0) | 2018.08.11 |
[Cocos2d-x 고급기능]TextureCube (0) | 2018.08.11 |
[Cocos2d-x 고급기능]카메라 (0) | 2018.08.11 |