Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Вниз

Функция 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.035 c
3-1078897962
Flagman
2004-03-10 08:52
2004.04.04
Как приконнектиться к Ораклу?


14-1078603282
Piter
2004-03-06 23:01
2004.04.04
Новый клиент для форума


3-1077866970
Alex___________
2004-02-27 10:29
2004.04.04
Как передать в DLL , TpFIBDatabase. ?????


8-1070710296
Astarot
2003-12-06 14:31
2004.04.04
Модем + звук + телефон


1-1079010134
ламер2
2004-03-11 16:02
2004.04.04
Регистрация нового компонента в Delphi5





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский