Blenderとか3DCGとか

スクリプト寄りです。

一つの.blendファイルに複数のシーンを持たせる

  • <2019/07/30 修正> シーン内でのUnlinkは危険なため、ビューレイヤーの使用を推奨する記述に変更いたしました。


    Cyclesとは違い、Eeveeには影のみを受け取るオブジェクト設定がありません。
     そのためEevee単体でそういったオブジェクトが必要になる場合、どのようにすると良いかという質問がTwitterの#blender質問室に挙がっていました。

    自分なりに調べていたのですが、他の方から回答に挙がったのがこちら。
    t.co
    Eevee内のノードで自作するアプローチです。すごく良いです。
     ただBlenderに限らずアプローチは色々あるもので、試したことをお蔵入りさせるのも勿体無いと思い、書き残すことにしました。

    自分のトライしたやり方は、1つのファイル内に2つの「シーン」を持たせる方法です。
     それぞれの設定を変えることでEeveeとCyclesのレンダリングを一度に行い、コンポジットで合成するというものでした。
    f:id:masayuki-osaka-blend:20190727184814p:plain
    一度のF12で、EeveeとCyclesのレンダリングが両方走ります
    これはこれで出来ることが増えるので、以下、シーンを複数持たせる方法のお話です。

    リンクについて

    まず、シーンを増やす前に、リンクについて説明します。
     オブジェクトを選択してショートカットalt + dを押すと、特殊な複製になります。この方法で増えたものは、片方の内容が変わるともう片方も影響を受けます。
    f:id:masayuki-osaka-blend:20190727185842p:plain
    スザンヌをalt+dで増やして片方を変形させようとした図
    アウトライナを見てみると、メッシュ「Suzznne」は二か所にありますが、同じ名前で同じデータの種類です。つまり同じものが二か所にリストアップされています。
    f:id:masayuki-osaka-blend:20190727191133p:plain
    赤丸のところは、実際は全く同じもの

    この関係を、「リンク」と呼びます。
    f:id:masayuki-osaka-blend:20190727202306p:plain
    2つのオブジェクトが同じメッシュにリンクしている状態

    シーンの増やし方

    シーンを増やすボタンは、ウィンドウ右上にあります。
    f:id:masayuki-osaka-blend:20190727193417p:plain
    赤丸のボタンでシーンを増やせます
    押すと挙動を四種類から選択することになりますが、それぞれ大まかに以下のような違いがあります。
    New
    なにもない、まっさらなシーンを作ります。レンダー設定など、オブジェクト以外のものも引き継がれずに初期状態と同じになります。
    Copy Settings
    レンダー設定等はコピーされますが、オブジェクト等は引き継がれません。そのため、ビューポートはまっさらになります。
    Linked Copy
    レンダー設定等はコピーされます。オブジェクト等はすべて追加前のシーンとリンクされます。次項で例を挙げます。
    Full Copy
    レンダー設定等はコピーされます。オブジェクト等はすべて複製され、別名になります。

    いずれもScene.001というシーンができ、シーンを切り替えられるようになります。
    f:id:masayuki-osaka-blend:20190727201059p:plain

    複数シーン間の関連性について

    Linked Copyでシーンを増やしたとき、片方のシーンでオブジェクトの位置を変えると、もう片方のシーンでも反映されます。マテリアルの追加や編集も同様に、両方のシーンへ影響します。
     一方で、レンダー設定は別々のものなので、片方のレンダラーを変えても、もう片方への影響はありません。
    f:id:masayuki-osaka-blend:20190727210854p:plain
    シーン設定はリンクされません
    アウトライナで表示形式を「Blender File」へ変更することで、複数シーン間でのリンクの状態をもう少し詳しく確認できます。
    f:id:masayuki-osaka-blend:20190728001138p:plain
    各オブジェクトがScene, Scene.001の両方へリンクされているのが判ります
    各オブジェクトはリンクされているため、片方のシーン内で削除(デリート)してしまうと、両方のシーンから失われます。
     もし片方のシーンのみリンクを無効化したいものがある場合、コレクションを使用して対象を管理する必要があります。

    コレクション

    コレクションは、オブジェクト等をまとめて管理するための機能を持ちます。
     フォルダに似ていますが、中に入っているのは実際のオブジェクトではなく、オブジェクトへのリンク情報に似たものだと考えてください。

    先程の図のリンク関係は次のようになります。
    f:id:masayuki-osaka-blend:20190727232524p:plain

    ★「Scene Collection」は同じ名前で同じアイコンですが、これだけは別々のものです。
    Blenderの内部では別のもとして扱われています)
     それ以外のコレクションは、これまでの説明と同じく、名前が同じであれば同一のものです。

    リンクを無効化する

    リンクを無効化するには、コレクションの横にあるチェックをオフにします。
     ただし予め、無効化したいものだけを含むコレクションを用意しておく必要があります。
    f:id:masayuki-osaka-blend:20190730225455p:plain
    シーンを増やす前にCollection 2を用意しておいてください
    チェック内容はシーンをまたいで管理は共有さないという特徴があります。
    f:id:masayuki-osaka-blend:20190730225836p:plain
    チェック内容はシーンをまたいでは共有されません。
    無効化されたものは、そのシーンのレンダリングに反映されません。

    なお厳密には、シーンがそれぞれ別のビューレイヤーというものを持ち、そのビューレイヤーがコレクションの無効化を管理しています。

    リンクを捨てる

    ★リンクを捨てる手法は危険を伴うため、上記の無効化を推奨します

    もし無効化ではなく、特定のシーンからリンクを捨てたい場合には、そのシーンのアウトライナ上で右クリックをして「Unlink」を選択します。
    f:id:masayuki-osaka-blend:20190727234529p:plain
    Scene.001からCollectionをアンリンクします
    するとCollectionへの、Scene.001からのリンクが無くなります。
    f:id:masayuki-osaka-blend:20190727235244p:plain
    リンクを失ったものは表示されません
    このとき、アンリンクする対象次第では、どのシーンからも失われてしまうので注意してください。
     たとえばCubeをアンリンクしてしまうと、どのシーンからも見えなくなります。
    f:id:masayuki-osaka-blend:20190730233816p:plain
    Scene, Scene.001の両方がCubeにたどりつけません

    リンクの追加

    シーンを増やした後で追加した物が他のシーンへ反映されないことがあります。その際はリンクの図を思い浮かべてください。
     下図は、Scene.001でスザンヌを追加した結果です。
    f:id:masayuki-osaka-blend:20190728002929p:plain
    Scene.001のScene Collection直下に作成されたため、Sceneへのリンクがありません
    この状態からスザンヌをSceneへリンクさせる方法は2つあります。
    階層で解決
    Collectionは両シーンへのリンクを持つため、Scene.001内でCollectionの階層にスザンヌを入れます。
    f:id:masayuki-osaka-blend:20190728004023p:plain
    コレクションが、中のものとリンク関係にあります
    Make Linksの実行
    Scene.001のビューポートでctrl + LからSceneへのリンクを明示します。
    f:id:masayuki-osaka-blend:20190728004627p:plain
    スザンヌを選択してctrl + L
    この場合、アウトライナとリンクは次のようになります。
    f:id:masayuki-osaka-blend:20190728005451p:plain
    両シーンのScene Collectionからリンクしています

    まとめ

  • 複数のシーンはそれぞれ、シーン設定を個別に持つことができます
  • オブジェクトとコレクションは、リンクの関係にあります
  • コレクションのうち一番上のScene Collectionだけは、同じ名前でも別々のものです
  • リンクを無効化するには、コレクション横のチェックをオフにします。
  • リンクを捨てるには、アウトライナで右クリック→Unlinkを実行します(要注意)
  • コレクションとの階層変化、またはビューポートでのctrl + Lでリンクを新たに作成できます

シーンを管理できればBlenderの機能をさらに有効に使えます。次回は冒頭で紹介した、EeveeとCyclesを併用してのレンダリングを、複数のシーンを用いて行ってみます。

(最初に紹介した動画の手法のほうがEeveeで完結する上、影の調整も容易なぶんスマートだと思います。)