Blender 2.8でプロジェクターっぽいライトを作ってみる
今回は,Blenderを使って,2つのことをしていきます
- ちょっとした3次元モデルをBlenderで作ってみる
- テクスチャを投影する光源を置いて,3次元モデルに投影してみる
で,何がしたいかというと,理想のお部屋をモデリングし,そこにプロジェクタ置いてみたいという,ちょっとした趣味です.
話はずれますが,真面目な話,画像処理研究者の皆さんはもっとご自身の研究成果をアピールするために,魅力ある挿絵,図,評価画像とかを工夫するとよいなと感じてます.そんな皆さんに,フリーで手軽にCGコンテンツ作れるBlenderは,ぜひおススメです.
では,さっそくBlenderでちょっとしたモデルを作っていきます.
Blenderを開くと,すでに立方体のモデルが用意されています.
Blenderの細かい使い方についてはたくさんのサイトで紹介されているので,ここでは本当に簡単なことだけ書いておきます.
- マウスの中央ボタン:視点の移動
- 数字キー1,3,7,9:視点を特定の位置へ移動
- 数字キー5:透視投影と平行投影を切り替える
- オブジェクトの選択:左クリック
- オブジェクトの移動:g(g押下後に,x/y/zで移動する軸を指定)
- オブジェクトの拡縮:s( s押下後に,x/y/zで拡縮する軸を指定)
- オブジェクトの回転:r( r押下後に,x/y/zで回転する軸を指定)
- オブジェクトの複製&貼り付け:Ctrl+C & Ctrl+V
- 各頂点を編集する編集モードへ移行:TAB
まずはこれくらい覚えて頂ければ,簡単なオブジェクトを置いたりすることはできるかと思います.また,Blenderにはあらかじめプリミティブなオブジェクト(平面,キューブ,球,錘など)がいくつか用意されています.
では,上記のことを組み合わせていくつかのオブジェクトを追加,編集することで,とりあえず下のようなシーンを作ってみました.
では,このシーンに対して,ここからプロジェクタのようなライトを追加していきます.
まずは,ライトを選択し,その種別を”Spot”へ変えていきます.
右側のタブに表示されている”Light"を選択,そして右下のほうにある電球のアイコンを選択しライトの設定タブを開く.そしたら,ライトの種別をスポットへと変更します.すると,左のビューでは,ライトの照射範囲を示す大きな円錐が表示されるはずです.
それでは次に,この照明をプロジェクタに見立て,プロジェクタに投影する画像を設定していきます.
まずは,レンダーエンジンを変更して,照明にテクスチャを持たせることができるように変更します.下図のように,レンダーエンジンを"Cycles"に変更しておきます.
次に,ライトがリアルタイムに反映されるように,左側の画面が表示するものを,デフォルトの"ソリッド"から"レンダー"に変更します.そのためには,シンプルに左のビュー画面を選択しているときに,キーボードの"Z"キーを押して表示される"レンダーを選べばOKです".
すると,こんな感じのちょっとCGっぽい感じの絵になってきます.しかしながら,この時点ではスポットライトは単なる白色の光源ですので,絵はついていません.
そこで,ここからスポットライトに絵を付けていきます.スポットライトに絵を付けるために,シェーダエディタという機能を使っていきますので,まずはこれを数の手順で開きます.シェーダエディタがちっさくて見にくいので,レイアウトも次いでに下図では変更しています.
シェーダエディタを開いた時点では,なにも要素が表示されていないので,左のビューでライトを選択し(選択されたらオレンジ色の枠線になります),画面上部の”ノードを使用”にチェックをします.すると,下の図のように,何かが追加されます.
この,なんかでたものをマウスホイールで拡大してみます.これは現在のライトの色に関する情報だと思っておけば,とりあえずOKです.
ここに,上部の”追加”から,以下の三つを追加します.
- 追加 > 入力 > テクスチャ座標
- 追加 > テクスチャ > 画像テクスチャ
- 追加 > ベクトル > マッピング
では,追加した3つの要素(ノード)を数のようにつなぎます.
左から順に,
- テクスチャ座標のノーマル >>> マッピングのベクトル
- マッピングのベクトル >>> 画像テクスチャのベクトル
- 画像テクスチャのカラー >>> 放射のカラー
- (最初から結合済み)放射の放射 >>> ライト出力のサーフェス
すると,上図のように左側のモデルが紫色になるかと思います.これは,画像テクスチャに対し,まだ何も画像を与えていないから,デフォルト値として紫が指定されています.
そこで,画像を指定していきます.追加したノードの”画像テクスチャ”の”開く”を選択してプロジェクタとして投射したい画像を何でもよいので一枚指定します.
ここでは風景画像を指定しました.
すると,
しかしながら,なんかちょっとおかしい&見にくいので,左側のビューを大きくして,ライトの照射位置を調整してみます.見やすいように,ライトを床面に対し垂直に照射するように調整してみました.
すると,上図のようになっていることが見てわかります.これは,
- 繰り返している
- ぼけている
- 丸く切り取られている
ようなので,三つを直していきます.
まず,シェーダエディタの,画像テクスチャの,”リピート”項目を”クリップ”に変更します.すると,下図のように画像が繰り返すことがなくなります.
しかしながら,繰り返さない代わりに,扇形になってしまいましたので,これを直すために,同じくシェーダエディタのマッピングにて位置のX,Yをそれぞれ0.5mにします.さらに,拡大縮小を任意の値に設定して,ライトの照射範囲の中に投射したい画像が端まで映り込むようにします.
では次はぼけているのを解消していきます.
ライトを選択している状態で,右下のビューで緑色の電球のアイコンを選択します.そしてその中の,いちばん上にある項目群の中で,下記のようにします.
- サイズ を0にする(これが大きいほど,ぼけます)
- 最大バウンス数 を1にする(レンダリング高速化のためなので必須ではないです)
はい,これで設定は完了です!
あとは,左側の3Dビューで好きなようにライトの位置などを変更してみましょう.
こんな感じでライトを動かせば,プロジェクタを動かしたかのようにふるまわせることができるかと思います.
詳しくは割愛しますが,Blenderでつくったモデルをカメラからの視点の画像をレンダリングするには,F12キーを押します.また,左側の3Dビューで,今見ている視点にカメラを設定するには,Ctrl+Shift+0を押します.
以上,Blenderによるプロジェクタっぽいライトの作成方法を紹介しました.
Blenderは手軽に使える無料のCG作成ソフトです.チュートリアルもたくさん紹介されており,私も独学でいろいろ学んでいる途中ですが,ちょっとやれば下のような,それらしいリアルなCGが作れます,おススメです.