Ogre3D Basic Tutorials / Базовые туториалы Ogre3D: Basic Tutorial 2: Cameras, Lights, and Shadows

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

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

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

wuffur 08.07.11 в 17:19

0

Мы затронули эту тему сейчас, потому что важно, чтобы вы понимали, как Ogre решает, какую камеру использовать при отрисовке сцены.

Mingun 12.10.11 в 14:44

0

В Ogre возможно использовать много объектов SceneManagers в одно и то же время.

wuffur 08.07.11 в 17:20

0

В Ogre возможно использовать несколько менеджеров сцены в одно и то же время.

Mingun 12.10.11 в 14:45

0

В Ogre возможно использовать несколько менеджеров сцены (SceneManager) одновременно.

PoqXert 16.11.11 в 12:42

0

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

wuffur 08.07.11 в 17:23

1

Также в нем возможно разделить экран на несколько зон и иметь отдельные камеры, выполняющие отрисовку в отдельные зоны экрана (вспомните, например, о разделенном на 2 игроков экране в консольной игре).

Mingun 12.10.11 в 14:49

0

Хотя и можно сделать это, мы не будем говорить об этом до продвинутых руководств.

wuffur 08.07.11 в 17:24

0

Хотя это сделать и возможно, мы не будем рассматривать это до продвинутых уроков.

Mingun 12.10.11 в 14:51

1

Чтобы понять как Ogre осуществляет рендеринг сцены, имейте в виду три конструкции Ogre: объекты Camera,SceneManager и RenderWindow.

wuffur 08.07.11 в 17:26

0

Чтобы понять, как Ogre отображает сцену, рассмотрим три конструкции Ogre: камеру (Camera), менеджер сцены (SceneManager) и окно отрисовки (RenderWindow).

Mingun 12.10.11 в 14:52

1

Мы еще не описывали RenderWindow, но по сути это окно, где все выводится.

wuffur 08.07.11 в 17:27

0

Мы еще не сталкивались с окном отрисовки, но вкратце, это окно, где все отображается.

Mingun 12.10.11 в 14:55

1

Объект SceneManager создает камеры для обзора сцены.

wuffur 08.07.11 в 17:28

2

Вы должны указать в объекте RenderWindow какие камеры отображаются на экране, и какую часть рендерить.

wuffur 08.07.11 в 17:29

0

Вы должны указать в объекте RenderWindow, какие камеры отображать на экране, и какую часть окна отрисовывать в нем.

Mingun 12.10.11 в 14:58

0

Вы должны указать в объекте RenderWindow, с каких камер выводить изображение на экран и в какой его части.

PoqXert 16.11.11 в 12:52

0

Область в которой вы говорите объекту RenderWindow отображать объект Camera это Viewport.

wuffur 08.07.11 в 17:30

0

Область, в которую вы говорите окну отрисовки отображать камеру, и есть область просмотра.

Mingun 12.10.11 в 15:01

0

В большинстве обычных примерах использования Ogre, вы в основном будете делать только одну камеру, регистрируя Камеру для использования целого RenderWindow, и таким образом имея только один объект Viewport.

wuffur 08.07.11 в 17:32

0

В большинстве случаев использования Ogre, вы обычно создаете только одну камеру, регистрируете ее для использования всем окном отрисовки и поэтому имеете только один объект Viewport.

Mingun 12.10.11 в 15:04

0

а в этом руководстве мы расскажем как зарегистрировать объект камеры для создания viewport-а.

alexx_x 08.07.11 в 18:17

0

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

Mingun 12.10.11 в 15:06

0

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

alexx_x 08.07.11 в 18:18

0

Затем мы сможем использовать этот объект Viewport для установки цвета фона сцены, которую мы отрисовываем.

Mingun 12.10.11 в 15:08

0

СОЗДАНИЕ VIEWPORT

alexx_x 08.07.11 в 18:18

0

СОЗДАНИЕ ОБЛАСТИ ПРОСМОТРА

Mingun 12.10.11 в 15:08

0

Мы будем переопределять в BaseApplication создание класса Viewport, поэтому найдите функцию член createViewports из класса BasicTutorial2(BasicTutorial2::createViewports)

wuffur 09.07.11 в 04:02

-1

Мы переопределим создание области просмотра, производимое в BaseApplication, так что найдите функцию-член BasicTutorial2::createViewports().

Mingun 12.10.11 в 16:04

0
+1

Чтобы создать объект Viewport мы просто вызовем функцию добавления addViewport из RenderWindow и снабдим ее камерой, которую мы используем.

wuffur 09.07.11 в 04:05

0

Чтобы создать область просмотра, мы просто вызываем функцию addViewport класса RenderWindow, передавая ей используемую нами камеру.

Mingun 12.10.11 в 16:08

0

Класс BaseApplication уже создал производный класс mWindow с нашим RenderWindow, поэтому добавьте следующие строки кода:

wuffur 09.07.11 в 04:13

0

В классе BaseApplication уже было заполнено поле mWindow нашим объектом RenderWindow, так что добавьте эту строку кода:

Mingun 12.10.11 в 16:11

0

Теперь, поскольку мы уже создали Viewport, что мы можем делать с ним? Ответ - не многое.

wuffur 09.07.11 в 04:14

0

Теперь, когда мы имеем область просмотра, что мы можем сделать с ней? Ответ будет: не многое.

Mingun 12.10.11 в 16:14

0

Самой важной вещь, что мы можем сделать с ним - это вызвать функцию setBackgroundColour, чтобы установить тот цвет фона, какой мы выбрали.

wuffur 09.07.11 в 04:16

0

Самая важная вещь, которую мы можем сделать с ней, это вызвать функцию setBackgroundColour() для установки фона в любой выбранный нами цвет.

Mingun 12.10.11 в 16:16

0

Поскольку мы имеем дело с освещением в этом руководстве, мы установим черный цвет фона:

wuffur 09.07.11 в 04:17

0

Поскольку мы работаем с освещением в этом уроке, мы установим черный:

Mingun 12.10.11 в 16:17

0

Отметим, что атрибут ColourValue ожидает величину значение красного, зеленого и синего для его параметров в интервале от 0 до 1.

wuffur 09.07.11 в 04:21

0

Обратите внимание, что ColourValue ожидает красную, зеленую и синию компоненту цвета в диапазоне от 0 до 1.

Mingun 12.10.11 в 16:19

0

Последней и наиболее важной вещь, которую нам нужно сделать - это установление отношений характеристик нашей камеры.

wuffur 09.07.11 в 04:23

-1

Последняя и самая важная вещь, которую мы должны сделать, это установить соотношение сторон нашей камеры.

Mingun 12.10.11 в 16:20

0
+1

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

wuffur 09.07.11 в 04:26

-1

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

Mingun 12.10.11 в 16:24

0
+1

Мы пойдем вперед и установим его, даже если используем отношения характеристик по умолчанию:

wuffur 09.07.11 в 04:28

-1

Мы пойдем дальше и установим его даже при том, что мы используем соотношение сторон по умолчанию:

Mingun 12.10.11 в 16:35

0
+1

Это все, что нужно нужно сделать для нашего простого использования класса Viewport.

wuffur 09.07.11 в 04:29

0

Это все, что должно быть сделано при простом использовании нами класса Viewport.

Mingun 12.10.11 в 16:39

0

Здесь описано как выглядит законченная функция createViewports:

wuffur 09.07.11 в 04:30

0

Вот так выглядит законченная функция createViewports():

Mingun 12.10.11 в 16:41

0

К этом моменту вы должны быть в состоянии скомпилировать и запустить ваше приложение, хотя ничего кроме пустой сцены и не появиться(нажмите Escape чтобы выйти)

wuffur 09.07.11 в 04:32

0

К этом моменту вы должны быть в состоянии скомпилировать и запустить приложение, хотя ничего, кроме пустой сцены, и не появиться (нажмите Escape для выхода).

Mingun 12.10.11 в 16:45

0

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

wuffur 09.07.11 в 04:32

0

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

Mingun 12.10.11 в 16:46

0

СВЕТ И ТЕНИ

wuffur 09.07.11 в 04:32

1

ТИПЫ ТЕНЕЙ, КОТОРЫЕ ПОДДЕРЖИВАЕТ OGRE

wuffur 09.07.11 в 04:33

1

На данный момент OGRE поддерживает три типа теней:

wuffur 09.07.11 в 04:33

1

Модулируемые Текстуры Теней(Ogre::SHADOWTYPE_TEXTURE_MODULATIVE) - последний из трех по затратам на вычислительные ресурсы. Так создается рендеринг в текстуру объектов отбрасывающих тени, который потом применяется к сцене.

wuffur 09.07.11 в 05:38

0

Модулятивные текстурные тени(Ogre::SHADOWTYPE_TEXTURE_MODULATIVE) - наименее вычислительно-затратная техника из трех. Она производит черно-белую отрисовку в текстуру объектов, отбрасывающих тени, и эта текстура затем применяется к сцене.

Mingun 12.10.11 в 16:55

0

Тени образца Modulative (Ogre::SHADOWTYPE_STENCIL_MODULATIVE) - Эта техника делает рендеринг всех теневых объемов как модуляцию после того, как все непрозрачные объекты были представлены на сцене. Это не столь же интенсивно как дополнительные Тени Трафарета( Additive Stencil Shadows ), но это также не как точно.

ghostintheshell 10.07.11 в 21:29

0

Модулятивные стенсильные тени (Ogre::SHADOWTYPE_STENCIL_MODULATIVE) - эта техника отрисовывает все теневые объемы как модуляцию (т.е. накладывание теней поверх уже освещенной сцены) после всех непрозрачных объектов, уже отрисованных на сцене. Тени не такие насыщенные, как с использованием аддитивных стенсильных теней, но при этом техника не столь точна.

Mingun 12.10.11 в 17:04

0

Additive Stencil Shadows (Ogre::SHADOWTYPE_STENCIL_ADDITIVE) - этот метод рендерит каждый луч света отдельно и складывает их прохождение по сцене. Это очень сильно затрачивает ресурсы графической карты, поскольку каждый дополнительный луч света требует своего хода при рендеринге сцены.

wuffur 09.07.11 в 06:16

-1

Аддитивные стенсильные тени (Ogre::SHADOWTYPE_STENCIL_ADDITIVE) - эта техника отрисовывает каждый источник света как отдельный добавляющий проход по сцене (т.е., в отличие от предыдущей, сцена не затеняется тенями, а наоборот, освещается источниками света). Это очень нагружает графическую карту, поскольку каждый источник света требует дополнительного прохода при отрисовке сцены.

Mingun 12.10.11 в 17:09

0

Ogre не поддерживает мягкие тени как часть движка.

wuffur 09.07.11 в 06:05

1

Если вам нужны мягкие тени вам нужно будет написать ваши собственные программы вершин фрагменты.

wuffur 09.07.11 в 06:07

0

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

Mingun 12.10.11 в 17:12

0

Отметимм, что здесь расположено быстрое введение - справочник по Ogre полностью описывает тени и результаты их использования.

wuffur 09.07.11 в 06:08

0

Обратите внимание, что здесь дается краткое введение – руководство по Ogre полностью описывает тени в Ogre и результаты их использования.

Mingun 12.10.11 в 17:18

0

ИСПОЛЬЗОВАНИЕ ТЕНЕЙ В OGRE

wuffur 09.07.11 в 06:08

1

Использовать тени в Ogre относительно просто.

wuffur 09.07.11 в 06:08

1

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

wuffur 09.07.11 в 06:09

0

Класс SceneManager имеет функцию-член setShadowTechnique(), которую мы можем использовать для установки желаемого типа теней.

Mingun 12.10.11 в 17:20

0

Затем когда вы создадите объект Entity, вызовите функция setCastShadows, чтобы определить будете ли объекты отбрасывать тени.

wuffur 09.07.11 в 06:10

0

Теперь, всякий раз при создании сущности, вызывайте функцию setCastShadows(), чтобы указать, должен ли объект отбрасывать тени.

Mingun 15.10.11 в 11:29

0

Мы не будем использовать рассеянный свет в полной темноте, и устанавливать тип тени.

wuffur 09.07.11 в 06:22

0

Сейчас мы установим окружающее освещение в полную темноту и настроим тип теней.

Mingun 15.10.11 в 11:30

0

Найдите функцию член createScene класса BasicTutorial2(BasicTutorial2::createScene) и добавьте туда этот код:

wuffur 09.07.11 в 06:22

0

Найдите функцию-член BasicTutorial2::createScene() и добавьте туда этот код:

Mingun 15.10.11 в 11:31

0

Теперь SceneManager использует аддитивные складываемые тени.

wuffur 09.07.11 в 06:23

0

Теперь менеджер сцены использует аддитивные стенсильные тени.

Mingun 15.10.11 в 11:32

0

Давайте создадим объект на сцене, чтобы заставить его отбрасывать тени.

wuffur 09.07.11 в 06:23

0

Давайте создадим объект на сцене и заставим его отбрасывать тени.

Mingun 15.10.11 в 11:33

0

Нам также что-нибудь, на чем бы стоял ниндзя (Чтобы ему было куда отбрасывать тени).

wuffur 09.07.11 в 06:25

0

Также нам нужно что-нибудь, на чем мог бы стоять ниндзя (а также отбрасывать туда тени).

Mingun 15.10.11 в 11:35

0

Чтобы сделать это, мы создадим простую плоскость.

wuffur 09.07.11 в 06:25

0

Этим что-то будет простая плоскость.

Mingun 15.10.11 в 11:35

0

Не предполагается в нашем руководстве описывать MeshManager, но мы рассмотрим самые основы, которые нам нужно будет использовать, чтобы создать плоскость.

wuffur 09.07.11 в 06:27

0

Мы не посвящали этот урок использованию менеджера сеток (MeshManager), но тем не менее пробежимся по самым основам, которые потребуются при создании плоскости.

Mingun 15.10.11 в 11:38

0

Нам нужно определить сам объект плоскость, которые делается постановке нормали на расстоянии от начала координат.

wuffur 09.07.11 в 06:29

0

Для начала нем необходимо определить сам объект плоскости, что делается заданием вектора нормали и расстоянием от начала координат.

Mingun 15.10.11 в 11:40

0

Мы можем(например) использовать плоскости составлять части геометрии мира, и в этом случае нам необходимо определить начальную дистанцию отличной от нуля.

wuffur 09.07.11 в 13:31

0

Мы могли бы (к примеру) использовать плоскости для задания частей геометрии мира, в этом случае надо указать что-то отличное от 0 для расстояния.

Mingun 15.10.11 в 11:42

0

Сейчас нам просто нужна плоскость у которой нормаль направлена в положительном направлении оси y (Это значит, что мы хотим, чтобы она была лицевой стороной вверх), и чтобы отклонение от начала координат было нулевым:

wuffur 09.07.11 в 13:34

0

Сейчас нам просто нужна плоскость с нормалью, направленной в положительном направлении оси y (что означает, что она смотрит вверх), проходящая через начало координат:

Mingun 15.10.11 в 11:44

0
Минутку...

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

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