68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
|
|
1 | |
3ds Max Как математически зная только вектор вычислить кватернион?20.04.2015, 22:15. Показов 8265. Ответов 154
Метки нет (Все метки)
Создаю направленный источник света в максе.
Свойством dir в MAXSctipt судя по справке, я получаю нормализованный вектор направления. Также есть свойство rotation которое возвращает углы вращения в кватернионах. По сути эти два свойства определяют одно и тоже - куда будет смотреть проектор. Изменяя одно из них, видны изменения и в другом. Вопрос в том, как математически зная только вектор вычислить кватернион? У меня есть записи свойств объектов на подобии SpotLight из которых известны только позиция и вектор направления. Эту информацию нужно конвертировать в другой редактор, который работает только с позицией и кватернионом. Кароче, как из трех чисел получить четыре?
0
|
20.04.2015, 22:15 | |
Ответы с готовыми решениями:
154
Как отправить файл на сервер через FTP не зная имени а зная только расширение файла? Найти вектор x,зная что вектор x перпендикулярен вектору a вычислить площадь и периметр равнобедренного треугольника зная только его катеты Как найти вектор направления тела, зная угол поворота? |
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
|
|
23.04.2015, 14:54 [ТС] | 141 |
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
||||||
23.04.2015, 15:31 | 142 | |||||
Сообщение было отмечено Constantius24 как решение
Решение
и че там у него за значения получаются?
Добавлено через 5 минут Обалдеть. Вот нарыл полный код преобразования матрицы в кватернион:
там куча частных случаев как оказывается.
1
|
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
|
||||||
23.04.2015, 19:17 [ТС] | 143 | |||||
Вот это да, сейчас попробую.
Добавлено через 28 минут Вот, что получилось, пришлось отказаться от вкусного Matrix3D в пользу двумерного массива.
0
|
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
|
|
23.04.2015, 19:23 [ТС] | 144 |
0
|
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
|
|
23.04.2015, 19:28 [ТС] | 145 |
0
|
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
|
||||||
23.04.2015, 19:33 [ТС] | 146 | |||||
Я дебил.
Как же я забыл сразу сказать. Дело вот в чем, при расположении исходных данных в моем редакторе у меня сразу возникли проблемы с расположением, а именно с вращением. Я впервые тогда столкнулся с кватернионами, и методом тыка пришел к тому, что для того, чтобы все вставало на свои места, необходимо значение W умножить на -1, т.е. -W. У меня даже в коде был написан такой метод:
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
23.04.2015, 19:37 | 147 |
-1 когда появилось? Если после того как оси меняли в матрице там могла тройка поменяться а тогда все вращения в обратную сторону.
Добавлено через 1 минуту Кстати, на какую тематику игруху делаешь?
1
|
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
|
|
23.04.2015, 19:53 [ТС] | 148 |
Сразу после вычисления кватерниона меняю значение W: .GetRotation().Fix();
Пока ни на какую, задача стоит перенести ресурсы игры в редактор. GTAIV->CRYENGINE. Потом уже можно начать, что-нибудь свое придумывать. Добавлено через 4 минуты Боюсь даже представить какие там частные случаи учитываются в приведенном выше коде... Добавлено через 1 минуту А с чем может быть связано, что приходится применять -W ? Особенности исходных данных, точнее движка в котором они используются?
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
23.04.2015, 20:10 | 149 |
Другая тройка векторов. Правила буравчика помнишь? Есть левый и правый. точно так же есть левая СК и правая СК (по тому же правилу определяется). Отличия левой от правой - направление вращения в обратную сторону
1
|
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
|
|
23.04.2015, 20:15 [ТС] | 150 |
Знак определяется через ориентацию базиса, и соответственно в одной среде отрицательная ориентация этого базиса, а в другой положительная. Я правильно понял?
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
23.04.2015, 20:20 | 151 |
Я так подозреваю проще в CAD с нуля рисовать чем модифицировать чъе, то непонятно как структурированное, и т.д.
Добавлено через 4 минуты Да правильно.
1
|
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
|
|
23.04.2015, 20:25 [ТС] | 152 |
Fulcrum_013, и еще раз огромное спасибо! Боюсь даже представить, сколько времени у меня бы ушло на изучение всей необходимой математической тематики, для реализации подобного.
А возможно после, я бы забил на все и вооружившись Directx SDK ушел свой движок писать
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
23.04.2015, 20:38 | 153 |
Я уже уходил несколько раз (движек писать), "пробы пера" были когда DirectX и в помине не было. Самая большая тупость - говорил мне друг на втором курсе - бросаем нафиг универ делаем движок (тогда рендеры ручками делались, Direct3D еще не родился) ну и дальше на его основе все что угодно - протупил, совдеповская прошивка на маршрут универ-завод типа. После универа уже там че то от нефиг делать и под DX шкрябал, типа машзала АСУ-ТП с рабочими экранами всех терминалов (я как раз на них эмуляторы разрабатывал по работе). Ландшафт по карте высот где то лежит. Без особого обтекстуривания (то еще был Celeron-333 c видюхой 16мб). Корочче тогда вьехал в тему CAD под такие движки надо свой делать. И если не полностью, к примеру модели рисовать в максе, а в своем редакторе только иерархии фрэймов собирать это как минимум. Потом въехал что в CAD имено CAD а не программах 3D дизайна технику и здания моделить гораздо быстрее.
1
|
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
|
|||||||||||
23.04.2015, 21:38 [ТС] | 154 | ||||||||||
Интересно какие решения у серьезных компаний-разработчиков игровых движков и игр под них. Тот же макс, там походу далеко особняком стоит.
Добавлено через 33 минуты Метод:
Добавлено через 3 минуты Может быть InvertBasis()...
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
23.04.2015, 21:55 | 155 |
Да скорее всего так. Да кстати еще и возможность определить базис. в одном базисе crossproduct(x,y) дают z в другом -z
1
|
23.04.2015, 21:55 | |
23.04.2015, 21:55 | |
Помогаю со студенческими работами здесь
155
Вычислить и отнормировать вектор, полученный как произведение матрицы A на вектор B Как удалить таблицу зная только половину её названия? Как удалить TImage* зная только его Hint? Как получить id элемента, зная только его класс? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |