相关疑难解决方法(0)

DirectX:查看矩阵的世界 - 我的误解在哪里?

我开始使用DirectX(和SharpDX,因此仅在C#/ hlsl中编程)并且我正在尝试构建自己的相机类.它应该是可旋转的,允许向前和向后移动以及"侧向"运动(经典的第一人称运动通常映射到A和D,在我的情况下加上和向下).为了方便bugfixing模型和世界空间是在我的情况一样,透视投影尚未实现,如旋转的摄像头,和我的相机应该是正Z轴看(到屏幕).我的错误修正模型是一个简单的四边形,宽度和高度为1.f,z = 0并且在屏幕上居中.
为了便于使用,我找到了DirectX Matrix.LookAtLH()并使用它构建我的矩阵,用于从世界到视图坐标的平移,基于我的相机在世界坐标中的位置,向上矢量(现在 - 没有旋转 - 总是正Y轴)和世界坐标中的目标点.
我的(顶点)着色器使用与此矩阵的简单乘法:
output.position = mul(position, worldToView);
LookAt-Matrix计算如下:
Matrix.LookAtLH(vec3(0, 0, -1), vec3(0, 0, 0.5f), vec3(0, 1, 0))
得到这张图片:
相机在(0,0,-1)处看(0,0,0.5f
现在我想将相机移到右边,在这种情况下,将1.f添加到它的X坐标.我的预期结果与之前的四元组相同,向左移动了一点.
我构建了一个新的LootAt矩阵,通过相同的向量移动眼睛坐标和目标坐标:
Matrix.LookAtLH(vec3(1, 0, -1), vec3(1, 0, 0.5f), vec3(0, 1, 0))
结果如下:
相机在(1,0,-1)处看(1,0,0.5f

我移动相机越多越好,但屏幕中心仍保持四边形的中心.这与我对潜在的误解有关Matrix.LookAtLH吗?

c# directx matrix directx-11 sharpdx

3
推荐指数
1
解决办法
2269
查看次数

标签 统计

c# ×1

directx ×1

directx-11 ×1

matrix ×1

sharpdx ×1