Ogre3D Basic Tutorials / Базовые туториалы Ogre3D: Basic Tutorial 8: Multiple and Dual SceneManagers
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
КРАТКОЕ СОДЕРЖАНИЕ proVIDec 28.06.11 в 10:24 |
|
|
В этом коротком туториале мы изучим, как переключаться между несколькими менеджерами сцены. proVIDec 29.06.11 в 13:29 |
||
|
ДЛЯ НАЧАЛА proVIDec 28.06.11 в 10:18 |
||
|
ПЕРВОНАЧАЛЬНЫЙ КОД proVIDec 29.06.11 в 13:29 |
||
|
Измените заголовочный файл класса из Базового Руководства 8, чтобы он выглядел так. wuffur 12.07.11 в 16:29 |
||
|
Убедитесь, что файл реализации из Базового Руководства 7, выглядит так. wuffur 12.07.11 в 16:30 |
||
|
Убедитесь, что можете скомпилировать код, прежде чем продолжать. При запуске программы будет отображаться лишь черный экран. Нажмите Esc, чтобы выйти. proVIDec 03.07.11 в 03:46 |
||
|
СОЗДАНИЕ ПРИЛОЖЕНИЯ proVIDec 03.07.11 в 09:42 |
||
|
СОЗДАНИЕ МЕНЕДЖЕРОВ СЦЕНЫ proVIDec 29.06.11 в 13:29 |
||
|
Мы уже описали то, как выбирать ваш SceneManager, поэтому я не буду подробно рассказывать об этой функции. wuffur 12.07.11 в 16:31 |
||
|
Единственной вещью, которую мы изменили, является то, что мы создаем две из них. wuffur 12.07.11 в 16:32 |
||
|
Найдите функцию chooseSceneManager и добавьте в нее следующий код: proVIDec 03.07.11 в 09:38 |
||
|
СОЗДАНИЕ КАМЕР proVIDec 29.06.11 в 13:29 |
||
|
Следующая вещь, которую нам нужно сделать - это создать объект Camera для каждого из двух экземпляров SceneManager. wuffur 12.07.11 в 16:32 |
||
|
Единственное отличие от предыдущих разделов руководства является то, что мы создаем две из них с одинаковыми именами. wuffur 12.07.11 в 16:33 |
||
|
Найдите функцию createCamera и добавьте следующий код: wuffur 12.07.11 в 16:33 |
||
|
СОЗДАНИЕ ОБЛАСТЕЙ ПРОСМОТРА cin 30.06.11 в 15:26 |
||
|
При создании Viewport для этого приложения, мы будем брать небольшое отступление от предыдущих руководств. wuffur 15.07.11 в 17:42 |
||
|
Когда вы создаете Viewport, вы должны сделать две вещи: установить сам Viewport и затем установить соотношение геометрических размеров камеры, которую вы используете. wuffur 15.07.11 в 17:43 |
||
|
Начнем с того, что добавим следующий код в функцию createViewports : wuffur 15.07.11 в 17:44 |
||
|
Текущий код устанавливает принадлежность Viewport в нашей функции setupViewport(), так как мы используем этот код снова в другом месте. wuffur 15.07.11 в 17:45 |
||
|
Первая вещь, которую нам нужно сделать это убрать все уже созданные объекты Viewport. wuffur 15.07.11 в 17:46 |
||
|
Еще ничего не было создано, но когда мы позже снова вызовем эту функцию, нам нужна будет помощь, чтобы убедиться, что они убрали все, до того как создавать новые. wuffur 15.07.11 в 17:47 |
||
|
После этого мы будем устанавливать Viewport как мы уже делали в предыдущих руководствах. wuffur 15.07.11 в 17:48 |
||
|
Добавьте следующий код в функцию setupViewport() в верх этого файла: wuffur 15.07.11 в 17:48 |
||
|
СОЗДАНИЕ СЦЕНЫ cin 30.06.11 в 15:26 |
||
|
И наконец, нам нужно создать сцену для каждого SceneManager, чтобы на ней были объекты. wuffur 15.07.11 в 17:49 |
+3 | |
|
Мы не будем делать ничего сложного, просто кое-что отличное так как мы знаем, когда мы уже менялись местами между ними. wuffur 15.07.11 в 17:55 |
||
|
Найдите функцию createScene и добавьте следующий код: wuffur 15.07.11 в 17:56 |
||
|
Прежде чем продолжать, убедитесь, что ваш код компилируется. proVIDec 30.06.11 в 05:25 |
||
|
Запуск программы должен показать космический skybox. proVIDec 08.07.11 в 15:54 |
||
|
Пока это все. proVIDec 03.07.11 в 03:48 |
||
|
ДОБАВЛЕНИЕ ФУНКЦИОНАЛЬНОСТИ cin 30.06.11 в 15:26 |
||
|
ДВОЙНЫЕ МЕНЕДЖЕРЫ СЦЕНЫ cin 30.06.11 в 15:26 |
||
|
Первая порция функциональности, которую нам нужно добавить в эту программы сделана, чтобы позволить пользователи рендерить оба объекта SceneManager бок о бок. wuffur 15.07.11 в 18:02 |
||
|
Когда нажата кнопка V мы будем переключать двойной режим объекта Viewport. wuffur 15.07.11 в 18:02 |
||
|
Основной план для этого прост. wuffur 15.07.11 в 18:03 |
+1 | |
|
Чтобы выключить режим Viewport, мы просто вызовем setupViewport(которой сделан в предыдущей секции) с главным SceneManager, чтобы переделать этот Viewport в одиночный режим. wuffur 15.07.11 в 18:05 |
||
|
Когда мы хотим включить его, мы будем вызывать новую функцию, называемую dualViewport. wuffur 15.07.11 в 18:05 |
||
|
Мы будем отслеживать состояние объекта Viewport с помощью переменной mDual. wuffur 15.07.11 в 18:06 |
||
|
Добавьте следующий код в конец функции keyPressed(): wuffur 15.07.11 в 18:06 |
||
|
Теперь у нас переменная mDual переключена и вызвана соответствующая функция в зависимости от того, каком режиме мы находимся. wuffur 15.07.11 в 18:08 |
||
|
Теперь мы будем определять функцию dualViewport(), которая на самом деле содержит код, который покажет вместе два объекта Viewport. wuffur 15.07.11 в 18:09 |
||
|
Чтобы выводит два объекта SceneManager бок о бок, мы по существу сделаем ту же вещь, что мы уже делали с функцией setupViewport(). wuffur 15.07.11 в 18:10 |
||
|
Существует только одно отличие и оно состоит в том, что мы будем делать два объекта Viewport, по одному на каждую камеру в наших объектах SceneManager. wuffur 15.07.11 в 18:11 |
||
|
Добавьте к функции dualViewport() следующий код : wuffur 15.07.11 в 18:11 |
||
|
Все это уже должно быть вам знакома, за исключением дополнительных параметров, которые мы добавили в вызов функции addViewport. wuffur 15.07.11 в 18:25 |
||
|
Первый параметр переданный в эту функции все еще объект Camera, который мы используем. wuffur 15.07.11 в 18:26 |
||
|
Второй параметр - это направление по оси z объекта Viewport. wuffur 15.07.11 в 18:27 |
+2 | |
|
Более высокое положение на оси z расположено сверху более низкого положения на оси z. wuffur 15.07.11 в 18:28 |
