Функция MouseLook (поглед зад мишката) в GLCamera
Хора, моля къде да търся изпълнението на темата? Или е в GLSceneViewer"e? Поне в каква посока да ровя?
В смисъл движиш мишката - камерата се върти? В GLScene можете - да прикрепите камера към обект и да го преместите в кръг - вижте примери в комплекта GLScene. Е, никой не е отменил "ръчния" метод - четете промените в позицията на мишката и задавате в зависимост от тях нова позиция на камерата и нов вектор на посоката на камерата.
>>прикрепете камерата към обект и я преместете в кръг Това е всичко, но свободно въртене? >>нова позиция на камерата и нов вектор на посоката на камерата. Можете ли да уточните малко? FormMouseMove или GLSceneViewerMouseMove? GLCamera Direction, Position and Up? Честно казано, рових много на докове, но не разбирам.
> Честно казано, изрових много докове, но просто не разбирам.Недостатъчен основен изглед.
Ще опитам от основите.
Всеки обект в триизмерното пространство има позиция, която се определя от три вектора, в терминологията на GLScene - Directional, Position и Up. С pozishinal всичко е ясно. Насочен - вектор, който определя накъде гледа камерата и нагоре - вектор, накъдето гледа горната част на камерата. Сега, по същество - за да завъртите камерата, трябва да промените векторите ap и посоката. Освен това промяната на apa не е нищо друго освен завъртане на камерата около оста на посоката. Вероятно не ви трябва (доколкото разбирам). Промяната на посоката ще промени накъде гледа камерата.
Следващ въпрос. Как да хванете движението на мишката във формата - това са основите на delphi. Трябва сам да го намеря. Следващият елемент - улови промяната в координатите на мишката - направи трансформации на DirectShinol въз основа на тях - завъртя камерата около оста си. Ето твой ред.
Математикатрансформации - десетото нещо - зависи от това какво конкретно искате да направите и как трябва да работи. В общия случай вижте матриците на въртене около осите.
Направих цялата тази мрачна публикация по много проста причина - трябва да разберете какво и как се появява и работи. По-лесно е да се внедри директно в GLScene
И директно към GLScene. Първо, уверете се, че камерата не е прикрепена към никакъв обект (TargetObject автоматично премахва директивата на камерата към обекта), и второ, обърнете внимание на свойствата на камерата GLCamera1.Roll, Turn и Pitch или нещо подобно. Сменете ги и ще бъдете щастливи. (Всъщност тези свойства променят up и директивите, използвайте изходния код - и ще го видите).
Разбирам всичко, благодаря много.
има препоръка: 1. създайте dummycube и прикрепете камера към него. 2. използвайте хоризонтални движения на мишката, за да завъртите манекена 3. вертикален за камера 4. и ще бъдете щастливи, защото ако не направите такава йерархична структура, тогава камерата ще се сплеска по време на движения (освен ако, разбира се, не нулирате ротациите всеки път)