Mitaka Plus スクリプト 入 門 株 式 会 社 オリハルコンテクノロジーズ 高 幣 俊 之 Mitaka Plus 1.5.4 + http://orihalcon.jp/mitakaplus/mitakaplus_154_jpa.zip
Mitaka ( 国 立 天 文 台 4D2Uプロジェクト) 地 上 から 宇 宙 の 果 てまでをリアルタイムに 映 像 化 するインタラクティブな 宇 宙 映 像 表 示 ツール 対 象 : 太 陽 系 内 の 天 文 現 象 宇 宙 の 階 層 構 造 の 俯 瞰 特 徴 : インタラクティブな 描 画 各 要 素 を 正 しく 映 像 化 階 層 構 造 を 見 ていくのに 特 化 した 視 点 移 動 操 作
Mitaka Plus Mitakaのソースコードをベースに 利 便 性 や 拡 張 性 を 向 上 させた 派 生 ソフトウェア
Mitaka Plus Mitakaのソースコードをベースに 利 便 性 や 拡 張 性 を 向 上 させた 派 生 ソフトウェア ( 中 身 は 既 にMitaka 由 来 部 分 が2 割 新 規 開 発 が8 割 ) Mitaka Mitaka Plus
地 上 絵 の 表 示 GUIの 強 化
88 星 座 の 星 座 絵 表 示
88 星 座 の 立 体 表 示
日 食 の 本 影 半 影 表 示
小 惑 星 探 査 機 はやぶさの 追 加
金 星 探 査 機 あかつきの 追 加
Mitaka Plusの 主 な 追 加 機 能 スクリプトによるカスタマイズと 自 動 化 が 可 能 外 部 データの 編 集 による 天 体 の 追 加 が 可 能 88 星 座 絵 の 表 示 地 上 絵 の 表 示 スムーズな 離 着 陸 と 天 体 間 移 動 オブジェクトのフェードによる 表 示 非 表 示 切 り 替 え 任 意 の 天 体 比 表 示 日 食 のコーン 表 示 ターゲット 選 択 日 時 観 測 地 設 定 GUIの 追 加 天 体 や 星 座 のGUIによる 個 別 表 示 非 表 示 切 り 替 え 彗 星 探 査 機 (はやぶさなど)の 追 加 描 画 品 質 の 向 上 と 動 作 速 度 の 高 速 化
GUIの 追 加 :ターゲットブラウザ Mitaka Plus 内 の 天 体 を 階 層 表 示 チェックボタンで 個 別 の 表 示 非 表 示 左 クリックで 選 択 して 天 体 の 情 報 表 示 ダブルクリックで 天 体 まで 飛 行 右 クリックメニューから 天 体 への 飛 行 天 体 へのジャンプ 天 体 のセンタリング 天 体 の 追 跡 ( 地 上 で)
GUIの 追 加 : 時 刻 観 測 地 設 定 時 刻 設 定 ダイアログ カレンダーや 数 値 入 力 での 日 時 設 定 指 定 時 刻 へのアニメーション 手 軽 な 時 刻 速 度 スライダー 観 測 地 設 定 ダイアログ 観 測 地 の 追 加 と 削 除 観 測 地 ごとの 風 景 設 定 マウスクリックでの 緯 度 経 度 移 動 地 球 俯 瞰 でのラベル 設 定
プレゼンテーションのための 機 能 2 画 面 モード:プロジェクタ 表 示 と 操 作 画 面 を 分 離 1. [ 表 示 ] [ 投 影 画 面 ]で 別 ウィンドウ 2. ウィンドウをプロジェクタ 側 に 移 動 3. [Alt]+[Enter]キーで 全 画 面 表 示 4. [ツール] [ 終 了 時 のウィンドウ 配 置 を 保 存 ]に チェックが 入 っていれば 次 回 起 動 時 までそのまま 観 客 には 宇 宙 映 像 だけを 見 せられる 手 元 ではGUIをフル 活 用 できる スクリーンメニューを 見 せないで 操 作 できる
プレゼンテーションのための 機 能 フェードイン フェードアウト 場 面 切 り 替 えや 補 助 投 影 としての 利 用 に 便 利 2 画 面 モードでは 手 元 画 面 は 薄 く 表 示 バーチャルカーソル [Tab]キーで 表 示 切 り 替 え GUIスタイルの 変 更 [ツール] [GUIスタイル] [ 黒 背 景 ]
状 態 の 保 存 と 復 帰 現 在 の 状 態 をそのまま 記 憶 [ 編 集 ] [ 状 態 の 保 存 ] 記 憶 した 状 態 に 戻 す [ 編 集 ] [ 状 態 の 復 帰 ] 手 軽 な 元 に 戻 す 機 能 として 活 用 現 在 の 状 態 をそのままファイルに 保 存 [ファイル] [ 状 態 を 保 存 ] ファイルに 保 存 した 状 態 に 戻 す [ファイル] [ 状 態 を 読 み 込 み]
状 態 ファイルの 活 用 現 在 の 状 態 をファイルに 保 存 [ファイル] [ 状 態 を 保 存 ] ファイルに 保 存 した 状 態 を 読 み 込 み [ファイル] [ 状 態 を 読 み 込 み] あとで 使 いたいシーンをいくつも 用 意 しておける メニューからシーンを 選 択 したい ショートカットキーでシーンを 呼 び 出 したい フェードインから 始 めたい 今 夜 の 時 の 状 態 にしたい
Mitaka Plusの 映 像 調 整 描 画 設 定 のカスタマイズ(mitaka.ini) 視 野 範 囲 の 変 更 [Configuration] / ScreenW = 180.0 日 時 表 示 高 さの 変 更 [Date] / PosY = 0.0 天 の 川 銀 河 の 描 画 品 質 (より 軽 く/より 精 細 に) [Performance] / GalaxyRayNum, GalaxyRayStepLength, GalaxyStarNum 惑 星 の 陰 影 輝 度 を 変 更 [Lighting] / Ambient = 0.1 太 陽 の 発 光 サイズを 変 更 [Sun] / GlareSize = 5
Mitaka Plusの 映 像 調 整 -2 地 球 の 海 面 反 射 の 変 更 [Earth] / Specular = 6.0 海 面 反 射 の 強 さ [Earth] / Shininess = 60.0 ハイライトの 大 きさ [Earth] / AtmosphereIntensity = 6.0 大 気 の 輝 度 文 字 描 画 フォントの 変 更 FaceNameSB = "Arial" FaceNameMB = "MS ゴシック" 各 種 描 画 色 の 変 更 [Color] / * = #CCBFFF 16 進 数 で 赤 青 緑 を0-255(FF)の 順 に 記 述 半 角 文 字 のフォント 全 角 文 字 のフォント 変 更 をmitaka.iniに 保 存 してMitaka Plusを 起 動
Mitaka Plusのデータ 調 整 ラベルの 変 更 惑 星 名 衛 星 名 data/ssystem_jp.dat 恒 星 名 data/star_names_jp.dat 星 座 名 data/constellation_names_jp.dat 近 傍 銀 河 名 data/nearby_galaxy_names_jp.dat 天 体 表 面 上 の 地 名 data/defaultplaces_jp.dat
Mitaka Plusのデータ 調 整 太 陽 系 内 天 体 の 追 加 衛 星 :data/orbits/*.dat (data/ssystem_jpから 参 照 ) 小 惑 星 :data/orbits/asteroids/*.dat 彗 星 :data/orbits/comets/*.dat 以 下 を 記 述 したテキストファイルをフォルダに 置 くと 小 惑 星 衛 星 として 追 加 される Name: スクリプトで 参 照 する 名 前 ( 空 白 不 可 ) DisplayName: 表 示 される 名 前 q: 近 日 点 距 離 ( 天 文 単 位 ) e: 離 心 率 i: 軌 道 傾 斜 角 ( 度 ) w: 近 日 点 引 数 ( 度 ) node: 昇 交 点 黄 経 ( 度 ) http://neo.jpl.nasa.gov/orbits/ # Hale-Bopp(1995O1) Name: Hale-Bopp(1995O1) DisplayName: ヘール ボップ q: 0.91413637 e: 0.99508608 i: 89.43019 w: 130.58921 node: 282.47089 Tp: 2450539.63709 Size: 500 Visible: 1
Mitaka Plusのスクリプト
Mitaka Plusのスクリプト Mitaka Plusは Lua というスクリプト 言 語 を 使 う 簡 単 な 文 法 で 一 行 のコマンド 実 行 から 複 雑 なプログラムまで 幅 広 く 対 応 できる Lua 言 語 は 市 販 の 書 籍 で 詳 しく 学 習 できる いろいろ 覚 えなきゃいけないの?
スクリプトの 記 録 Mitaka Plusのすべての 動 作 は スクリプトによって 実 行 されている Mitaka Plusの 操 作 の 様 子 を 記 録 すれば その 操 作 を 実 行 するためのスクリプトがわかる 1. [ツール] [スクリプト 編 集 ]で 編 集 画 面 を 開 く 2. この 画 面 の[ツール] [ 記 録 ]で 記 録 開 始 3. [ 時 刻 ] [ 時 刻 の 表 示 ]で 時 刻 表 示 の 切 り 替 え Time:toggleTimeInfo()が 記 録 される 4. [ツール] [ 記 録 ]で 記 録 終 了 5. [ツール] [ 実 行 ]で 動 作 確 認
スクリプトリファレンスで 確 認 1. [ヘルプ] [スクリプトマニュアル]もしくは doc/script_jp/index.htmlをウェブブラウザで 開 く 2. スクリプトリファレンス/Time のページで Time:toggleTimeInfo()の 内 容 を 確 認 Time:toggleTimeInfo() 時 刻 情 報 の 表 示 非 表 示 を 切 り 替 えます このメソッドに よってTime.timeInfoプロパティが 変 化 します 例 : Time.toggleTimeInfo(); 関 連 : Time.timeInfo
ショートカットキーを 追 加 スクリプトマニュアルの ショートカット 参 照 1. テキストエディタ(メモ 帳 など)で scripts/shortcuts_jp.luaを 開 く 2. Input:addShortcut( T, false, Time:toggleTimeInfo(), 時 刻 の 表 示 非 表 示 ); を 一 番 最 後 に 追 記 して 保 存 カッコ 内 の 意 味 は 順 番 に ショートカットキー( で 囲 む) 押 しっぱなしで 実 行 するかどうか(true/false) 実 行 したいスクリプト( で 囲 む) 説 明 ( で 囲 む MitakaPlusのヘルプ 表 示 で 使 用 ) 3. Mitaka Plusを 再 起 動
もうひとつショートカットキーを 追 加 Input:addShortcut( O, false, Planets:toggleOrbits(), 惑 星 軌 道 線 の 表 示 非 表 示 ); Input:addShortcut("JSBUTTON4", false, "Planets:toggleOrbits(), 惑 星 軌 道 線 の 表 示 非 表 示 "); 複 数 のスクリプトを 一 度 に 実 行 したい 場 合 は ;(セミコロン)で 区 切 って 並 べる 忘 れないよういつも;を 末 尾 に 付 けておくと 良 い Input:addShortcut( L, false, Planets:toggleOrbits(); Planets:toggleLabels(), 惑 星 の 軌 道 線 とラベルの 表 示 非 表 示 );
スクリーンメニューを 追 加 スクリプトマニュアルの スクリーンメニュー 参 照 1. テキストエディタ(メモ 帳 など)で scripts/screenmenu_jp.luaを 開 く 2. 一 番 最 後 の2 行 を 参 考 に menutest = ScreenMenu:addMenu( テスト ); menutest:addaction( 軌 道 線 の 表 示 非 表 示, Planets:toggleOrbits(); ); を 追 記 (menutest は 好 きな 英 語 名 でOK) 3. Mitaka Plusを 再 起 動
スクリーンメニューで 状 態 を 切 り 替 え dofile( mitakaフォルダからの 相 対 ファイルパス ); 状 態 ファイルやスクリプトファイルを 実 行 1. [ファイル] [ 状 態 を 保 存 ]でいくつかの 状 態 を state/ファイル 名.lua として 保 存 2. テキストエディタ(メモ 帳 など)で scripts/screenmenu_jp.luaを 開 く 3. 一 番 最 後 に menutest:addaction( 状 態 の 説 明, dofile ( state/ファイル 名.lua ); ); を 追 記 4. Mitaka Plusを 再 起 動
HTMLでGUIを 作 成 GUIを 自 由 にレイアウトしたい: [ツール] [UIブラウザ]でHTMLによるGUIを 表 示 UI/index.htmlや ここからリンクされる HTMLファイルでGUIを 作 成 Mitaka Plusで 実 行 したい 内 容 を mtkp://スクリプト としてハイパーリンク 例 : < a href= mtkp://dofile( ssystem.lua ) GUIにはテキスト 画 像 Flash 複 雑 な 仕 組 みもJavaScriptで 作 成 可 能 オンラインでGUIの 共 有 も
少 しスクリプトの 文 法 を Time:toggleTimeInfo(); Time オブジェクト 関 連 する 機 能 をまとめたもの toggletimeinfo() メソッド( 命 令 ) 実 行 したい 命 令 命 令 によっては カッコ 内 に,(カンマ)で 区 切 って 命 令 の 詳 細 を 記 述 する 命 令 の 実 行 では オブジェクトとメソッドの 間 を :(コロン)で 区 切 る
スクリプトの 簡 単 な 実 行 [ツール] [スクリプト 出 力 ]で スクリプト 出 力 ウィンドウを 表 示 下 端 の 入 力 行 でスクリプトを 入 力 して[Enter] 正 しく 実 行 されれば 実 行 したスクリプトが ウィンドウの 上 部 に 履 歴 表 示 される 書 き 間 違 いがあれば 入 力 内 容 とともに error: のメッセージが 上 部 に 表 示 される [ ][ ]キーで 過 去 に 入 力 したスクリプトを 入 力 行 に 呼 び 出 せる
オブジェクトとプロパティ Time.timeInfo Time オブジェクト 関 連 する 機 能 をまとめたもの timeinfo プロパティ 状 態 を 表 す 値 プロパティによって 整 数 や 実 数 真 偽 (true/false)や 文 字 列 など 値 の 種 類 も 決 まっている オブジェクト.プロパティのようにピリオドで 区 切 る プロパティに 値 を 設 定 すれば 状 態 が 変 わる プロパティの 値 を 調 べれば 状 態 がわかる
プロパティの 使 い 方 スクリプト 出 力 ウィンドウで プロパティの 設 定 Time.timeInfo = true; で 日 時 の 表 示 文 法 は オブジェクト.プロパティ = 値 ; プロパティの 取 得 print(time.timeinfo) で スクリプト 出 力 ウィンドウに 値 が 表 示 される 利 用 例 Time.JD = Time.JD + 0.99726; 1 恒 星 日 進 める 地 上 で 惑 星 の 移 動 を 見 せるのに 便 利
スクリプトの 例 今 日 の 夜 21 時 の 太 陽 系 を 表 示 1. 太 陽 系 全 景 が 見 える 視 点 に 移 動 2. [ツール] [スクリプト 編 集 ]で スクリプト 編 集 ウィンドウを 開 く 3. [ツール] [ 状 態 を 記 録 ] 現 在 の 状 態 がプロパティ 設 定 の 羅 列 として 記 録 される 4. 最 後 に 以 下 を 追 記 Time:setCurrent(); -- 現 在 時 刻 に 設 定 Time.localHour = 21; -- 日 本 時 間 の21 時 に 設 定 Time.localMinute = 0; Time.localSecond = 0; 5. [ファイル] [スクリプトとして 保 存 ]でファイルに 保 存 ( 以 上 状 態 をファイルに 保 存 して 編 集 するのと 同 じ)
便 利 なスクリプト 1. フェードアウト Scene.Fader:fadeOut(1.5); -- 1.5 秒 でフェードアウト 2. フェードイン Scene.Fader:fadeIn(1.5); -- 1.5 秒 でフェードイン 3. フェードアウト スクリプト 実 行 フェードイン Scene.Fader:fadeOutIn( 秒 数, スクリプト ); 例 : フェードでシーン(state/ssystem.lua)に 切 り 替 え Scene.Fader:fadeOutIn(1.5, dofile( state/ssystem.lua ); );
視 点 アニメーションの 作 成 1. [ツール] [スクリプト 編 集 ]で スクリプト 編 集 ウィンドウを 開 く 2. [ツール] [ 状 態 を 記 録 ]で 現 在 の 状 態 を 記 録 3. 視 点 を 操 作 して 移 動 先 の 位 置 方 向 へ 4. [ツール] [ 視 点 を 記 録 ]で 視 点 設 定 スクリプトを 記 録 5 秒 で 移 動 するアニメーションスクリプトに 書 き 換 え Camera.azimuth = 30; Camera:setAzimuthTo(30, 5); Camera.altitude = 40; Camera:setAltitudeTo(40, 5); Camera.fov = 60; Camera:setFovTo(60, 5); Camera:setOrient(0,0,0,1); Camera:setOrientTo(0,0,0,1, 5); Camera.zoom = 0.5; Camera:setZoomTo(0.5, 5); Camera.abc = 0; Camera:setAbcTo(0, 移 動 秒 数 );
アニメーションの 時 間 制 御 指 定 秒 数 だけ 待 つ: waittime( 秒 数 ); 使 用 例 : Camera.zoom = 0.5; Camera:setZoomTo(10, 5); waittime(5); waittime(2); Camera:setZoomTo(20, 5); -- 最 初 の 距 離 -- 10 倍 の 距 離 へ -- 移 動 が 終 わるまで 待 つ -- もう 少 し 待 つ -- さらに 倍 の 距 離 へ
タイムラインでの 編 集 タイムライン 動 画 編 集 ソフトのように 動 きや 表 示 の 変 化 を インタラクティブなグラフを 使 って 直 感 的 に 編 集
タイムラインでの 編 集 タイムライン は Mitaka Pro の 機 能 ですが 実 はコマンドを 知 っていればMitaka Plusでも 使 えます... GUI:toggleTimelineEditor(); -- タイムライン 編 集 ウィンドウの 表 示 フレーム はフィルムのコマのようなもの 1フレーム=1/30 秒 1 秒 =30フレーム タイムライン 編 集 ウィンドウ 右 下 で 作 成 したいショートクリップの 長 さを 設 定
タイムラインでの 視 点 移 動 1. 宇 宙 空 間 で 最 初 の 視 点 位 置 を 決 める 2. タイムラインで が 一 番 左 (フレーム0)の 位 置 で ツールバーの 視 点 を 記 録 をクリック 3. 移 動 先 の 視 点 位 置 を 決 める 4. をフレーム100(3 秒 ほど 後 )にドラッグ 5. 再 び 視 点 を 記 録 をクリック 6. 視 点 移 動 アニメーション 完 成! をドラッグするか 下 の 再 生 ボタンで 再 生
フレームスクリプト いつも 同 じ 内 容 を 再 生 させるために 初 期 状 態 を 記 録 1. タイムラインで が 一 番 左 (フレーム0)の 位 置 で ツールバーの 視 点 を 記 録 をクリック 特 定 のタイミングで 表 示 を 切 り 替 える 1. タイムラインで がフレーム30(1 秒 後 )の 位 置 で スクリプト の 列 をダブルクリック スクリプト 編 集 の[フレームスクリプト タブが 現 れる 2. ここで 変 化 させたい 内 容 を 記 述 ( 記 録 ボタンで 操 作 を 記 録 するなどして 例 :Constels:toggleLines();)
タイムライン 関 係 のスクリプト Timeline:play(); -- タイムラインの 再 生 Timeline:pause();-- タイムラインの 一 時 停 止 タイムラインをファイルに 保 存 タイムライン 編 集 ウィンドウで[ファイル] [ 保 存 ] ファイルの 拡 張 子 は.ltlまたは.lua (これもスクリプトなので) 保 存 されたタイムラインの 実 行 dofile( state/test.ltl ); タイムラインで 作 成 した 映 像 の 書 き 出 し! GUI:saveMovieDialog(); -- 宇 宙 飛 行 のムービー 化 など
まとめ Mitakaの 醍 醐 味 は 宇 宙 とMitakaに 詳 しい 語 り 手 が 観 客 と 対 話 しながら 見 せるインタラクティブな 上 映 語 り 手 が 使 いやすいツールとして 洗 練 したものが Mitaka Plus スクリプトを 勉 強 する!と 構 えずに 普 段 の 使 い 勝 手 を 向 上 する 方 法 はないかと 試 してみるくらいの 気 持 ちで 追 加 データ 状 態 ファイル GUIのカスタマイズ スクリプトなどを 通 して 見 せ 方 や 宇 宙 の 語 り 方 演 出 ノウハウの 共 有 に 役 立 ててください