zoukankan      html  css  js  c++  java
  • 世界变换与观察变换

    将坐标从局部坐标系转换到世界坐标系的过程称为世界变换(world transform),相应的变换矩阵称为世界矩阵(world matrix)。当所有的物体都从局部空间变换到世界空间后,这些物体就会位于同一个坐标系(世界空间)中。世界矩阵描述的是一个物体的局部空间相对于世界空间的原点位置和坐标轴方向。从世界空间到观察空间的坐标转换称为观察变换(view transform),相应的矩阵称为观察矩阵(view matrix)。为了生成场景2D图像,我们必须在场景中放置一架虚拟摄像机。虚拟摄像机指定了观察者可以看到的场景范围。

    创建观察矩阵:

    D3DXMATRIX* D3DXMatrixLookAtLH(
      _Inout_  D3DXMATRIX *pOut,      //the result of the operation
      _In_     const D3DXVECTOR3 *pEye,    //Input camera position
      _In_     const D3DXVECTOR3 *pAt,    //Input target point
      _In_     const D3DXVECTOR3 *pUp    //Input world up vector
    );

    This function uses the following formula to compute the returned matrix:

    zaxis = normal(At - Eye)
    xaxis = normal(cross(Up, zaxis))
    yaxis = cross(zaxis, xaxis)
     xaxis.x             yaxis.x           zaxis.x             0
     xaxis.y             yaxis.y           zaxis.y            0
     xaxis.z             yaxis.z           zaxis.z            0
    -dot(xaxis, eye)  -dot(yaxis, eye)  -dot(zaxis, eye)  1

    通常,世界坐标系的y 轴就是“向上”方向,所以“向上”向量 通常设为(0, 1, 0)。举一个例子,假设摄像机相对于世界空间的位置为(5, 3,−10),目标点为世界原点(0, 0, 0)。
    我们可以使用如下代码创建观察矩阵:

    D3DXVECTOR3 position(5.0f, 3.0f, -10.0f);
    D3DXVECTOR3 target(0.0f, 0.0f, 0.0f);
    D3DXVECTOR3 worldUp(0.0f, 1.0f, 0.0f);
    D3DXMATRIX V;
    D3DXMatrixLookAtLH(&V, &position, &target, &worldUp);

  • 相关阅读:
    转:浅谈图片服务器的架构演进
    转:Spring AOP详解
    转:Spring AOP 注解方式实现的一些“坑”
    spring AOP自定义注解方式实现日志管理
    spring的普通类中如何取session和request对像
    spring session
    转:通过Spring Session实现新一代的Session管理
    转:一个Restful Api的访问控制方法(简单版)
    Python : 什么是*args和**kwargs[转载]
    tornado项目注意点
  • 原文地址:https://www.cnblogs.com/ht-beyond/p/4450991.html
Copyright © 2011-2022 走看看