Camera
유저가 보는 3D 월드는 Camera를 통해서 보게됩니다.
예를들면 영화를 보는 관중이 보게되는것은 촬영할때의 카메라로 보는 현실세계입니다.
게임제작중에 카메라는 영화에서 촬영하는 카메라와 같은역할을 합니다.
Camera개체는 Node개체를 상속받아서 Camera는 대다수 Action을 지원합니다.
카메라는 두종류가 있습니다.
하나는 원근투영 카메라고 또하나는 직교투영 카메라입니다.
원근투영 카메라는 원근감있는 영상을 보여줍니다.
아래와 같이 말이죠.
우리의 눈으로 현실세계를 보는것처럼 가까운 물체는 크게,멀리있는 물체는 작게 보입니다.
1인칭게임에선 보통 원근투영의 시각으로 렌더링합니다.
직교투영은 원근효과가 없습니다.
한 방향으로만 촬영을 할 뿐입니다.아래 그림처럼요.
직교투영 카메라가 3D개체를 볼때 개체의 크기는 거리에 따라서 변화하지 않습니다.
게임속의 미니맵은 보통 직교투영 카메라로 렌더링됩니다.
하늘에서 보는 시각의 게임도 직교카메라로 렌더링합니다.
카메라 사용하기
걱정할 필요없습니다.
듣기엔 굉장히 복잡해보이지만 사용하기엔 굉장히 쉽습니다.
3D를 사용할때 다른 어떤 조작도 없이 Camera개체를 생성할수 있습니다.
씬마다 Director개체의 디폴트값으로 카메라를 생성하기 때문입니다.
만약 여러대의 카메라가 필요하다면 아래의 코드를 사용하여 생성할수있습니다.
C++
auto s = Director::getInstance()->getWinSize();
auto camera = Camera::createPerspective(60, (GLfloat)s.width/s.height, 1, 1000);
// set parameters for camera
camera->setPosition3D(Vec3(0, 100, 100));
camera->lookAt(Vec3(0, 0, 0), Vec3(0, 1, 0));
addChild(camera); //add camera to the scene
직교투영 카메라 생성하기
디폴트 카메라는 원근투영 카메라입니다.
만약 당신이 직교투영 카메라를 생성하고 싶다면 아래와 같이 하십시오.
C++
Camera::createOrthographic();
예시:
C++
auto s = Director::getInstance()->getWinSize();
auto camera = Camera::createOrthographic(s.width, s.height, 1, 1000);
카메라에서 숨기고 싶은 개체
당신의 카메라 시각에서 모든것을 다 보여줄 필요가 없을겁니다.
예를 들면 나의 시야에서 어떤 객체를 숨기고 싶을때 말이죠.
이것은 Cocos2d-x에서 아주 쉽게 할수 있습니다.
노드개체를 사용할때 setCameraMask(CameraFlag) 매서드를 사용하거나 카메라개체에서 setCameraFlag(CameraFlag) 메스드를 사용하면 됩니다.
어떤걸 사용하든 효과는 동일합니다.
예시:
C++
//Camera
camera->setCameraFlag(CameraFlag::USER1);
//Node
node->setCameraMask(CameraFlag::USER1);
출처: <http://cocos2d-x.org/docs/cocos2d-x/zh/3d/camera.html>
'Cocos2d-x v3.17 > 고급 기능' 카테고리의 다른 글
[Cocos2d-x 고급기능]Skybox (0) | 2018.08.11 |
---|---|
[Cocos2d-x 고급기능]TextureCube (0) | 2018.08.11 |
[Cocos2d-x 고급기능]3D 애니메이션 (0) | 2018.08.11 |
[Cocos2d-x 고급기능]3D 지원 및 3D Sprite (0) | 2018.08.11 |
[Cocos2d-x 고급기능]마우스 이벤트,커스텀 이벤트 (0) | 2018.08.11 |