社内にBlenderチームを結成し、デモ映像の制作を通じて日々検証を行なっているグリオグルーヴ。本連載では、3ds Max歴25年からBlenderを使い始めた同社のCGディレクター横田義生氏が、自身の経験からBlenderを始めたい人に向けたTIPSを紹介していく。
TEXT_横田義生 / Yoshio Yokota(Griot Groove)
EDIT_三村ゆにこ / Uniko Mimura(@UNIKO_LITTLE)
Information
『DEEP HUNTER』
グリオグルーヴBlenderチームによる、Blenderで制作を完結させることを目標としたCGアニメーション作品のパイロットムービー。本連載では、この映像の制作を通してBlenderの基礎を解説していく
はじめに
前回の後半に説明した、オブジェクトのデータ構造を利用してシーンを構成していく手順について、3回にわたって説明していきます。Blenderは、オブジェクトの複製、Collection、View Layer、Sceneを駆使することで、非常にシンプルかつ効率的にシーンを管理することができ、またデータ容量も抑えることが可能です。
今回は、シーン構成のベースとなる「オブジェクトの複製」と「マテリアルのデータ構造」について説明します。Blenderを使い始めたばかりの方には少々難しい部分もあるかもしれませんが、「こういうことも言っていたな」といった程度に頭の片隅に留めておいていただき、必要になったときにもう一度読み返してみると理解しやすいかと思います。
制作環境
Blender 2.83.2(Portable版)
OS:Windows 10
CPU:Intel Core i7-9700K
メモリ:32GB
GPU:NVIDIA GeForce RTX 2080 SUPER
<1>オブジェクトの複製
●Duplicate ObjectとDuplicate Linked
オブジェクトを複製するには、[Duplicate Objects]と[Duplicate Linked]の2種類の方法が用意されています【1-A】。
▲【1-A】メニューからの複製
オブジェクトの複製は、3D Viewportエディタの[Objectメニュー→Duplicate Objects/Duplicate Linked]でも可能です
Duplicate Objectsは完全に独立した別オブジェクトを複製し、Duplicate Linkedは"Data"を共有しているオブジェクトを複製します。前回説明したオブジェクトのデータ構造を理解していると、この2つの複製のちがいがはっきりとわかると思います。例えばCubeを選択し、わかりやすいようにオブジェクト名を「Cube_0_original」、マテリアル名を「material_test」に変更します。
このオブジェクトに対して、Duplicate Objectsを実行し複製された「Cube.001」を「Cube_1_copy」に、Duplicate Linkedで複製された「Cube.002」を「Cube_2_link」に名前を変更します(Blenderは、1シーン内でオブジェクトと"Data"それぞれで重複する名前で存在することができず、複製した場合は自動的に末尾に「.***」と数値を追加していきます)。
Outlinerエディタ(以下、Outliner)を確認すると、「Cube_0_original」の"Data"名は「Cube」ですが、Duplicate Objectsで複製した「Cube_1_copy」の"Data"名は自動的に末尾に数値が追加され、「Cube.001」となっていることがわかります。一方、Duplicate Linkedで複製された「Cube_2_link」の"Data"名は「Cube_0_original」と同じ「Cube」となっており、このことからも「Cube_0_original」と「Cube_2_link」オブジェクトがCubeという"Data"を共有していることがわかります 【1-B】 。
-
-
◀【1-B】Outlinerでの複製の確認
Duplicate Objectsで複製した「Cube_1_copy」には、「Cube.001」という新規の独立した"Data"が自動的に作成されます。一方、Duplicate Linkedで複製された「Cube_2_link」の"Data"は「Cube_0_original」と同じ「Cube」となっています。
●複製時のマテリアルのデータ構造
【1-B】 の図でひとつ気になる点は、"Data"に含まれるマテリアルの「material_test」に関してで、3つのオブジェクトのどれもが同じ「material_test」という名前で"Data"を共有しているように見えるところです。
オブジェクトのいずれかを選択し、Propertiesエディタ(以下、Properties)のMaterialプロパティで「material_test」のBaseColorを変更すると、全てのオブジェクトの色が変更されてしまいます。「Cube_1_copy」のマテリアルは「Cube_0_original」と"Data"を共有しているのでは? と思ってしまいますが、この場合は"Data"が共有されているというわけではなく、単純に「Cube_1_copy」に「Cube_0_original」と同じマテリアルの「material_test」が割り当てられているという状態であることをご理解ください(マテリアルは複数の異なるオブジェクトに割り当てることが可能です)。
試しに、「Cube_0_original」を選択してMaterialプロパティで右上の[-]ボタンを押してマテリアルを削除してみましょう 【1-C】 。"Data"を共有している「Cube_2_link」のマテリアルは削除されましたが、「Cube_1_copy」のマテリアルはそのまま残っていることがOutliner上で確認できたと思います。
-
-
◀【1-C】Materialプロパティでのマテリアルの削除
図の赤で囲まれている[-]ボタンを押すことでマテリアルを削除することができます。 同じような機能で、緑で囲まれている[×]がありますが、こちらはマテリアルの削除ではなくマテリアルを空の状態(何もマテリアルが割り当てられていない状態)にします
このことから、Dupulicate Linkedによって複製されたオブジェクトの"Data"はMaterialプロパティ全体の設定を共有している、ということがわかりますね。
●マテリアルの「Data」と「Object」
制作を進めていくと、"Data"は共有したままマテリアルだけを変更したいという場面に直面すると思います。前回のオブジェクトのデータ構造の説明でも軽く触れましたが、マテリアルは「Data」と「Object」の2つに対して設定することが可能で、設定を「Object」に切り替えることでDuplicate Linkedで"Data"を共有している場合でも異なるマテリアルを適用することができます。
Materialプロパティの図の項目【1-D】①の「Data」を「Object」に切り替えると、マテリアルが空の状態になるので、それに対して異なる質感を割り当てることができるようになります。
それでは実際に「Cube_0_original」を選択し、Materialプロパティで「Data」を「Object」に切り替え、[+ New]【1-D】②ボタンを押して新規のマテリアルを作成し、名前を「material_new」と変更してください【1-D】③。
▲【1-D】「Data」と「Object」の切り替え①
デフォルトではマテリアルは「Data」に設定されています。「Data」から「Object」に切り替えると、マテリアルは何も割り当てられていない空の状態になり、[+ New]を押すことで新規にマテリアルを割り当てられます
Outliner上では、"Data"の下の階層には「material_test」が割り当てられていて、"Data"と同じ階層に新しく「material_new」が追加されているのが確認できます【1-E】。一方、Duplicate Linkedで複製された「Cube_2_link」をOutliner上で確認すると、"Data"の下の階層の「material_test」は同じままですが、先ほど追加した「material_new」は割当てられていないことが確認できます。
-
-
◀【1-E】「Data」と「Object」のOutliner上の階層構造②
「material_test」は"Data"の下の階層にありますが、「material_new」は"Data"と同列の階層に作成されます。"Data"を共有している「Cube_2_link」に「material_new」は作成されていません
試しに「Cube_2_link」を選択して同様の操作を行なってみましょう。追加するマテリアルの名前を「material_new」と入力しても自動的に「material_new.001」となり、異なる名前のマテリアルが作成されます【1-F】。
-
-
◀【1-F】「Data」と「Object」のOutliner上の階層構造③
マテリアルは、同一シーン内では同じマテリアル名を付けることができないため、新規で作成するマテリアル名を同じ名前にすると、自動的に「material_new.001」となります
このことから、この2つのオブジェクトは「Data」には「material_test」というマテリアルが適用され"Data"として共有していますが、「Object」には「material_new」と「material_new.001」のそれぞれ異なるマテリアル適用されており、設定を「Object」に切り替えることでDuplicate Linkedで複製されたオブジェクトに対して異なるマテリアルを割り当てることができます。
●複数のマテリアルが割り当てられている場合の「Data」と「Object」
「Data」と「Object」の切り替えは、1つのオブジェクトに対して複数のマテリアルが割り当てられている場合においても同様に機能します(ポリゴンに対してのマテリアルの割当て方に関しては、「今月のミニTips」にて説明します)。
例えば【1-F】のようなマテリアル構成の場合は、マテリアルリストでそれぞれのマテリアルを選択し、「Data」か「Object」かを切り替えることになります。Materialプロパティのリストから「red」マテリアルを選択し、設定を「Object」に切り替えると空のマテリアルができるので、新規でマテリアルを作成しBase Colorが黄色の「yellow」にします。同様にそれぞれのマテリアルを「Object」に切り替えて異なるマテリアルを割り当てていきます。その結果、【1-G】のようになりました。
▲【1-F】1つのオブジェクトに複数のマテリアルの割り当て①
マテリアルリストのそれぞれのマテリアルで「Data」と「Object」の切り替えが可能です
▲【1-G】1つのオブジェクトに複数のマテリアルの割り当て②
「Object」から「Data」のマテリアルに戻したい場合は、マテリアルの設定を「Object」から「Data」に戻すか、Outliner上で適用したい方のマテリアルを選択(アクティブ)することで切り替えることができます(わかりづらいですが、選択したマテリアルのアイコンの周りにグレーのボックスが表示されます)
●"Data"共有の解除
Duplicate Linkedで複製されたオブジェクトの"Data"共有の解除は、PropertiesのObject Dataプロパティから行います。選択したオブジェクトに共有している"Data"がある場合、一番上のデータ名の右側に数値が表示されますので、その項目をクリックすることで"Data"の共有が解除されます【1-H】。
▲【1-H】"Data"共有の解除
カメラやカーブ等選択しているオブジェクトによって表示されている設定やアイコンは異なりますが、解除する方法は全て同じです。ここに表示されている数値は"Data"を共有しているオブジェクトの数になります。複数のオブジェクトで"Data"を共有している場合は、選択して解除を実行したオブジェクトのみの共有が解除されます
自動的にデータ名が変更され同じ"Data"を共有しなくなったことがわかります。複数オブジェクトに同一マテリアルが割り当てられている場合でも、同様の操作で単独の新規マテリアルを割り当てることが可能です。
Materialプロパティのマテリアルリストの下に選択しているマテリアル名が表示されていますが、その横に先程と同様に数値が表示されている項目があります。この数値はそのマテリアルが使用されている数で、この数値部分をクリックすると自動的にマテリアル名が変更され、新規のマテリアルが割り当てられます【1-I】。
▲【1-I】マテリアル共有の解除
Blenderは、この他にもテクスチャやactionなど様々なデータを共有して使い回すことが可能となっており、いずれも同じような方法で解除することが可能です
<2>今月の便利アドオン
このアドオンを使用することで、オブジェクトの様々な属性のコピーが可能となります。 Blenderに標準で搭載されているアドオンですが、デフォルトではOFFになっているため、まずはこのアドオンを有効設定にしておきましょう【2-A】。
▲【2-A】Copy Selected Modifiers①
[Editメニュー→Preferences...→Add-ons]で[Copy Attributes Menu]で検索してチェックを入れ、アクティブにしてください
本文で解説したDuplicate Linkedはオブジェクトの"Data"のみを共有するため、複製後にモディファイアーを追加した場合、もう一方のオブジェクトにはモディファイアーは当然追加されません。標準機能のMake Links 3D Viewportエディタの[Objectメニュー→Make Links]を使用してモディファイアーのコピーも可能ですが、もともとオブジェクトに割り当てられていたモディファイアーを削除してコピーしてしまうため、使い勝手が悪く用途が限られてしまいます。
Copy Attributes MenuのCopy Selected Modifiersの機能を使用すると、複数モディファイアーが適用されている場合でも選択したモディファイアーのみをコピーすることが可能で、さらにオブジェクトにもともと割り当てられていたモディファイアーを削除せずに適用されます。使用方法は、まずコピー先のオブジェクトを選択し(複数も可)、最後にコピー元のオブジェクト(コピーしたいモディファイアーが適用されているオブジェクト)を選択します。その状態で[Ctrl+C]キーを押すとメニューが表示されるので、Copy Selected Modifiersを選択実行し、さらにポップアップされたメニューからコピーするモディファイアーを選択し実行します【2-B】。
▲【2-B】Copy Selected Modifiers②
[Ctrl +C]キーでコピーすることができる項目がメニューで表示されます。割り当てられているモディファイアーによって表示される内容は異なりますが、このメニューからコピーしたい項目を選択し(複数可)実行します
モディファイアーのコピー以外にも、同様の手順で位置、回転、スケール、Vertex Weights、Constraintsなど様々な属性をコピーすることが可能です。MaterialやUVなどのコピーはMake Linksを使用する以外に方法はないため、この辺りは重複する設定もありますし標準で搭載されているアドオンでもあるのでまとめてほしいところですね。
<3>今月のミニTips
●ポリゴンに対するマテリアルの割り当て
今回は、Tipsというより本文の補足説明的な内容となります。マテリアルは通常の方法だと1つのオブジェクトに対して1つしか割り当てることができませんが、Editモードを使用することで選択したポリゴンに対して異なるマテリアルを割り当てることができるようになります。
それではまず、[Shift+A→Mesh→Monkey]でSuzanneオブジェクトを作成し、PropertiesのMaterialプロパティでマテリアルリストの右側の[+]を押して空のマテリアルを追加しましょう。
次に[+ New]で新規マテリアルを作成し、マテリアル名を「Monkey_base」に変更し、Base Colorを茶色に設定します。同様の手順でBase Colorが白色の「Monkey_eye_white」を追加して作成しておきます。Suzanneを選択した状態のまま3D ViewportをEditモードに切り替えると、Materialプロパティのマテリアルリストの下に、[Assign]、[Select]、[Deselect]の設定項目が新たに表示されます【3-A】。
▲【3-A】Materialプロパティ①
[Select]は、選択されたマテリアルが割り当てられているポリゴンを選択し、[Deselect]は非選択にします。[Select]は、実行時に選択されていた他のポリゴンに追加してポリゴンを選択することに注意してください。割り当てられているポリゴンのみを選択したいときは、いったん選択を全て解除してから実行してください
ここでSuzanneの両目のポリゴンを選択し、マテリアルリストで「Monkey_eye_white」を選択した状態で[Assign]を実行することで、選択されたポリゴン部分にそのマテリアルが割り当てられます。同様の操作で、黒目、鼻、口内にそれぞれ異なるマテリアルを割り当てていきましょう。大体図のような結果になったと思います【3-B】。
▲【3-B】Materialプロパティ②
1つのオブジェクトに対して、複数のマテリアルが割り当てられていることが確認できます
●Material Index
先ほどのSuzanneのマテリアルリストには、使用している5つのマテリアルが表示されています。一見このリストの並び順には何の定義もなされていないように見えますが、内部的にはこの並びに対してMaterial Indexという数値が割りふられています(似た設定でマテリアルのPass Indexという項目がありますが、そちらはレンダリングの要素出しのときなどに使用する別の設定項目です。次回以降のレンダリング設定のときに解説します)。
上から順に0、1、2、3、4という順で割り当てられており、マテリアルを追加するとMaterial Indexの数値もそれに従って増えていきます。このSuzanneの場合は、"Monkey_base"=0、"Monkey_eye_white"=1、"Monkey_eye_black"=2......といった順です(0から始まっているため、マテリアルの数とずれてしまい少々わかりづらいです)【3-C】。
BevelモディファイアーやSolidifyモディファイアーなどで生成されるポリゴンに対してMaterial Indexを設定することで、任意のマテリアルを適用させることができます【3-D】[3-E】。
▲【3-D】Materialプロパティ②
Bevelモディファイアでは、赤で囲った設定項目に適用したいMaterial Indexの数値を入力すると、ベベルが適用されたポリゴンに指定したマテリアルを適用することができます
▲【3-E】Material Index③
Solidifyモディファイアーでは、オフセットされるポリゴンと厚み(Rim)の部分のポリゴンに適用したいMaterial Indexを設定することができます
マテリアルリストでマテリアルの順番を変えても、ポリゴンとそれに割り当てられているマテリアルとの関連性は変わりませんが、Material Indexの数値は常に上から順に0から始まるためその順番に則して変更されます【3-F】。
Profile.
-
横田義生/Yoshio Yokota(Griot Groove)
3ds Max歴25年。Web3D、建築、ゲーム、CMを経て現在映像プロダクション・グリオグルーヴにディレクターとして所属。頑なに3ds Maxを使用してきましたが、そろそろ新しいツールを覚えたいと言うタイミングでBlenderに出会い仕事の傍ら猛勉強中です。もともとジェネラリストでしたが、ここしばらくは制作現場からは遠ざかっていたため、これを機に一クリエイターとして制作をしていこうと意気込んでいます