문제는 카메라와 비행기가 모두 같은 Y 좌표를 사용한다는 것입니다. 카메라의 위치를 지정하지 않았으므로 점 (0, 0, 0)에 있으므로 Y 좌표는 0입니다. 평면의 좌표도 (0, 0, 10)으로 지정 했으므로
당신은 아무것도 표시되지 않는 이유는 다음 Y 좌표가으로 Irrlicht에 있기 때문에 Y 좌표는 0이다, 이것은 당신이이 그림에서처럼 조각에서 비행기에서 찾고있는 것을 의미한다 . 뭔가를 보려면 카메라를 위로 올려야합니다. 포인트 (0, 50, 0)가 작동합니다.
또한 장면에 조명이없는 경우 기본적으로 조명에 민감하기 때문에 비행기는 배경처럼 검은 색이됩니다. 이 설정을 변경하려면 다음 코드를 사용하여 조명에 비행기를 구분해야 : 비행기의 색상이 기본적으로 인 블랙 인 경우
plane->setMaterialFlag(irr::video::EMF_LIGHTING, false);
, 그렇게, 검은 배경에 검은 색면이있을 것이다 너는 아무 것도 볼 수 없을 것이다. 그래서 난 당신이 메인 루프에서 beginScene
방법으로이를 이용하여 대신 흰색 배경을 제안한다
irr::IrrlichtDevice *device = irr::createDevice(irr::video::EDT_OPENGL);
irr::video::IVideoDriver *driver = device->getVideoDriver();
irr::scene::ISceneManager *sceneManager = device->getSceneManager();
const irr::scene::IGeometryCreator *geomentryCreator = sceneManager->getGeometryCreator();
irr::scene::IMesh* plane = geomentryCreator->createPlaneMesh(irr::core::dimension2d<irr::f32>(100, 100), irr::core::dimension2d<irr::u32>(100, 100));
irr::scene::ISceneNode* cube = sceneManager->addCubeSceneNode(20);
cube->render();
irr::scene::ISceneNode* ground = sceneManager->addMeshSceneNode(plane);
ground->setPosition(irr::core::vector3df(0, 0, 10));
plane->setMaterialFlag(irr::video::EMF_LIGHTING, false); //This is important
irr::scene::ICameraSceneNode* cam = sceneManager->addCameraSceneNode();
cam->setPosition(irr::core::vector3df(0, 50, 0)); //This is also important
cam->setTarget(ground->getPosition());
sceneManager->addMeshSceneNode(plane);
while(device->run()){
driver->beginScene(true, true, irr::video::SColor(255, 255, 255, 255)); //Important for the background to be white
sceneManager->drawAll();
driver->endScene();
}
: 일반적으로이 코드
driver->beginScene(true, true, irr::video::SColor(255, 255, 255, 255));
, 다음과 같은 화면을 볼 수 있어야합니다
내 Irrlicht는 약간 녹슬었지만 몇 가지 질문이 있습니다. 카메라는 어디에 배치되어 있습니까? 그것이 절두체 컬링 거리의 바깥에 있지 않은지 확인하십시오. 또한 장면에 조명이 있습니까? – AndyG
음, 카메라가 0,0,0에 있고 – Kurieita
이 아닙니다 [mcve]를 입력하십시오. 렌더링 루프를 포함하여'main'이 어떻게 보이는지 알기가 어렵습니다. – AndyG