Сообщение от Diablo1909
так я не понял... а какого фига они глобальны ? Ведь система обьектов предпологает, что вся инфа о трансформациях должна хранится в относительных координатах ( относительно родительских ). Тогда в чем вообще их смысл ?
Я же считал, что извлечение глобыльных параметров происходит за счет перебора всех родителей.
|
Не совсем так. Когда меняется координаты\угол ентити, происходит отложенный перерасчет матриц его самого и его чайлдов. Т.е. там флажок который указывает что трансформации надо перерасчитать. Это делается либо по необходимости (например тем же самым вызовом GetMatElement) до рендера, либо непосредственно перед ним, чтобы получить глобальную матрицу для каждого ентити. Эта матрица и передается в Direct3D для трансформации вершин. GetMatElement возвращает элементы этой матрицы.
Подробнее можно посмотреть в исходниках miniB3D, там в файле geom.h почти вся 3д математика. А устройство иерархии (впрочем и geom.h там же) в исходниках sdk.