• LINEで送る

オブジェクトのデータ構造と複製術 ~リンク、インスタンス、ライブラリオーバーライドを使いこなす!|Blenderライフハック Vol.8

2023.09.26 (最終更新日: 2023.10.26)
  • LINEで送る

CGアーティストのTaka Tachibanaです。

Blenderのあらゆる効率化TIPSをお届けしているBlenderライフハック。第8回目の今回は、「複製術」と題してリンク、インスタンス、ライブラリオーバーライドという3つの機能の使い分け術を紹介します。

これらはざっくりとオブジェクトやコレクションを複製したり派生させたりする機能です。使いこなせると修正が楽になったり、メモリを削減できたりと、作業の効率化につながります。

僕がBlenderを使い始めた当初「Blenderには、After Effectsのプリコンポーズのような機能はないのかな?」と悩んだわけですが、これらの機能を使えばそれに近いことが行えます。

POINT
After Effectsの「プリコンポーズ」とは、複数のレイヤーを1つにしてグループとして扱うことが出来る機能のこと。Premiere Proにおける「ネスト化」にあたる。

Blender3.0から搭載された「ライブラリオーバーライド」という「上書き機能」まで使えると、できることがかなり広がりますよ。

みなさんの効率化にぜひ役立ててみてください!

※ この記事を執筆時のバージョンは「3.5.1」です。

オブジェクト複製とリンク複製

まずは基本中の基本ですが、オブジェクトの通常の複製は[Shift+D]、リンク複製は[Alt+D]で行えます。

通常の複製[Shift+D]は、コピー先を編集してもコピー元は影響にないのに対して、

リンク複製[Alt+D]は、コピー先を編集するとコピー元も同じように反映されます。

これらは使い分けて使用している人も多いと思います。

このようにBlenderでは「リンク」という言葉がついてる機能は、その名の通りコピー先とコピー元がリンク(同期)します。とても大事な考え方なので、覚えておきましょう。

またリンク複製したオブジェクトのリンク(同期)を切るために、シングルユーザー化という機能があります。つまり通常の複製と同様に編集しても同期されなくなります。

上部メニューの[オブジェクト→関係→シングルユーザー化]から行えます

リンク複製した後で「やっぱり個別に編集したい!」といったときに便利ですね。

ちなみにこのシングルユーザー化の仕組みは次のようになっています。アウトライナー上で確認してみましょう。

【25年3月末日まで】Vook school モーショングラフィックスコースでは、オンライン相談会の参加者全員に 500円分 のAmazonギフトカードをプレゼントしています!この機会をお見逃しなく!

PR:Vook school

オブジェクト内のデータ構成

まず僕らが普段オブジェクトと呼んでいるものの中に、メッシュと呼ばれる概念があります。

黄色い三角マークがオブジェクトと呼ばれる「箱」、そして緑の三角マークがメッシュと呼ばれる「形成データ」が入っています。

オブジェクトというのは見えないただの「箱」とイメージしてみましょう。

ただの「箱」なのでオブジェクトモードでは、トランスフォーム(拡大縮小、移動、回転)くらいしか扱えません。

編集モードで「編集する」というのは、このメッシュ(形成データ)を編集する、という意味合いになります。

そして、そのメッシュに対してマテリアルと呼ばれる「材質データ」が付属されたりするわけですね。

つまりアウトライナー上では、階段状に様々なデータが格納される仕様になっています。

さて、通常の複製[Shift+D]を行うとどういったデータ構造になるかというと、

このようにオブジェクトもメッシュも「~.001」という名称が追加されます。

これはオブジェクトと共にメッシュも新規でコピー、つまり異なるデータ扱いにされたということです。

対してリンク複製[Alt+D]したときのデータ構造はこのようになっています。

オブジェクトは異なるデータなのにメッシュは同じ「Suzanne」というデータが格納されています。

オブジェクト(見えない箱)は異なるものだけど、中身のメッシュ(形成データ)は同じ、つまりメッシュがリンク(同期)されているということになります。

こうしたデータ構造のため、リンク複製[Alt+D]をするとコピー先を編集してもコピー元も同期されるわけです。

そして、前述のシングルユーザー化を行うと、

通常の複製[Shift+D]のように、メッシュも「新規データ=異なるデータ」扱いとなり、メッシュのリンク(同期)が切れていることがわかります。

アペンドとリンク

続いてこちらも基本機能ですが、別のBlendファイル(Blenderのプロジェクトデータ)から読み込む場合は、「アペンド」または「リンク」を使います。

アペンド
元のBlendファイルのデータから独立しているため、編集可能です。

リンク
元データにリンク(同期)しているため、編集不可能です。

リンクで読み込んだものは基本的には編集できないのですが、元データを編集すればリンク読み込みしているもの対して自動的にその変更点が反映されます。

ただし挙動としてはエンプティとして扱われるため、トランスフォーム(拡大縮小など)しか手を加えることができません。

POINT
後述する「ライブラリオーバーライド」という機能を使えば、ある程度自由な加工や修正が可能になります。

リンクで読み込んだコレクションは、オレンジ色のフォルダが重なったアイコンが表示されます。

これらのリンク(同期)を切りたい場合は、インスタンスを実体化という機能を使います。

[Ctrl+A]の適用メニューから、「インスタンスを実体化」を選択します。

コレクションに含まれた要素は分解できますが、そのままではメッシュは編集できません。そういった場合は「ローカル化」してあげると、アペンドしたときのようにコピー元から独立して編集を行うことができます。

上部メニューの[オブジェクト→関係→ローカル化]から行えます。

「ローカル化」も、シングルユーザー化のように、リンク読み込みしたオブジェクトのリンク(同期)を切ることができます。

ちなみにオブジェクト単体でもリンク読み込みはできますが、トランスフォームの調整できないので使われる目的は限られると思われます。

コレクションインスタンス

インスタンスとは、オブジェクトの実体を持たないコピーのこと。前述のリンク複製やリンク読み込みもインスタンスの一種です。

インスタンスという名がつく最もよく使われる機能は、Shift+Aから追加できる「コレクションインスタンス」でしょう。

これは同じプロジェクト内の特定のコレクションをリンク複製のようにコピーできる機能です。

このような街の作成など、同じオブジェクトを使い回すシーンで有効です。

実体を持たないことでメモリの削減になり、またコピー先へ自動的に同期されるため修正がとても楽になります。

同じプロジェクト内で行えるため、この機能が最もAfter Effectsのプリコンポーズに近いものだと思います。

気軽な反面、前述のリンク読み込みと同様にここから加工したり編集することはできません。

ちなみに、コレクションインスタンスのリンク(同期)を切りたい場合も「インスタンスを実体化」で行えます。

「シングルユーザー化」「ローカル化」「インスタンスを実体化」の区別

さて、これまでにリンク(同期)を切る方法として、

「シングルユーザー化」
「ローカル化」
「インスタンスを実体化」

……という3つを紹介しましたが、これらは混乱しやすいので下記に整理してまとめておきます。

シングルユーザー化
リンク複製したオブジェクトのリンク(同期)を切る。「シングルユーザー化=単一のオブジェクト」にするということは、つまり通常の複製と同じ状態に。

ローカル化
リンク読み込みしたオブジェクトのリンク(同期)を切る。「ローカル化=現地に適応させる」ということは、つまりアペンドと同じ状態に。

インスタンスを実体化
リンク読み込みまたはコレクションインスタンスで複製したコレクションのリンク(同期)を切る。

余談ですが、僕はこれらのリンクやインスタンス関連の機能をまとめて独自メニューに登録してます。

以前の記事で紹介したアドオン「Pie Menu Editor」を使うと、このように整理してオリジナルのパイメニューやショットカットメニューが作成できます。気になる方はチェックしてみてください。

【データ配布あり】パイメニューを使い倒す!|Blenderライフハック Vol.3

CGアーティストのTaka Tachibanaです。 Blenderのあらゆる効率化Tipsをお届けしている【Blenderライフハック】。第3回目になる今回は、Blenderを操作するには欠か...

コレクションインスタンスのTIPS

コレクションインスタンスは非常に便利な機能なのですが、個人的に一点使いづらいなと思う点があります。

それはインスタンス先のコレクションの原点が、インスタンス元のワールド原点になってしまうことです。

これがけっこう使い勝手を悪くします。理由としては、

<1>メインの作業と重なってしまう

インスタンス先のコレクションを扱いやすくするために、ワールドの中心でコピー元を作成・編集していくわけですが、そうなるとメインの作業と重なり見えにくくなることがあります。

基本的にはワールドの中心からシーンを構築していきますからね。

表示/非表示を切り替えて作業すればいいのですが、結構めんどくさかったりします。

<2>回転するときに難あり

<1>の問題を避けようと、ワールド中心から離れてインスタンス元を作成する方法はどうでしょう。

……インスタンス元のワールド原点→インスタンス先のコレクションの原点になってしまうため、特に回転するときに操作がしにくいですね。

そんなお困りのときには、次の方法を試してみてください。

コレクションの原点をオフセットする

実は、オブジェクトプロパティからインスタンス先のコレクションの原点をオフセット調整できるんです。

[オブジェクトプロパティ→コレクション→Vボタン内の「カーソルからオフセットを設定」]をクリックすると、3Dカーソルがある地点に合わせて原点をオフセットしてくれます。

インスタンス元の中心あたりに設定すると、回転がやりやすい!

これはコレクションインスタンスだけではなく、リンク読み込みでも有効なので覚えておくと便利ですよ。

POINT
ちなみに、この操作をしなくてもコレクションインスタンスでの複製後に自分で原点を移動させる、という方法でも同様の状態にできます。

インスタンス専用シーンを作成する

とは言え、毎回原点の調整をするのが面倒な人には、この方法も便利です。

インスタンス専用シーンを作成して、そこで元のオブジェクトやコレクションの整理をします。

Blenderには「シーン」という概念があります。

オブジェクトやマテリアル、設定などをリンクさせながら複数のシーン(複数のワールド)を管理することができます。

最上部の新規シーン→「設定をコピー」でインスタンス専用シーンを予め作成しておき、そのワールドの中心でインスタンス元を制作していきます。

そうしておくと、メインンシーンでコレクションインスタンスを行なっても、原点が中心にある状態で複製できます。

この方法はリンク読み込みと似てますが、別プロジェクトではなく同じプロジェクトの中で操作ができるので、いくらか管理が楽です。

ただし、この後に紹介する「ライブラリオーバーライド」という機能は使えないので、加工したり派生させる可能性がある場合は、最初からリンク読み込みでの管理がオススメです。

ライブラリオーバーライド

Blender3.0から搭載された比較的新しい機能です。

「オーバーライド」とは「上書き」のような意味合いですが、リンク読み込みしたコレクションに対してある程度自由な加工や修正ができます。

例えば、分割して各オブジェクトを個別化したり、モディファイアやシミュレーション機能が使えたり、アニメーション、マテリアルの再割り当てが可能です。

いくつか例を見てみましょう。

まずこちらがリンク読み込み元のオリジナルのコレクションです。

わかりやすく赤、緑、青のオブジェクトを1つのコレクションに入れています。

リンク読み込みするとこのようになります。Originalのコレクション内に鎖アイコンのデータが格納されているのがわかります。

[上部メニュー→オブジェクト→関係→ライブラリオーバーライドを作成]をクリックします。

すると、鎖を矢印で貫いたアイコンに変更されます。

これがライブラリオーバーライドが適用された状態で、オリジナルと同様に各オブジェクトを分割して操作することが可能になります。

ただし、メッシュを編集することはできません。

マテリアルは別のものに割り当てることが可能です。一見できなさそうなのですが、上の画像の赤カッコの中で「オブジェクト」を選択します。

すると別のマテリアルを割り当てることが可能になります。

POINT
オーバーライド後のオブジェクト上では、新規マテリアルの作成はできないみたいです。

そしてこのようにオリジナルのメッシュデータを変更しても、

オーバーライド先では新しいマテリアルをキープしながら変更点が反映されます。

ちなみにモディファイアもかけることができます。

リンク読み込みしただけの状態ではエンプティ扱いなのでこういったことができないのですが、このようにリンク読み込みさせつつも、ある程度の修正や加工ができるようになるのが「ライブラリオーバーライド」です。

アクションのオーバーライド

先ほどはわかりやすくするためにマテリアルで例えましたが、リグでのアクション(アニメーション)も追加編集できるため、3Dキャラクターを多用するプロジェクトにおいてとても有効です。

3Dキャラのモデリングやリギング、よく使うアクションを予め作成しておき、そのBlendファイルをリンク読み込み→ライブラリーオーバーライドさせて作業していきます。

上記のようにドープシート上のアクションエディターでは登録されているアクションが表示されますが、最初はグレーアウトされて編集ができない状態になっています。

ここで鎖アイコンをクリックすると、新たなアクションとして追加編集が可能になります。

例えば、歩くアニメーションなど汎用性の高いものを予め作成しておき、この手法で各シーンに合わせて追加編集で調整していくことができます。

つまり使い回しが楽で、各シーンでの調整もやりやすい、さらに何か修正があってもオリジナルデータを編集すれば全シーンに自動的に反映させることができます。

このワークフローはライブラリオーバーライドを最も活かせるテクニックのひとつではないかと思います。

このように柔軟性を持たせてインスタンスのような機能を使いたい場合は、ぜひこのライブラリオーバーライドを使ってみてください。


今回は、以上です。

これからも様々な効率化TIPSを紹介していくので、次回もご期待ください。感想やリクエストもぜひ!
 

  • CGアーティストTaka Tachibana


    台北在住。CAPSULE Inc. / CHINZEI Inc. 所属。福岡で10年間のフリーランスを経て、台湾ではMVやweb広告などの映像制作に従事。その傍ら3DCG・VFXを駆使した作品づくりに取り組む。ASEAN-ROK Film Leaders Incubator日本代表。Short Shorts Film Festival & Asiaをはじめ、国内外70ヶ所以上の受賞・入選歴。https://taka-t.com/

コメントする

  • まだコメントはありません
b3d_lfhck

Blenderライフハック@b3d_lfhck

この連載では、実写VFX系のBlenderユーザーとして知られるTaka Tachibanaさん( @taka_tachibana )が、Blenderによる3DCG制作をより効率的に行うためのTIPSを紹介します。 作業効率を高めるためのBlender...

Blenderライフハックさんの
他の記事をみる
記事特集一覧をみる