Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: 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 вся ветка

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
7-1074178573
проблематик
2004-01-15 17:56
2004.04.04
ListView


1-1079228372
Demik
2004-03-14 04:39
2004.04.04
-= StringGrid =-


3-1078726173
Мал0й
2004-03-08 09:09
2004.04.04
Установка BDE


3-1078231598
Rule
2004-03-02 15:46
2004.04.04
Опять я и опять пробеммы с Мидасом


14-1078437695
_none_
2004-03-05 01:01
2004.04.04
а что если написать вирус для борьбы со спамом?