Skip to content
This repository was archived by the owner on Aug 6, 2022. It is now read-only.

Releases: ACMClassCourse-2021/PPCA-Raytracer-2022

Obj & Codegen Related

24 Jun 07:30

Choose a tag to compare

Obj & Codegen Related Pre-release
Pre-release

Obj Related

此部分希望让你们的场景支持载入obj文件并渲染,也是非常欢迎各位整一些花活的部分。助教为你们提供了不少obj的案例,其中派大星,棒球棒等obj是带有贴图的,我们鼓励大家探索如何实现贴图的导入,其他的obj没有带上贴图,大家可以使用自己在之前构建的texture或者其他属性给它们贴上图案,期待大家的成果!如有需要大家可以自由上网去找自己喜欢的obj模型,感兴趣的同学还可以通过blender等一系列软件创造自己喜欢的3D模型。

完成这一部分你可能需要:

  • 了解obj文件格式 推荐教程
  • 实现一个obj_loader
    • 可调包,如tobj
    • OBJ文件格式和tobj可参考参考资料或自行搜索
  • 实现对简单多边形的渲染

Codegen Related

  • raytracer_codegen:目前,BVHNode 是在运行时构造的。这个过程其实可以在编译期完成。我们可以通过过程宏生成所有的物体,并构造静态的 BVHNode,从而提升渲染效率。而在这个文件中,我们提供了一个在编译期完成bvh构造的例子,你可以模仿这个例子完成一个在编译期完成bvh构建的场景
    • 注意:raytracer_codegenraytracer大概是不能共用module的,你可能需要把一些实现(如Vec3)简单地copy到raytracer_codegen下。
  • data : 在过程宏中,读取data文件,直接从 yaml 或 JSON 文件(选择一种即可)生成场景对应的程序。
    • 例子中 BVHNode 里的 bounding_box 是冗余数据。你可以不使用这个数据。
    • 读 JSON / yaml 可以调包。