Вверх ↑
Этот топик читают: Гость
Ответов: 63
Рейтинг: 8
#1: 2010-05-22 12:39:21 ЛС | профиль | цитата
Значит, игрался я с OpenGL и особенно с компонентом GL_FlyHandler. Но заметил очень много недостатков в этом компоненте, такие как невозможность устанавливать: границы обзора и перемещения камеры, нет возможности вывода данных угла положения камеры, и еще камера находится как бы не по центру а, как бы сказать от 3го лица. Из-за чего если будет маленький предмет перед камерой на близком расстоянии, то камера при обзоре как бы камера летает вокруг этого объекта... И решил я сконструировать свою схемкку взамен этому компоненту.
code_18416.txt
А теперь о проблемах, до меня пока не доходит как реализовать осмотр вверх вниз, так же хотелось бы узнать как высчитать координаты перемещения камеры относительно её стартовой позиции.
P.S. Перемещение в программе осуществляется кнопками W и S, и угол поворота ползунками.

карма: 1

0
файлы: 1code_18416.txt [6.9KB] [116]
Ответов: 1304
Рейтинг: 405
#2: 2010-05-23 00:49:57 ЛС | профиль | цитата
recoshet, компонентом GL_FlyHandler пока в тестовом варианте, небольшую попытку разобраться в логике работы компонента уже делал, по всей видимости придётся ещё с ним побороться.
http://www.hiasm.com//getfile/17032
Замени стандартный компонент, пример прилагается. Внимательно посмотри на скрытые точки CameraX,Y,Z, там содержатся мировые координаты камеры относительно точки входа. С улами обзора надо будет подумать как лучше сделать.


карма: 3

0
Ответов: 63
Рейтинг: 8
#3: 2010-05-23 11:03:00 ЛС | профиль | цитата
Спасибо! Этот компонент лучше работает Теперь мне надо понять как он работает...
------------ Дoбавленo в 11.02:
Вот добавил в компонент ограничитель вертикального обзора, теперь камера не перевернется верх ногами (чтобы убрать ограничитель в свойствах компонента нужно выставить VerticalAngleUp = 360 или более, а в VerticalAngleDown = 180 или больше) . Сразу говорю, стандартов программирования Delphi я не изучал, поэтому я не сомневаюсь что написал немного лишнего кода...
http://hiasm.com/forum_serv.php?q=56&id=1447
В архиве измененный компонент + схема пример + скомпилированная программа этой схемы

карма: 1

3
Голосовали:MAV, sla8a, tig-rrr
Ответов: 1304
Рейтинг: 405
#4: 2010-05-23 11:53:16 ЛС | профиль | цитата
написал немного лишнего кода

recoshet, главное чтобы работал как задумано. Думаю что твоя модификация приемлема, только нехватает значений угла зрения камеры, надо было сразу вывести точки свойств a1,a2, и обозвать их к примеру "угол поворота камеры по горизонтали(вертикали)"
карма: 3

1
Голосовали:recoshet
Ответов: 63
Рейтинг: 8
#5: 2010-05-23 15:02:09 ЛС | профиль | цитата
Так и сделаю! Сейчас найду информацию как оформлять компоненты в HiAsm и буду тестировать...
------------ Дoбавленo в 15.02:
Вот итоги моего труда
http://hiasm.com/forum_serv.php?q=56&id=1446
Теперь есть параметр AngleLimiter который указывает включить ли ограничение угла (True или False). Так же вывел точки, которые содержат угол поворота камеры.
[flood]Наверно теперь этой теме место тут[/flood]

карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#6: 2010-05-26 13:21:38 ЛС | профиль | цитата
glLoadIdentity вначале поставлен?
карма: 26
0
Ответов: 1304
Рейтинг: 405
#7: 2010-05-26 21:32:55 ЛС | профиль | цитата
Dilma, когда разбирался с GL_FlyHandler причина сброса матриц была очевидна, а сейчас не могу вспомнить . Закоментировал glLoadIdentity, работает нормально.
карма: 3

0
Администрация
Ответов: 15295
Рейтинг: 1519
#8: 2010-05-26 22:28:52 ЛС | профиль | цитата
вставка этой ф-ции сбрасывает все настройки вида, выставленные до того. Это не есть правильно.
карма: 26
0
8
Сообщение
...
Прикрепленные файлы
(файлы не залиты)