generative art | NFT

GithubよりNFT Collection Generatorの実施

GithubよりNFT Collection Generatorの実施

GithubよりNFT Collection Generatorの実施

これは、事前構成された特性と画像レイヤーのリストを使用して、NFTのコレクション用の画像とメタデータファイルの一意のセットを生成する単純なNode.jsプロジェクトです。トレイト構成と画像レイヤーを更新することで、独自のコレクションを作成できます。

準備

ローカルPC(ご自身が実施する際に使用するPC)にnode.jsとnpmのダウンロード、インストールが必要となります。

インストール

リポジトリをgithubからコピー(ローカルにclone)

git clone https://github.com/manuelpires/nft-collection-generator.git

リポジトリのディレクトリ内でnpmパッケージをインストール

なので上記コマンド以外なにもしなければ[cd nft-collection-generator]でディレクトリを移ってから下記コマンド

npm install

使用法

config.jsファイルには設定例があり、traitsフォルダーには事前定義された画像レイヤーもあります。 このプロジェクトを既存の構成でテストおよび実行して、最初にすべてがどのように機能するかを確認してから自分の編集をし始めたほうが良いでしょう。

コンフィギュレーションのテスト

現在のconfig.jsファイルで構成をテストします。

npm test

プロジェクトの実施

現在の構成でプロジェクトを実施。

エラーなしで実行できたらフォルダができるとなってますが、エラーが起きるので先に下記フォルダを作成して実施します。

  • imagesフォルダを作成
  • metadataフォルダを作成
npm run build
100のジェネレーティブアートが作成されます。
100のジェネレーティブアートが作成されました

その他のスクリプト

イメージbase URIの設定

プロジェクトの実行後、以下を実行することにより、生成されたすべてのメタデータファイル内の画像ベースURIを更新できます。画像ファイルがどのオフチェーンで保存しておくかの基本のURIとなります。

npm run update-base-uri

これにより、config.js内のIMAGES_BASE_URIの現在の値が取得され、それを使用してすべてのメタデータファイルがプロジェクト実施後に作成されます。

gifファイルの作成

プロジェクトを実行した後、生成された画像を使用してGIFを作成できます。これは簡単にわかるように生成イメージが移り変わっていくGIFです。

npm run create-gif

画像のハッシュと来歴ハッシュを計算する

プロジェクトの実行後、次のスクリプトを起動して、生成されたすべての画像のSHA-256と、すべてのハッシュの組み合わせの来歴ハッシュを計算できます。

npm run calculate-hash

traitsリストの編集について

また、トークンで使用可能なすべての特性の配列を含むORDERED_TRAITS_LISTと呼ばれる変数を変更することで独自のCollectionGeneratorとなります。各特性の構造は次のとおりです。

現状はTypeのbackground、square、triangle(traitsフォルダ直下のフォルダがある)、”Baby Purple”,”Butter”などのpngファイルが入っている。

{
  display?: string;
  ignore?: boolean;
  type?: string;
  options: {
    allowed?: string[];
    forbidden?: string[];
    image?: string;
    value?: string | number;
    weight: number;
  }[]
}
  • リスト内のすべての特性について、生成されたトークンごとに、オプションリストからランダムに選択されたオプション(値と画像)が1つ取得されます。ランダムに選択されたオプションに存在しない値があることが判明した場合を除いて、その場合、トークンはその特定の特性から何も取得しません。
  • リストの順序は重要です!これは、最終的なトークン画像を作成するために画像を互いにマージする順序を定義します。通常、バックグラウンド特性は配列の最初である必要があります。
  • オプションのランダムな選択は、その重みとオプションの許可/禁止条件に基づいています。オプションの重みは、同じオプション配列内の他のアイテムの重みに相対的であり、少なくとも1の整数である必要があります。したがって、オプションに10の重みを入れると、10倍の確率が必要になります。重みが1に等しい同じ配列内のオプションが選択されます。
  • 特性が無視でマークされている場合、トークンの一意性を定義するときにその特性は考慮されません。たとえば、トークンの背景が一意性に影響を与えたくない場合は、その背景特性にignore:trueのマークを付けることができます。
  • オプションの許可/禁止配列には、以前の特性のオプション値と一致する1つ以上の文字列を含める必要があります。使用すると、このオプションは、以前に選択された文字列値の少なくとも1つを持つトークンに対してのみ許可/禁止されます。参考までに、config.jsファイルで例として使用されている許可および禁止されている配列を確認してください。この場合、「オーキッド」の三角形は、「コーラル」または「ミント」の背景を持つトークンでのみ使用できます。また、「ロビン」の背景を持つトークンでは「ティール」の三角形は使用できません。
  • トレイト内で定義された各タイプは一意である必要があります。
  • タイプフィールドなしで特定のトレイトを残す場合、それは「ジェネリック」トレイトと見なされます。これらの種類のトレイトには、オプション配列内の他のトレイトと共通の値がないことが重要です。
  • 各画像文字列には、特定のPNG画像への相対パスが必要です。
  • 定義されたvalueを持つすべてのoptionimageフィールドを配置しない場合、トークンの一部(一意のメタデータを使用している場合でも)が同じ生成画像になる可能性があります。
  • 表示フィールドは、数値でのみ使用することを目的としています。詳細については、OpenSeaのメタデータ標準はこちら
  • あなたが持っている特性の量とそれらのオプションの量に応じて、生成できる一意のトークンの最大数があります。スクリプトは、組み合わせのそれぞれが見つかるまでオッズに関係なく検索を続け、重み係数を役に立たないままにするため、可能な限り正確な最大量の一意のトークンを生成することはお勧めしません。推奨事項として、N個のトークンを生成する場合は、少なくとも2N個のトークンを提供できる特性のリストを作成すると思います。このプロセスでは、実行しようとしたときにTOTAL_TOKENSの値が大きすぎるかどうかが通知されます。

参考

NFT Collection Generator(github)

Patrick CollinsのNFT-mixを参考にNFTをtestOpenSeaへデプロイデプロイしてみる。

Leave a Comment

Item added to cart.
0 items - $0.00