エクスプレッションで楕円軌道に沿って回転させる
「3DCGでCOSMOSを描く」へ戻る
LightWaveで惑星運動を描くには、エクスプレッションを利用するのが便利です。
太陽の周りを楕円軌道で公転している惑星を描く(アニメーションさせる)ための方法を試してみましょう。
ご存知のように、太陽系では太陽を中心に惑星が楕円軌道を描いて公転しています。
楕円とは言ってもかなり正円に近いので円運動でいいんじゃないのとも思いますが、ここはひとつきちんと面倒がらずに楕円軌道に沿って回転させましょう。
実際に太陽系の惑星運動を描く際には、軌道要素やケプラーの法則などについて調べる必要がありますが、まずは簡単な楕円を例にとってみましょう。惑星に見立てた球体を楕円の線に沿って回転させてみます。
図-1に示す赤い楕円ラインに沿って右に位置する円(球体)を回転させるものとします。
長半径、短半径がエクスプレッション設定の対象となります。
焦点はこのエクスプレッション設定に直接の関係はありませんが、楕円軌道の重要な要素となるものですので常に意識しておきます。
LightWaveでの作業はモデラーで2つのオブジェクト作ってレイアウトに送ります。
オブジェクト1:半径0.5mの球体(色はグリーン)
オブジェクト2:長半径:10m、短半径:8mのラインポリゴンによる楕円(色は赤)
※色は何色でも構いません。図と同じにしているだけなので…。
※オブジェクト2は楕円軌道の確認用です。(エクスプレッション設定はオブジェクト1のみに適用)
※XーY平面上にオブジェクトを置き、-Z方向からカメラを向けている設定です。
(X-Z平面でY方向からカメラを向けても構いませんがエクスプレッションの設定チャンネルが異なります)
※球体やラインポリゴンの楕円の作り方については基本的なことなので割愛します。
設定に用いる楕円の媒介変数表示は以下の通りです。
x=a cosθ
y=b sinθ
aは長半径、bは短半径、θは刻々と変化する角度を指します。
レイアウトでは、読み込んだグリーンのオブジェクト(球体)にエクスプレッションを設定します。
(XーY平面上にオブジェクトを置き、-Z方向からカメラを向けた状態でのエクスプレッション)
グラフ編集パネルを開き、グリーンの球体のPosition.Xチャンネルに以下を設定。
名称(任意):X_pos
値:10*cos(rad(360*Time))
同様にグリーンの球体のPosition.Yチャンネルに以下を設定します。
名称(任意):Y_pos
値:8*sin(rad(360*Time))
※名称は全く自由ですが、球体(惑星など)の数が増えたときに明確に判断できるものにしておかないと修正作業の時に大変です。
θに相当する角度指定がrad()となっているのは、エクスプレッションではラジアン変換しないと反応してくれないのでそうしています。(エクスプレッションビルダー日本語解説を読みましょう)
また360*Timeは1秒(30フレーム)で一周する設定です。例えば2秒で一周させたいなら360*Time/2です。
以下に示しているアニメーションは1秒(30フレーム)での動きです。a、bに相当する数値の正負によってスタート位置や回転方向が変化します。
他にも方法はあると思います。いろいろ工夫してください。
またエクスプレッションでは大文字小文字の違いで全く反応しなかったりします。
うまく動かない時は案外初歩的なミスかもしれません。
特に問題は起きないと思いますが試されるときは自己責任でお願いします。