开发者 Daniel Hooper 在一周内使用 C 语言和 raylib 库完成了一个 3D 建模器项目 ShapeUp,代码行数:

  • 2024 行 C 代码
  • 250 行 GLSL 代码
  • 总数 2274 行

资讯评论插图

Daniel Hooper 发布了一篇关于他在一周内使用 C 语言创建 3D 模型器 ShapeUp 的文章。ShapeUp 使用了 signed distance fields (SDFs) 和 ray marching 技术来快速实现 3D 渲染,这使得在短时间内从头开始创建 3D 项目成为可能。

Daniel 选择 C 语言是因为它的编译速度快,语法简洁明了,且易于理解和记忆,同时可以轻松编译成原生代码和 WebAssembly。他的 “日常工作项目” 使用了大量的 C 和 Objective-C 代码,而 ShapeUp 项目相比之下非常简单,只有一个小的 C 文件。

在 ShapeUp 中,模型由 Shapes 结构体组成,这些结构体存储在一个静态分配的数组中,这样可以避免内存分配失败和内存泄漏的问题。尽管 raylib 库在快速启动项目方面表现良好,但它的设计选择和缺乏文档等问题给开发带来了不便。Daniel 还提到了 raylib 的一些问题,如使用 int 而非枚举类型、缺乏参数验证、依赖管理问题以及 raygui UI 库的局限性。

ShapeUp 的开发分为四个主要部分:

  • 用户界面
  • GLSL 着色器生成器光线追踪渲染器
  • 基于 GPU 的鼠标选择
  • 用于导出的 marching cubes 算法

Daniel 强调了正确的优先级设定和避免分心的重要性,以及通过简单有效的解决方案来应对复杂问题的方法。他的开发策略是确保在任何时刻都有一个可工作的 3D 模型器,并随着时间的推移不断改进它。最终,他在一周内完成了一个能够创建有意义 3D 模型并导出为 .obj 文件的程序,该程序也能在多个平台上运行。

The project is 2024 lines of C and 250 lines GLSL. Kind of surprising that a somewhat useful 3D modeler can be expressed in ~2300 lines.

这个项目包含 2024 行 C 代码和 250 行 GLSL 代码。令人惊讶的是,一个相对实用的 3D 建模工具竟然可以在大约 2300 行中实现。

最后还给作者他装起来了:

Other jam participants seemed impressed by ShapeUp but I don’t feel like I achieved much. It’s a relatively simple project. If there is anything special about what I did, it is that I had the taste to choose what to make, the knowledge to make it, and the discipline to do it in a week.

其他参与者似乎对 ShapeUp 印象深刻,但我觉得自己并没有取得太多成就。这是一个相对简单的项目。如果说我做的有什么特别之处,那就是我有品味去选择制作什么,有知识去实现它,还有在一周内完成它的自律。

原文链接:https://danielchasehooper.com/posts/shapeup

免责声明:本文系转载,版权归原作者所有;旨在传递信息,不代表一休教程网的观点和立场。