程序员美女说:建模一点都不难!做3D模型,这一步才是最难的

新闻 前端
闲来无事逛推特,发现竟然有大神‍开发了一个建模神器。在像素网格绘制好平面图,再设置下相关参数,就能生成一个3D锤子模型了,妙啊…

[[377797]]

闲来无事逛推特,发现竟然有大神‍开发了一个建模神器。在像素网格绘制好平面图,再设置下相关参数,就能生成一个3D锤子模型了,妙啊…

程序员美女说:建模一点都不难!做3D模型,这一步才是最难的

其实Windows10系统也有类似的傻瓜式建模软件,叫“画图3D”,它能帮你秒速建好3D模型。比如我们点击右侧栏的那个狗头,再在面板上画出自己所需的轮廓、大小,一只可爱的3D狗狗就出现了。

程序员美女说:建模一点都不难!做3D模型,这一步才是最难的

除了一键傻瓜建模,如果你数学水平不错,用基础的数学公式也能构建出一个像模像样的3D模型来。

最近比较火的VR建模,甚至只用手柄就可以直接进行虚拟建模了。

你只要入了3D坑就会发现,建模是可以条条大路通罗马的,3D行业现阶段真正的技术难点其实是模型处理和二次开发应用

能得出这个结论,还要从行业内主流的建模方式讲起。3D行业内如今有4种主流建模方式,分别是多边形建模、曲面建模、体素建模和逆向建模,它们都各自有优缺点,同时也对应着自身的模型处理难点。

01多边形建模

业界有一句话“你可以用多边形为任何事物建模”。多边形就是由多条边围成的一个闭合的路径形成的一个面,只要你使用足够的细节,你可以创建任何表面。这也是多边形建模成为主流建模方式的原因,做任何模型都不会有限制

但多边形建模也有缺点,它只是一副空壳,虽然可以构建物体的表面,但无法反映现实物体的内在结构,与现实物体还是有不小差距。

而且建模师很容易过于精琢细节,导致模型面数过多,以至于后面对模型做烘焙、渲染、展UV,几乎会搞到崩溃,二次开发的可操作性也变得很低,造成一种模型做完了,但并不能良好应用的尴尬局面。

02 曲面建模

多边形建模用直线构建平面,而曲面建模就是用曲线构成曲面的一种建模方式,它非常适合用来创建光滑的物体。比如看起来就很丝滑的数码产品、汽车和一些人物细节

图源:seokyun Jang

但这种建模方式缺点也很明显,一来是比较麻烦,再一个是很难精准参数化。所以这种建模方式一般做视觉展示用,用来生成视频或者图片。

同时它对贴图的美观度和清晰度,要求比较高,而当这个模型拥有大量高质量的贴图之后,就会导致模型数据量变大,这就是它无可避免的缺点。

03 体素建模

体素其实就是三维的像素块,最典型的体素建模的例子就是那款家喻户晓的游戏“我的世界”,每个物体都是由一个个六面体像素块堆叠成的。

用这种方式构建的模型,每个六面体都有自己的体积,不像多边形建模只有一个空壳。

不过体素建模有一个非常明显的缺点:内存太大。它是由一个个立方体构成的,当然需要占用立方体的内存,所以这也是一般体素游戏内存都特别大的原因,在一般的电脑设备上可能根本无法承载。

04 逆向建模

前面几种建模方式可以没有实物,靠构想进行建模,而逆向建模是先有实物,再为它进行建模。逆向建模包括照片逆向建模、三维扫描逆向建模等一系列相关技术。开头提到的VR建模用的就是逆向建模方式。

现阶段国家力推的倾斜摄影也属于逆向建模,它是对实景进行全方位地拍摄扫描,从而建模。

逆向建模生成的模型通常面数都很高,而且贴图数量也非常多,这就导致了整个模型体量巨大,连做最基础的展示都十分困难,更别提二次开发了。

基于以上建模方式与生俱来的缺憾,所以我们必须对模型进行再处理加工,以满足不同的场景对模型的精度、内存、格式等等的不同需求

举个栗子

企业需要一辆车的3D模型。

对汽车制造行业来说,他就会对模型的精度要求非常高,甚至需要做到不差分毫,这样才能实际投产。

而同样是这辆车如果在游戏中被应用的话,就需要较高的贴图质量、较好的流畅度和较小的数据体量来支持画面。

来源:老子云模型库

现阶段处理模型一般靠两种方式:一种是人工,一种是机器算法。人工操作比较繁杂且耗时耗力,很可能本想处理一个体量较大的模型,搞大半天只减下去几兆,最后精度还损失了,得不偿失。

机器算法只要技术过硬,就可以达到事半功倍、甚至解放双手的效果。

老子云轻量化

而且进行轻量化之后,不仅可以尽可能保障模型的精度。

⬆原始模型

⬆老子云拓扑轻量化后模型

还能最优化减面和展uv,达成适用于应用场景的最佳效果。

[[377808]]

⬆老子云展UV案例

所以如果你有模型处理的难题,一定要先试一下对其进行轻量化处理,说不定问题就能迎刃而解啦。

责任编辑:张燕妮 来源: 今日头条
相关推荐

2024-05-06 09:02:57

数据分析标签模型

2011-04-11 09:30:00

程序员感慨

2011-12-23 09:16:19

2020-12-15 10:32:46

自动化运维监控平台集群

2016-09-13 15:59:55

PHP微信开发微信支付

2015-02-09 10:27:46

2020-07-29 14:52:48

JVM虚拟机内存

2015-11-05 09:29:53

程序员进步

2014-08-08 10:24:37

程序员

2014-08-05 09:15:55

程序员

2013-03-27 09:59:17

程序员

2019-08-09 10:52:58

Linux内核Spark

2023-03-20 09:38:42

Meta数据

2019-07-19 06:41:19

数据驱动数据分析数据决策

2011-10-13 10:18:50

设计数据库

2017-09-07 15:12:42

程序员

2010-07-12 17:10:23

Android应用程序

2014-09-23 11:21:05

代码命名程序员架构设计

2023-12-20 09:55:51

雷达传感器算法
点赞
收藏

51CTO技术栈公众号