我有一条射线,其方向是(o,d)。将其乘以模型矩阵来旋转模型。
o = uCamera.xyz, d = GenRay();
o = vec3(uModel * vec4(o,1));
d = vec3(uModel * vec4(d,0));
然后,梁,RayMarchLeaf(o, d, t, color, normal);,哪里得到的位置vec3 t的碰撞梁。(在模型坐标中)然后将t传输到世界坐标:
t = vec3(inverse(uModel) * vec4(t,1)); // map to world pos;
好的,我们有一个三维相机坐标和一个点。对于深度值,我们可以使用leng
我现在正在开发一个3d游戏引擎(非常简单,只是立方体,也许很少有其他简单的3d对象)。我使用的是C++,对于图形SFML,它是用于C++的2d图形库。
我已经有了透视投影的公式:
S将是屏幕上点的位置。P将是点在三维空间中的位置。E是眼睛的位置(照相机)。
Sx = ((Ez *())/ (Ez + Pz)) + Ex
Sy = (Ez *())/(Ez+ Pz)) + Ey
现在,这真是太好了!我现在要做的是旋转相机本身。我已经考虑过将其他一切都围绕着相机旋转,因为我可以用我当前的代码快速完成这一任务,其中包括3d点的"rotateAroundPoint“函数。
但还有什么比这更快更