Java软光栅渲染器-摄像机控制器

目标 为了进一步确认变换矩阵的作用,我需要一个摄像机控制器,用来操纵摄像机在场景中运动。 记录用户输入 按AD键,摄像机左右运动 按WS键,摄像机前后运动 按QZ键,摄像机上下运动 按左右方向键,摄像机绕Y轴左右旋转 按上下方向键,摄像机绕X轴上下旋转 鼠标拖拽旋转摄像机 主要源代码: Input CameraController 实现 ...

Java软光栅渲染器-三维观察

目标 定义虚拟摄像机 计算观察变换矩阵 计算透视投影变换矩阵 计算视口变换矩阵 显示一个立方体的线框模型 本章相关源码: Camera Mesh 实现 这一部分的实现有点复杂,主要是各种变换矩阵的演算。我周五晚上第一次实现这个功能的时候,照抄jME3的代码,但是结果并不让人满意。 后来我感觉不弄明白计算方法是行不通的。于是花了两天时间学习各种资料,并在纸上推算了一遍,周日才把程序改对了。错误的原因, ...

Java软光栅渲染器-空间变换

空间变换 目标 对于所有3D图形引擎来说,将一组向量从一个坐标空间变换到另一个坐标空间的操作是最常用的和最基本的操作之一。例如,一个模型的顶点数据通常以对象空间的坐标形式保存,而在渲染该模型前,顶点坐标必须变换到虚拟相机空间才能被正确处理。本章主要介绍不同笛卡尔坐标系之间的线性变换,包括简单的比例变换、平移变换和旋转变换。 《3D游戏与计算机图形学中的数学方法》,第4章 坐标变换 本文将要实现下列变换: 实现比例变换 实现旋转变换 实现平移变换 实现齐次坐标 实现法向量变换 ...

Java软光栅渲染器-矩阵

目标 定义并实现3x3矩阵的运算 扩展实现4x4矩阵 源代码: Matrix4f Matrix3f 实现 矩阵的数学定义 在线性代数中,矩阵就是以行和列形式组织的矩形数字块,可以使用二维数组来描述一个矩阵。使用大写加粗的字母来表示矩阵,如:M、V、P。使用小写的m[i][j]来表示矩阵中第i行第j列元素。 ...