• 大小: 22.45MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-27
  • 语言: C/C++
  • 标签: Dx11  

资源简介

DX图形设计的期末大项目,给各位参考一下。应有的功能都有了。

资源截图

代码片段和文件信息

#include “Camera.h“

Camera::Camera()  //构造函数,初始化Camera类的成员变量
{
flag = Rotate | Translate;    //指定标识符
rotateX = 0.0f;               //绕X轴旋转的角度
rotateY = 0.0f;                //绕Y轴旋转的角度
rotateZ = 0.0f;                //绕Z轴旋转的角度
move = XMVectorSet(0.0f 0.0f 0.0f 1.0f);  //初始化移动位置
eye = XMVectorSet(0.0f 0.0f 0.0f 1.0f);   //初始化视点位置
//初始化相机的旋转矩阵
//这里需要将XMMATRIX对象转变成XMStoreFloat4x4对象
XMMATRIX cameraRotationMATRIX = XMMatrixIdentity();
XMStoreFloat4x4(&cameraRotation cameraRotationMATRIX);
//初始化相机的观察矩阵
//同样需要将XMMATRIX对象转变成XMStoreFloat4x4对象
XMMATRIX viewMATRIX = XMMatrixIdentity();
XMStoreFloat4x4(&view viewMATRIX);
}

//仰俯
void Camera::Pitch(float angle)
{
rotateX += angle;
flag |= Rotate;
}

//偏转
void Camera::Yaw(float angle)
{
rotateY += angle;
flag |= Rotate;
}

//设置视点位置
void Camera::SetEye(const XMVECTOR& position)
{
eye = position;
flag |= Translate;
}

//获得当前视点位置
const XMVECTOR& Camera::GetEye()
{
return eye;
}

//获得当前摄像机的观察点
const XMVECTOR& Camera::GetAt()
{
return at;
}

//获得当前摄像机的正方向
const XMVECTOR& Camera::GetUp()
{
return up;
}

//向前移动摄像机,value取负值则向后移动
void Camera::MoveForwardBy(float value)
{
move = XMVectorSetZ(move value);
flag |= Translate;
}

//向右移动摄像机,value取负值则向左旋转
void Camera::MoveRightBy(float value)
{
move = XMVectorSetX(move value);
flag |= Translate;
}

//向上移动摄像机,value取负值则向下移动
void Camera::MoveUpBy(float value)
{
move = XMVectorSetY(move value);
flag |= Translate;
}

//应用当前设置生成观察变换矩阵
void Camera::Apply()
{
XMMATRIX cameraRotationMATRIX;    //声明XMMATRIX一个对象用于矩阵变换
if (flag != None)
{
if ((flag & Rotate) != 0)  //如果包含旋转标识
{
//将Rotate取否,即1110,再和flag进行与运算
//如果flag=0011则运算结果为0010
flag &= ~Rotate;
//在三个坐标系上进行旋转变换
cameraRotationMATRIX = XMMatrixRotationX(rotateX) * XMMatrixRotationY(rotateY) * XMMatrixRotationZ(rotateZ);
XMStoreFloat4x4(&cameraRotation cameraRotationMATRIX); //将生成的XMMATRIX存放到成员cameraRotation
}

if ((flag & Translate) != 0)//如果包含平移标识
{
//将Translate取否,即1110,再和flag进行与运算
//如果flag=0010则运算结果为0000
flag &= ~Translate;
//从成员cameraRotation获得旋转矩阵
cameraRotationMATRIX = xmloadFloat4x4(&cameraRotation);
//重新计算视点位置
eye += XMVector4Transform(move cameraRotationMATRIX);
move = XMVectorZero(); //重置移动向量
}
//从成员cameraRotation获得旋转矩阵
cameraRotationMATRIX = xmloadFloat4x4(&cameraRotation);
//重新计算观察点
at = eye + XMVector4Transform(XMVectorSet(0.0f 0.0f 1.0f 1.0f) cameraRotationMATRIX);
//重新计算摄像机正方向
up = XMVector4Transform(XMVectorSet(0.0f 1.0f 0.0f 1.0f) cameraRotationMATRIX);
//重新计算观察矩阵
XMMATRIX viewMATRIX = XMMatrixLookAtLH(eye at up);
//将新生成的观察矩阵存入成员view中
XMStoreFloat4x4(&view viewMATRIX);
}
}

//获得观察坐标系变换矩阵
const XMFLOAT4X4& Camera::GetView()
{
return view;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-01-03 11:37  D3Djumpganme\
     目录           0  2018-01-03 11:37  D3Djumpganme\D3DTexture\
     文件    44171264  2018-01-03 11:37  D3Djumpganme\D3DTexture.sdf
     文件         976  2017-12-20 10:25  D3Djumpganme\D3DTexture.sln
     文件       31232  2018-01-03 11:37  D3Djumpganme\D3DTexture.v12.suo
     文件       20753  2018-01-02 19:54  D3Djumpganme\D3DTexture\0.png
     文件       18986  2018-01-02 19:55  D3Djumpganme\D3DTexture\1.png
     文件       20400  2018-01-02 19:55  D3Djumpganme\D3DTexture\2.png
     文件       20726  2018-01-02 19:55  D3Djumpganme\D3DTexture\3.png
     文件       19637  2018-01-02 19:56  D3Djumpganme\D3DTexture\4.png
     文件       20143  2018-01-02 19:56  D3Djumpganme\D3DTexture\5.png
     文件       21233  2018-01-02 19:56  D3Djumpganme\D3DTexture\6.png
     文件       19803  2018-01-02 19:57  D3Djumpganme\D3DTexture\7.png
     文件       21392  2018-01-02 19:57  D3Djumpganme\D3DTexture\8.png
     文件       21175  2018-01-02 19:58  D3Djumpganme\D3DTexture\9.png
     文件      592776  2018-01-02 19:59  D3Djumpganme\D3DTexture\bg14.jpg
     文件       66614  1999-09-25 20:19  D3Djumpganme\D3DTexture\BOX.bmp
     文件        3242  2018-01-01 16:34  D3Djumpganme\D3DTexture\Camera.cpp
     文件        1433  2018-01-03 11:34  D3Djumpganme\D3DTexture\Camera.h
     文件       69410  2018-01-03 11:37  D3Djumpganme\D3DTexture\d3dTexture.cpp
     文件        4816  2018-01-01 16:34  D3Djumpganme\D3DTexture\D3DTexture.vcxproj
     文件        1642  2018-01-01 16:34  D3Djumpganme\D3DTexture\D3DTexture.vcxproj.filters
     文件        3267  2017-12-20 10:31  D3Djumpganme\D3DTexture\d3dUtility.cpp
     文件        1259  2017-12-20 10:31  D3Djumpganme\D3DTexture\d3dUtility.h
     目录           0  2018-01-03 11:36  D3Djumpganme\D3DTexture\Debug\
     文件      228424  2018-01-03 11:34  D3Djumpganme\D3DTexture\Debug\Camera.obj
     文件       10661  2018-01-03 11:36  D3Djumpganme\D3DTexture\Debug\D3DTexture.log
     文件      510358  2018-01-03 11:36  D3Djumpganme\D3DTexture\Debug\d3dTexture.obj
     目录           0  2018-01-03 11:36  D3Djumpganme\D3DTexture\Debug\D3DTexture.tlog\
     文件        3326  2018-01-03 11:36  D3Djumpganme\D3DTexture\Debug\D3DTexture.tlog\cl.command.1.tlog
     文件       62976  2018-01-03 11:36  D3Djumpganme\D3DTexture\Debug\D3DTexture.tlog\CL.read.1.tlog
............此处省略28个文件信息

评论

共有 条评论