Сейчас 22:22:57 Среда, 2 июля, 2014 год
Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я

Меню сайта

Категории

Наш опрос
Какой тип карт вам нравится больше всего?
Проголосовало: 140601

Сейчас на сайте
На сайте всего: 29
Гостей: 25
Пользователей: 4

Реклама

Главная » Статьи по WarCraft 3 » Создание карт » Jass
Углы Эйлера (Yaw, Pitch) в WarCraft III.
Эта статья поможет вам задать углы Эйлера для любой модели, таким образом получив целых три новых разновидности поворота.

Что такое Yaw, Pitch и Roll?

Чтобы это понять, посмотрите на картинки ниже.


[spoiler="Угол Yaw"][/spoiler]
[spoiler="Угол Pitch"][/spoiler]
[spoiler="Угол Roll"][/spoiler]

Для эмуляции этих углов требуется три шага.

Шаг 1 - Подготовка модели.

- Скачайте Model Editor здесь.
- Откройте нужную модель в этой программе.
- Выберите Windows -> Node Manager.
- Нажмите правой кнопкой на хелпер (шарик с буквой "i" внутри), который назван Bone_Root или как-то похоже.
- Выберите Edit Node.
- Переименуйте его в Bone_Head.
- Сохраните.
- Импортируйте отредактированную модель в карту.

Шаг 2 - Работа в Редакторе.

- В нужном воине в Редакторе Объектов измените параметр "Графика - Файл модели" на импортированный.
- Измените значение поля "Графика - Анимация: Время цветового перехода (сек.)" на 0.
- Создайте боевую единицу.
- Создайте две реальные переменные, их значение будет являться градусной мерой угла.

Шаг 3 - Задаём углы Yaw и Pitch.

В задании углов Yaw и Pitch нам помогут две простые Jass-функции.
[code=jass]function AdjustToRangeOfNum takes real adj, real num returns real
local real adjusting = adj

loop
exitwhen (adjusting <= num and adjusting >= 0)
if adjusting < 1 then
set adjusting = adjusting + num
elseif adjusting > num then
set adjusting = adjusting - num
endif
endloop

return adjusting
endfunction

function SetUnitYawPitch takes unit u, real yaw, real pitch returns nothing
// Пользователь может ввести любой угол, а нам нужен такой, который попадёт в область [0;360].
// И это делается из-за проверки недопустимых pitch-углов (90 и 270 градусов), у них изменение угла будет 0 и функция не поменяет поворот.
local real y = AdjustToRangeOfNum(yaw,360.)
local real p = AdjustToRangeOfNum(pitch,360.)

local real offsetX
local real offsetY
local real offsetZ

if p == 90. or p == 270. then
set p = p - 1.
endif

if y == 90. or y == 270. then
set y = y - 1
endif

set offsetX = Cos(p * .0174532) * Cos(y * .0174532) * 1000000.
set offsetY = Cos(p * .0174532) * Sin(y * .0174532) * 1000000.
set offsetZ = Sin(p * .0174532) * 1000000.

call SetUnitLookAt(u,"head",u,offsetX,offsetY,offsetZ)
endfunction[/code]
Вот, собственно, и всё.
Просмотров: 2742 Добавил: Duosora Добавлено: 22 Декабрь 2010 в 23:18:13
Комментариев: 6 |

Всего комментариев: 6
14 Август 2013 Спам
6. no_name (Bru)
Какая-то и не статья вовсе.
Ответ: Перезагрузил анимации, теперь нормально. (Sir Nikolas)

04 Январь 2013 Спам
5. Юрий (19yuri98)
Цитата (Atom_Upgrader)
а вот как вращать по трём осям не знаете

А как?

11 Январь 2012 Спам
4. Atom_Upgrader (AU)
а вот как вращать по трём осям не знаете ;)

21 Ноябрь 2011 Спам
3. Atom_Upgrader (AU)
а почему 270 недопустимо?

26 Январь 2011 Спам
2. Lawson (lawson)
на JASS что тока не сделать.

14 Январь 2011 Спам
1. Андрей (Пикс)
гуд статья

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Форма входа
Логин:
Пароль:

Поиск

Случайная картинка

Случайный файл
[15 Май 2010]
Система воскрешения героев -
Система воскрешения героев наподобие той, что есть в карте DotA.

Новые карты

5 лучших по кол-ву добавленных статей
[ Duosora ] [ 58 ]
[ Messenger ] [ 52 ]
[ Bru ] [ 39 ]
[ Pand@ ] [ 35 ]
[ OrcRider ] [ 27 ]

Наша кнопка
Warcraft3FT.info - Всё для Warcraft 3 и DotA

Другие варианты

Статистика

Материалы:
Новости: 1022
Файлы: 8307
Статьи: 762
Картинки: 8202
Форум: 29792/971527
Комментарии: 58224
Copyright © 2006 - 2014 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©