由 3D 建模想到面向对象 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jie170601
V2EX    随想

由 3D 建模想到面向对象

  •  
  •   jie170601 82 天前 1172 次点击
    这是一个创建于 82 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想做个简单的 2D 帧动画,但是从小就没有绘画天赋,可以理解透、明暗交界线这些概念的原理,但是上手就不知道怎么表现了。于是做 2D 帧动画这个事情,陷入了困难。

    看到一些建议,使用 3D 软件进行建模,然后转成 2D 图片。3D 建模有它的优势,描述模型更接近物理世界,我日常看到的东西是多长多宽多高,告诉软件就好了,不用自己去想,这个东西映射到纸面上,是个什么样的结构,哪里该有阴影,哪里有高光。

    很快发现了先建 3D 模型,再根据需要导出 2D 图片的又一个优点,模型的复用性很高。试想我需要一个人物各个方向的图片,直接绘画,同一个人物需要重新画很多遍,但是我的 3D 模型只需要建一次,然后低成本地调整姿态,就能生成一个新的图片。

    还有,同一张图画,很难两个人同时各画一部分,但是拆分成多个 3D 模型,就能多个人同时开工了。

    稍微有点职业敏感性,想到这个设计思想,可以移植到程序设计上,又感到好像已经有了这么个东西,难道它叫面向对象?

    假设在做一个电影购票系统,平时首先想到的,还是直接描述这个业务,比如先建一张用户表,再建一张电影票表,再建一张购票表,关联起来。

    转换一下视角,想想买电影票这个过程,我可能要身份证证明我是我,可能要手机接收验证码、支付,然后我会获得一张电影票,我会拿着电影票给工作人员看,或者放机器上扫描……

    管你这系统那系统的,我先描述一下我知道的身份证:有基本信息,有人像、国徽面的样式,还能被扫描。我不知道系统要哪些东西,我把我知道的身份证先尽量精确的描述出来。

    同样的电影票:有电影场次、座位等相关的内容,有外观、材质这些。日常生活中看到是啥样的,我就照搬上去。

    后面要对接打印系统,只要增加一个打印机的对象,打印机需要的数据,早早就冗余在那了,尽管一开始我没考虑过打印的需求。

    用更接近物理世界的方式建模+大量的数据冗余。一直以来,编程讲究时间换空间,空间换时间,偶然参得这时间空间双输的邪修之法,道友请了。

    3 条回复    2025-09-05 13:12:50 +08:00
    panlatent
        1
    panlatent  
       82 天前
    道友写的有点像散装散文,让 GPT 总结了两遍,所以你想表达的是:

    “ 通过“3D 建模 → 2D 动画”的启发,他领悟到一种更贴近现实、冗余但灵活的建模方式,与面向对象设计理念不谋而合。”
    jie170601
        2
    jie170601  
    OP
       82 天前
    @panlatent 哈哈追剧上瘾没忍住
    andyskaura
        3
    andyskaura  
       82 天前
    你搁这儿写 java 呢?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1671 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 16:19 PVG 00:19 LAX 08:19 JFK 11:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86