Blenderで3D NFTコレクションを素早く作成する方法
テクノロジーの新しいトレンドに注目している方なら、NFTは間違いなく研究の場に登場しているはずです。
この記事では深入りしませんが、ご存知でない方のために説明すると、非代替性トークンはブロックチェーン上に存在する固有のファイルまたはデータの断片で、メタデータを通じて指定されたデジタル資産の所有権を割り当て、確認することができ、そのブロックチェーンの台帳に記録されています。
NFTは、文字通りデジタルの足跡を持つあらゆるものが対象となりますが、デジタルアートの世界では、投機的好奇心のニッチを切り開いてきたように思われます。
NFTの急速な出現は、意欲的なアーティスト(特にデジタルアーティスト)に、前例のない方法で作品を共有し、潜在的に新しいファンやコミュニティに到達し、また作品から新しい収入源を見つける新しい機会を提供しました。NFTの多くは一点もののオリジナル作品ですが、新人アーティストの多くは、複数の作品を制作し、それらを一括して販売するか、複数の買い手にオークションにかけて、利益を最大化する傾向があります。これらはコレクションと呼ばれます。
多くの場合、1万点ものアートワークが1つのコレクションを構成しています。Blenderのような3Dデザインソフトウェアを使用するのが最も効率的な戦略で、複数のオブジェクト(それぞれがマテリアルやモーションのような複数の属性を持つ)で3Dモデル/シーンを構築し、3Dレンダリングのコレクションを生成します。
Katohmy LaeynによるNFTデザイン
非常に面倒に思えるかもしれませんが、このプロセスを自動化することで、多くのユニークなシーンや組み合わせを手動で作成することを避けることができるのです。
BlenderでNFTを構築する
コレクション内のNFTをユニークにするのは、同じコレクション内の他のすべてのNFTとは異なる視覚的な独自性です。メタデータが本当のユニークさですが、視覚的にコレクション内の他のものと区別することが最も重要な側面です。この偉業は、何千もの画像を作ることを計画し、Blenderのコーディング言語であるpythonでプログラミングする方法を知らない人にとっては、圧倒的に見えるかもしれません。
Blenderで行うことは基本的にすべてpythonでの操作になりますが、大規模なスクリプトを使用せずにこれを行う方法があります。
タイムラインの操作
アニメーターであれば、タイムラインはBlenderでナビゲートする方法であることをご存知でしょう。通常Blenderのワークスペースの一番下にあるタイムラインは、シーンのアニメーションをスクラブしてアニメーションやシミュレーションの状態をフレームごとに表示したり、オブジェクトのキーフレームやマーカー、シーケンスの開始フレームや終了フレームを設定・編集したりすることが可能です。
ドライバ
Blenderでは、ドライバはタイムラインにキーフレームを設定するのと似ていますが、より柔軟でプログラムしやすいものです。Python スクリプトの代わりに、ドライバを使って複数のインスタンスを表示したりトグルしたりすることが可能です。また、キーフレームを一つ一つ手作業で設定する必要がなくなり、生産性を最大限に高めることができます。
ドライバは、その名の通り、オブジェクトやそのプロパティ(マテリアルや可視性など)の値や設定を駆動するものです。任意の特定のドライバの値は、ドライバ式、または他の設定や変数を使用する数式を使用して設定することができます。
例えば、Blenderファイルに複数のシェーダがある場合、Material Index Geometry Nodeを設定し、Modifierにドライバを追加すれば、フレームで駆動するドライバ式を使用して、Shader Libraryをスクロールするキーフレームごとに値を設定することが可能です。
Outliner または Properties タブで特定のプロパティを右クリックすると、Driver サブメニューが表示され、新しいドライバを追加したり、既存のドライバをコピー、削除、編集するオプションが提供されます。
ドライバ方式
Driver Property ウィンドウ内では、タイプと値によってドライバ設定を補強するオプションがあります。デフォルトでは、Driver TypeはScripted Expressionに設定されています。ここでは、これを使用します。
フレーム方式
完全なコーディングではありませんが、ドライバから望む結果を得るには、少しのスクリプトと少しの数学が必要です。フレームを通して可視性とバリエーションをスクラブするためにタイムラインを使用したいので、グローバルフレーム式を使用すると、トグルはタイムラインのフレーム位置によって駆動されます。
ジオメトリノード
複数のマテリアルを持つオブジェクトは、コレクションに多様性を持たせる素晴らしい方法ですが、ドライバはマテリアルプロパティで設定することができません。グループ入力(Group Input)ノードとグループ出力(Group Output)ノードの間にマテリアルインデックスを設定し、目的のオブジェクトのジオメトリノードツリーでマテリアルインデックスを一緒に繋げる必要があります。
ノードツリーは以下のようになります。
Modifiersタブには「Set Material Index」機能があり、ここでドライバを追加して、フレーム式で駆動するマテリアルを設定することができます。
例えば、5つのマテリアルがあり、0が最初のシェーダのインデックス値である場合、ドライバを次のように設定します。(フレーム // 5)
frame」式が設定されています。マテリアルインデックスの値は常に整数(整数)であり、浮動小数点(小数点のある数値)ではないため、”//”が設定されています。5」の値は、タイムラインの5フレーム目ごとに、ドライバがライブラリ内の次のマテリアルに切り替え、指定されたオブジェクトに割り当てることを意味します。
ただし、すべての素材を循環させたら、ドライバの操作は終了します。タイムライン上の最後のフレームまで循環させる必要があります。それを可能にするのが「%」演算子、モジュロです。この後の値は、素材をいくつまで循環させたいかを表します。5 つの素材がある場合、数値は “5” です。
ドライバーによる視認性・可変性の切り替え
Set Material Indexトグルと同様に、オブジェクトはフレームベースの表現で駆動することができます。しかし、オブジェクトの可視性を駆動することは、そのマテリアルを駆動することとは若干異なります。マテリアルの場合、通常、式で使用される値は1つだけです。
一方、マテリアルの場合は、より多くの値を使用しますが、可視または不可視(ビューポートで有効または無効)の2つの状態を持つことになります。
アクセサリーの可能なバリエーション数に応じて、エクスプレッションに反映させ、また、表示させたい回数も考慮する必要があります。オブジェクトのバリエーションが3つある場合、各バリエーションのフレームを一定数だけ表示させることができます。
Material Indexとは異なり、ビューポートの可視性はOutlinerで制御されます。そこには、シェーディングビューポート、レンダリングビューポート、最終レンダリング用の可視性コントローラがあります。これらのアイコンを右クリックして、ドライバを目的の対応するオブジェクトに設定します。
駆動式は、次のようになります。(フレーム // 3-1) % 4
Material Indexの設定と同様に、”frame “式を使用します。タイムラインのフレームを浮動小数点ではなく、整数として読み取るため、”//” が設定されています。3 “は、タイムライン上の3番目のフレームごとに、ドライバが指定されたオブジェクトの可視性を有効にすることを意味します(ただし、そのフレームに限ります)。1 “はオフセット値です。シーンに3つのオブジェクトのバリエーションがあっても、3つともない場合はバリエーションとなります。つまり、技術的には4つのバリエーションがあります。それぞれのオブジェクトを1ずつオフセットすることで、Blenderにそのことが伝わります。
最後に、モジュロ演算子を設定し、値を「4」にします。これは、タイムラインの最後のフレームまですべてのバリエーションを循環させることを意味します。
正しく行われた場合、タイムラインをスクラブすると、マテリアルの変化とオブジェクトの可視性を見ることができるはずです。
それでは、これらの値や表現をじっくりと試しながら、プロジェクトに最適な表現を見つけてみてください。
BlenderでNFTを作成するためのチュートリアルビデオにご期待ください。
以上、Blenderを使って作品にバリエーションをつけ、自分だけのNFTコレクションを作るための方法を簡単に解説してきました。これでもまだ複雑すぎるようなら、NFTクリエイターを目指す方向けにドライバの使い方を公開したチュートリアルビデオをYouTubeページに掲載する予定ですので、このブログでの発表をお待ちください。
NFTは、好き嫌いは別として、技術界では最新の話題の的となっています。何千もの画像が1つのコレクションを構成しているため、その出力はどんなアーティストのレンダリングワークステーションにとっても大変なものになります。Blenderを使用してNFTをレンダリングする予定であれば、当社の超高速クラウドレンダリングサービスRender Poolを使用してNFTをさらに高速にレンダリングし、ローカルレンダリングコンピュータの能力よりもはるかに速く希望のマーケットプレイスに取り込むことを検討してみてはいかがでしょうか。