AviaSkins.Forums

Вернуться   AviaSkins.Forums > Основные разделы > Моды для Ил-2 > Не самолетом единым ...

Важная информация

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.02.2016, 19:17   #1
NB79
Местный
 
Регистрация: 12.07.2015
Сообщений: 417
По умолчанию

Цитата:
Сообщение от deSAD Посмотреть сообщение
А это - с измененной координатой по оси Z ...
Вот тут должен сделать важное предупреждение!

В матрице трансформаций, коими и являются по факту хуки, нельзя просто так изменять координаты "по оси...". Почему? Потому, что это матрица трансформации.

Для понимания сути.

Разворот и перенос некоторой точки в пространстве - операция не коммутативная. От порядка выполнения операций зависит то, где точка в конечном итоге окажется.

Например. У нас есть точка в 3-х мерном пространстве. И есть три поворота по осям и сдвиг. Если мы сначала повернём оси и потом сдвинем, то точка сначала поменяет ориенацию векторов относительно текущего центра координат и потом переедет на смещение относительно центра. А если мы сначала сдвинем, а потом повернём, то фактически получится, что точка при разворотах будет перемещаться по поверхности сферы, радиус которой определит начальная величина сдвига.

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

По этому, когда мы говорим о "сдвиге по оси" обязательно требуется уточнение относительно каких координат мы сдвиг осуществляем. Ибо направление мировых и локальных осей запросто может не совпадать. И в этом случае, сдвигая, например по Z в локальных координатах, в глобальных мы можем двигаться вдоль другой оси, или вообще, под углом к осям.

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

Хуки надо двигать не в локальных координатах, а в модельных (мировых). Только тогда они сдвинутся правильно. Я на картинках, кстати, вижу глюк с положением хуков. Кильваторный след вылазит впереди носа и повёрнут относительно продольной оси модели на заметный угол. И похоже, что эти хуки тоже ставили наугад.

Последний раз редактировалось NB79; 29.02.2016 в 19:20.
NB79 вне форума   Ответить с цитированием
Старый 01.03.2016, 00:08   #2
deSAD
Модератор
 
Аватар для deSAD
 
Регистрация: 06.03.2007
Адрес: Киев, Украина
Сообщений: 11,391
Отправить сообщение для deSAD с помощью ICQ Отправить сообщение для deSAD с помощью Skype™
По умолчанию

Цитата:
Сообщение от NB79 Посмотреть сообщение
... Хуки надо двигать не в локальных координатах, а в модельных (мировых). Только тогда они сдвинутся правильно.
Но хоть какой-то (видимый) эффект от изменения координат хуков (пускай даже и некорректного) должен был бы быть?! Или не?
Цитата:
Сообщение от NB79 Посмотреть сообщение
Я на картинках, кстати, вижу глюк с положением хуков. Кильваторный след вылазит впереди носа и повёрнут относительно продольной оси модели на заметный угол. И похоже, что эти хуки тоже ставили наугад.
Ндык
Цитата:
Сообщение от asheshouse
_Centre, _left and ,_right entries interact to create the wake.
I have still not completely figured out how these work but still rely on some trial and error.

_Centre y coord sets spacing of left and right wake
_left _right x coord sets width and also affects centre wake.
__________________
deSAD вне форума   Ответить с цитированием
Старый 01.03.2016, 00:14   #3
NB79
Местный
 
Регистрация: 12.07.2015
Сообщений: 417
По умолчанию

Цитата:
Сообщение от deSAD Посмотреть сообщение
Но хоть какой-то (видимый) эффект от изменения координат хуков (пускай даже и некорректного) должен был бы быть?! Или не?
Должен, естественно. Но без самой модели предсказать, как оно будет, сложно. Это ведь сплошное умножение матрицы на матрицу.

Я скоро допилю у себя кручение/перемещение хуков, надеюсь с ними станет по проще. Времени бы ещё свободного где побольше найти.
NB79 вне форума   Ответить с цитированием
Старый 01.03.2016, 13:42   #4
deSAD
Модератор
 
Аватар для deSAD
 
Регистрация: 06.03.2007
Адрес: Киев, Украина
Сообщений: 11,391
Отправить сообщение для deSAD с помощью ICQ Отправить сообщение для deSAD с помощью Skype™
По умолчанию

Цитата:
Сообщение от NB79 Посмотреть сообщение
Должен, естественно.
Во-о-от ... а его ведь не видно! Ну, т. е. изменение координат хуков никак не сказалось на осадке корабля (ради чего, собственно, эксперимент и затевался)
Цитата:
Сообщение от NB79 Посмотреть сообщение
Я скоро допилю у себя кручение/перемещение хуков, надеюсь с ними станет по проще.
Спасибо вам за ваши труды
Цитата:
Сообщение от NB79 Посмотреть сообщение
Времени бы ещё свободного где побольше найти.
Ндык ... время - деньги, как говорится, а деньги - они или начинают заканчиваться или заканчивают начинаться, и никак иначе Так и со временем
__________________
deSAD вне форума   Ответить с цитированием
Старый 01.03.2016, 15:46   #5
NB79
Местный
 
Регистрация: 12.07.2015
Сообщений: 417
По умолчанию

Цитата:
Сообщение от deSAD Посмотреть сообщение
Во-о-от ... а его ведь не видно! Ну, т. е. изменение координат хуков никак не сказалось на осадке корабля (ради чего, собственно, эксперимент и затевался)
Хе-хе! Ну я же говорил, Мf = Mh * Mm0 * (Mm1) * ... * (Mmn) . И как оно там двинется после этого умножения совсем не очевидно.

Давайте я ещё раз попробую объяснить этот момент. Он важен для правильной сборки моделей и понимание его позволит избежать ненужных ошибок и переделок. С рисунками было бы проще, но у меня с этим, увы, туго, не умею разными редакторами нормально пользоваться.

Итак. Допустим, что у нас есть первый меш, направление осей которого совпадает с направлением мировых осей. Теперь мы к нему присоединяем второй. Направление осей у второго тоже совпадает с мировыми. Пусть второй меш присоединён к первому со сдвигом, допустим - по Х на 10. Представили картинку? А теперь - фокус!

Мы поворачиваем первый меш на 90 градусов вокруг Y. Представили? Отлично! Что у нас случилось с направлениями осей? Локальные направления не изменились, но относительно мировых X и Y поменялись местами! И теперь, для того, чтобы в мировых сдвинуть второй меш по Х в локальных его надо двигать по Y.

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

Ещё один пример, хорошо это иллюстрирующий. Самолёт и, допустим, его руль направления. Когда РН стоит прямо вектор направления направлен вдоль оси самолёта. Мы отклоняем РН и вектор направления меняется на угол в сторону, противоположную отклонению РН. В мировых это происходит вокруг Z (ось направления Y), вдоль Х. А теперь мы прокручиваем модель вокруг Y (делаем бочку). Как меняется вектор направления при этом? Он у нас начинает описывать круг в случае неподвижности модели, либо спираль, если мы движемся. У нас направления осей для РН в мировых координатах изменяются, оставаясь локально неподвижными.

Вот этим матрицы и прекрасны. Они позволяют парой умножений (матриц, матриц! а потом - матрицы на вектор ) автоматически получить вектор направления, сдвиг и скалирование. И всё это будет работать всегда и единообразно. Но при паре условий:

- мы имеем определённое соглашение по физическому назначению осей и строго его придерживаемся (уходим от XYZ, и, например используем yaw, pitch и roll чтоб не путаться в ситуациях смен направлений осей в мировых координатах)
- мы имеем определённое соглашение по тому, как соединяются отдельные части моделей и строго его придерживаемся

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

Это всё, конечно, оффтоп в этой теме. Прошу прощения за это. Но давно вижу, что у народа нет полного понимания в этом вопросе и часто многое делается на ощуп. Из-за чего приходится делать кучу лишней работы и тратить море дефицитного времени. Потом этот пост здесь можно будет грохнуть, чтоб тему не захламлять.
NB79 вне форума   Ответить с цитированием
Старый 02.03.2016, 19:12   #6
tvister
Местный
 
Аватар для tvister
 
Регистрация: 26.12.2013
Адрес: Донецьк Україна
Сообщений: 1,848
По умолчанию

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

Последний раз редактировалось deSAD; 03.03.2016 в 11:50.
tvister вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 5 (пользователей: 0 , гостей: 5)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 13:51. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Рейтинг@Mail.ru