はじめに
はじめまして。開発チームに所属しながら、プログラミングの「プ」の字も知らない開発ド素人です。
普段はチームの「万屋」的なポジションで奮闘していますが、前職では広告映像の制作現場で、カメラや照明と向き合う日々を送っていました。
AR/MR開発の現場に関わり始めて気づいたのは、「映像制作の現場で培った『アナログな知識』こそが、ARのクオリティを底上げする」という事実です。
今回のミッションは、「更地に、これから建つビルをARで出現させ、違和感なく記念撮影をする」こと。
Unityやcinema4Dの画面内だけでは完結しない、現場の光の読み方やレンズの合わせ方など、エンジニア/デザイナーの方にこそ知ってほしい「映像屋の視点」をお届けします。
実際に私がUnityや、Cinema4Dを用いて作業してるわけでは無いので、大枠が伝わればいいかなと思っています。
今回の開発環境とミッション
撮影アプリ: Unity
3Dモデル制作: Cinema4Dで制作(これから建設される実際の建築物)
実写カメラ: Canon 90D
ミッション:「更地に、完成予定の建物を3Dでドンと配置し、違和感なく記念撮影ができるようにする」
エンジニア・デザイナーが意識すべき「現場のリアル」
PCの中で完結する作業とは違い、現地でのAR合わせには「物理的な制約」と「光のルール」が存在します。ここを無視すると、折角一生懸命制作した3Dオブジェクトが、いわゆる「合成っぽい」「のっぺりした」残念な見た目になってしまいます。
勿論、そのアウトプットの見え方が正解だ!という事であれば、それで問題ないのですが、
今回は、よりリアルに近づけるようにという心持ちの元進めていってます。
1.「レンズ」というフィルターを理解する(焦点距離と歪み)
Unity上のカメラ設定を意識して設定してますか?
Unity上のカメラ設定と、リアルのカメラ(今回ならCanon 90D)には「レンズのミリ数(焦点距離)」があります。
ここの数値がしっかりと整合性が取れていないといけません。
・画角の一致: 実機のレンズが何mmなのかを確認し、UnityのCameraのField of View (FOV) を計算して合わせる必要があります。ここがズレるとパース(奥行き感)が狂います。
・レンズの歪み: 広角レンズになればなるほど、画面の端は歪みます。建築物は「直線」が命なので、この歪みを考慮しないと、現実の地面は歪んでいるのに建物だけ直立不動という奇妙な絵になります。
レンズのミリ数に関しては、リアルのカメラ(今回ならCanon 90D)に合わせることをオススメします。
なぜなら、手元にある機材に合わせないと、レンズを買い足さないといけなくなりますし(安いものではないですからね)、実際の見え方のアンサーとしては、リアルのカメラで撮影したものを標準にしたいから。
この時にもう一つ気にしておきたいのが、カメラボディのセンサーサイズです。実際に装着しているレンズが、18mm(例えば)だったとして、センサーサイズによって、ミリ数の計算が違ってきたりします。。。
(Canon 90DはAPS-Cセンサーなので、レンズに書いてあるmm数を1.6倍(canonの場合)して35mm換算する必要があります。)
2.「太陽」は最大の光源である
PC上のライティングは自由自在ですが、現地の太陽は動かせません。
3Dオブジェクトの影の落ち方が、現地の影と逆方向だと、脳が一瞬で「これは偽物だ」と判断します。
太陽の動きなんて、ロケハン(現地調査)行っても、その時の太陽の位置しか分からないし、天候が曇ってたら、確認のしようがないよ。と思ったそこのあなた!
便利なスマホアプリがありまして、
「Sun Seeker」:「イベント当日の開催時間、太陽がどこにあるか」を事前にシミュレーションできます。有料アプリになりますが、1000円ほどで購入できます。
使い方はこちら参考までに https://katalyst.blog/32128
sunseekerでおおよその太陽の位置関係を把握した後
Unity内のDirectional Lightの角度を、このアプリの情報を元に設定する。または、cinema4D上で、ライティングの調整をすると、馴染み方が劇的に変わります。
3.「スケール感」の罠(距離と対比)
何もない空間に3Dを置くと、サイズ感が狂いがちです。 これを防ぐために、ロケハン(現地調査)では以下の確認ができるといいです。
・カメラ位置と被写体位置の計測:カメラと被写体が立つ位置を物理的にマーキングと計測をする。
ロケハンなどでは、物理的に印をつけないといけないので、養生テープやマスキングテープ、平面じゃない場所(例えば土の地面)に関しては、キャンプ用のペグや、小さめのカラーコーンなどを用意しておくといい思います。
・対比物の確認: 近くにある木や、隣の建物と3Dモデルを見比べ、「人間が並んだ時にどう見えるか」を調整します。建築パースでは「煽り(下から見上げる)」か「俯瞰」かで印象が激変するため、カメラの高さ(アイレベル)の設定も重要です。
4.「のっぺり感」を消すテクスチャとライティング
3Dモデルをそのまま置くと、どうしてもCG特有のツルッとした質感になりがちです。
・環境光の反映: その場の空の色や、地面からの照り返しを考慮します。
・影の濃さ: 快晴なら影は濃くエッジが鋭く、曇りなら影は薄くボケます。現場の天候に合わせてShadow Strengthを調整できるUIを用意しておくと便利です。
・夜間の場合: 街灯や月明かりなど、複数の光源が必要になります。単に暗くするのではなく「どこが光っているか」の設計が必要です。※昼間であっても例えば、オブジェクトの表面がミラーちっくに反射する場合などは、ここの反射もリアルの見え方と同じように考慮して作り込む必要があります。
”まとめ” アナログな「現物合わせ」がクオリティを決める
どんなに正確なプログラムでも、最後は「人間の目」と「現場感覚」がクオリティを決めると私は思います。
現場の光を見て、自分の体で距離を感じる。 そうしたアナログで泥臭いアプローチを開発に取り入れることで、AR体験はもっとリアルで、感動的なものになるはずです。
「なんとなく良い」「感覚的にこう」といったざっくりした印象を、
どうやってロジカルな数値に変換して実装するか。
そこには、映像制作の経験とエンジニアリング、異なる分野の知恵を掛け合わせる面白さがあります。
この記事が、普段PCの中で世界を構築しているクリエイターの皆様にとって、現実世界という「現場」を取り入れるきっかけになれば幸いです。