![]() |
Родитель объекта
Снова нубо-проблема, взываю к терпению форумчан.
Есть объект, есть камера. У каждого из них формируется результирующая матрица, путем умножения масштабирования, поворота и позиции. С этой матрицей объект визуализируется, с этим проблем нет. Нужно чтобы камера была чилдом для этого объекта. То есть если объект вращается, то она вращается по его орбите, если перемещается - перемещается за ним. Желательно, конечно, все это сделать через матричные преобразования, миную тригонометрию. И как можно более простым языком. Заранее спасибо. |
Ответ: Родитель объекта
умножаешь локальную матрицу чайлда на глобальную парента ну и получаешь глобальную чайлда.
токо надо в правильной последовательности перемножать. инвертируешь глобальную матрицу камеры - получаешь её матрицу вида. |
Ответ: Родитель объекта
Вот локальные координаты у меня хранятся в переменных, потом я их кладу в матрицу. Потом эту матрицу я использую как матрицу мира и вывожу объект. (Если совсем просто).
Как мне узнать узнать глобальную матрицу объекта? Можешь более развернуто ответить..? Я правильно понял - мне нужно для вывода камеры использовать результирующую матрицу объекта? |
Ответ: Родитель объекта
И тут же еще один вопрос:
Код:
D3DPRESENT_PARAMETERS d3dpp; Код:
d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE; |
Ответ: Родитель объекта
Цитата:
а локальная - относительно координат парента. Цитата:
|
Ответ: Родитель объекта
Спасибо, с мультисемплингом разобрался!
А вот с матрицей все никак не соображу. Я рисую объект одной матрицей. Этой же матрицей рисовать и его детей? |
Ответ: Родитель объекта
Цитата:
|
Ответ: Родитель объекта
Так, может я туплю, но мировая матрица получается при умножении всех матриц преобразования - позиции на поворот на масштаб (может порядок спутал).
Может я ошибаюсь? Но именно эту матрицу я использовал как мировую, когда рисовал объект. Как получить локальную матрицу? |
Ответ: Родитель объекта
Цитата:
|
Ответ: Родитель объекта
Получается так:
rezult - матрица, которую я применю к чилду. parentrezult - мировая матрица родителя. result=result*parentresult; Правильно? И мини-вопросик - как в PhysX вращать актера? Чтобы он поворачивался и линейная скорость действовала уже в другом направлении? Код:
NxMat33 rot; В Blitz3D это называлось "RotateMesh". А мне нужно то, что называлось "TurnEntity". |
Ответ: Родитель объекта
Цитата:
|
Ответ: Родитель объекта
Спасибо, завтра попробую, но вроде не получалось.
А как быть с поворотом в PhysX? |
Часовой пояс GMT +4, время: 15:26. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot