区块链 | NFT手把手教你如何生成式NFT艺术品创作 详细教程

Posted 区块链开发工程师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链 | NFT手把手教你如何生成式NFT艺术品创作 详细教程相关的知识,希望对你有一定的参考价值。

在这个教程中,我们将学习如何使用使用一组基础特征实现生成式NFT艺术品。 使用的工具包括Python和Scrappy Squirrels提供的基础特征库。

像Cryptopunks 和Bored Ape Yacht Club这样的Marquee NFT 项目 已经产生了数亿美元的收入,并让 开发者成为了百万富翁。这些项目(以及当今大多数其他成功的 NFT 项目)的共同点是它们都是PFP 项目。 这意味着它们通常是 10,000 多个化身的集合,其中每个化身都是独一无二的,并且具有一组特征。

在这个教程中,我们将学习如何使用自定义稀有度生成这样的收藏。我们将使用Scrappy Squirrels团队创建的库来完成此任务。 在本教程结束时,你将生成自己的自定义头像集合以及关联的元数据。

1、准备工作

我们的库是用 Python 编写的,因此需要在计算机上安装Python,此外你还需要 pip, 它将为我们安装重要的软件包。 可以到此网站并下载最新版本的 Python。即使不熟悉如何编程(使用 Python 或其他方式) 也可以学习本教程。

你还需要一位了解数字艺术的艺术家来创建自己的定制收藏。但是,这不是学习本教程所必需的。我们将为你提供某些测试图像。

作为本教程的一部分,我们将引导你完成创建Scrappy Squirrels NFT 的过程,这是我们已经启动的一个真实项目。本教程 以及后续教程是我们路线图目标的一部分,旨在让人们更容易访问 NFT 和区块链。

松鼠已经使用超过 85 个特征生成。这里有几个示例:

2、生成式NFT图像的实现机制

我们在上面看到的松鼠是通过将 PNG 图像堆叠在一起生成的。尽管没有蓝筹 NFT 项目描述他们如何产生艺术,但我们确信 这也是他们所做的。你看到的几乎每个 NFT 头像都是一组堆叠的 PNG 图像。

从右上角开始,如果你将每个特征图像按顺时针顺序堆叠,一个接一个,最终会得到位于中心的图像。这里有几点需要注意:

  • 每个特征图像(以及最终的松鼠头像)具有完全相同的尺寸。
  • 除了背景特征(这是第一个特征)之外,其他所有特征图像都有透明背景。
  • 特征图像必须堆叠以获得正确的松鼠头像(即从右上角顺时针方向)。
  • 特征图像的绘制方式使其位置相对于所有其他特征都有意义。
  • 我们可以将任何特征与同一类别的另一个特征交换(例如,将红色衬衫换成蓝色衬衫)。因此,在这种情况下,如果每个特征 类别有 10 个特征,我们理论上可以生产 1 亿只不同的松鼠。

因此,艺术家的工作是创建各种特征类别的多个图像。你可以根据需要拥有尽可能多或尽可能少的特征类别。请记住,可能的 组合数量会随着特征类别的数量呈指数增长。

在Scrappy Squirrels项目中,我们创建了 8 个特征类别:

每个特征类别都有不同数量的特征图像。例如,我们有 11 种不同的衬衫可供使用:

现在轮到你了。你需要确定要使用的特征类别并为每个类别生成特征图像。确保它们满足上述条件(应具有相同的尺寸,应正确定位等)。 此外,请确保正确命名特征图像。你为图像命名的内容将出现在元数据文件中。

完成此操作后,我们现在就可以使用库自动生成我们的收藏了!如果你不是艺术家(或无法接触艺术家),请不要担心!我们 有一些示例图像可供你使用。

注意:目前该库仅能够处理 PNG 图像。我们将很快增加对其他媒体类型的支持。

3、下载库并安装所需的软件包

我们的生成式NFT艺术库在 GitHub上 免费提供。

下载库后,打开终端或命令提示符,然后运行以下命令:

1
pip install Pillow pandas progressbar2

运行此命令将安装我们的库所依赖的三个重要的 Python 包:

  • Pillow:一个图像处理库,可以帮助我们堆叠特征图像。
  • Pandas:一个数据分析库,可以帮助我们生成和保存图像元数据。
  • Progressbar:一个库,它会告诉我们图像生成发生时的进度。

4、添加自定义资产

在你下载的generation-art-nft存储库中,会看到有一个assets文件夹。如果有可用的自定义特征艺术品, 请将此文件夹的内容替换为你的资产。在我们的例子中,assets文件夹有 8 个子文件夹,代表适当命名的类别(见上文), 每个子文件夹都有该特定类别的特征图像。

如果没有自定义图稿,请保持默认资产文件夹不变。

5、配置 config.py 文件

这是生成头像集合之前的最后一步(也许也是最重要的一步)。打开config.py文件并按照以下说明进行填写。

配置文件由一个名为 CONFIG 的 Python 变量组成。CONFIG 是一个 Python 列表(由 [] 封装)。它包含按 需要堆叠的顺序排列的特征类别列表。这里的顺序非常重要。这是一个示例配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
CONFIG = [
    
        'id': 1,
        'name': 'background',
        'directory': 'Background',
        'required': True,
        'rarity_weights': None,
    ,
    
        'id': 2,
        'name': 'body',
        'directory': 'Body',
        'required': True,
        'rarity_weights': 'random'
    ,
    
        'id': 3,
        'name': 'eyes',
        'directory': 'Expressions',
        'required': True,
        'rarity_weights': None
    ,
    
        'id': 4,
        'name': 'head_gear',
        'directory': 'Head Gear',
        'required': False,
        'rarity_weights': None
    ,
    
        'id': 5,
        'name': 'clothes',
        'directory': 'Shirt',
        'required': False,
        'rarity_weights': None
    ,
    
        'id': 6,
        'name': 'held_item',
        'directory': 'Misc',
        'required': True,
        'rarity_weights': None,
    ,
    
        'id': 7,
        'name': 'hands',
        'directory': 'Hands',
        'required': True,
        'rarity_weights': None,
    ,
    
        'id': 8,
        'name': 'wristband',
        'directory': 'Wristband',
        'required': False,
        'rarity_weights': [100, 5, 5, 15, 5, 5, 15, 15, 5, 1]
    ,
]

每个特征类别都表示为一个 Python 字典(由 封装)。所需要做的就是在 CONFIG 列表中按顺序定义这些特征类别字典。

特征类别字典有 5 个它需要的键。它们是id、name、directory、required 和 rarity_weights。创建新层(或替换现有层)时, 请确保已定义所有这些键。

下面是为每个键分配值的方式:

  • id:层数。例如,如果主体是需要堆叠的第二个特征类别(或层),它的 id 将为 2。请注意,层仍必须以正确的顺序定义。
  • name:特征类别的名称。这可以是你选择的任何内容。它将出现在元数据中。
  • directory:资产中包含该特定特征类别图像的文件夹的名称。
  • required:如果每个图像都需要此类别。某些特征类别(例如背景、身体和眼睛)必须出现在每个头像中,而某些其他 类别(例如头饰、腕带或衣服)可以是可选的。我们强烈建议你将第一层所需的值设置为 true。
  • rarity_weights:这个类别将决定你的特征有多普遍(或稀有)。查看下一部分以获取更多详细信息。

6、配置稀有权重

rarity_weights键可以采用三种值:None、Random 或 Python 列表。让我们一一探索每个值。

如果将 rarity_weights 值设置为None,每个特征将被分配相同的权重。因此,如果有 5 个特征,则每个特征将出现在 大约 20% 的化身中。

如果required为 False,则同样可能根本无法获得该特定特征。在前一种情况下,如果required属性设置为 false,则每个 特征将出现在大约 16.6% 的头像中。另有 16.6% 的化身根本没有这种特殊特征。

将rarity_weights设置为 ‘random’(注意括号)会随机为每个类别分配权重。我们强烈建议你不要使用此功能。始终采用相同 或自定义的用户定义稀有度。

Python 列表可能是分配稀有度权重的最常用方法。首先要做的是转到特征类别文件夹并按名称对特征图像进行排序。例如, 对Wristbands文件夹进行排序将为我们生成以下内容:

可以看到我们有 9 种不同类型的腕带。现在,我们需要定义一个 Python 列表(由 [] 封装),其中每个数字代表按升序 分配给特定特征的权重。

如果必需的设置为 True,则权重的数量应等于该类别的特征数量。如果必需的设置为 False,那么权重的数量应该等于特征 数量加一。

在我们的例子中,如果需要腕带,我们将在列表中定义九个权重,如果不需要,我们将定义十个权重。在后一种情况下,第 一个重量将是与根本没有腕带相关的重量。

让我们看一下我们为腕带定义的rarity_weights。

1
[100、5、5、15、5、5、15、15、5、1]

由于不需要腕带,我们设置了十个重量(九加一)。第一个重量是与根本没有腕带相关的重量。第二个权重与Cheetah乐队相关联, 第三个权重与Giraffe乐队相关联,依此类推。注意这里的字母顺序。

权重越高,特定特征越常见。例如,Cheetah的权重为 5,没有手环的权重为 100。这意味着拥有Cheetah手环的几率是没有手环的 20 倍。

7、生成NFT艺术品集合

一旦配置了 config.py 文件,现在是时候生成你的集合了。打开终端(或命令提示符)并导航到generation-art-nft文件夹 运行以下命令:

1
python nft.py

运行此命令将启动图像生成程序。它将首先检查 config.py 文件是否有效。接下来,它将告诉你不同的可能组合的总数。 然后它会询问你要创建多少个头像。我们建议创建比你想要创建的多 20% 的内容,这样即使在删除重复项之后也有足够的剩余。 在我们的例子中,我们选择创建 12,000 个化身,尽管我们想要 10,000 个。然后它会要求你为集合命名,然后开始生成过程。

我们花了大约 30 分钟来生成 11,957 个头像(删除重复后)。图像及其相关元数据将在输出文件夹中可用。

图像文件夹看起来像这样。请注意,这只是一个示例,而不是我们生成的最终松鼠:

元数据文件是一个 CSV 文件,可以将其导入 Excel 并进行分析(例如哪个特征最稀有、哪个特征组合最常见、头像稀有度排名等)。

以上是关于区块链 | NFT手把手教你如何生成式NFT艺术品创作 详细教程的主要内容,如果未能解决你的问题,请参考以下文章

手把手教你区块链java开发智能合约nft-第五篇(铸造第一个NFT)

用Three.js打造生成式NFT艺术藏品

用Three.js打造生成式NFT艺术藏品

区块链NFT简单介绍(以BAYC为例)

区块链NFT如何参加

区块链技术|NFT交易平台|NFT数字艺术藏品|NFT上链铸造