我正在阅读“实时渲染”一书中的广告牌部分,作者解释说,为了将一个四边形(即广告牌)旋转到某个方向,旋转矩阵将是
M = (r, u, n)
其中r、u、n是计算出的(归一化)方向向量。
从书中:
我已经了解到,为了旋转物体,必须使用包含大量脏的sin()和cos()计算的矩阵。为什么这个M矩阵使用普通的方向向量?
关于计算机视觉的另一个问题。
摄像机矩阵(也称为投影矩阵)通过以下关系将3D点X (例如在现实世界中)映射到图像点x (例如在照片中):
l **x** = P **X**
P描述了相机的一些外部和内部特性(它的方向、位置和投影特性)。当我们引用投影性质时,我们使用一个校准矩阵K。同样,R表示相机的旋转和它的平移,因此我们可以将P写为:
P = K [ R | t ]
R= t表示矩阵R和t的级联。
R is a matrix 3 X 3
t is a vector 3 X 1
K is a matrix 3 X 3
[R | t ] is a matrix 3 X 4
As a cons
这应该很容易,但我一直在试图找到一个简单的解释,我可以理解。我有一个对象,我想用OpenGL表示为圆锥体。该对象具有x、y、z坐标和速度矢量vx、vy和vz。锥应该指向速度矢量的方向。
因此,我认为我的PyOpenGL代码应该如下所示:
glPushMatrix()
glTranslate(x, y, z)
glPushMatrix()
# do some sort of rotation here #
glutSolidCone(base, height, slices, stacks)
glPopMatrix()
glPopMatrix()
那么,到目前为止,这是正确的吗?我要用什么来
我正在为一个OpenGL ES 2.0 iOS应用程序实现平移,在某些情况下,我正在努力在z方向上进行平移。最初加载模型时,y+位于屏幕顶部,x+指向屏幕的左侧,而z+则指向屏幕外的用户。在这种情况下,平移的工作方式与预期的一样--平移“向右”按预期沿正x轴移动模型。Y也适用-平移“向上”沿正y轴移动模式(坐标变为负值,因此我们只是翻转坐标以正确执行操作)。问题总是与z轴有关,当模型旋转时,z+轴现在指向右边,平移“右”我得到负的z值,平移到左边我得到正值,所以看起来坐标像z轴一样翻转。当z+指向屏幕的左侧时,也会出现同样的逻辑--负值表示向左平移,正值表示向右平移。到目前一切尚好。
当z+现
当我尝试改变方向时,我的相机围绕一个点旋转。如果我旋转相机,比如说,在Y轴上旋转30度,而不是相机向右看30度,相机绕着它正在看的点旋转。
o is the camera, A and B are 3D models. The lines show line-of-sight.
This is what I expect:
A B
| > /
| /
| /
|/
o
This is what actually happens:
A B
|\
| \
| \
|