メニュー構成ToposNoteの概要について述べる。3DフィールドノートとしてのToposNoteToposNoteとは一言で言えば、位置を属性としてもつさまざまな情報を3次元の地図上に表示し、整理・管理するためのフィールドノートです。Earthという素晴らしい電子地球儀があります。作者のパソコンのデスクトップにも、これがいつでもすぐに使えるようにアイコンが置いてあります。作者は山歩きや史跡探訪が好きで、その目的でさまざまな地図や航空写真を収集してきました。10年ほど前からは紙の地図から電子地図に移行し、山歩きには必須の国土地理院の二万五千分の一地形図用としてカシミール3DやGarmin社の地図内蔵型GPSを、ドライブルートの探索にはアルプス社(現ヤフー)やゼンリンの地図ソフトを使ってきました。MapsやYahoo!地図のようなインターネット地図サービスが充実してきた関係で、地図ソフトを立ち上げる回数はかなり減っています。携帯機器を使えば手軽に山に持っていけることから、スタンドアロン型の電子地図の需要がなくなることはありません。最近の電子機器の小型化・高性能化によって、需要が増加していく傾向が見られます。一回のフィールドワークの計画段階から実施完了までに取り扱う情報の量が一昔前と比べると考えられないほど増大しています。写真やビデオのような映像情報を扱うとすぐにギガバイト単位の容量になってしまいます。このようなことから、これらの膨大な情報をどのように整理すればいいかということが課題になっています。本格的なGISや専用アプリケーションを除いて、個人レベルでこのような情報を整理するために適したツールといえば、まず次の三つが思い浮かびます。Earth作者はこれらをかなり詳細に調べ、さまざまな使い方を研究してきました。その結果としてフィールドワークの計画立案の段階では大変便利に活用できるようになりました。収集したデータをこれらを使って整理することはあまりうまくいっていません。これらのデータを自分が満足できるように整理しようとすれば、そのためのツールを自分で開発しなければならないということがわかってきました。ToposNoteとはこのような経緯で開発を始めたものです。Languageと呼ばれるXML形式の地理情報マークアップ言語が使われています。これはさまざまな情報に位置情報を付加するだけでなく、さらにそれをどのように見せるかという表示上の制御情報も含めることができるものです。Consortiumの標準として承認されました。国際標準となった地理情報マークアップ言語は他にも存在していますが、一般向けとしてはKMLが実質的に唯一の国際標準となっています。KMLがフィールドワークで収集したデータを整理する際に必要となる機能をほぼすべて網羅していることから、当初は整理したデータを最終的にKMLで表現することを目指していました。2007年に夏休みを利用して、熊野古道伊勢路を一週間かけて回り、GPSとデジタルカメラを使って大量の情報を収集してきました。このときは最初からKMLで整理することを想定して準備しました。Earth、Photoshop、メタセコイア等のソフトと格闘しました。コース付近の衛星写真の解像度が悪いこと、位置ずれがかなり大きいこと等の理由で、地理情報としての資料的な価値は低く、人に見せられるようなものではありませんでした。このような経験を通じてわかってきたことは大雑把に二つあります。Earthは山歩きを表現するには適していない。地理情報マークアップ言語は、人が読み書きし易いものでなくてはならない。作者はプログラマですから、3Dモデルや地理情報等のデータを作成する際には、GUIが必ずしも適しているとは限らないということを経験的に知っています。頭を使えば数十秒で数値入力できることが、GUIでやると数十分かかり、しかも不正確なものができあがるというのはよくあることです。GUIでは何時間もかかる作業を、簡単なプログラムで一瞬のうちに終わらせてしまうということもあります。このような経緯からToposNote開発の基本方針として、次の二項目を定めました。国土地理院の二万五千分の一地形図をベースとし、それに標高データを加えて3次元表示する。地理情報マークアップ言語は、誰でも手軽にプログラミングできるスクリプト言語を拡張したものとする。*1このスクリプト言語としては、プログラミングよりもデータ記述をおもな目的としていることから、小さくて軽いLuaポルトガル語で月を意味するスクリプト言語を選びました。3DグラフィックソフトとしてのToposNote作者は現在、3Dモデラーとしてメタセコイア、Blender、SketchUpを併用しています。CGの使い方としては、計測データや数値シミュレーションを空間的に表現する目的が多いため、だいたいはOpenGLを使ってC/C++でプログラミングしています。OBJ形式で読み込んで利用するようになっています。その代わりにスクリプト言語Luaを拡張して、3Dモデルをプログラミングできるようにしました。これによりC/C++コンパイラを使う手間を省くことができ、数値モデリングが手軽に行なえるようになりました。多面体や関数のグラフのように数値だけで定義できる図形は容易にプログラミングできます。Luaには標準的な数学関数が実装されていますので、簡単なものであれば数値計算と数値モデリングを組み合わせて数学ソフトのように使うことができます。本格的な数値計算や数値解析の結果を表示する場合は、Fortran、C/C++等のコンパイラやPythonやRubyのようなスクリプト言語における計算結果を表示するためのデータとしてLuaスクリプトを生成し、ToposNoteを可視化ツールとして利用することになるでしょう。ToposNoteでは、物体の運動軌跡をデータとして持つことができるため、剛体力学のシミュレーションができます。CGデータを静的に扱う設計になっているため、動的に変化する弾性体や流体を表現することはできません。3DプログラムランチャーとしてのToposNoteToposNoteはプログラムランチャーとして各情報に対応するアプリケーションを起動する機能を提供しています。写真をサムネイルとして貼り付けたときに、その原画を拡大して見たい、あるいは編集したいというときがあるでしょう。その場合、そのサムネイルをダブルクリックすることで、JPEG形式に関連付けられているアプリケーションが起動するようになっています。貼り付けた情報にURLを関連付けた場合は、ブラウザが起動してそのURLの情報を表示します。3D地形ナビゲーターとしてのToposNoteToposNoteは3D地形図エンジンを内蔵していますが、地図や標高データ自体は含まれていません。データとしては国土地理院発行の次の3種類のものを用います。数値地図200000(地図画像):CD-ROM/有料これらを内部形式に変換して利用しますが、この形式のデータをユーザーが独自に作成することもできます。日本国内で山登りをしようとする人間にとっては、国土地理院発行の二万五千分の一地形図に描かれた等高線で地形を読むことは最低限必要なスキルです。現実には、十分に地形を読んでいたつもりでも道に迷うことがありますし、土砂崩れ、気象の急変等の要因で事前に想定していた計画を現場で変更しなければならないような事態も起こり得ます。このようなときに3D地形図は威力を発揮します。訓練を積んでいない初心者であっても、一目瞭然で現場周辺の地形を把握し、その状況に応じたコースを選択することができるでしょう。ToposNoteはポケットPCに標高データや地形図とともにインストールし、GPSと組み合わせることによって「山歩き用3D地形ナビゲーター」として使うことができます。正規直交座標系のことで、その原点付近を格子によって表します。カーソル画面を写しているカメラの視参照点を原点とする右手系の正規直交座標系をカーソルと呼びます。この座標系は物体を定義するときの基準となるため物体座標系とも呼ばれます。常に世界座標系を平行移動した姿勢を保ち、世界座標系に対して回転することはありません。カーソルの原点付近を座標軸によって表します。カーソル座標カーソルの位置を世界座標系の座標値で表します。編集モードにおいて物体を選択した場合は、物体の位置を表します。画面を写しているカメラの視方向を角度で表し、視野範囲を半径で表します。編集モードにおいて物体を選択した場合は、物体の姿勢を表します。操作モード操作モードには閲覧モードと編集モードがあります。編集モードにおいては物体を操作することができます。現在カーソル位置・カメラ姿勢とトポスオブジェクトを保存する。GPSモニタを起動する。コンパス連動機能をONする。コンパス連動機能をOFFする。プログラムを終了する。閲覧モードへ切り替える。編集モードへ切り替える。選択された物体を切り取る。選択された物体をコピーする。コピーされた物体を複写する。選択された物体を削除する。ESCキーで元に戻る。アニメーション動作を行なわない。ステップモードでアニメーション動作を行なう。アニメーション動作を行なう。上空から平行投影し、X-Y平面を表示する。カメラ位置から透視投影し、空間を俯瞰する。幾何座標系で座標表示する。測地座標系で座標表示する。カーソル表示をON/OFFする。世界座標枠表示をON/OFFする。文字表示をON/OFFする。地図表示をON/OFFする。地形表示をON/OFFする。オンラインマニュアルをブラウザで開く。地図画像変換処理を行なう。ライセンス認証を行なう。地理情報マークアップ言語はXMLで表現するのが一般的になっていることから、なかなかそこから離れることができず、独自仕様のXML形式を定義し、試作したことがあります。この過程でXMLは自分が考えている目的には適していないということが確認できて、スクリプト言語に移行することになりました。ポルトガル語で月を意味するスクリプト言語リオデジャネイロ・カトリカ大学の情報工学科TeCGrafによって開発され、MITライセンスで公開されている。