邱诚 田青 沈九美
(1.南京信息工程大学计算机学院、软件学院、网络空间安全学院,江苏南京 211800;2.南通理工学院传媒与设计学院,江苏南通 226002)
2021年以来,加密艺术受到越来越多的关注。NFT,一种新型加密技术,作为加密艺术的重要组成部分,开始走进人们的视野。自其2020年诞生以来至今发展势头迅猛[1]NFT全称Non-Fungible Token[2],意为非同质化货币,是一种用于表现数字资产的技术。NFT的火爆“出圈”,吸引了国内艺术界的大量关注[3]。其基于区块链技术的唯一性与不可更改性使得它成了一种极具权威性的防伪数字凭证,又具备买卖的交易特性。然而当前过热的NFT市场也意味着NFT市场即将迎来一次产业革新,如何制作出优质精良的NFT成了NFT从业者需要考虑的首要问题。
基于加密技术的特性,铸造NFT会消耗宝贵的区块资源,势必会过滤大量劣质的NFT,因此能够使有创作实力的创作者花费更少的开销将其作品部署到区块链上。然而,由于NFT现在主要作为一种投机资产,对社会产生的实际价值十分有限,不过随着加密技术与区块链技术的不断发展,可以预见在不久的将来,NFT的交易会像日常购物一样简单便捷。根据对Opensea平台的长期调查,目前市面上流行的NFT艺术作品大致上有两种类别,一是单幅的艺术大作,二是成套的头像合集。第一种NFT在创作上没有技术门槛。这里重点讲述第二种NFT的制作过程。这种NFT流行的原因就是其负载了身份标识的作用,某个NFT集合的消费者可以与该NFT集合的其他消费者进行圈内交流,该NFT就相当于其社交圈的通行证。这类NFT的特点就是,规模巨大,一个NFT头像系列的合集通常包含10000个不同的NFT图片,大规模的制作就涉及如何自动化生成的问题。这类NFT的制作可以分为作家个人理念的创作与程序自动化生成两部分。
NFT的首要属性应该是作为艺术品[4]在理念创作阶段创作者需要将设想中的作品拆分成多个模块,并分别为每个模块创作大量独特的方案,之后采用编程的手段来自动挑选各个模块中不同的方案随机生成完整的画作。
主题释义:2025年,一块陨石从月亮掉落到地球,在高温的末日,所有的人类都不幸被摧毁,但幸运的是每个人都只有失去了他们的皮肤。我们把其称为“火箭人”,他们保存了完整的骨骼和人类的智慧,为了呈现最好的画面效果,我们聚焦与“火箭人”的胸部以上的部位,展示他们区别于现代人的另类头像。
对于原始巫师来说,如果想要进入神圣世界,最关键的一步就是必须将身体精简至骨骼状态[5]。古代先民有头颅崇拜的观念,他们认为死者的头骨具有某种神秘的力量[6]。
“白骨观”作为佛教的重要修行方法之一,历来被显密各宗所重视和尊奉。主体骨架的造型设计参考了真实世界中的人类骨骼,分为头部和身体两部分。
头骨模板有四种类型,分别为真实型,类人型,恶魔型与科技型。真实型顾名思义,就是参考真实人类头骨设计出来的模板,保留了额骨,颞骨,鼻骨,上颌骨和下颌骨等特征。其设计的初衷就是要贴近真实头骨,其次是由于作者对一个名叫异星迷航的游戏中穿着宇航服的骷髅主角印象尤其深刻,故萌生了设计太空骷髅的想法。
类人性的设计灵感来源于人类的面容。由于在项目创建之初,致敬大卫鲍威的初稿效果不错,因此保留该设计作为第二类模板。其着重刻画了人的唇部特征,鼻孔与鼻梁,比较贴近真实人类的面部模样。
恶魔型的设计参考了恐龙和恶魔造型的图样,眼部类似恶魔的眼睛,鼻孔的造型则是取自一种原始恐龙,最后呈现的效果就是亦正亦邪,桀骜不驯的造型,以彰显当代青年的狂傲个性。
科技型的设计灵感来源于一种激光发射装置,鼻孔呈长条状,是源于散热孔的设计。可以看出眼部设计的一大细节,就是眼眶的内部展现出的星云图案。
选择四种不同的面部模板是为了避免多面部模板可能造成的叠加冲突,太过复杂的面部组合可能会造成五官的冲突,对后期的完整作品容易产生不小的影响。
(1)固定部位的骨骼设计
制作这种合集式NFT,需要其具备一些基本属性,就是每一件NFT图片上都会有的相同特征,以至于能与其他同类型NFT一起产生规模效应。作者的“火箭人”NFT其普遍特征就是均以骷髅为主体。
身体部分的设计理念就是要贴近真实的人体骨架,在本作品中保留了人体骨骼中的胸椎、锁骨、肩胛骨、肋骨、肱骨和胸骨。由于希望作品尽可能地呈现出凌厉,个性化的效果,所以作者在对真实骨架的设计方面采取简化处理,最明显的就是肩胛骨和锁骨的设计。省略了绝大部分细节,而只呈现出大致的形状。
身体部分的模板就不如头部那样多了,只是在材质和颜色部分做出了调整,目的是保持骨架的稳定性。有以下几种模板:金属型、类骨型和拼接型。金属型就是采用金属的材质,选择粉灰色作为材质底色。类骨型就是采用骨头的材质,采取了8种颜色设计,分别是深蓝色、紫色、铜色、灰色、淡粉色、天蓝色、暗绿色和土红色。拼接型就是采用类骨型的不同颜色模板进行水平拼接而成,有8种设计。以上接近30种骨架模板,既保证了基础的骨架特征,使其产生视觉上相似性,又保证了多样性和独特性,在后面的作品拼接时有助于产生颇具个性的NFT作品。
(2)非固定部位的设计
非固定的部位就是每位火箭人身上的衣着和饰品,这些非固定的元素会在接下来的合成中起到区分作品,彰显每个NFT独特性的作用。
(1)服装
由于衣服的款式过于繁杂,下面列举主要几种比较典型的款式进行介绍。
①西装
西装的设计采用两层结构,一是外部的西装,二是从西装领口露出来的内衬。外部的西装设计采用了拟真的手法,选取了现实世界中的棉麻面料,采用了运动夹克型的西装款式,没有明袋。
内衬则是分为两种,毛衣型和衬衫型,均没有设计领带。
西装有助于塑造出一种都市青年的形象,具有大气的特征,比较贴近真实世界。
②布雷泽
布雷泽是西装的一种款式,在本NFT作品中是一种占比极大的衣着款式。灵感来源于1998年的日本动漫《星际牛仔》中男主史派克的着装。设计理念讲究随性,这点从领带没有刻意打好,左侧领片没有外翻,内部衬衫的领子也没有打理整齐就可以看出。该服装有助于塑造一种生活精致却又玩世不恭的都市青年形象。
③阿基拉的夹克
之所以叫阿基拉的夹克是因为该服装的设计灵感来源于1988年大友克洋指导的动画电影《阿基拉》中男主角金田身着的服装。该服装是一种高领运动夹克,原设计颜色为红色,后改为多种颜色。作者希望通过该夹克的前卫感塑造出未来的个人形象。
④桶
这里的“桶”不是真正的桶,只是单纯为该服装的形取一个相近的名字。这件衣服的设计灵感来自各种前卫的服饰。同上面的阿基拉的夹克一样,作者希望通过这件衣服可以塑造出未来的个人形象。
⑤宇航服
宇航服是本NFT的设计初衷,从该NFT的名字“火箭人”就可以看出该服装的重要性。灵感就取自真实的宇航服。作者在设计该宇航服时,发觉单纯的对一整件宇航服做区分容易造成趋同的问题。于是将一件完整的宇航服拆分成7个模块,分别为脖子、管、面罩、手臂、头盔、胸甲和胸口面板,每个模块都有9种不同的模板可以选择,以实现宇航服的多样化。
⑥宇宙服
宇宙服和宇航服均属于太空的风格。不过,宇航服偏写实,宇宙服更像想象出来的产物。宇宙服的设计灵感源自1972年艾尔顿·约翰演唱的歌曲《火箭人》。该服装的设计初衷是鼓励当代青年人能有星辰大海的目标,去追求自己的理想。
(2)发型
本NFT为每个人物设计了头发模块,由于一些衣服的特殊性,导致一些头发不得不单独为该服装设计模板,剔除掉这些头发,总共的头发模板包括54种,其中包含25种发型,29种头饰。头饰有角、棒球帽和耳机。发型则有爆炸头、大卫鲍威的鲻鱼头、蘑菇头、大背头、星际牛仔的爆炸头和摇滚明星的长卷发。
随着主体骨架、发型、服饰、配件的设计,NFT的主要元素设计完成,最后留下的设计任务就是背景了,由于主体造型比较复杂,颜色也比较丰富,所以背景的设计大多比较简单,如:单色、渐变色、简单明了的天空等低调风格的背景,这些背景基本百搭。由于这套NFT作品还有太空、怀旧、前卫的设计元素,所以也设计了几款比较炫酷的背景,如太空场景、手绘绚烂的夕阳美景,还有满满节奏感的特效墙面。
使用Python作为开发语言,图片处理主要使用Pillow函数库。合成NFT的原理比较简单,先生成随机数,用于各模块的随机组合。然后确定各种模块的叠加次序。例如,骨架应该作为初始的模块,在该模块的上面叠加衣服、饰品模块,最后将整体叠加到背景模块上,实现完整的作品。另外,为了防止产生重复的组合方案,需要采用哈希的数据结构来存储每次生成的不同序列号,保证了所有方案的唯一性。
while i !=2001:
skull=random.randrange(1,30,1) #产生每个模块的随机数
hair=random.randrange(1,55,1)
cloth=random.randrange(1,58,1)
beard=random.randrange(1,10,1)
background=random.randrange(1,54,1)
accessories=random.randrange(1,106,1)
if judge(skull,hair,cloth,beard,background,accessories): # 判断是否和之前的组合重复
continue
img1=Image.open("C:\Users\Ke\Desktop\NFT\骨架\"+skull.str()+".png")
img2=Image.open("C:\Users\Ke\Desktop\NFT\头发\"+hair.str()+".png")
img3=Image.open("C:\Users\Ke\Desktop\NFT\衣服\"+cloth.str()+".png")
img4=Image.open("C:\Users\Ke\Desktop\NFT\胡子\"+beard.str()+".png")
img5=Image.open("C:\Users\Ke\Desktop\NFT\背景\"+background.str()+".png")
img6=Image.open("C:\Users\Ke\Desktop\NFT\服饰\"+accessories.str()+".png")
img5.paste(img1,mask=img1) #将不同的模块进行叠加
img5.paste(img2,mask=img2)
img5.paste(img3,mask=img3)
img5.paste(img4,mask=img4)
img5.paste(img6,mask=img6)
img5.save("C:\Users\Ke\Desktop\NFT\成品\"+i.str()+".png") # 保存图片
i=i+1
经过编程即可生成成千上万的NFT作品,风格相似却各不相同,如图1所示。
图1 各不相同的NFT作品
本文详细介绍了“火箭人”系列NFT的设计理念与制作方法。制作这样一款NFT合集对作者来说意义重大,是对艺术创作和自动化编程的双重考验。该项目当前还停留在二维图片的形式。在未来的规划中,作者会尝试探索元宇宙方向的造型设计,可能会设计三维形式的NFT作品。“火箭人”系列NFT可以用作消费者的身份ID,来凸显出与众不同的个性,或者作为一般的艺术画作用来鉴赏。然而,局限于当前NFT技术的不成熟,NFT的交易给普通消费者设置了门槛,用于保证唯一性和不可更改特性的资源开销仍然巨大,如果未来区块链的技术使得这一切变得更加便利和便宜,那么NFT或许就真的可以成为日常交易物品,受到广大消费者的青睐。