Ogre3D Intermediate Tutorials / Промежуточные туториалы Ogre3D: Intermediate Tutorial 6: Projective Decals

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

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

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

H0tHead 27.09.11 в 09:24

0

ИЗБАВЛЯЕМСЯ ОТ ЗАДНЕЙ ПРОЕКЦИИ

H0tHead 27.09.11 в 09:25

0

ВВЕДЕНИЕ

proVIDec 25.09.11 в 06:17

0

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

H0tHead 27.09.11 в 09:25

0

Первая - проекция вдоль направления -Z, то куда направлен наш конус отсечения, другая проекция направлена вдоль направления +Z, на головы позади нашего конуса.

H0tHead 27.09.11 в 09:27

0

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

H0tHead 27.09.11 в 09:29

0

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

H0tHead 27.09.11 в 09:30

0

ИЗМЕНЯЕМ ПРОЕКТОР

H0tHead 27.09.11 в 09:30

0

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

H0tHead 27.09.11 в 09:31

0

Добавьте следующий код в метод createProjector():

H0tHead 27.09.11 в 09:32

0

Это должно быть вам уже знакомо.

H0tHead 27.09.11 в 09:32

0

Разница лишь в том, что мы повернули узел на 90 градусов для ориентирования его в обратном направлении.

H0tHead 27.09.11 в 09:33

0

ИЗМЕНЯЕМ МАТЕРИАЛ

H0tHead 27.09.11 в 09:33

0

Теперь мы должны добавить еще один текстурный модуль в проход который мы создали ранее.

H0tHead 27.09.11 в 09:34

0

Добавьте следующий код в метод makeMaterialReceiveDecal() :

H0tHead 27.09.11 в 11:10

0

Это все должно быть знакомо вам.

H0tHead 27.09.11 в 11:11

0

Отметим, что поскольку мы используем фильтр-текстуру и фильтрующий конус отсечения, то мы отключаем текстурную фильтрацию.

H0tHead 27.09.11 в 11:13

0

Скомпилируйте и запустите приложение.

proVIDec 25.09.11 в 06:17

0

Вы должны увидеть только проекцию по направлению нашего проектора.

H0tHead 27.09.11 в 11:13

0

СКРЫТИЕ ПРОЕКЦИЙ

H0tHead 27.09.11 в 11:13

0

ПРОСТОЕ ВРАЩЕНИЕ

H0tHead 27.09.11 в 11:14

0

Для того чтобы скрыть проекции, мы будем вращать проектор.

H0tHead 27.09.11 в 11:14

0

Для этого просто добавьте следующий код в начало метода frameRenderingQueued() :

H0tHead 27.09.11 в 11:15

0

Скомпилируйте и запустите приложение.

H0tHead 27.09.11 в 11:15

0

Вы должны увидеть проецирование текстуры вдоль всего круга голов Огра.

H0tHead 27.09.11 в 11:16

0

НАПОСЛЕДОК

H0tHead 27.09.11 в 11:16

0

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

H0tHead 27.09.11 в 11:17

0

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

H0tHead 27.09.11 в 11:18

0

Осмотримся.

H0tHead 27.09.11 в 11:19

0

Предыдущий совет верен, но есть решение, когда ваша текстура не имеет прозрачной внешней границы:

H0tHead 27.09.11 в 11:20

0

До тех пор, пока формат вашей текстуры поддерживает альфа-канал( напр. PNG), вы можете установить текстурную адресацию в режим TAM_BORDER( граница )( или border, если вы используете скрипт материала ) и установить цвет границы равный (0,0,0,0).

H0tHead 27.09.11 в 11:22

0

Это приведет к тому, что при использовании текстурных координат вне диапазона [0,1] мы получим цвет границы, который мы указали.

H0tHead 27.09.11 в 11:23

0

По существу. вы только что добавили своей текстуре прозрачные границы.

H0tHead 27.09.11 в 11:24

0

Вы можете посмотреть быстрое включение проекционных текстур в ваш проект.

H0tHead 27.09.11 в 11:25

0
Минутку...

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