先日は、
の中で動画のセットについて書きました。実写の場合建物や本当のふうけううぃお使う方法もありますが、カメラで撮る場合だと見えている部分だけを作ればいいので、定点で撮る場合だと、フレーム内の状態をどう構築するのかを考えることになります。その為、フレーム内に移る物を用意して、その時の光の状態を作る事になりますが、これが少し広くなった場合も同様に、面で構成されている場所だと、壁面や地面の裏側を作る必要がないので、衝立た看板のような構造の物の見えている側をどう仕上げるのか?を考えることになります。
そうすると、
のようになりますが、3DCGの場合だとパーツの流用が効くので、表層の状態は、オブジェクトの追加やテクスチャで対応できるので、十字路の場合だと、
のモジュールを回転させて使用する事ができます。
この場合シェーダーの情報など後で紐づけをすると状態を変更できますが、マテリアルが同じで通路の状態が変わるだけだと、用意したストラクチャの軸回転を適応するだけでこうした道を作る事ができます。これを先程の通路と組み合わせると、
のような物を作るる事ができます。先日は、距離とパースにつても書きましたが、遠方に移っているだけの物だと、パースの変化がないので、立方体を配置しても
のように変化がほとんどわからないので、これよりも向こう側の遠景については板ポリゴンでも対応できることになります。その為、遠景の物だと実写でも看板のような物があったとしても区別がつかないわけですが、このパースの情報も現在の映像では、画素で表現しているので、画素数が高くなると、ドットバイドットで見た後に大丈夫な場所とそうでない場所の距離感の確認をして最適な条件に合わせておく必要があります。映像は解像度で見え方が変わてくるので8Kや16Kになると、4Kの用には行きませんし、フルHDの映像のディテールのイメージで8Kの映像を撮ると偽物感満載の映像が出来てしまいます。この辺りは、中判の製品では、本物はより本物らしく撮れて、偽物は完全に偽物だと解るレベルになりますから、こう回想度の映像を作る場合には、それに応じたディテールの判断をする必要が出てきます。その為、パースによる変化は発生しますが、どう見えるのか?については、使用する映像の解像度によって違ってきます。
ゲームの場合、ディテールのコントロールをLODでリダクションをしたり、POMやテッセレーションを使う場合には、トポロジーによるコントロールをしますが、ディテールも物凄く遠い場合だと板と変わらない状態になるので、陰影の情報も判断しづらくなります。その為、判別できる光の向きは解りますが、遠方になるほどにり描く絵得られる情報は減ります。
これが空気遠近法などを含まない状態で発生しているのですが、3DCGで空気感を入れる場合、DoFやFogなどでディテールの減衰と色の変化を入れると質感をコントロる出来ますが、カメラで遠方まで抜けている風景を撮ると、遠くなる程にディテールが減衰していくので、近景と遠景ではディテールの状態が違うので、オブジェクトのリダクションを行う事が出来ます。
画像を使う時差例だと、3DCGでは、IBLを使用しますから、
のような感じで空間内の光の状態を得ることができますが、風景を看板にして地面だけ用意してセットを作る方法もあります。これは、模型のジオラマとかがそんな感じになりますが、
のようなのを用意して、
のように撮る事もできます。
模型を使ってマクロを粉うと被写界深度が浅くなるので、ガンプラのサイズでも結構絞った方がいい場合もありますが、マクロの場合だと、小型センサーの製品でも前ボケを入れたり、背景をぼかす事もできます。
これは屋外の事例ですが、屋内で外が見える場合も
のようなシーンに板ポリゴンに映像や画像をテクスチャにして使用する方法があります。実際に適応してみると、
のようになりますが、Cyclesでレンダリングをすると、
のような感じになります。映像の場合はこんな感じで
【 カット割りに合わせた作り方 】
ができるので、シーンで使うセットw組んでおけばその場所のシーンは全て撮れてしまうわけですが、ゲームの場合だと、移動する範囲の物を全て作る必要があるので、シーンレベルで読み込むものが違ってきます。
古いゲームだと幼少の関係でマップを小分けにして移動できる範囲を決めてあり、ストーリーの進行でその場所に移動をコントロールできるような仕様になっていますが、これもすべてを作るのではなく、必要な場所の実を切り取った作り方になります。
現在は、ゲームエンジンも色々な選択肢があるので、個人でも時間をかけるとゲームを作れる時代になりましたが、ハードウェアの制約は受けてしまうので、所有しているハードウェアでまともに動く物を作る際には仕様を決める必要があります。この時位ローレゾで動かすと軽くなりますが、それと同時にシーンの容量を小さくすると読み込みの時間を短くできます。アーキテクチャが古いとストレージやメモリー周りまで速度が出なくなるので、ゲームの作る方がある程度決まってくるのですが、個人がゲームを作りながら学習する場合だと、シーンの管理方法も含めてプランニングをしてみると読み込みの部分で影響が少ない物を作る事ができます。また、現在のプログラミング言語ではプロセスとスレッドを使えるので役割分担をどうするのか考えて処理の仕組みを作るとシングルスレッドで動いている状態よりも軽快に動作する物を作る事ができます。
先日はこんな感じで、3DCGAでもセットを作る時に使えそうな物について書きましたが、今回はモデリングについて書こうかなと思います。
3 DCGの仕組み
3DCGは、座標を指定してその間を関数で補完するよな仕様になりますから、平面で見た時には、座標平面上で幾何ベクトルを扱うのと同じ状態になります。画面をトップビューにして、
のようにすると、Z-UPの座標系のBlenderでは、数学のグラフと同じようにXY座標になります。この時に、数学と同じように
のような原点を基準として
のように座標を指定できます。一次元の場合だと、数直線と同じなので、軸と平行に移動する事になりますが、座標平面では、二軸の数直線を持つ二次元の構造ですから、
のようにY軸方向にも移動できます。この時に
の2つの軸を見ると、座標の変化もありますが、距離が同じなので、これは移動と言うよりも 【 回転 】 と考えることができます。中学校の数学だと、この座標の変化を三平方の定理でコントロールするしかないのですが、高校の数学IIで三角関数を学ぶと、この頂点の回転は、単位円と言う半径1の円上で回転している事を学びますから、平面上における軸回転は、ラジアンで回転させることが可能で、三角関数の
■ f(x) = sin(x)
■ f(x) = cos(x)
で軸の方向を決めて、それをラジアンで回転させることで直線の方向を変えることが出来ることを学習する事になります。この時にX軸やY軸と一致するxの値があるので、これを弧度法で回転させると、四方向の座標変動に対して軸回転を追加できるので、向きを変えながら直進するような動きを実装できます。
これがキャラクターグラフィックの向きを変える時に使用できる物になりますが、現在の高校の数学のカリキュラムだと、複素数平面も出てくるので、3DCGやベクターグラフィックを使った時のオブジェクトの回転の制御をする時に使用する物を学習できるようになっています。
これが座標平面上での二軸を使用して座標を指定した時の座標の取り扱いになりますが、数直線では、
のように同じ距離を追加する事ができます。これは、小学校1年生のさんすうで登場する 【 かずのせん 】 を使った時に登場する 【 数値の増加 】 を幾何で示したものになりますが、中学校の物理だと 【 力の釣り合い 】 で力を加算する時に使用するものになります。この時に方向が存在しない状態がこの状態になりますが、一次元での力の変化を考える時にこの状態になり、この逆側に進むと減算になります。中学校の物理では、これを一次元ではなく、二次元にして 【 傾き 】 を持った状態で力のつり合いを考えることになりますが、高校の数学では、これが 【 幾何ベクトル 】 として登場します。
この時にベクトルは、原点から伸びている傾きを持った線分であり、座標平面上に存在する二点の座標で構成された物として考えるので、座標の加算や減算は、それぞれの数直線上の座標の加減算で座標の算出が出来ることを学びます。つまり、Yが3の時に、別のグラフのY=3のデータを加算した場合3+3なので6になる訳ですが、座標平面は数直線が層として別の数直線で管理されているような構造なので、グラフのデータは、数直線として考えることができます。そう考えると、数直線上の値に対して別の値を加算する状態は単なる足し算でしかありませんから、グラフの構造上、関数同士の加算をすると、グラフのデータの加算をする事になりますから、f(1)の条件だと、X=1場所に存在する数直線上の値を取得するという内容になりますから、加算の場合だと、関数Aと関数Bの値の加算をする事になり、減算だと差を算出する事になります。
高校の数学では、これが関数と幾何ベクトルのカリキュラムで登場しますが、この基礎部分が、中学校の物理の力のつり合いのカリキュラムになります。その為、中学校で集まっている矢印はベクトルなので、座標平面上で使用できる距離と方角を持った線分を扱う為の物になります。
ベクトルについては、ベクトルの指定をする際の大きさが原点ベースになり、計算をする際に用意する物が最初に用意されている幾何ベクトルの座標になりますが、3DCGでは、この初期値の指定をする時の原点ベースの座標と、計算をする際に使用する任意の値を原点として考える座標があります。この二者は、
■ グローバル座標 : ワールドの原点が基準
■ ローカル座標 : 任意の座標が基準
のような仕様になっていますが、
のような感じの仕様になっています。
座標の指定をする際には、原点を基準とした距離になりますが、そこから別の座標を得る場合だと、そこからの距離を追加する事になります。
■ ポリゴン
ポリゴンは複数の頂点をポリラインで繋いで、その形状を面で繋いだ物がポリゴンになります。ポリゴンの最小単位は三角形なので、
のようになりますが、これを
のように繋いで形状を作る事になります。モデリングをする際にポリゴンのじょうたいをかえることになりあmすが、面の状態を変形させるためには、座標を変えることになります。
このように形状を変形すると、平面の図形の状態が変わりますが、これを高さ方向で変形させることで立体の状態を調整する事ができます。
3DCGツールでは、四角形のポリゴンも使いますが、
のような形状を繋いで
のように面を延長することもできます。細分化をする時には、ポリゴンの形を統一させておいた方がいいのですが、
のように混在させることもできます。家の形状だとこうした形になりそうですが、三角ポリゴンだとこの形状は3ポリゴンを消費して作る事になります。Direct-Xだと三角形ポリゴンを使う事になるので、ゲームやMikuMikuDance用のPMXファイルを作る時にも三角ポリゴンを使う事になります。これを行うと、
のように枝分かれさせたり、複数のポリゴンを一つのポリゴンに統一してリダクションを書ける事も出来ます。これが、通常使う三角ポリゴンと四角ポリゴンになりますが、3DCGツールでは、多角形のポリゴンも使用できます。
のように五角形のポリゴンを作る事もできます。
■ Blenderの座標
BlenderはZ-UPの座標系なので、【 0 】キー を押してトップビューにすると、
になりますが、
のようにXY座標が数学の座標平面と同じ向きになります。また、この座標の増減が、XZやYZにしても同じなので、フロントビューやサイドビューでも通常の座標平面と同じ取り扱いが出来るようになっています。ちなみに、座標を回転させると
のような状態にできますが、これは、
のように絶対値を取得した状態になります。原点を基準とした場合、絶対値を取得するとミラー形状を生成する事ができます。
内 観と外観
CADの場合だとセンターを撮ってそこから厚みを付けて柱や壁の厚みを付けていくので少し違いますが、建物を作る時場合箱を作って加工するという流れになります。この場合、床を作って考えることになりますが、この辺りは、CADも同じです。
その為、CADの平面図から考える作業の流れを踏襲すると建物を作りやすくなります。Blenderには建築用のアドオンもありますが、そう言った機能がないモデラーでも考え方は同じです。
■ 箱を作る
建物の構造は箱なので、
のように矩形を作り、その後、辺を選択して壁の長さ分だけ押し出します。
同じように眼帯側も押し出すと、
のようになりますが、ここで
の世に下の辺を選んで、押し出すと、
のように柱に該当する部分も追加されます。更に、上も同じように追加すると、
のよになります。
画像のように外側の面を選択して 【 E 】キーで押し出すと、
のように箱を作れます。この作り方だと、
のように同じ工程で部屋を増やして壁を作る事が出来るので、壁の厚みを決めておくと
のような形を作る事ができます。
■ 箱の応用
先程の作り方をすると、部屋数を好きなように拡張できるので、
のようにすることができますが、この状態で過度のポリゴンを選択して、【 DEL 】キー を押すと
のようにメニューが出るので頂点を選択すると、
のようにL字型の建物を作れます。この状態で、
のように壁面を選択して 【 E 】キー で押し出すと、
のようになります。これが出来るので、
のように元の形状を複製して、
のように違う場所を削除して押し出すと、
のようになります。これを、
のように選択して複製すると、
のようになりますが、エディットモードで 【 A 】 キーを押して全選択を行って、【 P 】キーを押すと
のようにメニューが出るので、【 構造的に分離したパーツで 】 を選択すると、パーツを分けることができます。これで、個別に扱えるようになりますから、
のよに位置を合わせて高さを変えると、
のような状態になります。そして、
のように床を作り、これを複製して厚みを付けて
のように天井を作り、更に
のように複製します。そして、
のようにバランスを取って調整して行く事になります。
■ ブーリアン
CADの場合だと全ての寸法を用意して形を作る事になりますが、3DCGの場合だと窓枠などばふーリアン演算で作る事ができます。 【 E 】キーで面を差し込む方法もありますが、ブーリアン用のオブジェクトを用意してその形を加工して窓枠を作る事もできます。ブーリアンモディファイヤを使うと、
のように形状を削る事ができます。その為、
のように形状を配置し絵差分で削ると
のようにくり抜くことができます。
のように別の形状を追加してくり抜くと
のようになります。屋内に光源を入れると画像のようになりますが、窓や入り口を作る場合、ブーリアンで削ってパーツを底に配置する事で形を作る事ができます。また、
の世に削った場所に明かりを入れて
の世に側面にガラスを入れて光源を配置したり、大きなガラスを入れることもできるので、
のような感じでガラス橋の場所を増やしたり窓枠を入れることもできます。CADだとこの窓枠まで含めた三面図を描くことになるので作り方が違うのですが、建物を作る場合、床面の面積を最初に用意して、そこに梁や柱の厚みを追加した形状を用意して屋内の状態を作ってから壁をせり上げるようにすると部屋数を増やしても壁の形が維持された状態で高さを追加する事ができます。