MMAPsによる空中像生成をBlenderで再現

MMAPsによる空中像生成をBlenderで再現

このページは?

  • 2020年度のアルバイトさんの制作してくれたページです。

  • 株式会社パリティ・イノベーションズ社のパリティミラーや、株式会社アスカネットのAska3Dプレートなどの光学素子でできる空中像や迷光の様子を、レイトレーシングを用いて再現する例を紹介しています。

  • 具体的には、下記のような映像を書き出します。

  • ここで使用している光源は全方向に同じ強度の光を放出するモデルのため、迷光が実際よりもはっきりと視認できるようになっています。現実のディスプレイは正面が明るく、角度によって徐々に暗くなっているため、もう見えにくくなります。また、ルーバーフィルム等を使用することで、迷光を減らすことも可能です。

環境

  • OS:Windows 10 Pro
  • メモリ:64 GB
  • CPU:Intel(R) Core(TM) i9-9980XE CPU @ 3.00GHz
  • GPU:NVIDIA GeForce RTX 2080 Ti × 2枚
  • Blender:v2.81

準備

  • Blenderをインストールします。
  • MMAPsを生成するアドオンをBlenderにインストールします。
    • MMAPs(Micro-mirror array plates)とは2層構造を持つ再帰透過光学素子であり、光源からの光をMMAPsに対して面対称な位置に空中像として結像します。[1]
  • HDRIを用意します。
    • HDRI(High Dynamic Range Image)とは広範囲の輝度情報を記録できる画像です[2]。これを使うことで、よりリアルな光を表現することができます。
  • HDRIは任意のものを用意します。今回は、HDRI HavenにあるPhoto Studio 01の8k版を用いました。
  • Blenderの設定をする。[3][4]
    • ワールドプロパティ > サーフェス > カラー > ○印をクリックして環境テクスチャを選択し、開くをクリックして、用意したHDRI(hdrファイル)を選択します。
    • レンダープロパティレンダーエンジンCyclesに設定します。
    • レンダープロパティサンプリングレンダー:値を512に設定します。
    • レンダープロパティライトパス制限間接照明:値を1に設定します。
    • レンダープロパティパフォーマンスタイル:値をX = 32Y = 32に設定します。
      レンダリングプロパティの設定画面
    • 編集プリファレンスシステムCyclesレンダーデバイスCUDA:GPU2枚とCPU1つの計3つすべてにチェックを入れます。
    • ビューレイヤープロパティデノイズ:チェックを入れ、機能を有効にします。
    • 出力プロパティ寸法解像度:値をX = 3840Y = 2160に設定します。
    • 出力プロパティ寸法終了(フレーム):値を192に設定します。(フレームレートは24 FPSとします。)

モデリング

注意点

  • ライトを設置する必要はありません。
  • レンダープレビューの初回表示には時間がかかる場合があります。
  • MMAPs生成アドオンとの整合性を図るため、Blenderのパラメータにおける1(m)を、実世界における1cmとします。
    • 今回使用したMMAPsはミラーの短冊が0.5mm間隔で並んだものであることと、MMAPs生成アドオンの「Slit spacing」のパラメータが0.05であることから、このアドオンのパラメータの単位はセンチメートルであることが分かります。
  • MMAPs生成アドオンのパラメータについて、サイズ以外は変更しないことに留意してください。

完成図と寸法図

  • 完成図は以下の通りです。
    モデルの全体図
  • 筐体の中には、板状の光源が設置されています。
    モデル筐体内部の図
  • 寸法は次の通りです。ただし、目のアイコンはカメラを表します(カメラの挙動については、映像作成の項で説明します)。単位はミリメートルです。
  • 光源の寸法は12.9インチのiPad Proとほぼ等しく、横281mm、縦215mm、厚さ5.9mmです。

    横から見た寸法図
    上から見た寸法図

映像作成

寸法について

カメラは、次の条件を満たすように設定します。

  • 床からの高さ:160 cm
  • 装置からの水平距離:30 cm
  • 左右の動き:装置を中心として、左右それぞれ30度ずつ(寸法図参照)

手順

  • MMAPsの中心が、X = 0Y = 0に位置するようにします。
  • ベジエ円(Bezier Circle)を追加し、位置を(X, Y, Z) = (0, 0, 160)、寸法をX = 120Y = 120に設定します。
    上から見た図
  • カメラのオブジェクトコンストレイントを設定します。[5]
    • カメラを選択し、オブジェクトコンストレイントプロパティからFollow PathTrack Toを追加します。
    • Follow Pathターゲットに、先に作成したベジエ円を指定します。
    • カメラの位置を(X, Y, Z) = (0, 0, 0)に設定します。
    • Track Toターゲットに、MMAPsの構成要素であるGlassを指定します。
    • Track To先(To)-Zに、上(Up)Yに設定します。
      カメラのオブジェクトコンストレイントプロパティの画面
  • アニメーションを設定します。[6]
    • 1フレーム目に移動し、カメラを選択オブジェクトコンストレイントプロパティFollow Pathオフセットの値を0に設定します。
    • オフセットの上で右クリックし、キーフレームを挿入を選択します。
    • 同様に、48フレーム目にはオフセット値8.333、144フレーム目にはオフセット値-8.333、192フレーム目にはオフセット値0をそれぞれ設定し、キーフレームを挿入します。
    • カメラのオブジェクトコンストレイントFollow Pathパスアニメーションをクリックしてしまうと、上のようにキーフレームを挿入してもカメラがうまく動きません。ベジエ円を作り直し、カメラのオブジェクトコンストレイントを設定しなおしてください。
    • モデルの向きによっては、オフセット値が上記とは異なることがあります。その際は、値の差分のみを参考にしてください。
      • 例:向きが180度逆の場合、オフセット値は上記の値にそれぞれ+50したものになります。
  • レンダーアニメーションレンダリングから、映像をレンダリングします。
    レンダリングした際、全体は次のように見えます。
    レンダリング後のイメージ

参考文献