Как можно реализовать фиксированную независимую точку в системе координат OpenGL? Вопрос такой у меня встал, когда начал делать анимацию. Вот например у меня задана хаотичная анимация и если я создаю новую точку то она создается относительно другой предыдущей точки. А если я создам такую точку вначале схемы, то поедят в сторону все объекты.
Этот топик читают: Гость
Ответов: 63
Рейтинг: 8
|
|||
карма: 1 |
|
Ответов: 8915
Рейтинг: 823
|
|||
recoshet, это свойство GL - перемещается и поворачивается система координат и новый объект всегда рисуется от начала координат, поэтому надо или вычислять необходимое положение, или возвращать координаты в исходное положение путём зеркального повторения ранее выполненных перемещений (с знаком "-", естественно)
|
|||
карма: 19 |
| ||
Голосовали: | recoshet |
Ответов: 63
Рейтинг: 8
|
|||
Ну я такой путь решения обдумывал но это ещё плюс тонны компонентов Спасибо!
|
|||
карма: 1 |
|
Ответов: 8915
Рейтинг: 823
|
|||
recoshet, "Без труда не вытащишь рыбку из пруда!" и ещё есть много народной мудрости на эту тему
|
|||
карма: 19 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
Леонид писал(а): или возвращать координаты в исходное положение путём зеркального повторения ранее выполненных перемещений (с знаком "-", естественно)зачем так сложно? для этого есть методы pushmatrix и popmatrix сохраняющие и восстанавливающие матрицу пространственных преобразований. |
|||
карма: 27 |
| ||
Голосовали: | recoshet |
Ответов: 8915
Рейтинг: 823
|
|||
Dilma, у меня был отрицательный опыт использования этих методов в очень длинной схеме (своей ошибки не исключаю ), поэтому не решился рекомендовать коллеге.
|
|||
карма: 19 |
|
Ответов: 1304
Рейтинг: 405
|
|||
recoshet, пока делал пример были произнесены все за и против, но пример думаю не помешает.
|
|||
карма: 3 |
| ||
Голосовали: | recoshet |
Ответов: 2236
Рейтинг: 676
|
|||
recoshet, пользуйся pushmatrix и popmatrix елемент GL_GTool. Самое главное чтоб количество push было равно pop, то есть сколько раз сохранишь матрицу преобразования столько ее и восстанови (до отрисовки буфера накопления). Последовательность может быть различная лишь бы количество pop (восстановлений) не превышало push (сохранений). Работает как стек.
К примеру сохранил (1), передвинул повернул восстановил (1) сохранил(2) передвинул сохранил(3) передвинул сохранил(4) передвинул восстановить(4) восстановить (3) восстановить (2) передвинул. |
|||
карма: 11 |
| ||
файлы: 1 | code_18176.txt [6.7KB] [230] | ||
Голосовали: | recoshet |
Ответов: 1304
Рейтинг: 405
|
|||
Вот эта схема может поможет:
|
|||
карма: 3 |
|
Ответов: 8915
Рейтинг: 823
|
|||
sla8a, какой же Вы молодец, не глядя у меня ошибку нашли! (сейчас посчитал )
|
|||
карма: 19 |
|
Ответов: 63
Рейтинг: 8
|
|||
[offtop]Во! Спасибо! Многое узнал сегодня [/offtop]
Еще маленькая поправочка елемент GL_GTool он в среде именуется GL_GTools |
|||
карма: 1 |
|
11