Ogre3D Basic Tutorials / Базовые туториалы Ogre3D: Basic Tutorial 3: Terrain, Sky, and Fog

← →
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Отметим использование функций getLayerBlendMap() и getBlendPointer().

wuffur 12.07.11 в 12:59

0

Также обратите внимание на использование методов getLayerBlendMap() и getBlendPointer().

Mingun 24.07.11 в 09:31

0

КОМПИЛЯЦИЯ И ЗАПУСК - ЧАСТЬ ПЕРВАЯ

wuffur 12.07.11 в 12:59

1

Пойдем дальше и скомпилируем и запустим приложение Basic Tutorial 3 сейчас.

wuffur 12.07.11 в 13:00

0

Пойдем дальше – скомпилируем и запустим приложение.

Mingun 24.07.11 в 09:39

0

Вы должны получить неплохо отрендеренный ландшафт.

wuffur 12.07.11 в 13:00

0

Вы должны получить неплохо выглядящий ландшафт.

Mingun 24.07.11 в 09:32

0

Однако, вы можете улучшить ваше маленькое приложение, сделав три добавления к нему:

wuffur 12.07.11 в 13:01

1

1. Индикатор генерации ландшафта

wuffur 12.07.11 в 13:01

1

2. Сохранение ландшафта

wuffur 12.07.11 в 13:03

1

3. Очистка за собой

wuffur 12.07.11 в 13:03

1

Во-первых нам нужно добавить новый член данных в класс BasicTutorial3:

wuffur 12.07.11 в 13:03

1

Нам нужно переопределить три функции в нашем классе BasicTutorial3:

wuffur 12.07.11 в 13:04

1

Затем нам надо переопределить три функции в нем:

Mingun 17.10.11 в 16:45

0

1.frameRenderingQueued - для того, чтобы показать процесс генерации ландшафта и сохранить его когда он закончиться

wuffur 12.07.11 в 13:05

0

1. frameRenderingQueued – для показа процесса генерации ландшафта и сохранения сгенерированной версии

Mingun 24.07.11 в 09:41

0
+2

2. createFrameListener - для того, чтобы сделать информационный ярлык

wuffur 12.07.11 в 13:05

0

2. createFrameListener – для создания метки с информацией

Mingun 24.07.11 в 09:43

0
+3

3. destroyScene - для того, чтобы убраться после себя.

wuffur 12.07.11 в 13:06

0

3. destroyScene – для подчистки за собой

Mingun 24.07.11 в 09:44

0

Итак, без лишних слов:

wuffur 12.07.11 в 13:07

1

Во-первых мы спрашиваем наш TerrainGroup, работает ли он над генерацией ландшафта: isDerivedDataUpdateInProgress.

wuffur 12.07.11 в 13:22

1

Если он работает над ней, давайте покажем информационный ярлык с правильной подписью.

wuffur 12.07.11 в 13:23

0

Если работает, давайте покажем информационную метку с правильной подписью.

Mingun 24.07.11 в 09:46

0

А если он не работает над ней, проверьте импортировали мы новый ландшафт.

wuffur 12.07.11 в 13:23

0

А если нет – проверим, импортировали ли мы новый ландшафт.

Mingun 24.07.11 в 09:48

0

Если мы делали это, то тогда нужно сохранить все части ландшафта, так чтобы мы могли пропустить процесс генерации в следующий раз, когда нам нужно будет запустить приложение.

wuffur 12.07.11 в 13:25

0

Если да, сохраним все куски ландшафта, чтобы в следующий раз при запуске нашего приложения пропустить процесс генерации.

Mingun 24.07.11 в 09:50

0

Мы переопределяем эту функцию поскольку нам нужно добавить новый информационный ярлык к нашему OgreBites::SdkTrayManager mTrayMgr.

wuffur 12.07.11 в 13:25

0

Мы переопределяем эту функцию, поскольку нам нужно добавить новую информационную метку к нашему объекту mTrayMgr класса OgreBites::SdkTrayManager.

Mingun 24.07.11 в 09:51

0

Так как BaseApplication конструирует его в функции createFrameListener, мы не можем добавить ее в нашу функцию 'createScene', поскольку функция createFrameListener вызывается 'после' функции createScene...

wuffur 12.07.11 в 13:27

1
+3

Очень просто:

wuffur 12.07.11 в 13:27

1

Вызовем BaseApplication::createFrameListener и затем проникнем в наш информационный ярлык.

wuffur 12.07.11 в 13:28

0

Вызовем метод BaseApplication::createFrameListener, а затем создадим нашу информационную метку.

Mingun 24.07.11 в 09:58

0

Это то место, где мы после себя чистим:

wuffur 12.07.11 в 13:29

0

Здесь мы подчищаем мусор после себя:

Mingun 24.07.11 в 09:59

0

Для поля OGRE_NEW требуется поле OGRE_DELETE.

wuffur 12.07.11 в 13:34

0

OGRE_NEW требует использования OGRE_DELETE.

Mingun 24.07.11 в 09:59

0
+1

КОМПИЛЯЦИЯ И ЗАПУСК - ЧАСТЬ ВТОРАЯ

wuffur 12.07.11 в 13:34

1

Если вы скомпилируете и запустите приложение сейчас, вы должны увидеть информационный ярлык, говорящий вам, что TerrainGroup занята генерацией ландшафта.

wuffur 12.07.11 в 13:48

0

Если вы сейчас скомпилируете и запустите приложение, вы должны будете увидеть информационную метку, сообщающую вам, что TerrainGroup занята генерацией ландшафта.

Mingun 24.07.11 в 10:03

0

Когда ярлык исчезнет, TerrainGroup сохранит этот ландшафт.

wuffur 12.07.11 в 13:51

0

Когда метка исчезнет, TerrainGroup сохранит этот ландшафт.

Mingun 24.07.11 в 10:03

0

Вы возможно отметите, что вы не можете выйти из программы, когда запущен процесс генерации ландшафта.

wuffur 12.07.11 в 13:52

0

Вы, возможно, обратите внимание, что вы не можете выйти из программы во время процесса генерации ландшафта.

Mingun 24.07.11 в 10:04

0

Однако, если вы запустите эту программу во второй раз сейчас, вы получите сообщение полностью и процесс запуска будет намного более быстрым потому, что мы генерируем файл данных о ландшафте напрямую.

wuffur 12.07.11 в 13:54

0

Однако, если вы запустите программу во второй раз, вы не получите сообщения вовсе и процесс запуска пройдет намного быстрее, поскольку мы напрямую загружаем уже сгенерированный файл с ландшафтом.

Mingun 24.07.11 в 10:07

0

Продолжайте и посмотрите в директорию OGRE_HOME/media.
Вы должны увидеть здесь файл 'BasicTutorial3Terrain_00000000.dat'...

wuffur 12.07.11 в 15:47

0

Теперь перейдите в папку OGRE_HOME/media. Вы должны увидеть здесь файл 'BasicTutorial3Terrain_00000000.dat'...

Mingun 24.07.11 в 10:09

0

ВВЕДЕНИЕ В ПЕЙДЖИНГ ЛАНДШАФТА(этот параграф будет перемещен в руководства для опытных разработчиков)

wuffur 12.07.11 в 15:48

0

ВВЕДЕНИЕ В СТРАНИЧНЫЙ ЛАНДШАФТ (этот параграф будет перемещен в продвинутые уроки)

Mingun 24.07.11 в 10:11

0

У загрузки страницы на данный момент две стадии:

wuffur 12.07.11 в 15:48

1

В настоящей реализации загрузка страницы производится в две стадии:

Mingun 26.07.11 в 13:50

0

1. Подготовка(обычно асинхронная)

wuffur 12.07.11 в 15:49

1

2. Загрузка (должна быть синхронизированной и вызываться из главного потока)

wuffur 12.07.11 в 15:50

1

Для просты в этой части руководства будет использоваться только второй шаг.

wuffur 12.07.11 в 15:50

0

Для простоты в этом уроке будет использоваться только второй шаг.

Mingun 17.10.11 в 16:58

0

Для того, чтобы использовать пейджинг рекомендуется приготовить страницы с данными о Ландшафте (вроде 'BasicTutorial3Terrain_00000000.dat') заранее.

wuffur 12.07.11 в 15:51

0

Чтобы использовать страничную подкачку, рекомендуется подготовить страницы ландшафта (как рассмотренный выше 'BasicTutorial3Terrain_00000000.dat') заранее.

Mingun 26.07.11 в 13:53

0

Вы можете использовать mTerrainGroup->saveTerrains(true) или Ogitor-tool, чтобы выполнить эту задачу.

wuffur 12.07.11 в 15:52

0

Вы можете использовать вызов mTerrainGroup->saveTerrains(true) или инструмент Ogitor для этой задачи.

Mingun 26.07.11 в 13:55

0

Добавьте эту часть кода в секцию данных private в класс BasicTutorial3:

wuffur 12.07.11 в 15:53

0

Добавте этот код в секцию private класса BasicTutorial3:

Mingun 26.07.11 в 13:56

0

Добавьте этот код к функции createScene():

wuffur 12.07.11 в 15:53

1

Нашей целью является создание PagedWorld, которую будет использовать менеджер страниц, используя PageManager и TerrainPaging.

wuffur 12.07.11 в 15:54

0

Система пейджинга Ogre - это намного больше, чем просто работа с ландшафтом.

wuffur 12.07.11 в 15:55

0

Система страничной подкачки Ogre - это гораздо большее, чем просто работа с ландшафтом.

Mingun 26.07.11 в 13:58

0

Страница может содержать не только Ландшафт, но и другие объекты.

wuffur 12.07.11 в 15:55

0

Дополнительная система пейджинга ландшафта расположена поверх более общей системы пейджинга и DummyPageProvider гарантирует, что ядро системы до сих пор думает, что это загружающиеся страницы и поэтому страницы ландшафта тоже начинают обрабатываться.

wuffur 12.07.11 в 16:02

0

Страничная подкачка ландшафта работает поверх более общей страничной системы и DummyPageProvider гарантирует, что ядро системы всегда думает, что загружает страницы, поэтому страницы кусков ландшафта обрабатываются таким же образом.

Mingun 19.10.11 в 16:30

0
+1

НЕБО

wuffur 12.07.11 в 16:02

1

Ogre предоставляет три различных типа неба: SkyBoxes, SkyDomes, и SkyPlanes.

wuffur 12.07.11 в 16:03

1

Ogre предоставляет три различных типа неба: SkyBox, SkyDome и SkyPlane.

Mingun 19.10.11 в 16:41

0

Мы детально рассмотрим каждую из них.

wuffur 12.07.11 в 16:03

0

Мы подробно рассмотрим каждый из них.

Mingun 19.10.11 в 16:42

0

SKYBOXES

wuffur 12.07.11 в 16:04

1

SKYBOX-Ы (НЕБЕСНЫЕ КУБЫ)

Mingun 19.10.11 в 16:42

0

Объект SkyBox обычноэто гигантский куб, который окружает все объекты сцены.

wuffur 12.07.11 в 16:05

0

SkyBox – обычно это гигантский куб, который окружает все объекты в сцене.

Mingun 23.10.11 в 08:25

0

Лучший способ описать его - просто показать его вам.

wuffur 12.07.11 в 16:06

1

Добавьте эту линию кода в createScene:

wuffur 12.07.11 в 16:06

0

Добавьте эту строку кода в метод createScene:

Mingun 24.07.11 в 12:54

0
Минутку...

← Предыдущая страница

Следующая страница →