Ogre3D Basic Tutorials / Базовые туториалы Ogre3D: Basic Tutorial 1: An introduction to the most basic Ogre constructs: SceneManager, SceneNode, and Entity objects.

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

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

Вернемся к коду который мы создали ранее.

alexx_x 06.07.11 в 13:23

0

Найдем метод TutorialApplication::createScene.

alexx_x 06.07.11 в 13:23

0

Как мы упоминали ранее, в этом туторе мы будем изменять только код содержащийся в этой функции.

alexx_x 06.07.11 в 13:24

0

Первое что мы сделаем, это установим уровень освещенности самой сцены (ambient light) чтобы видеть результаты нашего труда.

alexx_x 06.07.11 в 13:25

0

Для этого вызываем функцию setAmbientLight и указываем нужный нам цвет.

alexx_x 06.07.11 в 13:26

0

Конструктор ColorValue принимает три параметра (RGB) для красного, зеленого и голубого составляющего цвета, в промежутке от 0 до 1.

alexx_x 06.07.11 в 13:28

0

Добавим этот кусок кода к createScene:

alexx_x 06.07.11 в 13:28

0

Следующее что мы сделаем, это создадим Entity (сущность).

alexx_x 06.07.11 в 13:30

0

Вызываем метод createEntity объекта SceneManager.

alexx_x 06.07.11 в 13:31

0

У вас наверняка возникли некоторые вопросы.

alexx_x 06.07.11 в 13:31

0

Первый откуда взялся mSceneMgr, и что за параметры мы передаем в функцию.

alexx_x 06.07.11 в 13:34

0

Переменная mSceneMgr является ссылкой на текущий объект класса SceneManager.

alexx_x 06.07.11 в 13:35

0

Первый параметр функции createEntity это название объекта который мы созадем.

alexx_x 06.07.11 в 13:36

0

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

alexx_x 06.07.11 в 13:36

0

При попытке создать два объекта с одинаковым именем, возникнет ошибка.

alexx_x 06.07.11 в 13:37

0

Параметр "ogrehead.mesh" указывает меш (проще говоря сохраненную 3d модель) которая будет использована при создании объекта).

alexx_x 06.07.11 в 13:38

0

В нашем случае "ogrehead.mesh" поставляется вместе с Ogre SDK.

alexx_x 06.07.11 в 13:38

0

Загрузка ресурсов будет описана в следующих статьях.

alexx_x 06.07.11 в 13:39

0

Сейчас мы используем для загрузки ресурсов класс BaseApplication.

alexx_x 06.07.11 в 13:40

0

Итак объект Entity мы создали, теперь нам необходимо создать объект SceneNode к которой мы прикрепим наш Entity.

alexx_x 06.07.11 в 13:41

0

Каждый SceneManager имеет корневую SceneNode, мы создадим дочернюю к нему SceneNode.

alexx_x 06.07.11 в 13:43

0

Это длинное выражение сперва вызывает функцию getRootSceneNode текущего объекта SceneManager.

alexx_x 07.07.11 в 06:57

0

Затем он вызывает функцию createChildSceneNode корневой SceneNode.

alexx_x 07.07.11 в 06:58

0

Параметр передаваемый функции createChildSceneNode это имя SceneNode которую мы создаем.

alexx_x 07.07.11 в 06:58

0

Как и Entity, два экземпляра SceneNode не могут иметь одинаковые имена.

alexx_x 07.07.11 в 09:17

0

И наконец мы присоединяем Entity к SceneNode для того чтобы указать голове огра место где оно будет рендерится.

alexx_x 07.07.11 в 09:18

0

Все готово, скомпилируйте и запустите ваше приложение.

alexx_x 07.07.11 в 09:18

0

Вы должны увидеть голову огра на вашем экране.

alexx_x 07.07.11 в 09:19

0

КООРДИНАТЫ И ВЕКТОРА

alexx_x 07.07.11 в 09:19

0

Перед тем как мы пойдем дальше, нужно объяснить систему оконных координат и классы Ogre Vector.

alexx_x 07.07.11 в 09:20

0

Ogre (подобно многим графическим движкам) использует координатные оси X и Z для горизонтальных плоскостей, и Y для вертикальной координаты.

alexx_x 07.07.11 в 09:22

0

Как вы сейчас видите на мониторе, ось X проходит слева направо, с правой стороны положительная часть оси.

alexx_x 07.07.11 в 09:24

0

Ось Y проходит снизу вверх, сверху положительная часть оси.

alexx_x 07.07.11 в 09:24

0

Ось Z берет свое начало глубоко в недрах монитора и проходит сквозь вашу переносицу )

alexx_x 07.07.11 в 09:25

0

Голова огра сейчас обращена прямо к нам по направлению оси Z.

alexx_x 07.07.11 в 09:26

0

Это складывается из свойств меша и направления и позиции камеры.

alexx_x 07.07.11 в 09:27

0

Камеры рассматриваются в следующих туториалах, пока стоит понимать что координаты головы огра на позиции (0,0,0).

alexx_x 07.07.11 в 12:22

0

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

wuffur 09.07.11 в 13:22

1
+1

Ориентация головы была задана когда она создавалась в пакете 3D моделирования.

alexx_x 07.07.11 в 12:24

0

Ogre не может предполагать как ориентирована ваша модель.

alexx_x 07.07.11 в 12:25

0

Каждый меш который мы загружаем может быть ориентирован по разному.

alexx_x 07.07.11 в 12:26

0

Информацию о расположении и ориентация Ogre хранит в классах Vector.

alexx_x 07.07.11 в 12:27

0

Векторы определены в трех классах для 2 (Vector2), 3 (Vector3) и 4 (Vector4) измерений, из них чаще всего используется Vector3.

alexx_x 07.07.11 в 12:28

0

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

alexx_x 07.07.11 в 12:29

0

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

alexx_x 07.07.11 в 12:31

0

ДОБАВЛЯЕМ ЕЩЕ ОДИН ОБЪЕКТ

alexx_x 07.07.11 в 12:31

0

Поняв как работает система координат, вернемся к нашему коду.

alexx_x 07.07.11 в 12:31

0

Ни в одной из тех трех строк что мы написали, нигде не указано точное расположение головы огра.

alexx_x 07.07.11 в 12:32

0

Большинство функций в Ogre используют для этого значения по умолчанию.

alexx_x 07.07.11 в 12:33

0

Для примера функция SceneNode::createChildSceneNode имеет три параметра: название SceneNode, ее позиция и дефолтовую ориентацию.

alexx_x 07.07.11 в 12:34

0

Позиция, как вы уже убедились, имеет координаты (0,0,0).

alexx_x 07.07.11 в 12:35

0
Минутку...

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

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