Blender でジェネレーティブアートを作りNFTにする

NFT

結構大変でした。ので皆さんに現時点での一番効率的な方法を共有いたします。下記が私が今回作成したNFTです。

余裕のある方、興味のある方はMintしてね!

この記事では大まかな手順を記していき、都度別の記事で詳細を述べていく方針にします。

ちなみにこの記事では

  • Blenderがある程度使える(Geometry Nodeが使える)
  • Pythonが使える(出力の自動化で必須)

を満たす方が対象になってしまいます。現段階では3Dでやるとなるとハードルは高いというか、、、私はすごく大変でした。さらには

  • 仮想通貨を持っていて、メタマスクなどのWallet(ホットウォレット)がある
  • 独自コントラクトにするのか、通貨の種類はどうするか、などNFTに関係する知識の習得

というところもネックで、一人じゃ絶対大変なので、有識者二人以上でやることをお勧めします。ニトリの家具組み立てと同じです。

それでは行きましょう。

Blenderで3Dファイル作成

実現可能な、大枠のデザインを設計

着想を得て、作業に取り掛かってから気づいたことですが、機械が大量に実行するということは定量的にデータを作成していくことが必須になります。

人間による微調整でうまくいくところはすべてといっていいほど、ジェネレーティブアートでは使えません。

また別の問題もあります。例えばサナギから成虫になるような作品の場合、Blenderでそれだけのことができるのか、が問題です。かなりソフトも進化していて、できることはかなり増えていますが、できない点も多いのが現状です。

私の作成例ですが、花、蝶、花瓶の模様、色、位置をランダムに選んで出力する仕様です。

Geometry Nodesでモデルを作成

個人的に、スカルプモデリング派の方は、ジェネレーティブアートとの相性は悪いと思っています。逆にGeometry NodesによってNodeアート作られている方は相性いいと思います。

今回の私のNFTもGeometry Nodesで1から蝶、花、花瓶を作っています。

蝶の最上層のNodeです。ちゃんとGroup作ってやるといいと思います。作業終盤に痛い目にあいます。

注意点として、「Geometry Nodesでできないこと=ジェネレーティブアートでできないこと」というマインドになってしまうことです。Pythonが使えるなら、できることが格段に増えることを忘れてはいきません。(作業が煮詰まってくると悲観的になるものです。)

Shader Nodesでマテリアル作成

きっと色や模様を変えることはしたくなることでしょう。模様の作り方などの勉強も必要になってきます。

条件の設計

ここ結構大事だと思います。作品コンセプトにもかかわってくる話だと思いますが、色を細かく設定したり、形状を細かく設定すると、出来上がるパターンは天文学的数字になります。

それを良しとすればいいですが、NFTには「プロパティ」という概念も存在し、その作品自体のラベリングを行う仕組みがあります。なので赤なら赤、青なら青と条件を付けることができ、ユーザはそれを見て数ある作品から好みのものを探すものです。

ですから、ある程度モデリングができたら値の代入を少数にするのではなく、整数にするなど、考慮する必要があります。

色の設計の際に役立ててほしいのが下記の記事で、幾多の色から120色程度を選ぶ方法をまとめています。ご参考まで。

Pythonでコーディング

pandasなどのライブラリのインポート

プロパティ設計をする場合、どうしてもコード内で定数を与えるのはキビシイところがあると思います。なので、外部のcsvファイルなどから条件をReadする設計が無難だと思うので、pandasも必要になると思います。

また注意点として、pip installのインストール先がBlender Pythonの環境であること、PYTHONPATHの設定を改めて行う必要があることも、お忘れなきよう。

コーディング

個人的に、地味にハマる点が各所に存在している印象で、別記事にしたいと思っています。お楽しみに。

条件ファイルの作成

thirdwebを使う前提になってしまいますが、Batch Uploadの際に条件ファイルが必要になります。

条件ファイルの出力は実行ごとではなく、上書きしていく仕様がいいと思います。なぜならプログラムが止まることも起こりうるからです。その際Headerをどうするかも大事になります。下記に実装例を示します。

# コピペで動きません!!
# save csv
if os.path.isfile(out_file_path) == False:
    mode_str = 'w'
    header_boo = True
else:
    mode_str = 'a'
    header_boo = False
    
out_df.to_csv(out_file_path
              ,mode=mode_str
              ,header=header_boo
              ,index=False
              )

thirdwebでDeploy

おそらくこの記事の対象の方はスマートコントラクトに触れたことがない方だと思いますので、現時点で一番無難な、thirdwebによる方法を示させてください。

NFTの仕様を決定する

ここが初めての方が躓くポイントだと思います。まずは解説記事、解説動画上のUIと、実際の作業画面が異なることです。ボタンのデザインも違えば、名称も異なることがあるでしょう。

11/20時点でのDeploy直前の画面ですが、それより少し前はこの画面はなかったです。恐ろしいです。

なので基本的に、thirdwebにかかわる作業は寝る前、人との待ち合わせの前などにはしないことです。

NFT Dropの作成

どのようなNFTにするかを決めたら実際にDeployの作業を進めます。いい解説動画がありますのでご参考に。作業画面が変わっている可能性もありますので、その辺ご注意ください。

注意点としては、「NFTの仕様を決定する」のところでも申し上げましたが、Nft Drop,Nft Collection,Edition Drop,Editionなど数多くの仕様が存在することです。下記に個人的に主要な4つだけ例を提示します。

NFT Drop [ Release collection of unique NFTs for a set price ]
NFT Drop - ERC721 | Smart Contract Release
Release collection of unique NFTs for a set price. Deploy NFT Drop in one click with thirdweb.
  • Release a PFP Collection where each NFT has a different combination of traits
  • Release NFTs of your artwork, and have your community mint them for a price
  • Create a restricted-access NFT drop, where only a specified list of wallets can claim NFTs
NFT Collection [ Create collection of unique NFTs. ]
NFT Collection - ERC721 | Smart Contract Release
Create collection of unique NFTs.. Deploy NFT Collection in one click with thirdweb.
  • Create a 1-of-many collection of your photography
  • Create a 1-of-1 NFT that provides special utility
  • Mint your artwork as NFTs and then sell them on a Marketplace
  • Create a community-made NFT collection
Edition Drop [ Release ERC1155 tokens for a set price. ]
Edition Drop - ERC1155 | Smart Contract Release
Release ERC1155 tokens for a set price.. Deploy Edition Drop in one click with thirdweb.
  • Create NFT Memberships such as our Early Access Cards that you want your users to claim
  • Release an item in your game for a limited-time
  • Create 100 NFTs based on one art piece, and allow users to claim one per wallet
Edition [ Create editions of ERC1155 tokens ]
Edition - ERC1155 | Smart Contract Release
Create editions of ERC1155 tokens. Deploy Edition in one click with thirdweb.
  • Create an NFT Collection where each NFT has 100 copies
  • Airdrop an NFT to a list of addresses that all use the same asset and metadata
  • Create 10 “copies” of your artwork and sell them on a Marketplace

ざっと見るとEditionのほうはERC1155で作られて、DropとつくものはMintを行うのが購入者であるところだと思います。(間違ってたらコメントなどでご指摘ください。)

おわりに

いかがだったでしょうか。大変なことは伝わりましたかね?やる気がなくなった方、ないしはお急ぎの方は、外部のサービスを使っちゃうのもありだとは思います。

それでは。

おまけ

個人的に「web3!万歳!」と銘打ってNFT作るなら、独自コントラクト一択だと思っています。逆にNFTで一攫千金!と思われている方などは、OpenSeaでERC1155 Tokenを発行するのがいいと思います。Gas代もお得ですし、OpenSeaに表示されているのってなんかワクワクしますよね。

私が今回作成したのはNFT Dropで、Mintを行うのは購入者になります。独自コントラクト発行直後はTokenは発行されない(買う人がいなければ)ので、Openseaなどには表示されません。

Openseaに表示されない感じがなんとなく、「ブランディングができていない感」「他のNFTアーティストと同じ土俵に立てていない感」がしていたんですが、ゆくゆく考えてみたときに、Web2.5の手法:「Openseaのアルゴリズムに便乗している」だと気づいたんです。

ブロックチェーンのうまみって、非中央集権ですし、そもそも独自コントラクトが発行された時点でNFTアートは作成できているわけですから、「web3!万歳!」と銘打ってNFT作るなら、NFT DropでDeployして、購入者にMintしてもらうのがいいのかなと思いました。

ただ、私が今生きるフィールドは明らかにWeb2.5ですし、この先もしばらくはWeb2.5なのでね。まだまだこの辺の議論はされていくと思います。今後の動きが楽しみですね。

以上。

コメント

タイトルとURLをコピーしました