중급 튜토리얼 3-3 (마지막)
Ogre3D 삽질란/Intermediate Tutorial 3 2008. 12. 11. 17:56
연습문제
쉬운 문제
1. TerrainSceneManager는 기본마스크로 ~0(모든 선택)을 사용하여 타일을 생성합니다. 이 문제를 movable객체의 이름이 "tile[0][0,2]" 과 같은 형식인지 테스트하는것으로 해결했습니다. 아직 구현되지는 않았지만 TerrainSceneManager는 multiple page를 제공합니다. 그리고 "tile[0][0,2]"과 같은 이름이 더 있다면 에러가 발생될 것입니다. 루프를 돌면서 이름을 테스트하는것 대신에 TerrainSceneManager가 적절하게 중복되지않는 마스크를 이용하여 모든 타일을 만들 수 있도록하여 문제를 해결하세요. (힌트 : TerrainSceneManager는 모든 타일을 포함하는 "Terrain"이라는 이름의 SceneNode를 생성합니다. 타일들을 순환하고 attach된 객체들의 마스크를 적당한 값으로 바꿔주세요.)
보통 문제
1. 이 프로그램은 크게 로봇과 닌자, 2가지 객체들로만 동작됩니다. 만약 Scene Editor를 구현한다면 다양한 종류의 객체들을 여러개 배치시킬 수 있어야 합니다. 이 코드를 일반화 시켜서 미리정의된 리스트로부터 제한없는 종류의 객체를 배치시킬 수 있도록 만들어 보세요. 에디터에서 사용 가능한 객체(닌자나 로봇, 매듭, 배, 기타등등)의 리스트를 담는 오버레이를 생성하고 선택된 타입만 선택할 수 있도록 SceneQuery가 수행되게끔 구현하세요.
2. 다양한 타입의 객체를 사용하게 된 지금, Factory Pattern을 사용해서 적절한 SceneNode나 엔티티를 생성해 보세요.
어려운 문제
1. 이전 연습문제들을 종합하여 오우거의 모든 메쉬들(예를 들면 Media 디렉토리에 있는 모든것들)을 읽어들인다음에 배치시킬 수 있도록 만들어 보세요. 오우거가 배치시킬 수 있는 객체들의 수에는 한계가 없습니다. 쿼리마스크에는 32가지의 한계가 존재하므로 화면상의 객체들의 쿼리 flag값들을 재빠르게 바꿔줄 수 있는 방법을 구상해 내야 할 것 입니다..
2. 이미 발견하셨을지 모르겠지만 객체를 클릭했을때 바운딩박스 하단으로부터 “들어올려지는” 현상이 발생합니다. 확인하기 위해서 높게 위치한 아무런 캐릭터를 하나 클릭해서 옮겨보세요. 일시적으로 위치에 제약없이 이동할 수 있는 상태가 됩니다. 프로그램을 수정하여 이 문제를 고쳐보세요.
심화학습 문제
1. Ctrl키를 누르고 여러객체들을 클릭하면 다수의 객체들이 하이라이트화되는것 같이 다수의 객체를 선택할 수 있는 기능을 구현하세요. 그 객체들을 이동시키면 그룹으로 이동되게끔 만드세요.
2. 많은 장면에디터 프로그램들은 객체들을 그룹으로 묶어서 같이 이동시킬 수 있게끔 하는 기능들을 제공합니다. 이 프로그램에서 이러한 기능을 구현시키세요.