Значит, игрался я с OpenGL и особенно с компонентом GL_FlyHandler. Но заметил очень много недостатков в этом компоненте, такие как невозможность устанавливать: границы обзора и перемещения камеры, нет возможности вывода данных угла положения камеры, и еще камера находится как бы не по центру а, как бы сказать от 3го лица. Из-за чего если будет маленький предмет перед камерой на близком расстоянии, то камера при обзоре как бы камера летает вокруг этого объекта... И решил я сконструировать свою схемкку взамен этому компоненту.
code_18416.txt
А теперь о проблемах, до меня пока не доходит как реализовать осмотр вверх вниз, так же хотелось бы узнать как высчитать координаты перемещения камеры относительно её стартовой позиции.
P.S. Перемещение в программе осуществляется кнопками W и S, и угол поворота ползунками.
Этот топик читают: Гость
|
Ответов: 63
Рейтинг: 8
|
|||
| карма: 1 |
| ||
| файлы: 1 | code_18416.txt [6.9KB] [116] |
|
Ответов: 1304
Рейтинг: 405
|
|||
|
recoshet, компонентом GL_FlyHandler пока в тестовом варианте, небольшую попытку разобраться в логике работы компонента уже делал, по всей видимости придётся ещё с ним побороться.
http://www.hiasm.com//getfile/17032 Замени стандартный компонент, пример прилагается. Внимательно посмотри на скрытые точки CameraX,Y,Z, там содержатся мировые координаты камеры относительно точки входа. С улами обзора надо будет подумать как лучше сделать. |
|||
| карма: 3 |
|
|
Ответов: 63
Рейтинг: 8
|
|||
|
Спасибо! Этот компонент лучше работает
------------ Дoбавленo в 11.02: Вот добавил в компонент ограничитель вертикального обзора, теперь камера не перевернется верх ногами (чтобы убрать ограничитель в свойствах компонента нужно выставить VerticalAngleUp = 360 или более, а в VerticalAngleDown = 180 или больше) . Сразу говорю, стандартов программирования Delphi я не изучал, поэтому я не сомневаюсь что написал немного лишнего кода... http://hiasm.com/forum_serv.php?q=56&id=1447 В архиве измененный компонент + схема пример + скомпилированная программа этой схемы |
|||
| карма: 1 |
| ||
| Голосовали: | MAV, sla8a, tig-rrr |
|
Ответов: 1304
Рейтинг: 405
|
|||
|
написал немного лишнего кода
recoshet, главное чтобы работал как задумано. Думаю что твоя модификация приемлема, только нехватает значений угла зрения камеры, надо было сразу вывести точки свойств a1,a2, и обозвать их к примеру "угол поворота камеры по горизонтали(вертикали)" |
|||
| карма: 3 |
| ||
| Голосовали: | recoshet |
|
Ответов: 63
Рейтинг: 8
|
|||
|
Так и сделаю! Сейчас найду информацию как оформлять компоненты в HiAsm и буду тестировать...
------------ Дoбавленo в 15.02: Вот итоги моего труда http://hiasm.com/forum_serv.php?q=56&id=1446 Теперь есть параметр AngleLimiter который указывает включить ли ограничение угла (True или False). Так же вывел точки, которые содержат угол поворота камеры. [flood]Наверно теперь этой теме место тут |
|||
| карма: 1 |
|
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
|
glLoadIdentity вначале поставлен?
|
|||
| карма: 26 |
|
|
Ответов: 1304
Рейтинг: 405
|
|||
|
Dilma, когда разбирался с GL_FlyHandler причина сброса матриц была очевидна, а сейчас не могу вспомнить
|
|||
| карма: 3 |
|
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
|
вставка этой ф-ции сбрасывает все настройки вида, выставленные до того. Это не есть правильно.
|
|||
| карма: 26 |
|
8



Поиск
Друзья
Администрация