Skip to content

This is a `Python`-implemented assignments of the course "Games101" given by Lingqi Yan.

Notifications You must be signed in to change notification settings

NeverGiveU/GAMEs101-PyAssignments

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python-implemented Assignments of
the Hot Course🔥Games101🔥

1. Assignment 1

screenshot-assignment-1

2. Assignment 2

screenshot-assignment-2

3. Assignment 3——Shading

1️⃣ 实现 ObjLoader,但后来发现 python 有直接的库可以用😄,不需要去写那么繁杂的 .obj 文件解析器,即

## TOINSTALL
#   pip install objloader

## TOUSEIT
from objloader import Obj
obj = Obj.open(obj_pth).to_array() # 其格式已经是逐个△了

for i in range(0, len(obj), 3):    # 遍历每个△
    for v in obj[i:i+3]:           # 遍历每个结点
        x, y, z, nx, ny, nz, u, v, _ = v
        # xyz -> 结点的世界坐标
        # nx-ny-nz -> 法向量
        # uv -> 纹理坐标
        
        # 用 VM 矩阵对 xyz 作模型变换
        # 用 [(VM)^(-1)]^T 对 nx-ny-nz 作模型变换
        # TODO

用随机的颜色填充每个三角形基本单元,得到:

004-1

2️⃣ Shader

python 中,切记对除数要加 epsilon (e.g., 1e-8),不然容易出事。

使用法向量的分量代替 R/G/B 着色 使用纹理图着色
外加:环境光+漫反射+高光
004-3 004-2
Phong Bump
004-4 004-5
Displacement 好一点的视图凑个数
004-6 004-2-2

4. Assignment 4——绘制贝塞尔曲线

贝塞尔曲线

005

Mesh Subdivision

我们对箱子模型做了网格细分,并使用纹理图着色。详见 ./HW4/main2.py

005-1
Iter = 0
005-1
Iter = 1
005-1
Iter = 2
005-1
Iter = 3

5. Assignment 5——'Whitted-Style' Ray Tracing

006

下边是脚本 Render.py 中相关算法的示意图,详见 ./assets/000.pptx

1653013679598

1653013749274

记录其耗时为:364.4381 sec.

6. Assignment 6——Acceleration Structure: BVH

The output image is being rendered, pls wait ...

009

Assignment 8——质点-弹簧系统

About

This is a `Python`-implemented assignments of the course "Games101" given by Lingqi Yan.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages