月の移動

最終更新:

30pin

- view
管理者のみ編集可
'08/11/1

┼ 月の移動

概要

  • 月を任意の位置に移動させます。
  • 月をリアルタイムに移動させます。


ノウハウ資料

今回はゲーム性とは縁遠いテーマですが、当研究室ではビジュアル面も重要視したいと思います。

時間をリアルタイムに更新させた時、太陽は動きますが月は停止したままです。これは少し残念です。


◇ 月の位置を決める

月の位置を決めるパラメータは RollupBar の Environment の中に存在します。

パラメータ名の中で Latitude (緯度)、Longitude (経度)というものが有り、ここで月の位置を指定するのですが、実際には 「 方位 」「 高度 」 の方が合っていると思います。

Moon パラメータ
パラメータ名 意味
Latitude 方位 ( 0 ~ 360 : 反時計回り or 北を中心に ±180 単位 : °) ※1
Longitude 高度 ( ±90 単位 : °) ※1
Size 大きさ ( 0 ~ 1 ) ※2
※1 意味が有ると思われる数値の範囲で、設定できる数値はこの限りではない
※2 単なる(倍)ではない様子

◆ 方位・高度の関係図
※ 数値の単位は全て 「 度(°) 」
※ もちろん Longitude 経度(高度) は、この方向の限りではない。

経度 ( 高度 ) を示す線が M 字形をしているのは間違いではありませn。
次の項目にある動画で、その様子の一部を確認する事ができます。

ここで一つ注意が必要なのは、 「 月は 180° 向かい合わせで2つ存在する事 」で、月を地平線に沈めて隠したつもりが、逆の空に出ているというハプニングが発生するかもしれません。月を隠す必要がある場合は、やはり Time Of Day ウインドウで月の輝きを調節する必要があるみたいです。


◇ 月の位置を自由に決める

先程、月の位置は RollupBar の Environment から指定すると書きましたが、いちいち数値を入力して確認するのは面倒なので、見た方向に月を移動できるツールをフローグラフで作成しました。

◆ 月の位置を自由に決めるフローグラフ

※ ページの最後で、フローグラフ xml ファイルのダウンロードを試験的に行っています。

─ 使い方 ─
R キーを押している間だけ画面の中央に月が付いて来るので、好きな位置に移動させ、確定したい場所で R キーを離します。
R キーを離すと、 console に Latitude と Longitude の値が表示されるので、それをパラメータにコピペして下さい。

なお、出力されるデータの Latitude 緯度(方位) は、北 の 0° を中心に ±180° の形式です。そのままでも問題有りませんが、360° 形式が必要な場合は、申し訳ないですが手計算で変換をお願い致します。

動作の様子を動画にしてみた。


動画中で Longitude 経度(高度) を 80°まで上げた際に月が徐々に拡大して見えましたが、それが月の軌跡を M 字にした理由です。

Longitude 経度(高度) を上げてゆくと、だんだん月は大きくなるので、場合によっては Size で調整が必要となります。 90°になると、月のテクスチャが空全体を覆ってしまい、Size を 0 にしても効果はありませn。
この事より、自然に見せるのであれば、高度はせいぜい 80°まで。 後述する様にリアルタイムに動かすのであれば、60°前後までが適当ではないでしょうか。

※ フローグラフについて
基本的にはプレイヤーの向きと視線の向きをそれぞれ DirToAngle ノードによって角度に変換し、月の位置を設定する MoonDirection ノードに渡しているだけのものです。
しかし、この DirToAngle ノードはその名の通り方向を角度に変換してくれるノードですが、、他ノードの dir から dir へ直接つなげば良いというものではなかった為、データの変換が必要となり、やや大げさなものとなりました。
この DirToAngle の研究結果については、別の機会に致したいと思います。

'08/11/14 追記 ─
DirToAngle ノードについてのページを別途作成しました。
DirToAngles ノードの分析


◇ リアルタイムに月を動かす

上記の様に月の位置を決めても、停止しているのには変わりはありません。
やはり、リアルタイムに位置を動かして、現実に近づけたいと思います。

ちなみに、現実世界はこうなっているらしい…

  • 太陽は東から昇る
  • 地軸のズレは 23.4°
  • 月の軌道のズレは、さらに 5°

一方、エディターの中はこうなっている

  • 太陽の昇る(沈む)方角は自由に決められる。
  • 地軸のズレ(太陽の通り道の傾き)も設定出来る。
(ただし、場所を赤道付近限定としているのか、「日照時間の変化」がつけられない。)
  • 月は常に満月

この条件で、太陽と月の動きにリアリティを持たせたいと思うなら、マップが赤道上に有るとして、次の様に設定する事になります。

  • 太陽を真東から昇らせる
  • 地軸(太陽の通り道の傾き)を、(北半球で言う)夏なら北から 66.6°、冬なら南から 66.6°傾ける
  • 月の通り道の傾きは、夏なら北から 61.6°冬なら南から 61.6°傾ける


─ 地軸のズレ(太陽の通り道の傾き)を測るには ─
太陽が頂点に来るように現在時刻を 12時 に合わせ、「 月の位置を自由に決めるフローグラフ 」 で太陽と同じ位置に月を合わせると、おおよその情報が得られます。
※ Environment:Lighting ノードは太陽の位置を出力するノードと思われるのですが、正しい情報が得られない様子だったので、上記の方法で我慢するしかなさそうです。


月の位置をリアルタイムに更新する為のフローグラフを作成しました。
◆ 時計回り( CW )

◆ 反時計回り( CCW )

※ ページの最後で、フローグラフ xml ファイルのダウンロードを試験的に行っています。

─ 使い方 ─
左下の3ノード ( 頂点時の時刻・頂点時の方位・頂点時の高度 ) に、月が最も高い位置に有る時の時刻と方位と高度を入力する。

Timer ノードの period パラメータで月の位置を更新する間隔を変える事ができます。

公式マニュアルによると、空の更新スピード ( Time of Day ウインドウ Current Time の Play Speed ) は 0.005 が良い値となっており、その場合、月の位置の更新間隔が 1 秒だと少しカクカク感が気になるかもしれません。気になる場合は 0.5 ~ 0.2 秒程度に変更するのが良いと思います。

─ フローグラフの解説 ─

基本として、
  • 方位 0° に月が有り
  • そこで月の高度は頂点に有り
  • 時刻は 0 時である

そこへ、まずは 「 方位・時刻 」 についての情報を追加する

  • 月の方位を進める角度
例えば「 頂点時の方位 」が 180° であれば、月は 180° 進むので、0 時 の時点で月は 180° (南) に有る事になる。

  • 月の方位を遅らせる角度
例えば 「 頂点時の時刻 」 が 3 時 であれば、180° から 3 時間分の角度をさかのぼるので、180° に到達するのが 3 時 になる事になる。

この様にして希望の時刻に希望の方位に月が有る事になる。

ここで、基本の 「 そこで月の高度は頂点に有り 」 について…
北をあらわす 0° を cosθ に入れる事によって、「 頂点時の高度 」 の最高高度を表す 1 倍 を得ています。

続いて「 高度 」 についての情報を追加する
  • 頂点位置の調整
例えば 「 頂点時の方位 」 が 180° だったなら、希望した月の方位から 180° さかのぼった角度、つまり、北を表す 0° を cosθ に代入して、最高高度を得る事になる。

結果的に、希望する時刻・方位・高度に輝くの月の光を見る事ができるのです。


◇ ファイルのダウンロード

今回は試験的にフローグラフファイルのダウンロードを実施してみます。
  • このファイルは体験版に付属の Sandbox2 で作成したものです。
  • この配布方法で他の環境で正常に動作するかは未確認です。
その点を留意の上、ご利用の場合は自己責任で宜しくお願い申し上げます。


─ 使い方 ─
ダウンロードした xml ファイルを、適用したいマップファイルのあるフォルダに入れてエディターを起動し、フローグラフのウインドウから開いてください。
※ いずれのファイルも、月が確認できる状態でご使用ください。

不具合など有りましたら、こちらへご報告をお願い申し上げます。
コメントページ


以上です、ありがとうございました。


◇ 参考資料









┼ ┼ 













記事メニュー
目安箱バナー