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);

  • 相关阅读:
    PHP二维数组排序(感谢滔哥lvtao.net)
    MySQL 日志的类型
    PHP安装Xdebug扩展并配置PHPstorm调试(Centos、Windows)
    $.post 和 $.get 设置同步和异步请求
    Jquery获取敲击回车时光标所在的位置
    Jquery 数组与字符串之间的转换
    使整个页面变灰的css代码
    PHP的性能优化方法总结
    Android中完全退出当前应用系统
    Android 遮罩层效果
  • 原文地址:https://www.cnblogs.com/ht-beyond/p/4450991.html
Copyright © 2011-2022 走看看