Skip to content

TwinTrack 是一款基于 OpenGL 3.3 Core 的双人同屏三维赛车游戏,包含完整比赛流程与 HUD,集成阴影映射、Blinn-Phong 多光源光照、天空盒与昼夜切换,并实现车辆运动学、碰撞检测与精确计圈判定等核心系统。

Notifications You must be signed in to change notification settings

DuSuang/TwinTrack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TwinTrack

A Split-Screen 3D Racing Game Built with OpenGL 3.3 Core

一个功能完整的双人同屏三维赛车游戏,展示现代计算机图形学核心技术:阴影映射、Blinn-Phong 光照、天空盒、物理模拟、碰撞检测。


核心功能

游戏系统

  • 双人分屏竞速:支持 1-3 圈自定义赛程,实时排名显示
  • 完整游戏流程:启动画面、主菜单、倒计时、比赛进行、结束画面
  • HUD 显示系统:圈数统计、速度表、排名指示、比赛计时
  • 精确计圈系统:基于门判定算法,包含越线验证与方向校验

渲染技术

  • 阴影映射:4096×4096 深度贴图,PCF 软阴影,自适应偏差算法
  • Blinn-Phong 光照:方向光 + 点光源系统,支持 Fresnel 菲涅尔效应
  • 天空盒系统:立方体贴图实现,支持白天/夜间场景切换
  • 材质系统:MTL 格式支持,纹理映射与 Mipmapping 优化

物理模拟

  • 车辆运动学模型:加速、制动、转向、摩擦力模拟
  • 多层碰撞检测:纹理边界检测与四角点矩形检测双重策略

场景内容

  • 赛道系统:完整封闭赛道,支持边界检测与圆形裁切
  • 装饰建筑:埃菲尔铁塔、斗兽场、自由女神像等地标模型
  • 环境元素:街灯系统(含点光源)、树木植被
  • 车辆模型:LEGO 风格赛车

技术实现

模块 核心技术
阴影系统 Shadow Mapping + PCF 软阴影 + 自适应偏差
光照模型 Blinn-Phong + 多光源系统 + Fresnel 效应
天空盒 Cubemap + 无限远效果实现
碰撞检测 纹理分析与四角点矩形双重检测策略
计圈系统 门判定算法 + 防误触发机制 + 线性插值越线计算
资源管理 自实现 OBJ/MTL 解析器,纹理缓存,模型共享机制

技术栈

图形 API:OpenGL 3.3 Core 依赖库:GLFW、GLM、GLAD、ImGui 构建系统:CMake + FetchContent 开发语言:C++17


构建与运行

环境要求

  • CMake ≥ 3.15
  • C++17 兼容编译器
  • OpenGL ≥ 3.3 驱动支持
  • 网络连接用于首次构建依赖下载

快速开始(推荐)

一键运行(Windows)

build_and_run.bat

脚本将自动完成配置、编译和启动游戏。

手动构建

Windows:

# 配置项目
cmake -S . -B build

# 编译
cmake --build build --config Release

# 运行
.\build\bin\Release\TwinTrack.exe

清理构建

clean.bat

清理所有构建产物(build/、out/、.vs/),恢复项目到初始状态。


操作说明

控制 玩家 1 玩家 2
前进/倒车 W / S ↑ / ↓
左转/右转 A / D ← / →
切换视角 V Enter

通用操作

  • ESC:暂停/继续游戏
  • N:切换白天/夜间场景
  • 任意键:跳过启动画面

项目结构

TwinTrack/
├── assets/             # 游戏资源
├── src/
│   ├── core/           # 核心系统
│   ├── render/         # 渲染模块
│   └── ui/             # 用户界面
├── include/            # 头文件库
├── external/           # 第三方代码
├── CMakeLists.txt      # 构建配置
└── README.md

核心算法

阴影映射流程

  1. 阴影通道:从光源视角渲染深度图到 Framebuffer
  2. 主渲染通道:从相机视角渲染场景,采样深度图计算阴影遮蔽

计圈检测算法

  1. 防误触发机制:车辆需先离开起点区域后移动至少 10 单位方可计圈
  2. 越线检测:检测车辆位置从起点线负侧跨越至正侧
  3. 三重验证:运动方向正确性 + 越线点位置 + 门宽度约束

碰撞响应策略

  • 滑动修正:保留切向运动分量,消除法向分量,实现沿边界自然滑动

License: Educational Use Only

Course: Computer Graphics

About

TwinTrack 是一款基于 OpenGL 3.3 Core 的双人同屏三维赛车游戏,包含完整比赛流程与 HUD,集成阴影映射、Blinn-Phong 多光源光照、天空盒与昼夜切换,并实现车辆运动学、碰撞检测与精确计圈判定等核心系统。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages