想做个简单的 2D 帧动画,但是从小就没有绘画天赋,可以理解透视、明暗交界线这些概念的原理,但是上手就不知道怎么表现了。于是做 2D 帧动画这个事情,陷入了困难。
看到一些建议,使用 3D 软件进行建模,然后转成 2D 图片。3D 建模有它的优势,描述模型更接近物理世界,我日常看到的东西是多长多宽多高,告诉软件就好了,不用自己去想,这个东西映射到纸面上,是个什么样的结构,哪里该有阴影,哪里有高光。
很快发现了先建 3D 模型,再根据需要导出 2D 图片的又一个优点,模型的复用性很高。试想我需要一个人物各个方向的图片,直接绘画,同一个人物需要重新画很多遍,但是我的 3D 模型只需要建一次,然后低成本地调整姿态,就能生成一个新的图片。
还有,同一张图画,很难两个人同时各画一部分,但是拆分成多个 3D 模型,就能多个人同时开工了。
稍微有点职业敏感性,想到这个设计思想,可以移植到程序设计上,又感到好像已经有了这么个东西,难道它叫面向对象?
假设在做一个电影购票系统,平时首先想到的,还是直接描述这个业务,比如先建一张用户表,再建一张电影票表,再建一张购票表,关联起来。
转换一下视角,想想买电影票这个过程,我可能要身份证证明我是我,可能要手机接收验证码、支付,然后我会获得一张电影票,我会拿着电影票给工作人员看,或者放机器上扫描……
管你这系统那系统的,我先描述一下我知道的身份证:有基本信息,有人像、国徽面的样式,还能被扫描。我不知道系统要哪些东西,我把我知道的身份证先尽量精确的描述出来。
同样的电影票:有电影场次、座位等相关的内容,有外观、材质这些。日常生活中看到是啥样的,我就照搬上去。
后面要对接打印系统,只要增加一个打印机的对象,打印机需要的数据,早早就冗余在那了,尽管一开始我没考虑过打印的需求。
用更接近物理世界的方式建模+大量的数据冗余。一直以来,编程讲究时间换空间,空间换时间,偶然参得这时间空间双输的邪修之法,道友请了。
![]() |
1
panlatent 2 天前
道友写的有点像散装散文,让 GPT 总结了两遍,所以你想表达的是:
“👉 通过“3D 建模 → 2D 动画”的启发,他领悟到一种更贴近现实、冗余但灵活的建模方式,与面向对象设计理念不谋而合。” |
![]() |
3
andyskaura 2 天前
你搁这儿写 java 呢?
|