🎮 控制方式:WASD / ←↑→↓ 移动/旋转,Q / E 上升/下降,空格键 回到初始位置


✅ 支持内容

该引擎适用于不相互接触的静态矩形立方体(长方体)的正确绘制。适合构建静态3D地图、平台结构等。


⚙️ 渲染机制概述

1. 三维转换与视图变换

  • 先定义世界坐标系与视图坐标系

  • 使用旋转矩阵(rotation matrix)进行视图变换

  • 由三维坐标转换为二维坐标(基于深度缩放实现透视)

    → 深度越大,位置越靠近屏幕中心

2. 绘制方式

  • 点渲染:若深度 ≤ 1 则忽略该点

  • 线 / 面渲染:对深度小于1的部分进行裁剪处理(clipping)

  • 使用 TriFiller 技术在变换后的顶点间生成三角面,构成立体表面

3. 性能优化

  • 所有涉及三角函数的旋转计算,在程序初始化时预计算完成,避免运行时重复计算,提高帧率


🌲 空间分割与绘制排序:k-d Tree 实现方式

为了实现正确的绘制顺序(避免遮挡错误),引擎使用了一种BSP(Binary Space Partitioning)的简化版本 —— k-d 树(k-dimensional tree):

步骤如下:

  1. 空间分割

    • 从所有物体中,选取一个切分平面

    • 评估每个平面切分其他物体的代价(越少越好)

    • 从中选择切割代价最小,且两边物体数量差值最小的平面进行划分

  2. 构建二叉树结构

    • 每次划分形成左右两个子空间

    • 递归进行,直到每个子空间只包含一个物体为止

    • 最终形成空间层次结构

  3. 绘制时遍历 k-d 树

    • 从相机(摄像机)位置出发,判断当前帧中应先绘制哪一侧

    • 若某一空间在视野外,仅绘制靠近相机一侧,避免无效渲染


🚀 效果与优势

  • 实现了精准的绘制顺序高效的空间管理

  • 无需克隆体,完全通过绘图扩展(pen extension)+ 数据结构模拟

  • 适合复杂结构的静态3D场景