Dust3D是Jeremy HU 个人开发的一款3D建模软件,主要用于游戏模型的快速制作。虽然作者已经在某种程度上放弃了该项目,但其分享的Dust3D从起心到技术选择到最终实现的整个心路过程,很有借鉴意义。

1、起心动念

自2015年以来我就想写一个3D建模软件,那时我正在开发2.5D的MMORPG游戏。我在YouTube自学了一段时间的Blender软件,Blender其实相当不错,但是,这个过程中的工作量让我意识到,一个人不可能完成大量的模型、制作纹理、动画,然后在游戏中使用,因为只是建立一个简单的恐龙模型就花了我半天时间。

我看了很多关于如何快速制作游戏模型的教程,试图找出一个统一的方式,一个可重复的模式,可以在编程语言中简化。我总结了制作模型的最常见步骤:首先,为前视图、侧视图和后视图设置参考样张,其次,制作平面,然后细分为六边形,通过遵循参考仰仗挤压此六边形,调整面部大小,以不同角度微调,来回调整,最后获得基本模型。

2、最初的实验

看起来我可以写一个软件来自动完成这些步骤,输入参考样张,它输出一个模型。让我们实现这一点,我做了一个非常粗糙的测试程序,以识别图像中的每个视图,提取边界,根据边界挤压面孔,但它太小了,不能在游戏中使用。

3、来自Jimmy的新想法

有一天,我搜索了一些有关怪物生成的关键字,并找到了Jimmy Gunawan的博客, 我被他的文章震惊了,这就是我要找的,这就是答案,我非常兴奋,当读到博客上关于Blender的皮肤修改器背后的技术时,我发现了论文:B-Mesh: A Fast Modeling System for Base Meshes of 3D Articulated Shapes,这一刻我就知道,是时候将我最初的想法变成真实的产品了。

4、启动Dust3D项目

我启动了 Dust3D 项目, 并在reddit贴出了我的计划,虽然这是我还没有做很多事情。我这样做是因为,作为游戏行业的新手,我不想在一开始错过一些事情。感谢令人赞叹的reddit用户,我学到了很多新的软件名称和建模术语,如Meshmixer,CGAL,等等。

5、重新发明车轮

重新发明车轮很有趣,所以我没有严格遵循尽量使用已有库的建议,我想从头开始制作一个3D软件。我想逐点逐行绘制3D世界。这是 Dust3D 的第一个屏幕截图,使用原始 OpenGL,除了 OpenGL 环境,没有任何其他依赖:

很快,我发现调试绘图问题花了这么多时间,所以我小心谨慎地引入了GLU库,现在看起来是这样:

过了一段时间,我认为Qt非常容易使用,所以我小心地引入了Qt。然后实现了 Bmesh 算法:

Catmull-Clark 细分:

现在,是时候做一个更正式的用户界面了。

6、再次重造车轮

你可以看到,dust3d是从零依赖开始,然后不可避免地引入一些东西。如果继续这样下去,一切顺利。但有些事情发生了。由于没有复杂的UI,我使用Blender建立Bmesh球之间的关系,我发现Blender软件在Callada输出器中的一个bug,我试图自己修复它,所以我下载了Blender的源代码,修复并提交了一个补丁。在此过程中,我厌倦了折腾C++的不同版本的问题,因此我决定从 Dust3D 代码库中删除所有C++代码。

Qt是C++,因此Qt被删除。我试图找到一些替代的UI库,ImGui看起来很有前途,但因为它是C++写的,所以被放弃了。我又从零开始实现UI,这就是它的外观:

啊哈!

7、休整与重新思考

当我在澳大利亚启动Dust3D 项目时, 我使用的是工作和度假签证。有很多事情阻止了我继续开发这个项目,那段时间相当繁忙。这让我重新思考所做的决定。删除所有的依赖并不好,我正在做的是一个3D建模软件,而不是GUI库。我也开始考虑建模过程的一些细节。在Bmesh论文中,作者指出了存在的一些限制,即它不适合制做锐利的边缘。我们都知道,当我们为游戏做模型时,不可避免地会需要做出一些锋利的形状。

8、技术路线再调查

我利用YouTube上的视频教程梳理了几乎所有的建模软件,试图找出他们的实现机制。这些软件包括Houdini,它的以节点为基础的建模技术让我感到震惊。我想这就是我想要的, 这就是答案, 看起来很熟悉, 对吗?

从零实现一个3D建模软件相关推荐

  1. 试用一款开源的轻量级3D建模软件《Dust3D》

    关于<Dust3D> Dust3D is brand new 3D modeling software. It lets you create watertight 3D models i ...

  2. SaaSpace:适合游戏开发者的最佳 3D 建模软件

    自Atari上的"Pong"以来,视频游戏已经走过了漫长的道路,现在身临其境的3D图形已成为行业标准. 3D建模软件基本上是任何游戏开发人员工具包的要求,并且有很多不同的选项.许多 ...

  3. 零基础学习3D建模,第一步:3D建模软件有哪些?给你科普一下

    1.建模软件有很多,为大家科普下建模软件有哪些: 高模:Maya.3Dmax.Zbrush 中模:Maya.3Dmax 低模:Maya.3Dmax.Topogun 展UV:Maya.Zbrush.Un ...

  4. 零基础学习次世代游戏建模,3D建模软件全解!零基础的你快收藏

    [3D建模软件学习资料领取方式见文末] 对国内多数设计专业的学生来说,3D建模软件可谓既熟悉,又陌生: 熟悉是因为,这些软件普遍存在于同学们的日常工作和学习中: 陌生是因为,国内高校基本不开设软件类课 ...

  5. 9个常用的3D建模软件,你还知道哪些?

    你了解多少? 01Solidworks Solidworks是工业设计师经常会用到的一款建模软件.Solidworks是一款在Mircosoft Windows上才能运行的建模计算机辅助设计和计算机辅 ...

  6. 学3d建模和计算机编程,超好用的3D建模软件全科普,想要学好建模的你千万别错过!...

    3D建模软件普遍存在于我们的日常的学习和工作中,但是高校基本不开设软件类课程.在真正的工作中,我们才发现在学校自学的那点软件基础完全不够用,甚至连基本的软件知识都不清楚. 所以今天,我们对几款超好用的 ...

  7. 有什么适合新手学习的3D建模软件?

    3D max和maya应该是目前最主流的,如果涉及到高精度建模的话,个人强烈推荐zbrush这一款软件. 现在的3d软件建模制作流程包括:3Dmax建中模,ZB雕刻高模,maya拓扑低模,mayaUV ...

  8. 自学游戏建模,有什么适合新手学习的3D建模软件?

    3D max和maya应该是目前最主流的,如果涉及到高精度建模的话,个人强烈推荐zbrush这一款软件. 现在的3d软件建模制作流程包括:3Dmax建中模,ZB雕刻高模,maya拓扑低模,mayaUV ...

  9. 零基础学3D建模,应该怎么开始学?你需要注意这些!

    丑化说在前头,如果想真正学好3D建模,需要花费很多时间和功夫,不要想着轻松也不要想着一蹴而就,如果只是三分钟热度,不如趁早放弃,这些话不仅仅针对于3D建模的学习,任何专业技能的学习都一样. 面对陌生的 ...

  10. 游戏建模工作需要掌握什么3D建模软件?

    目前来说,国内的建模软件还是3d max最为主流,国外的话,影视行业用maya用的比较多,游戏行业3d max和zbrush都用的多. 下面来做一下介绍: 3ds Max :目前游戏市场上最主流的3d ...

最新文章

  1. 剑指offer:面试题32 - II. 从上到下打印二叉树 II
  2. 伟大的密码胜于利剑——RSA2012成都站掠影
  3. 伪造服务钓鱼工具Ghost Phisher
  4. LeetCode算法题11:递归和回溯-解数独
  5. [转载]什么是似然度~maximum likelihood
  6. Docker:使用本地卷和tmpfs挂载
  7. jpa 使用jdbc_在JPA和JDBC中使用存储过程。 嗯,只要使用jOOQ
  8. IDEA创建SpringBoot
  9. 使用 jQuery Mobile 与 HTML5 开发 Web App (九) —— jQuery Mobile 页面与对话框
  10. 演义群侠传(八)【bloom组件源码学习】
  11. 如何配置 Linux ipv6 6RD隧道
  12. LEACH算法改进 SEP算法源代码
  13. win10深度清理c盘垃圾的方法【系统天地】
  14. 苹果6访问限制密码4位_1Password for Mac(专业密码管理工具)
  15. 汽车之家各种车型参数爬虫
  16. 【人工智能】一文读懂人脸识别技术
  17. AMR文件结构解析——时长解析
  18. 攻防世界WEB题练习
  19. SpringCloud详细教程(上)
  20. ChatGPT团队揭秘:3清华、1北大、1华科

热门文章

  1. Aria2保姆级教程
  2. php搭建aria2,Mac配置Aria2,高速下载百度云
  3. 前端学习-----HTML
  4. 十大编程语言排行,Java只能位列第三?
  5. ckplayer php,CKplayer 站外调用示例
  6. 直接学python3_初学者可以直接学Python3吗?
  7. 高斯-马尔科夫过程的充要条件(正态随机过程又是马尔科夫过程的充要条件)
  8. word2vec模型深度解析
  9. css中怎么把数字改成罗马数字,罗马数字和阿拉伯数字相互转换
  10. 小幅震荡市场下的期权投资策略举例