Вниз
Скачать: CL | DM;

Функция MouseLook (взгляд за мышью) в GLCamera   Найти похожие ветки 

← →
Riko ©   (2003-09-09 10:50) [0]

Люди, пожалуйста, где искать реализацию сабжа? Или это в GLSceneViewer"e?
Хотя бы в каком направлении копать?


← →
pasha_676 ©   (2003-09-09 11:02) [1]

В смысле двигаешь мышью - поворачивается камера?
В GLScene можно - привязать камеру к предмету и двигать ее по окружности - см. примеры в комплекте GLScene.
Ну и никто не отменял "ручной" метод - считываешь изменения положения мыши и выставляешь в зависимости от них новое положение камеры и новый вектор направления камеры.


← →
Riko ©   (2003-09-09 11:13) [2]

>>привязать камеру к предмету и двигать ее по окружности
Это получается, а свободное вращение?
>>новое положение камеры и новый вектор направления камеры.
Можно чють-чють подробнее?
FormMouseMove или GLSceneViewerMouseMove?
GLCamera Direction, Position и Up ?
Честно говоря, перелопатил много доки, но никак не пойму....


← →
pasha_676 ©   (2003-09-09 13:17) [3]


> Честно говоря, перелопатил много доки, но никак не пойму....

Нехватка базового представления.

Попытаюсь с азов.

Любой предмет в трехмерном пространстве имеет положение, которое определяется тремя векторами, в терминологии GLScene - Directional, Position и Up. С позишинал все понятно. Дирекшинал - вектор определяющий куда смотрит камера и ап - вектор куда смотрит верх камеры.
Теперь по существу - что бы вращать камеру надо изменять вектора ап и дирекшинал. Причем изменение апа- это не что иное, как поворот камеры вокруг оси дирекшинала. Он скорее всего тебе не нужен (как я понял). Изменение дирекшинала же будет изменять куда смотрит камера.

Следующий вопрос. Как отловить перемещение мыши в форме - это извини азы дельфи. Должен найти сам.
Следующий пункт - отловил изменение координат мыши - сделал преобразования дирекшинола на их основе - получил поворот камеры вокруг своей оси. Вот тебе и поворот.

Математика преобразований - дело десятое - зависит от того что ты конкретно хочеш сделать и от того как это должно работать. В общем случае смотри матрицы поворота вокруг осей.

Весь этот муторный пост сделал по очень простой причине - ты должен понимать что и как представляется и работает. Реализовать непосредственно в GLScene можно прощеееее

И непосредственно к GLScene. Во-первых проследи чтоб камера не была привязана ни к какому объекту (TargetObject это автоматом сбивает дирекшинал камеры на объект), во вторых обрати внимание на пропертя камеры
GLCamera1.Roll, Turn и Pitch что ли. Измени их и будет тебе счастие. (По сути эти пропертя и меняют ап и дирекшиналы, пользуйся исходным кодом - и увидишь это).


← →
Riko ©   (2003-09-09 14:48) [4]

Все понял, спасибо огромное....


← →
Ranma   (2003-09-21 04:52) [5]

есть рекомендация:
1. создать dummycube и привязать к нему камеру.
2. горизонтальные движения мыши использовать для вращения dummy
3. вертикальные для камеры
4. и будет вам счастье ибо если не сделать такую иерархическую структуру, то камеру при движениях будет плющить (если конечно не сбрасывать каждый раз rotations)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.021 c
1-1079270328
A JI E LLI A
2004-03-14 16:18
2004.04.04
Использование функции FloatToStr


1-1078996316
Karlson
2004-03-11 12:11
2004.04.04
Компонент на компоненте


3-1078233243
GrTik
2004-03-02 16:14
2004.04.04
Виснет ADO


1-1079272826
010101001010001010101001
2004-03-14 17:00
2004.04.04
Проще не бывает


1-1079145958
Александр1
2004-03-13 05:45
2004.04.04
Работа с TabControl1




   Наверх