乐高拼贴喔卡哇伊阔多

最近路过一家乐高店,看到里面有Lego Master用乐高拼了一整面墙的图画,就开始想有没有可能我自己也拼一个呢?放家里当一个照片放着就好,不用一面墙。于是就做了一些实验,拼了一个75x75cm的四宫辉夜出来。下面主要介绍怎么从一张照片得到一个乐高零件的列表,进而购买拼装。很明显,这个分为两步,第一步,从一张照片根据现有的乐高的颜色,得到一个低分辨率的类似8bit的图像;第二步,根据不同颜色的乐高的形状,得到零件的列表和拼接指南。下面我们一个一个讲。

从全彩照片到适合乐高的照片用3D打印很容易解决。我做了一些调研,目前已有的方案大都有两个问题,第一没有考虑到乐高本身有什么颜色,只是单纯用系统提供的颜色,所以实际拼的时候还要调整颜色。第二没有禁用Photoshop的仿色(Dither)功能,所以出来有杂点。我从PS操作的角度介绍一个简便易行且效果好的方法。最后再给出一个用程序大幅减少颗粒数量和成本的例子。

首先打开一个图像:

Original photo

然后用PS缩小到目标大小。这里我用的是64x64像素(拼出来大约50cm x 50cm):

Resizing interface

Resizing interface

Resizing result

接下来转换成规定的颜色:

Color conversion interface

下面是最重要的部分: 颜色暂时选16,强制选暂时选黑白,仿色选无。这样出来的色彩就会比较自然而且没有噪点:

Color conversion interface

Color conversion result

但是,这仍然没有考虑到乐高本身的颜色。乐高本身有多少种颜色呢?如果考虑历史上曾经生产过的颜色,一共有81种(链接)。但很多现在已经停产了。现在乐高的官网还有18种颜色的1x1 brick可以购买(链接)。有人用Pantone色卡一个个和乐高的颜色比对,得到了每种颜色的RGB值(链接)。我把现在乐高网站还在售的型号提取出来,整理如下:

ColorHex
Brick Yellow D3BC8D
Bright Reddish Violet AF1685
Light Purple 981D97
Bright Red EF3340
Medium Azur 71C5E8
Dark Stone Grey 5B6770
New Dark Red 9B2743
Medium Lilac 330072
Earth Blue 003865
Medium Stone Grey A2AAAD
Bright Blue 003DA5
Medium Blue 6CACE4
Reddish Brown 7A3E3A
Bright Yellow FFCD00
Black 27251F
Sand Green 789F90
Bright Yellowish GreenB5BD00
Bright Orange FF8200

那这个信息怎么用呢?具体地说,需要在上面索引颜色的界面里把调板换成自定...,然后就会弹出来一个对话框可以选具体颜色:

Color conversion interface

Color conversion interface

点击其中某个颜色就可以更改RGB值。为了简便起见,我们使用下图中光标高亮的部分(#ffffff)来编辑。

Color conversion interface

然后输入上面颜色即可。全部打进去以后PS的颜色应该像这样:

Color conversion sample

可以点击...按钮另存为一个ACT文件,这样下次就不用再打啦。但遗憾的是这18个颜色没有足够多的黄色,所以出来的结果非常鬼畜,颜色基本都丢失了:

Color conversion result

但如果我们换一个颜色对比强烈(大红配大绿)的图片,效果就会好很多:

Color conversion result

但是否就意味着对于最开始的蓝毛的例子,我们就没办法了吗?也不是。前面提到我们把仿色给禁用了,这是因为它会引入噪点,非常难看:

Dither result

但仿色到底是干什么的呢?它是一种用有限的颜色来表达更丰富的灰度和颜色的方法。因为64x64的分辨率实在是太低了,所以看起来非常奇怪。如果比如我们想拼一个2m x 2m的乐高墙的话,这个分辨率可以达到256x256。此时dither就非常有效果了(左边是没有Dither的,右边是有Dither的):

Dither comparison

所以我们也可以看出来,做一个牛逼的乐高像素画,选一个适合能买到的乐高颗粒的照片,是成功的一大半。这个我们也完全可以自动化批量处理,只要用色彩空间中的距离来排序就好。这个就留做家庭作业啦。

几个相对靠谱的例子(长边96像素):

Sample result Sample result Sample result

然后下面怎么办呢?很多网上的教程到这一步就结束了,下面就是去乐高网站买很多1x1的颗粒就好了。但实际上还是有很多优化的空间。比如上面这个96x96的图像,如果全部购买1x1的颗粒需要9216个颗粒,共计645美元。但其实很多颗粒是可以合并的,比如8个1x1的颗粒也许可以合并成一个2x4的颗粒,又省了时间又省了钱。所以我上网手动查询了现在乐高网站上有货的颗粒的尺寸,手工写了个程序生成如何拼贴的方案,得到如下所示的图纸:

Sample result

用这个程序把颗粒的数量从9200+缩减到了2500+,所需费用从650左右缩减到了300左右。在用程序输出了每种颗粒分别要买多少以后在乐高官网上下了单。这个单据客服说要在波兰手工挑出来,然后运到美国,清关啥的搞了好长时间,过了一个月才拿到。。然后就是拼接啦:b站

最终的效果如图所示:

Final result

有感兴趣的小伙伴也可以试试哈!

Comments