https://github.com/cuc-zihang-liu/ray-tracing
该光线追踪算法采用了递归光线追踪策略,通过追踪光线的反弹来模拟全局光照效果。 结合了Blinn-Phong光照模型进行光照计算,该模型包含了环境光、漫反射和高光反射项,以实现更真实的光照效果。
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (5.3%) to scientific vocabulary
Keywords
Repository
该光线追踪算法采用了递归光线追踪策略,通过追踪光线的反弹来模拟全局光照效果。 结合了Blinn-Phong光照模型进行光照计算,该模型包含了环境光、漫反射和高光反射项,以实现更真实的光照效果。
Basic Info
Statistics
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 0
Topics
Metadata Files
README.md
Python 光线追踪渲染器
一个基于递归光线追踪策略的光线追踪渲染器。
目录
关于项目

本项目是一个基于Python的简易光线追踪渲染器。它能够渲染一个包含多种几何形状(球体、立方体、四面体、平面)的3D场景,并应用Phong光照模型来计算光照效果,最终生成一张彩色的2D图像。
功能特性
- 支持多种几何体:球体, 立方体, 四面体, 平面
- 实现Phong光照模型 (环境光、漫反射、镜面高光)
- 支持多种自定义材质和多个点光源
- 支持对物体进行旋转等变换
- 可配置的相机 (位置, 朝向, 视场角)
- 使用
tqdm显示渲染进度条 - 渲染结果可保存为
output.png
实现技术
上手指南
请按照以下说明在本地设置并运行该项目。
开发前的配置要求
- Python 3.x
- pip (Python包管理工具)
安装与运行
- 克隆仓库到本地
sh git clone https://github.com/your_github_name/your_repository.git - 进入项目代码目录
sh cd your_repository/代码文件 - 通过
pip安装依赖sh pip install -r requirements.txt - 运行主程序
sh python ray_tracer.py程序会开始渲染场景,并显示一个进度条。渲染完成后,你会在代码文件目录下找到output.png。
文件目录说明
项目主要包含在 代码文件 目录下:
代码文件/
├── ray_tracer.py # 主程序,负责场景设置、渲染循环和图像输出
├── scene.py # 定义 Scene 类,管理场景中的所有对象和光源
├── camera.py # 定义 Camera 类,用于生成光线
├── geometry.py # 定义各种几何体(球体、立方体等)及其光线求交逻辑
├── material.py # 定义 Material 类,描述物体的表面属性
├── vector.py # 定义 Vector3 类,用于三维向量运算
├── requirements.txt # 项目依赖的Python库
└── output.png # 默认的渲染输出图像
项目架构
本项目采用经典的光线追踪算法架构:
1. 初始化: ray_tracer.py 脚本是程序的入口。它首先会初始化一个 Scene 对象,并向其中添加几何体(如 Sphere, Cube)、材质 (Material) 和光源。
2. 相机设置: 创建一个 Camera 对象,定义其在3D空间中的位置、观察方向和视野范围。
3. 光线投射: 程序遍历输出图像的每一个像素点。对于每个像素,Camera 会根据其位置和方向计算出一条对应的光线 (Ray)。
4. 光线求交: Scene 对象接收到光线后,会遍历场景中的所有几何体,计算光线与哪个物体相交,并找出最近的交点。各个几何体自身的类 (geometry.py) 中定义了具体的求交计算方法。
5. 颜色计算: 找到交点后,根据该点所在物体的 Material 属性(如颜色、反光度)以及场景中的光源信息,使用 Phong光照模型 计算出该点的最终颜色。
6. 图像生成: 将计算出的每个像素点的颜色填充到图像中,渲染完成后,使用 Pillow 库将最终图像保存为 PNG 文件。
版本控制
该项目使用Git进行版本管理。您可以在repository参看当前可用版本。
作者
请在此处填写你的信息
版权说明
该项目签署了MIT 授权许可,详情请参阅 LICENSE.txt
鸣谢
Owner
- Name: 刘子航
- Login: CUC-ZIHANG-LIU
- Kind: user
- Company: 中国传媒大学
- Repositories: 1
- Profile: https://github.com/CUC-ZIHANG-LIU
GitHub Events
Total
Last Year
Dependencies
- Pillow >=8.3.1
- numpy >=1.21.0
- tqdm >=4.62.3
- Pillow >=8.3.1
- numpy >=1.21.0
- Pillow >=8.3.1
- numpy >=1.21.0