V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
Lamlam147
V2EX  ›  奇思妙想

未来“无中生有“”的技术可否实现

  •  
  •   Lamlam147 · 2020-03-13 13:58:20 +08:00 · 4117 次点击
    这是一个创建于 430 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一句话、一张图片、一段视频都是通过无数 0 和 1 来组成的。
    文件储存的性质相是刻录在物理载体上的,我们想要获得其他人的文件就需要通过互联网来传输这些内容,然后储存到本地的物理载体上。
    按照文件生成的形式,现在我们可以通过一段代码生成一句话、一张图片。未来是否能通过极少极少的代码来生成一部电影(已经拍摄出来的)、一个游戏客户端(已开发的出来的)。
    40 条回复    2020-03-19 10:17:58 +08:00
    ybw
        1
    ybw   2020-03-13 14:02:46 +08:00 via Android
    极少极少的代码,只能输出极少极少的可能性。一张图片,可以有无数种可能性。所以不行。
    Tianao
        2
    Tianao   2020-03-13 14:04:58 +08:00
    这就是有损压缩,但想要达到这种级别的有损压缩,往往是全损画质。
    Lamlam147
        3
    Lamlam147   2020-03-13 14:06:58 +08:00
    做个假设,如果电影的内容( 0101 都已经固定了),这时候用代码去生成这些 01 转成可执行文件这样能不能行得通。
    imn1
        4
    imn1   2020-03-13 14:14:12 +08:00
    你说的更多像是瞬间转移,把那些 0101 的排列顺序从原存放地瞬间转移到你那里
    masterV
        5
    masterV   2020-03-13 14:19:48 +08:00
    想到了量子计算
    areless
        6
    areless   2020-03-13 14:26:29 +08:00 via Android
    有。我们经常搞一些低像素的平面动漫素材 waifu2x
    cmlz
        7
    cmlz   2020-03-13 14:29:17 +08:00
    当然行,理论上,只要给一只猴子足够的时间,它就可以用键盘敲出莎士比亚全著。
    greed1is9good
        8
    greed1is9good   2020-03-13 14:29:31 +08:00 via Android
    说的难道不是矢量图吗?给个公式就行了。。。
    laoyur
        9
    laoyur   2020-03-13 14:32:09 +08:00
    @Lamlam147
    > 如果电影的内容( 0101 都已经固定了)

    大哥,同一部电影可以转制成不同格式、不同码率、分辨率甚至帧率,还能被光腚裁剪成不同版本,你说这个 0101 到底以什么标准来固定捏
    opengps
        10
    opengps   2020-03-13 14:34:08 +08:00
    并非不可能,只是概率极低,这效果就像是 AGCT 四个碱基组合出来一个生命体一样难,宇宙这么大,只有地球有生命体,如果重来一次,地球完全不是现在的样子
    Lamlam147
        11
    Lamlam147   2020-03-13 14:44:48 +08:00
    @laoyur
    肯定版权方了,就像现在的视频网站一样,你要看的格式是他给你看的格式,他服务器储存的是什么格式就展示什么格式。
    tabris17
        12
    tabris17   2020-03-13 14:48:28 +08:00
    了解一下信息论
    Lamlam147
        13
    Lamlam147   2020-03-13 14:48:52 +08:00   ❤️ 1
    @laoyur
    假设以后的视频只需要下载一个程序,程序内镶了给用户观看的视频,而这些视频不是存储在他服务器上的。而是你在本地客户端通过他给出的算法程序生成出来的,这样通过本地的算法生成是不是极大的减少了带宽的使用,和突破了带宽带来的一系列的限制。
    cmdOptionKana
        14
    cmdOptionKana   2020-03-13 14:50:14 +08:00
    想起以前一种可执行文件,体积极小,启动后有图像有声音并且不断变化不重样,持续播放好几分钟。
    ipwx
        15
    ipwx   2020-03-13 14:51:16 +08:00   ❤️ 1
    要传输一个对象,这个对象的信息量是恒定的。要么把信息编码在要传输的数据中,要么信息已经编码在解码器中,并且解码器已经提前分发。

    一句话就能传输一部电影,前提是全球几十亿人脑一模一样,每个人根据这句话想像出来的这一部电影都一模一样,才能把电影正确传输出去。这就是所谓的“提前分发解码器”的策略。但显然,每个人都不一样,所以小说和电影才需要花大量笔墨,把作者脑中的想象给更具体地描绘出来,力图让每个人看到这部文学作品之后,脑中的解码器还原出来的图景能更符合作者的原始意图。
    ----

    @areless 你提到了 waifu2x,这也是预先分发解码器的一个实例。waifu2x 一般可以认为对二次元图片处理能力更强,所以事实上它分发的是大部分动漫图片局部纹理的信息量。动漫图片的绘画技巧是一定的,所以局部纹理的组合方式也是相似的,这使得你可以降低图片传输的信息量(缩小分辨率),通过 waifu2x 这个解码器把局部纹理给补上。
    fancy111
        16
    fancy111   2020-03-13 14:52:08 +08:00
    复杂的事物是由简单的事物组成,这个没毛病,但是不代表可以用极少的东西生成复杂的。
    一个分子原子可以变成电脑吗?
    Lamlam147
        17
    Lamlam147   2020-03-13 15:02:42 +08:00
    @ipwx 没有说简单的一一句话代码来复现一部电影。我想表达的是一个通过一个轮子复现设定好影片,这个轮子可以是制片方,版权方,也可以是任何人制造的。不单单是一部影片。
    只要让轮子知道这部影片我需要生成我告诉你的 0101 就行。这并不需要每个人都想象这部影片。
    Lamlam147
        18
    Lamlam147   2020-03-13 15:15:05 +08:00
    @ipwx 拿视频网站来假设,比如在线播放一段影片,第一段 5 分钟,需要 30 行代码生成这五分钟的画面,那服务器直接给我们传过来这三十行的代码,让它自己生成 5 分钟的画面,之后的每个五分钟都是不同的生成代码来完成的,最终完成一段影片的展示。
    另外关于这个生成画面的代码怎么来。一个更高级的工具把本地的影片分割成一个片段变成可和反向计算的公式。这些公式就套在生成代码里。
    xiaooloong
        19
    xiaooloong   2020-03-13 15:21:43 +08:00   ❤️ 1
    信息熵是固定的,不能无中生有。
    DOLLOR
        20
    DOLLOR   2020-03-13 15:23:21 +08:00 via Android   ❤️ 1
    这种问题在 v2 已经见过几次了,都是没学过信息论的。
    参见:
    [信息论也能如此简单]------信息和熵
    https://zhuanlan.zhihu.com/p/85779990
    est
        21
    est   2020-03-13 15:28:46 +08:00
    1. demoscene 就有很多 4k 64k 的精品。一个视频看很久
    2. 硬要说一句话生成一部电影,也是可以实现的,但是素材库估计也就 1T 大吧。
    ipwx
        22
    ipwx   2020-03-13 15:33:38 +08:00
    @Lamlam147 都说了信息的总量是恒定的。你即没有统一的人脑,30 行代码的信息量也不足矣表示五分钟的高清电影,你拿什么去还原电影原本的信息量?
    ipwx
        23
    ipwx   2020-03-13 15:34:35 +08:00
    @est 当你素材库足够大的时候,从素材库中选取素材这件事情,信息量又会随之变大。
    ipwx
        24
    ipwx   2020-03-13 15:34:50 +08:00
    @est 无论如何都绕不开信息量守恒的事情的。
    az467
        25
    az467   2020-03-13 15:39:25 +08:00
    可以啊,就是效率极低而已,甚至宁现在就可以写一个。
    每次生成一个随机文件,然后算一下 MD5/SHA1 是否相等,XD。

    要么解码效率低,要么压缩率低,要么解压软件体积大,不可能三角。
    shintendo
        26
    shintendo   2020-03-13 16:16:31 +08:00   ❤️ 1
    学学信息论吧
    假设你说的 30 行代码能生成 5 分钟的电影,这部电影记为 A,现在我拍了另一部电影 B,B 的内容跟 A 一模一样,就是某一帧的某一个像素点不一样,那么 B 能不能用 30 行代码生成?
    如果能,那么生成 B 的代码势必和生成 A 的代码不一样,而我每改一个像素,就是一部新的电影 C、D、E……,结论就是,5 分钟的电影有多少种可能,你就要有多少种不同的代码,显然 30 行字符无法容纳这么多可能性。那么多少行的代码够呢?大概是一部 5 分钟电影的容量那么大的代码吧。
    shintendo
        27
    shintendo   2020-03-13 16:20:49 +08:00
    @az467
    每次生成一个随机文件,然后算一下 MD5/SHA1 是否相等
    --------------
    这个不能,不是效率的问题。
    Tink
        28
    Tink   2020-03-13 16:46:07 +08:00 via iPhone
    你说的就是量子计算啊
    Lamlam147
        29
    Lamlam147   2020-03-13 16:47:17 +08:00
    @DOLLOR 感谢了,还是知识少了。
    az467
        30
    az467   2020-03-13 16:48:34 +08:00
    @shintendo
    理论上确实不行,哈希之后信息丢失了。
    但是现实中文件大小可以提前确定,而且有固定的格式,所以还是有一点可行性的。

    最重要的是足够好笑。
    delectate
        31
    delectate   2020-03-13 18:23:13 +08:00
    我觉得可以,只是要用不同的方式解决。你们想的太多了。或者我想的太歪了。

    比如成片的草地,树木,甚至是不重要的路人,“编码”之后,只要用 grass、tree、man 代替就行了。重要的主角,才进行更多细节的描写。

    也就是说,播放的时候,每一次的树、草都是随机生成的,完全不同的(因为完全没价值,没意义,只要看起来差不多就行了)。
    hoyixi
        32
    hoyixi   2020-03-13 18:26:52 +08:00
    理论上当然可行,数字世界本质都是 0,1,看你如何解释这些 0,1

    不过我更好奇怎么用原子无中生有,比如生点黄金
    greatx
        33
    greatx   2020-03-14 16:30:01 +08:00
    不可能吧,信息熵在那。
    secondwtq
        34
    secondwtq   2020-03-14 20:48:58 +08:00   ❤️ 2
    这个问题很有意思,我从我业余做 VFX 相关的背景出发主要就“动画”和“游戏”等场景讨论一下。

    有损的位图信息编码(无论是各种有损的图片压缩算法,还是视频编码(大多数人很难接触到无损视频))是一般用户在存储、传输和消费位图内容时所使用的最主要的载体,它们主要致力于如何在最少影响普通人观感的前提下,去除无关紧要的细节,最小化文件中的冗余。但是我认为,对于我上面提到的场景,主流的编码方式依然浪费了大量的空间在“无关紧要的细节”上,甚至根本就不是“正确”的表示方式。

    比如对于一个 CG 制作的天体来说,如《星际穿越》中的黑洞,其”中之人“其实并不是你看到的那些图或者视频,而是一个数学模型。但是这个电影出来之后,人类和计算机都就只能看到一堆像素点了,在截图或转码时,计算机只知道这是一堆像素点,并且按照像素点的方式来处理它,在用力过猛的时候甚至会在色彩过渡的地方出现明显的 banding——本来很简单的一个模型,在变成像素点之后实际上加入了大量并不存在的“细节”——压缩算法需要重新发现这些像素点之间的关系,而显然这重建之后的关系是严重走样的,甚至转码还会加入额外的“细节”。

    另一个例子,视频编码算法可以很好地压缩一个 CG 制作的动物镜头,但是同一个动物的另一个镜头,换一个光照环境,换一个视角,换一套姿势,尽管是同一个动物,却需要额外记录大量的信息。它并不能完整地利用这两个镜头之间的冗余关系。

    如果我们把“位图”变成“矢量图”,从一开始就直接把黑洞的数学模型,把动物的 3D 模型、动画数据、光照数据和视角数据给到内容消费终端,不但可以节省大量的空间,还具备了无限放大的能力,甚至还可以随便转视角(这可是现在的电影怎么都做不到的),当然对我来说最重要的是还可以通过调整数据和参数进行二次创作。
    这里我要做一个假设就是终端的算力是几乎无限的——虽然摩尔定律马上就 55 年了,普通终端可以一秒钟渲染 60 帧甚至 144 帧以上的高质量游戏画面,但是渲染一秒钟的电影级完整 CG 画面依然需要 60 年甚至 144 年以上的时间(数量级不准确,但是你一辈子看不到几帧是肯定的)。不过这个问题本身只要算力上去就很容易解决(所以苏妈成了 Queen of Cinebench ...)
    我刚才提到了游戏——你可以认为视频游戏(在本回复里主要指 3D 游戏,尤其是现在有”电影化“倾向的很多 3A 游戏)就是电影的一种“矢量图”形式,以非常简单的眼光来看的话,游戏和电影在很多方面已经很相似了。但是游戏和电影最大的区别之一——“交互”这一点就要求游戏的每一帧画面(除去游戏里的电影)都是在终端机器上实时合成的,并且游戏也可以通过更改场景数据和游戏本体的数据随意更改渲染出的结果。甚至可以说游戏去掉交互就可以变成电影(单指视听方面的相似性,游戏具备更容易修改和二次创作的优势),但是这个“电影”是实时渲染的,如果真的有刚才说的无限算力的话,画质也可以做到和电影齐平。

    但是我们知道现在游戏画质做得越来越好,体积一般也越来越大,并且甚至有边际效应递减的趋势(据说游戏体积增长速度没有完全失控主要是受到主机的实体盘容量限制),我们刚才完成了“把电影‘矢量化’并统一到游戏内”的过程,但是这个现实说明刚才假设的”用游戏来‘实现’电影“这一条路很有可能会让最后”电影“成品的体积直接爆炸。对于这个问题,解决方案其实还是不变的——既然电影能”矢量化“,谁规定的游戏不能”矢量化“?
    需要指出的是:4K 游戏体积比 4K 电影大是有其合理性的,如果游戏和电影都以”位图“的形式表示,并且最后屏幕上的画质是等同的,那么明显游戏包含的信息比电影要多很多(前面已经提到了游戏具有电影无法做到的无限放大和任意视角能力)。下面还需要做一个假设是构成现在 3A 游戏巨大体积的主要部分是贴图——这个应该是事实,但是我并没有亲自拆现在那些肿瘤一般的游戏的经历 ...(个别游戏可能预渲染电影占很多,不过这个恰好可以通过刚才的”电影游戏化“变成游戏中的其他贴图等数据)。那么既然贴图最多,把贴图”矢量化“,任务就完成了一大半。

    这个就很有意思了,现在游戏用的贴图,不就是普通的位图图像嘛!矢量化不就是用矢量图来画么!不过很明显现在很多游戏的贴图并不适合矢量图。但是”矢量化“这种游戏贴图的技术现在已经成熟——就是 Allegorithmic Substance Designer——当然你现在看不到 Allegorithmic 这个名字了,就是因为这是当红炸子鸡,所以前段时间直接被 Adobe 收购了。这个软件要求 Artist 通过节点网络的 Procedural 方式创作贴图(之前主流的方式是用 PS 直接画)——“节点网络”具体是什么样子参见: https://www.artstation.com/artwork/2EJ5Y 这东西登峰造极能做到什么地步参见 https://www.artstation.com/kayv https://www.artstation.com/wermuth https://www.artstation.com/artwork/P9WN1
    这种创作方式通过对噪波、分形等数学工具的组合,可以做到乱真的程度,而且这种方法本身并不一定比手绘等传统方法更 inferior——类似结构在自然界中本就是大量存在的,甚至可以说这本就是最贴近“真实”的方式,所以说这东西有颠覆你世界观的可能。

    它的“压缩”效果如何呢?简单估计一下吧,一个 4K 三个通道每通道 8bit 的高清贴图可以有 48MB,实际使用的时候三个通道只够漫反射数据用,根据工作流不同还需要若干法线通道、高光通道、高度通道、光滑度通道等等,也就是说一个 4K 贴图的物体贴图动不动就有上百兆,但是这个 Substance 可以用一个 Node Network 生成所有需要的贴图,并且可以随意缩放,还可以调整参数(比如做一个钢铁的材质,节点可以选择暴露一个参数控制锈蚀程度,材质的用户只要把这个参数从 0 调到 1,就完成了一个完整的、连续的钢铁锈蚀的动画——手绘贴图是做不到这一点的)。它只要存储这个 Node Network 就行了,就算一个的 1024*1024 的贴图也有一百零五万像素 * 三个通道,但是 Node Network 是人拉的,人是断然不可能拉一个一百万个节点的网络的。所以一般一个 Substance 文件是 KB 级别,最多不超过 10MB。粗略估算的话,这个相对于位图贴图的“压缩比”至少有 10 倍,一般有好几百倍以上。随着硬件发展,位图贴图分辨率可能会继续提升,位图贴图大小会指数级增加,但是 Substance 文件体积增加要慢得多。

    这个东西介绍完了,但是要强调的是 Substance Designer 这个产品本身的开创意义也并没有那么的大——Node Network 在 VFX 工具链中出现得本来就很多,甚至通过 Node Network 来做材质贴图也并非 Substance 首创(并且以前应该就已经用得很多了),但是对手都实在太垃圾(尤其考虑到自动麻将桌部分产品的祖传 crash ),Substance Designer 专注于 Procedural Texturing,做到了非常好的易用性,把这套方法带到了新的高度。
    我想通过这个例子引出一个现象,就是以 Substance Designer 为代表,通过 Node Network 的形式暴露给 Artist 的 Procedural 创作方式,最近似乎在 VFX 界出现了一股回潮,并且在很多地方成为了 state of the art。我在 https://v2ex.com/t/636465#r_8459703 这个回复中举了大量的例子,其中有一些可能有二十年以上的历史,有一些则是最近几年的新功能。在这个回复中我还指出了:这种 Node Network 实际上是一个 Functional Program。这个回复上面的一楼还说明了 Composability 的意义,无论是计算机程序还是计算机艺术,背后都是”简单的东西通过组合递归地构成复杂的东西“。

    你以为是照片或者手绘出来的,实际上是程序给你画的。

    这也很好解释为什么 Substance 对贴图的“压缩比”那么大—— Substance Node Network 就是一段源码,专业的程序员做的项目,一个源文件一般大的几十 K 最多几百 K,整个项目纯源码加起来几十 M 已经很大了,这时候已经可能暴露出工程和项目管理上的一些问题。Artist 作为非专业程序员,能力上限就在那摆着,单个材质整不出这么大。
    除了 Substance 之外,Houdini 也值得一提,Substance 只搞贴图,Houdini 是一个”全栈“的软件,就像 3ds Max/Maya 一样,但是 Houdini 完全贯彻了 Procedural 的设计,完全使用 Node Network (以及若干 DSL )工作。这使得 Houdini 极其适合做特效等工作,在自动生成场景、模型、地形等方面也是最好的选择,并成为了这些领域的 State of the art。游戏工业后知后觉,最近也开始使用 Houdini 给你们产出垃圾内容( https://zhuanlan.zhihu.com/p/86991309,
    )(为什么说是垃圾内容,因为某些工作室使用这些技术的目的就是用最少的成本产出最多的内容,从而最大限度延长玩家的游戏时间,甚至有传言说某些游戏的整个任务都是程序生成的,效果还不怎么好,玩家有一种被欺骗的感觉)。
    我举的这两个例子离大家并不远,Substance 被 Adobe 收购了,然后你知道 Adobe 的德行,改了订阅制,但是和 JetBrains 一样用一年是可以永久使用的,在 Steam 上有非订阅版本,国区价格很便宜还没八方旅人贵。Houdini 直接有免费的限功能不限时间的 Non-commerical 版本。要想体验门槛并不高。
    secondwtq
        35
    secondwtq   2020-03-14 20:49:10 +08:00   ❤️ 1
    但是注意,我刚才说了 Houdini 是一个”全栈“的软件,也就是说从模型到贴图到动画、特效、渲染、合成都可以做,但是 Procedural 为主的这些软件,Houdini,Substance Designer,Nuke 之类的加起来只占了整个工作流的半壁江山,工作流中还有一部分尚未被 ”Proceduralize“。刚才说了 Procedural approach 的种种优势——占用空间小,可定制性高,方便返工修改等等等等,为什么不全面使用它,就很有意思了。
    比如,建模这一过程依然被手工建模统治着——当然个别模型可以自动生成,比如地形、植被树木、部分建筑和道路等的程序生成技术已经十分成熟并且被广泛应用,但是当涉及到主角角色的建模、主角拿的枪模、主角开的车模时还是要从头开始手工搞,当然有许多工具可以提高这一过程的效率,但是并没有哪个做到了哪怕三分之一的程序化。

    上文提到在位图贴图中存在大量的冗余信息,而 Procedural Texturing 可以把这些信息,把贴图中包含的规律以简洁正确的方式表示出来(虽然自然界很多表面看起来无规律,但这个”无规律“并不是绝对的)。对于模型来说。这些很多是不成立、不可行的。一般模型本身不大,并且其中的冗余信息是很少的——举个例子就是你要做一个人形角色,它的身体上存在大量的曲线,你把这些曲线向计算机描述出来,模型就建好了,这个描述的过程就是建模的过程,几乎没有可以简化的地方——当然可以做一个参数化生成程序,指定身高、三围、肤色、四肢长度和粗细、手指长度、脖子长度之类的给你生成一个人体,但是脸部你怎么描述?对计算机说”我要这个世界上最漂亮的妹子“然后期望程序帮你画出来,这超出了传统图形学技术的范畴。就更别说现在流行的是各种奇形怪状的”类人“设计,根本无法参数化生成了(想想你在电影和游戏中看到的奇奇怪怪的种族和怪物,或者直接去 https://www.artstation.com 首页逛一圈)。一个模型当然是有规律的——比如很多物体是大致对称的,这个”对称“规律在大多数建模工具中都有体现,也就是你只用编辑一半模型,另一半自动帮你复制,但是”无规律“的那部分,计算机是帮不了你的,而部分种类的模型中这部分尤其的多。
    另外一点是,现在 VFX 主流的建模方式是 Polygonal Modeling,这种方式本身是有一些限制的——比如必须保证良好的表面拓扑,模型才能正常使用,而拓扑对于一个 Polygon Mesh 来说一般是全局的,也就是说这种建模方式的 Composability 是很有限的——有点像用 goto 写程序,用锁写共享内存并行,一不小心就会 break 掉奇怪的东西。模型师必须花费额外的精力来维护拓扑。在游戏中问题更严重,游戏不允许太过精细的模型,经常需要最大限度地”优化“模型面数,这就很像编程中的极限性能优化了,这个 ... 是一门技术,也需要模型师的劳动。对于多边形模型(尤其是较为精细的模型)是存在有损压缩算法的(甚至有无损的),但是这个手工优化技术有点像手工压缩 ... 是不是一下感觉又回到了刀耕火种的年代
    当然刚才已经做了算力无限这么大的假设,那也可以假设这些限制是可以克服的。但是这并不能动摇刚才的结论。成体系的 Procedural Modeling 方法是有的,其中之一是 CSG ( https://en.wikipedia.org/wiki/Constructive_solid_geometry ),但是用 CSG 来做地球上的动物只会比多边形还要麻烦一个数量级。不过做一个苹果手机应该是很简单的,就算如此,再加上苹果现在能删的都尽量删了,你仍然需要把手机的曲线画出来,把扬声器、天线、充电口、音量键、电源键长什么样子,摄像头如何排布告诉计算机,这些是无法避免的工作。就算是上面大吹特吹的 Procedural Texturing,你仍然需要折腾不同的噪波如何组合,什么效果用什么节点合适 blablabla

    换句话说,”创意的产物“是可以被计算机”生成“的,但是”创意“本身还是需要人来”生成“的。这是我们这个”压缩“的极限。
    考虑另外一种极端情况,一个大佬手绘的图集,图本身有 4K 分辨率很大,并且是”创意“,按照我们的理论并不能被”压缩“。不这不对,我写了这么长一直在说的就是:对于计算机生成出来的东西,用任何位图编码都会有大量的冗余信息。这个图集其实是“创意的产物”,我们虽然没有“生成”它的程序,但是只要把大佬画图时的每一个笔画都记录下来,在客户端回放一遍就是了 ...
    人在消费视频内容的时候,消费的不是这个视频文件本身,在消费游戏内容的时候也不是消费游戏数据,任何的内容追根溯源来自于“无差别的人类劳动”。人在创造内容的过程中使用的工具加入了大量的“细节”,视频和游戏中的冗余内容其实比手绘的静态图要多得多,你的电影和游戏才变得这么大。楼主所说的“无中生有”本来早已经部分实现了,但是并不能完全的“无中生有”,人类依然要去设定那个种子。这个过程虽然变得越来越简单,给人的发挥空间越来越大,人的追求也越来越高(类似 安迪-比尔定律),因此尽管工具越来越先进,“内容创造”这个事情的 Intrinsic Complexity 可能是在变大的。

    也就是说理想情况下,电影和游戏可以以“程序+少量的数据”的形式分发(其实都是数据),并且大大地缩减所占空间。下面说说为什么现实不是“理想情况”。
    首先这个“理想情况”做了一个假设就是算力几乎无限,这个现在远远没有达到,这很好理解。所以游戏依然是以最大化运行时性能为原则分发的(不要跟我提 DRM,这是下面要说的),就算厂商把生成游戏的“源文件“给你,大多数”高配“ PC 也根本跑不起来,别说 console 了。
    然后是整个 Procedural 的生态是碎片化的,我前面提了 Houdini,Substance Designer 和 Nuke 三个产品,但是就算是 Houdini 这样的全栈软件,也有其优势和缺陷。一个完整的工作流中还会用到其他产品,这些产品使用各种奇怪的方式集成在一起,一般不会只用一个产品完全打通”模型到贴图到动画、特效、渲染、合成“的完整工作流,不仅不是单一产品,甚至不是同一家公司的产品(整个产业的基础完全被一家公司垄断怎么都是很可怕的事情)。这样的工作流并不是技术上最优的,只是工程上的局部最优解而已。实际上我作为一个程序员的梦想之一就是完全打通这样一个全栈流程,从而完全发挥 Procedural 的能力。这是另一个技术问题。
    最后前面用“源文件“来形容”矢量化“的表示,我觉得这个比喻挺合适的——软件开发也有把源码编译为二进制文件的过程。虽然说很多软件在开发中有开源的考虑,但是绝大多数的电影和绝大多数的游戏就算不以商业成功为目的,但是绝对不会把在终端都完全 Proceduralize 作为目的。让厂商把 Artist 直接产出的源文件给你相当于直接开源电影 /游戏。开源软件尚且不是完全主流,又何谈开源电影 /开源游戏?
    (之所以是“绝大多数”,是因为确实有一小撮游戏开发商把 Moddability 作为重要考量(如 P 社),甚至个别游戏根本就是开源的(如 0 A.D.),电影中这种东西更加少见——毕竟游戏虽然某种程度上可以被看做“艺术载体”,但是和字体一样,同时具备“软件”的性质,受开源软件的影响,电影没这福气。但是确实存在”开源电影“——在 18 年前,一个破产的荷兰动画工作室以 GPL 协议发布了它们开发的 DCC 软件的源码,并以基金会形式运作,这就是 Blender,有点像 VFX 界的 Firefox。VFX 界最近也开始受开源的东风影响,Blender 近年迅速发展,并且获得了更多商业上的支持(如 https://news.ubisoft.com/en-us/article/1Fse1XyXzj76UJ1gKFohbz/ubisoft-joins-blender-development-fund-to-support-open-source-animation ),还启动了一些”Open Movie“: https://www.blender.org/about/projects 这些 Open Movie 的源文件全在他们的 Cloud 上(虽然这个 Cloud 为了维护运转是收费的,不过内容是 CC 的)。当然这些”Movie“大多是一些短片,并且应该主要是以技术展示为主,毕竟一个完整的动画长片(并且"票房收入"极少)不是一个开源组织能负担的)

    还有一件事我一直没有提,就是上面这些根本就无法应用在依赖于模拟技术的内容上,比如真人电影,真实照片等,对于这些数据,一开始的位图编码会更合适。另外业界除了 Procedural 趋势之外,另一个趋势是”直接从真实世界中采集“,包括高精度的 3D 扫描,和动作捕捉等都也有大量应用,这是和 Procedural 的方式完全相反的。部分是因为我这个回复是基于传统图形学的框架写的,这并不属于它所要解决的问题。其他领域可能有更合适的解决方案,但这就超出我的知识范围了。
    secondwtq
        36
    secondwtq   2020-03-14 21:16:34 +08:00   ❤️ 1
    噢对了,补充一个(写迷糊了刚才 ...),楼主提到的“电影”和“游戏”中还有一个要素是音频。我上面讨论了图像,音频的情况其实是类似的——很早很早之前就有 MIDI 了,所以音频也是可以“矢量化”的。

    但是这就又有一个问题,听觉这东西比视觉要玄学得多。比如现在应该还有很多人能听出计算机合成的音乐和实录的音乐的区别 ... 并且合成音乐是不是要依赖于大量的采样素材呢(我并没有接触过所以并不清楚)?音乐圈个别人有一种歪风邪气,就是你这个东西必须是实录的,不是实录的就是骗子。并且对于某些音乐来说,音乐的“演绎”本身就是一种“再创作”,本身就是一件非常值得推敲的事情。注意这些问题同样适用于电影和摄影等,毕竟能够记录图像和音频的技术都是现代才有的,相关的产业也是很晚才发展起来,之前都是现场听现场看。
    就是说吧,对于某些文艺工作者来说,他们的追求之一就是那些“无关紧要的细节”,甚至于“胶片味”“模拟味”,做出的东西总要手调一番才满意(包括至今依然有人采用传统方式做 VFX )。“位图编码”提供了极高的灵活性,这是程序生成无法满足的。

    最后上面把许多问题归约到了“程序生成”上,而楼主有说“极少极少的代码”,就算有一部完全程序生成的电影,那需要多少代码来生成?一个 hint——“程序生成”无法再被归约,“程序生成”往下走还是“程序生成”,也就是说程序可以生成程序。最简单的就是编译器,在 C++ 的模板上体现的尤其明显——具体 Google "c++ template code bloat"。但是无论用什么技术手段,最后都落在“抽象”上,也就是如何更好地表示问题。良好的抽象离不开良好的 Composability。
    当然“极少极少”是不太可能的——因为这个问题的 Intrinsic Complexity 本身就是极高的。
    MendaxT
        37
    MendaxT   2020-03-15 18:31:57 +08:00
    @secondwtq 的回答信息量很大,想起曾经看到一个理论:
    如果要用计算机解决某种问题,有三个基本前提:
    1.必须把问题形式化,比如至少在 low level 上,定义能够进行有限符号集上有限符号串的决定性的形式变化。
    2.要解决已形式化的问题,问题还必须是可计算的,即一定要有算法,同时注意,存在某种算法和找出某种算法是两回事
    3.要实现某种算法来解决某种问题,问题必须有合理的复杂度。否则指数爆炸这种技术,相当难用技术绕过。
    ref:
    Hubert L. Dreyfus - What Computers Can't Do_ The Limits of Artificial Intelligence-Harpercollins
    oneend
        38
    oneend   2020-03-17 09:22:49 +08:00
    当然可以 但是这个某一方面是和买彩票是一样的
    你把所有号码都买了当然可以中奖,但是你的成本已经远远高出中奖金额
    xcstream
        39
    xcstream   2020-03-18 02:15:04 +08:00
    自动生成的文章,毫无逻辑
    onlynobody
        40
    onlynobody   2020-03-19 10:17:58 +08:00
    这个就有些玄学了,你觉得是先有“电影”在有“代码”呢,还是先有“代码”再有“电影”。

    如果按照你说的,用极少极少的代码就能生成一个已经拍摄出来的电影,那意味着,这极少极少的代码在这个电影还未出来之前,就可以生成这个电影了。这不是本身有悖论吗?

    现在用极少极少的代码生成一张图片都是基于现有的东西入库后才能继续生成,代码少只是错觉,后台库以及机器学习的代码都不少。

    ----------------------------------

    来吧,以上只是反驳楼主的悖论而已,下面是阐述一个观点。

    之前看到一个科幻小说,国内的,说宇航员怎么带走地球的百科全书所有内容,大概是这个剧情吧,大体忘记了,但是他实现的方式很让我开脑洞。

    ======下面高能,谨慎阅读======

    这个宇航员就在航天飞机上打一个点,就完成了保存这个百科全书的信息了。

    ======高能结束======

    思考吧,为什么可以?因为小数点后就是数据啊,这个点距离顶端的长度比上飞船的总长度,等到的近乎无穷的小数,使用小数点后的数据,就是 10 进制压缩数据,解压缩即可。

    继续思考吧,如果不是 10 进制,而是其他更高级的计数法,能否把小数变短?高级压缩算法是不是能提高容错率?等等。当电脑算力不成问题的时候,这样的技术是否可以实现?

    这个比楼主的可能性高很多。没准就只需要快递一个小木棍,就能得到一百部高清电影。哈哈。
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1182 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:29 · PVG 02:29 · LAX 11:29 · JFK 14:29
    ♥ Do have faith in what you're doing.