如何围绕对象旋转相机?
How do I rotate my camera around my object?
我想围绕场景和中心对象旋转相机。我试过这样做:
glm::mat4 view;
float radius = 10.0f;
float camX = sin(SDL_GetTicks()/1000.0f) * radius;
float camZ = cos(SDL_GetTicks()/1000.0f) * radius;
view = glm::lookAt(glm::vec3(camX, 0.0f, camZ), glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 1.0f, 0.0f));
glUniformMatrix4fv(glGetUniformLocation(shader, "viewingMatrix"), 1, false, &view[0][0]);
但是我的对象在屏幕上加载得更远,并且对象围绕场景旋转,而不是相机。
这是我的顶点着色器:
void main()
{
FragPos = vec3(modelMatrix * vec4(aPos, 1.0));
Normal = mat3(transpose(inverse(modelMatrix))) * aPos;
TexCoord = aTexture;
vec4 transformedPosition = projectionMatrix * viewingMatrix * vec4(FragPos, 1.0f);
gl_Position = transformedPosition;
}
如何使摄像机在场景中旋转而不让对象旋转?
我正在按照本教程进行操作,并尝试弄清楚第一个动画中发生的事情。
https://learnopengl.com/Getting-started/Camera
modelMatrix
glm::mat4 modelMat(1.0f);
modelMat = glm::translate(modelMat, parentEntity.position);
modelMat = glm::rotate(modelMat, parentEntity.rotation.z, glm::vec3(0.0f, 0.0f, 1.0f));
modelMat = glm::rotate(modelMat, parentEntity.rotation.y, glm::vec3(0.0f, 1.0f, 0.0f));
modelMat = glm::rotate(modelMat, parentEntity.rotation.x, glm::vec3(1.0f, 0.0f, 0.0f));
modelMat = glm::scale(modelMat, parentEntity.scale);
int modelMatrixLoc = glGetUniformLocation(shader, "modelMatrix");
glUniformMatrix4fv(modelMatrixLoc, 1, false, &modelMat[0][0]);
视图的目标(glm::lookAt
的第二个参数(应该是对象的中心。物体(和物体的中心(的位置由顶点中的模型矩阵(modelMatrix
(改变。
您必须将对象的世界位置添加到glm::lookAt
的第一个和第二个参数中。对象的位置是模型矩阵的平移。
此外,物体要远离相机,因为radius
要大。
为了解决您的问题,代码必须看起来像这样:
glm::mat4 view;
float radius = 2.0f;
float camX = sin(SDL_GetTicks()/1000.0f) * radius;
float camZ = cos(SDL_GetTicks()/1000.0f) * radius;
view = glm::lookAt(
glm::vec3(camX, 0.0f, camZ) + parentEntity.position,
parentEntity.position,
glm::vec3(0.0f, 1.0f, 0.0f));
glUniformMatrix4fv(
glGetUniformLocation(shader, "viewingMatrix"), 1, false, glm::value_ptr(view));
相关文章:
- 将"Compass"与相机旋转隔离开GL
- 如何围绕对象旋转相机?
- 如何使用gluLookAt围绕OpenGL中的点旋转相机视图
- 如何校准相机焦距,平移和旋转给定四个点
- 从iPhone相机拍摄的视频似乎被OpenCV旋转了90度?我该如何解决这个问题?
- 相机的旋转方向在一段时间后反转
- 将网格与VTK相机对齐(相机的视觉表示,随之移动和旋转的网格)
- 直接相机旋转的错误控制
- 如何使OpenGL相机旋转360度
- C++OpenGl相机旋转使用四元数问题
- 尝试保持光标居中时,相机旋转会受损
- OpenGL第一人称相机旋转和平移
- 在openGL或更具体的LWJGL中,一个人如何相对于相机旋转
- 使用lookAt进行相机旋转
- 变换四元数相机旋转矩阵- OpenCV
- 使用相机旋转使四边形始终显示在相机前面(c++/opengl)
- OpenGL 相机旋转不起作用
- 如何累积相机旋转
- GLM相机X,Y旋转引入Z旋转的问题
- openGL光照随相机旋转