現在は、3DCGも身近な物になっていますが、有償から無償の物まで様々な選択肢があります。WINDOS 10になって、3D BUILDERやペイント3Dなども追加されたので、3DCGに触れる機会も増えたのではないかな?と思いますが、3DCGツールだと、

 

    Blender

      https://www.blender.org/

 

 

 

があるので、ソフトのコストを抑えてPCや周辺機器にコストをかけて作業を行う事が出来るようになっています。このツールは、モデリングからシーンのレンダリングから、動画制作までできる多機能なツールになっていますが、グリースペンシルは手描きアニメーションまで作れるので3DCGAだけでなく、手書きアニメや実写の動画編集が出できるのですが、それと同時にコンポジションも行えるので、フツーに動画を作る事ができます。Blenderは動くものを作れるのでモーショングラフィックも作れるのですが、ノードと組み合わせて制御すると、かなりいろいろな事ができます。

 

 

ラフィックと動き                  

 

 CGを動かす場合には、CGでアニメーションをすることになるので、基本的には、通常の動画と考え方は同じで、絵の変化で動きを表現する事になります。これは、書き出した物だと動画ファイルでしかないので、映像のフレームレートを決めてそれに合わせて動きを作っていくことになります。

 

 3DCGAの場合、モーショングラフィックと同じなので、キーフレームで動きを制御する事になります。現在は、動画編集でもオーバーレイトラックやレイヤーで素材の制御ができるようになっているのですが、この時にもキーフレームを使って制御をすることになります。

 

 

■ 3DCGの構造                    

 

 3DCGについては、

 

 ■ 3DCGの仕組み 【 Blender 】

の中で触れていますが、オブジェクトは、

 

 

で構成されています。この中でレンダリングができるのは、ポリゴンのみですから3DCGでのモデリングでは、レンダリング時に見える部分を作るので、ポリゴンの表層部分(サーフェス)の面で形状を作る事になります。ポリゴンは板なので、表裏がありますが、この表裏は法線のあるほうのみ表示が行われます。

 

 3DCGやゲームエンジンを使うと、高校の数学で出てくるものが複数登場しますが、法線についても、高校の数学IIIの 【 接線と法線 】 で出てくる接線と直角に交わる直線の法線と全く同じものになります。

 

 高校の数学IIIでは基礎分野なので一変数関数を用いる時に使用する中学校から使っている座標平面を使いますが、3DCGの世界は二変数関数のグラフと同じものになります。大学のカリキュラムだとベクトルは数字を使う事になりますが、この理由は、多次元になると幾何だと分かりにくくなるからですが、時空間のような表現をする場合、4つの軸が発生しますが、この条件で考えると、それぞれの軸は移動しますが、空間軸の中に時間軸を記述するのは虫があるので、行列で制御したほうが扱いやすいのでそう言った処理を行う事になります。その為、高校で学ぶ幾何ベクトルの拡張として 【 多次元のベクトル 】 を扱えるようにした場合、数字の羅列にしたほうが扱いやすいので、数でベクトルを扱う事になります。

 

 形状は、ポリゴンの集合体なので、

 

 

のように面がつながった状態で形状が出来上がっています。そして、見えている状態だと法線が外側に向かっている場合、カメラがどの向きから見ても外側から取っているので、常にポリゴンのサーフェスは表示されます。ここにテクスチャで質感を指定して、ライトで光を当てる事で質感と光沢と色と影の状態を再現する事ができる世になっています。

 

 レンダリングについては、

 

 ■ 3DCG

で触れていますが、ゲームで使うリアルタイムレンダリングと映像制作で使用するプリレンダリングでは処理が異なります。レンダリングについては、

 

■ Zバッファ                      

 

■ スキャンライン                   

 

のように光の物理現象の計算をしない物もありますが、プリレンダリングでは光の計算を行います。

 

 

■ オブジェクトの動き                

 

 3DCGでは、オブジェクトの動きを指定する事が可能ですが、動きとは、 【 空間内の座標の変化 】 なので、それを時間軸で制御する事になります。座標の変化と言うと、数学では 【 関数 】 を用いますが、中学校1年生の数学で一次関数を学習しますが、理科の分野では、物理で 【 フックの法則 】 が登場します。ここで、バネの伸びと化け係数や密度について学習しますが、ここで使用するグラフは比例のグラフなので一次関数のグラフと全く同じものが登場します。また、係数での変化は関数の特性なので、この場合の係数は傾きを示すのは同じですが、一次関数で出てきた、Y切片と言う原点0からY軸方向に発生した距離は、バネを使ったカリキュラムでは、バネの長さとして登場します。このグラフを見ると、

のグラフが完成しているので、正比例のグラフは一次関数のグラフであるという事が確認できるわけです。ちなみに、この式は等式ですから、 【 yは、変数xの式の解 】 になりますが、式のアルファベットは、

 

 

のような意味を持っています。また、比例の関係は法則性なので数式で示す事が可能で、その法則性を示した式があれば、変数項の仕打ちを代入することで計測値以外も値の算出ができる事を学習します。その為、 【 数学 】 で学んだ法則性を考える上で使用する部品は、【 理科 】 の分野において、実際に法則性を考えるうえで必要な物であり、実際にそれを使うと、式に落とし込むことができる事も体験できるわけです。数式は法則性であり、数学ではその式の成り立ちと扱い方を学び、理科などの分野では現実世界においてそれを使う事があり、使用すると便利な事を学習する訳ですが、数学の数式は、思考の為の材料でしかないので、あくまでも数学は 【 部品の仕様と使い方 】 を学ぶ物になります。つMり、プログラミング言語の組み込み関数や演算子などのような構造物を作るための材料とその学習と同じです。

 

 プログラミングを行う時には、変数を用意して処理に関数を用いて、判定に論理演算子を使用しますが、こうした構造物を作るために言語の仕様を学習する必要があります。現実世界も同様で、法則性のあるものは、数式が存在しているので、プログラミング言語のように構造体を必要なパーツの組み合わせによって構築する事になります。その時に使用するのが数学なので、現実世界における数学の取り扱いは、無駄な時間がかかる膨大な演算を、等式の形で数式と解の状態にして、演算しやすくした物として存在しています。そして、法則性がある場合、その演算結果で解は出るので、中学校では、そう言った運動方程式と数学の牽連性と、現実世界でも数学を使えることを学習する事になります。これは、あくまでも 【 何も知らない人向けのセミナーレベルのランクで物事をかみ砕いて学習している状態 】 でしかないので、現実世界では、もっと複雑な状態で関数が涵養し合って動いています。この場合、高校ではフツーに学習する 【 関数の合成 】 をすれば解が出ますし、関数が解の状態で関与している場合、一次関数の推移であれば、係数と項の変化として考える事ができるので、その詳細が環境係数なのか、バネの法則のようにスタート段階で影響を与える物なのかで、状態が変わってきます。その為、一次関数と言う構造体は、 【 一次関数  y = x に対して外的要因が加わった時位に変化の式を示す方法の学習 】 と言う事になります。

 

 また、一次関数を学習する理由も 【 曲線的な推移も極限レベルでの推移を検知して始点~終点までの状態変化を見た場合には一次関数と同じ直線になる 】 ので、算数において一番最初に党所する存在することを示す数値の1と同じレベルで基準になる形の物になります。

 

 時間は遡る事がないので、現実世界で推移を見る場合には、

 

 

の三種類で考える事になりますが、真ん中が定数で、上下の二つは、一次関数で符号の有無での推移が発生している状態になります。その為、

 

■ 増加( y = x のグラフ )          

 

■ 変化なし( y = 定数 のグラフ )      

 

■ 変化なし( y = -x のグラフ )       

 

のような一次関数と定数で構成された物になります。グラフの傾きの変化は係数の変化なので、この法則性が分かっていれば推移も理解できるのですが、 

 

【 曲線 】 = 【 複数の頂点を持つ多角形の辺 】

 

というような考え方をすると推移で発生する曲線もこの三つの法則性に分類できるので、細分化をすると一次関数と定数の推移で表現する事が可能になります。この一次関数も 【 数直線上の座標 】 であり、数直線と言う数列を二次元で考えた物なので、座標平面上の任意の点として数直線とは別の場所に座標が存在する訳ですが、ドロー系ツールや3DCGツールのようなベクターグラフィックツールでは、数学を構成する三本柱の一つの 【 解析学 】 で使用するグラフと同じように座標を持っているので、その座標を基準に頂点を指定して、その間を演算処理によって補間しています。

 

 その為、一次関数で登場する 【 数直線上の座標の概念 】 がそのまま使われています。それが、空間上に存在するバーテックス(頂点)になります。

 

 

グラフが登場したのは17世紀ですからアニメーションのような表現は存在委していましたが、ホウ素Kす栄が途切れてしまうと問題があるので、連続した推移の軌跡で描くのが最適なので、長時間露光のように座標は線で描かれていました。イメージとしては、スターストリームのように点の推移が線になって表現された物が画像と言う時間軸を持たない物で表現された状態になっている訳ですが、

 

■ タイムラプス                     

 

のような座標間の推移を、

 

■ スターストリーム                  

 

のような感じで連続したものとしてとらえた物がグラフになります。この場合、 【 推移の法則性 】 は見えますが、動きという認識はないと思いおますが、現在のようにソフトウェアで表示をコントロールできるようになると、グラフの変化を動きで見る事ができます。

 

 例えば、一次関数ノグラフの推移も、

 

■ 傾きの変化 (係数の推移)           

 

■ 切片の変化 (加算した項の推移)      

 

のような変化が発生します。この動きは、 

 

【 グラフと言う座標の集合が動いている状態 】 

 

ですが、数式を構築した場合、係数や項によって集合その物を動かす事もできます。これはグラフィックにも当てはまりますから、

 

 

のような頂点座標と、

 

 

のような頂点座標の集合体で構成されたジオメトリレベルでの移動の二種類が存在しています。

 

 

■ 変化の違い                     

 

 前述のように頂点座標とオブジェクトの座標の変化で意味合いが変わるのですが、モデリングとは頂点座標を変化させて形状を作る作業になります。この時に頂点座標で生成されている面形状が変化するので、面の繋がった状態で構成されているポリゴン形状も変化します。この頂点座標の変化は数学で考えると、 【 数式の変化 】 と同じですから、x軸の数値が等差数列で構成された数直線と言う同じ条件として用意されている状態でも法則性が変わると、形が変化します。数式とグラフについては、

 

 ■ 数学と美術

の中でふれていますが、x軸の推移に対してy軸の変化の法則性を変えると、推移が変わるので、

 

 

のような感じで異なるグラフが出来上がります。また、座標の変化で時価たちが変わるのは折れ線グラフもそうですが、定数でグラフを書いた時に記載ミスがあって折れ線グラフを書き換えた場合、グラフの形状は変わってしまいます。この 【 形状変化 】 がバーテックスの座標変動で発生する内容になりますから、キャラクターオブジェクトのモーション関連は、グラフの数式の変化による形状変化と同じように頂点座標の変化で成立しています。その為、処理のアプローチが異なりますが、

 

■ シェイプキーノテスト                

 

■ クロスシミュレーション              

 

のような形状の変化は頂点座標の変化で発生しています。これに対し、先程のグラフの移動のような塊が維持されてその構造体が移動するような場合だとジオメトリ単位での制御になりますが、この場合、

 

■ オブジェクトの移動とカメラの追従      

 

の中のCUBEの動きのように全ての頂点に対して特定の推移を与えるような処理を実装する事になります。ゲームの場合、キャラクターの動きを想定した場合、

 

 

のような制御を行う事になります。その為、単純なレイアウトだと、形状の変更は存在しませんから、ジオメトリレベルの移動になりますが、モデリングやモーションのように形状自体が変わってしまう場合、バーテックスレベルでの座標の変化を入れる事になります。

 

 

 動の実装                     

 

 前述のように動きを実装する場合には、

 

    形状の状態変化
    構造物の位置の変化

 

の二種類が存在する訳ですが、前者はリグやシェイプキーなどを使った正業になり、後者は、対象のオブジェクトに対しての座標の変動を指定するような処理になります。今回は簡単なジオメトリレベルでの移動について書きますが、基本的に、 

 

【 対象を選択して状態を指定する 】

 

と言う流れは何をする場合でも共通しています。最初に対象を選ぶことになります。Blenderを開くと、

 

 

の画面になりますが、動きを指定する場合には始点を決める必要があるので、

 

 

のよに動きの始まるフレームを指定しておいて、そこでキーフレームを打ちます。動きの基本は、

 

 

と同じなので、 【 始点 】 と 【 終点 】 を指定する事になりますから、動きの始まりが同った状態で、それがどう言った形で終わるかを指定する事になります。

 

 今回の始点は移動なしで始めるので、 【 I 】 キー を押して、

 

 

のようにメニューを出します。この時に、対象オブジェクトを選択しておくことになりますが、選択すると、アウトライナー上では、

 

 

のように現在選択中のオブジェクトにカーソルが合います。この状態で、キーフレームを打つと、パラメーターの数値の色が変わるのですが、シェルフとプロパティの双方で色が変わります。

 

■ シェルフ                       

 

■ プロパティ                      

 

これで始点が決まったので、終点の値を決める事になりますが、別のフレームに進むと、

 

 

のようにパラメーターの値の場所が緑色になります。これが、キー触れ無が適正に働いている状態になります。ここで数値を変更すると、

 

 

のように色が変わるので、ここで、始点と同じように 【 I 】 キーでメニューを開いて

 

 

のように回転を指定すると、

 

 

のようにキーフレームが追加されます。これで、始点の状態から次のフレームで指定した数値までの変化を実行できるようになります。

 

 モーショングラフィックやキャラクターオブジェクトの動作の場合、頂点座標もリグ内のボーンの移動についても始点~終点までの変化を追加する作業になるので、基本的な処理はこれになります。現状に対して、終点での結果を指定することで、中間の動きを補完して実行できるようになっているので、

 

    始点の設定
    最初の変化の場所での状態の設定

 

を行う事で最初の初動を実行できるので、連続したモーションだと、指定後の状態を基準にどう動くのか?を指定していくことになります。アニメーションも最初のポーズがあって、中割りの順番に動きが推移していきますが、この中割りのポーズをフレーム数を決めて指定していくとアニメーションになるのと同じで、元の状態からの変化を追加して動かしていくような流れになります。その為、その最小単位が、始点と終点の二点だけの動作になりますが、連続した変化が存在する物については、一つ前のキーフレームを基準とした変化を追加する事になります。

 

 

 ーションの反復                   

 

 動きについては、単一の動作と反復動作がありますが、扇風機の羽根のように常に回転しているような物を作る場合、モーションを複製していると大変ですが、標準機能でループの指定が可能になっています。

 

 Blenderで作業をする場合、モーションを扱う時にはタイムラインとグラフエディターの双方の表示をしていた方が使いやすいので、

 

 

のような状態にします。こうすると、キーフレーム間での処理と推移のカーブを制御できるようになるので、この二つを表示すると作業がしやすくなります。

 

 グラフエディタは、 【 キーフレーム間のイーズの調整 】 で使用できるので、 【 動きの緩急を作れる 】 ようになっていますが、ここで、

 【 SHIFT 】 + 【 E 】 をクリックすると、

 

 

のようなメニューが出ます。このメニューの中から

 

 

の 【 折り返しにする(Fモディファイヤー) 】 を選択すると、先程のモーションを連続して繰り返す事が出来るようになります。その為、灯台の光や深夜の信号の点滅(注:東京では、これがありません。)などを表現する場合にループを指定する事になります。実行してみると、

 

 

のように指定したモーションが反復して実行されています。

 

 

 ーズの追加                     

 

  多くのツールでは、キーフレームで始点と終点を指定すると、一次方程式のような直線的な推移をしますから、推移の量を等速になるように処理をしています。その為、

のような状態になっているので、

 

 

の中の

 

 

のような状態になります。止まっている状態が、

 

 

なのでm推移はこの三種類になりますが、この処理にすると、スローイン・ファーストアウトのような挙動が出来ません。

 

 その為、等速以外の処理を実装する時には、カーブを用いて、挙動を実装する事になります。この場合、

 

 

のように推移なしのキーフレームを範囲分だけ指定しておいて、グラフエディタのカーブを調整すると速度の変化を指定できるようになります。

 

 

カーブの指定はベジェのようにハンドルによる調整なので、この部分は直線補間が行われる仕様になっています。カーブについては、

 

 

のように変化を入れる事ができるようになっています。

 

 

 ディファイヤー                   

 

 Blenderでは、対象物に変化を入れる場合にモディファイヤーを使いますが、各ワークスペースにモディアイヤーが用意されています。

 

 動画編集用のVideoEditngでVSEを開いた場合にもトラック上に配置したストリップに対してモディファイヤーを定期王できますし、モデリングや形状のレイアウトの段階でもモディファイヤーを使用できる仕様になっています。モーションについてもモディファイヤーが用意されているので、グラフエディタでカーブを使った挙動制御をする場合でもモディファイヤーでの制御ができます。

 

 グラフエディタを単体で開くと、

 

 

のような画面になりますが、 【 N 】 キーでシェルフを開くと、

 

 

のように 【 モディファイヤー 】 のタブがあります。ここをクリックすると、画像のように 【 モディファイヤーを追加 】 のプルダウンが表示されます。

 

 タブを開くと、

 

 

のような項目が用意されているので、動きをモディファイターで生成する事ができます。

 

 

 ンダムな動きを入れる              

 

 モディファイヤーにはノイズがありますが、これを使うとオブジェクトをランダムに揺らす事ができます。

 

 

のようにテキストを追加して変動なしの状態でキーフレームを打ちます。すると、グラフエディタの動作も存在しませんが、ここににノイズを追加します。すると、

 

 

のようなプロパティが追加され、周期と振幅の変化や状態の調整ができるようになります。そのまま追加をすると、

 

 

のようになりますが、各座標で推移を追加できるので、

 

 

のように別の座標にも状態を追加できます。そして、

 

 

のように強さを変えると、

 

 

のような状態になりますから揺れの状態をパラメーターで変更して実装する事ができます。当然三軸で指定ができるので、

 

 

のように動きを指定する事ができます。これはキーフレームでの指定範囲の挙動ですが、モディファイヤーには反復もあるので、グラフエディタのモディファイヤーから

 

 

のように反復を選択すると、

 

 

のようなカーブを反復して実行できるようになります。

 

 

反復を追加すると、

 

 

のように回数指定を永続する場合には0を指定しますが、回数の指定も行えるように泣ています。また、実装したモーションは6DoFによる移動や回転だけでなく、や拡大・縮小なども含まれるので、必要なモーションを指定しておくと、モディファイヤーで揺れや動きを実装する事ができます。

 

 

のように違う軸を選択して、ノイズを実行すると、

 

 

のようになりますが、

 

 

の動きとは別に違う軸に対して、

 

 

のような動作を実行する事で、回転と振動を追加する事ができます。

 

                                

 

 ベクターグラフィックは、座標で制御しているので、平面の処理だと数学の座標平面と同じ考え方ができますから、数学の一次関数と同じ軸の構成になっていますが、3DCGの場合だと、

 

 ■ 3DCGの座標

の中で触れていますが、

 

 

のようにツールに寄手座標が違います。座標軸の平面野的な考え方の違いは、図面のようにテーブルの上を平面として、そこに高さがあるという考える方法と、カメラのファインダーのようにスクリーンに対して奥行きがあるという考え方の二種類があります。この条件で考えると、前者だと、数学の床面にXとYが存在する事になりますが、カメラのファインダーを基準にすると、奥行きが外的要素なので、平面は横と高さになります。このような違いがあるので、Z軸の座標が奥行きに使われているツールと高さで使用されている二種類のツールが存在している訳です。

 

 Blenderでの座標については、

 

 ■ 3DCGと座標

の中でも触れていますが、ジオメトリレベルだとシェルフの中パラメーターの数値を変えるとオブジェクトの原点を基準に推移した数値が適応されるのですが、モーションを作る場合には、フレームを指定して、その時の推移の状態を指定することで動きを指定します。

 

 ちなみに、動きが確定している場合で、フレーム数の違いで速度が合わない場合だと、イーズを入れる前にキーフレームをクリックして、

【 G 】 キー を押した後に 【 X 】 キーを押すと水平移動ができるようになるので、キーフレームのはいちばしょをかえることで モーションの速度を変更する事ができます。

 

 そして、動きを指定する場合にはイーズを用いる場合がありますが、この場合には、グラフエディタを開いてカーブを使う事になりますが、モディファイヤーを使うと用意されたモーションを追加できるので、ノイズを入れる事でランダムに素材を揺らす事ができます。

 

 更に、一つのモーションを

 

    永続ループ
    回数指定ループ

 

が行えるので、車のタイヤが回り続けるような処理も回転のモーションと速度を合わせておけば、そのモーションをシーン内で実行する事ができます。作業の順番としては、

 

    キーフレームの指定
    イーズなどによる挙動の指定

    ループの指定
 

の流れになるので、この順番で作業をすると、意図した動きを実装できます。