Im, создавая что-то в JOGL и im, чтобы заставить камеру двигаться с помощью клавиатуры или мыши, это действительно не имеет значения, если камера может обтекать объект и, возможно, увеличивать и уменьшать масштаб , Если использовать клавиатуру/мышь трудно, я также не возражаю использовать некоторые кнопки в приложениях, например. стрелки вверх, вниз, влево и вправо и кнопка «плюс» и «минус» для увеличения, но в основном проще всего. Im строит что-то вроде Лего, но его оказалось довольно сложным, не имея возможности переместить камеру.JOGL - перемещение камеры
ответ
Чтобы переместить вашу «камеру», вам необходимо применить преобразование glTranslate3f() в начале вашей функции рендеринга. Если местоположение вашей камеры должна быть
cameraPos = <cx, cy, cz>
, то вы должны использовать
glTranslate3f(-cx, -cy, -cz);
Это компенсирует все, что обращается к этому вектору.
Чтобы использовать клавиатуру, чтобы это произошло, вы захотите использовать реализацию KeyListener и определить функции, указанные интерфейсом.
public void keyPressed(KeyEvent ke){ // put something intelligent here... }
public void keyReleased(KeyEvent ke){}
public void keyTyped(KeyEvent ke){}
Убедитесь, что зарегистрировать реализующий класс как KeyListener вашему GLJPanel (или любой другой, который вы используете). Затем внутри функции keyPressed (...) проверьте, какая клавиша нажата, и увеличивайте соответствующую координату камеры.
Если вы хотите получить действительно фантазию и позволить мыши, чтобы вы могли осмотреться, вы можете сделать подобное, создав MouseMotionListener и зарегистрировав его. Преобразование OpenGL, которое необходимо для включения в игру, может варьироваться в зависимости от типа поведения мыши, которое вы ищете. Если вам просто нужно что-то простое, что позволит вам осмотреться, вы, вероятно, можете уйти с отслеживанием движения мыши в направлениях x и y и позволить ему изменять некоторые углы смещения. Перемещение мыши в направлении x вращается вокруг оси y. Движение в направлении y вращается вокруг оси x. Как вызов OpenGL, как и с glTranslate3f(), вы можете использовать glRotatef() для поворота вокруг каждой оси.
glRotatef(angleX, 1, 0, 0); // to rotate about the x-axis
glRotatef(angleY, 0, 1, 0); // to rotate about the y-axis
Опять же, это просто быстрое и простое решение. Это не будет красиво, но это сработает. Если вы хотите реализовать что-то немного странное, вы можете посмотреть на вычисление матрицы вращения произвольной оси.
http://inside.mines.edu/~gmurray/ArbitraryAxisRotation/
(один из многих ресурсов на эту тему)
Вы можете использовать функцию под названием «gluLookAt (позиция х, положение у, положение г, х, где камера смотрит, у из где камера смотрит, z где камера смотрит, 0, 1, 0);
Что касается части «0, 1, 0», оставьте их такими, какие они есть, поскольку вы просто панорамируете и увеличиваете масштаб. Это просто влияет на наклон камеры.
- 1. Как перемещать положение глаз камеры в JOGL?
- 2. Перемещение камеры в OpenGL
- 3. Остановка перемещение камеры (LIBGDX)
- 4. Перемещение камеры в Scenekit
- 5. OpenGL - Перемещение камеры вперед
- 6. Перемещение камеры вокруг объектов
- 7. Перемещение камеры gluLookAt
- 8. Перемещение камеры в XNA, C#
- 9. Opengl: перемещение камеры «fps style»
- 10. Перемещение 3d-камеры на XNA
- 11. Libgdx: Перемещение поворотной камеры перспективы
- 12. Перемещение сферы относительно поворота камеры
- 13. LibGDX: Перемещение камеры с Touch
- 14. Перемещение камеры в SpriteKit Swift
- 15. Перемещение камеры на перспективной карте
- 16. Перемещение камеры в определенных местах расположения
- 17. Unity3d - Перемещение камеры буквально разрезает FPS пополам?
- 18. libGDX: Перемещение камеры в окне просмотра сцены
- 19. Перемещение камеры в UnityScript 2d в C#
- 20. Перемещение камеры, чтобы посмотреть на объект плоскости
- 21. Three.js Перемещение камеры или двух разных камер
- 22. Перемещение камеры по двум осям в WorldSpace
- 23. Перемещение камеры в игре «AndEngine» для Android
- 24. Перемещение камеры в фиксированное положение и ось
- 25. three.js - перемещение камеры внутри геометрии трубы
- 26. glulookat() - перемещение камеры с клавиатурой (OpenGL)
- 27. Перемещение камеры и света с OrbitControls.js
- 28. Лучше изменить визуализацию или перемещение камеры?
- 29. Перемещение «камеры» в 2D-графической среде openGL
- 30. libGDX Перемещение орфографической камеры вниз по текстуре
В чем вопрос? –
Покажите нам какой-то код и что вы уже пытаетесь переместить камеру. –
Вопрос в том, есть ли у кого-нибудь что-нибудь, что может это сделать? Я абсолютно не знаю, как это сделать, в то время как ive получил клавиши со стрелками, вращающие объект, но это не то, что я хочу – thrash