見出し画像

星座データをビジュアライズする

TouchDesignerのようなパソコンを使う開発ツールの用途のうちのひとつに「データビジュアライゼーション(データ可視化)」という分野があります。

コンピュータとTouchDesignerを使うことで科学的で正確なデータを元に、手では入力しきれない大量のデータを簡単に扱うことができます。
サンプルはこちら

オープンデータを使う

今回はAstro Commonsのデータを使って地球から見た星座のデータを利用します。データの多くはモノと同様に所有権があり、所有者の許可の範囲でしか再利用することができません。しかしクリエイティブ・コモンズなど、一定のルールを守れば利用できるものも最近は増えてきています(Astro Commonsもクリエイティブ・コモンズライセンスとなっています)。ライセンスをよく読み、ルールを守って使えば非常に面白いことができます。
今回はAstro Commonsのデータを使って星座を表示します。

星座を表示する、といった時に表示したいのは「星座名」、「星座位置」、「星座線」、「星座境界線」の4つです。それぞれのリンク先にあるcsvデータをダウンロードします。星座名のところに形式の違うファイルが2つありますが、「UTF-8」と書かれているものをダウンロードします。

この4つをクリックし、そのリンク先のデータをDLする

TouchDesignerの準備

今回のように外部ファイルを参照する場合、ディレクトリ構造をあらかじめ作ってそこにあるファイルを読み込むほうが安全です。TouchDesignerのCreate Project Folderを使ってTouchDesignerのプロジェクトと連携するディレクトリを作りましょう

macの場合はFile→Create Project Folder


プロジェクトのフォルダ名を決めてCreateを押す

Createすると指定したディレクトリにフォルダが作られ、その下にTouchDesignerのファイルとデータを入れるフォルダ群が生成されます。

今回のCSVデータを扱いますが、CSVという名前のフォルダは作られないのでフォルダを追加しましょう。

次にダウンロードしたAstro CommonsのCSVデータ4つをCSVディレクトリに移動させます。

これで準備は完了です。プロジェクト一式を何処かに移動させたい場合もフォルダごと移動させればリンクが切れてエラーになることはありません。

赤経と赤緯を変換する

Astro Commonの星座の座標は赤経と赤緯という値で管理されています。また、一部のデータは赤経は分と秒、という単位系です。
一方でTouchDesignerはXYZの3次元座標で、角度も度(Degree)です。従って変換をする必要があります。

京都大学の岩室先生のページによると赤経はTouchDesignerでいうところのY軸の回転で、24分で360度、秒は60秒で1分のようです。赤緯はXもしくはZの回転で赤道(0度を中心に)±90度で指定されているようです。

まずは星座座標を扱うposition.csvのDATを読み込んでCHOPに変換し、チャンネル名を揃えます。

次に赤経と赤緯をRYとRXに変換します。RXは赤緯そのまま、RYは赤経(秒)に1/60をかけたものと赤経(分)を足したモノを1/24*360にかけてRYにします。

次にRXRYをTX,TY,TZの3次元座標に変換します。変換にはTransformCHOPを使います。
RXと直行する点(tx = 0, ty = 0, tz = 1)をConstantCHOPで作り、長さをRXRYと揃えてTransformCHOPに入れるとその点を回転によって移動させた位置が計算できます。

出来上がったCHOPをレンダリングすると半径1の球の表面に座標がプロットされるのがわかると思います。

Instancingで直線を引く

次にboundary.csvもビジュアライズします。boundary.csvは赤経(0から360度)と赤緯(90から-90度)の始点と終点が書き込まれています。
なので始点側と終点側をそれぞれTXTYTZに変換し、始点と終点の座標を計算します。ただ、Instancingでは始点終点を設定できないので始点と回転、スケールで線の方向と長さを設定していきます。それはObjectCHOPで簡単に実装できます。

座標を作ったらLineSOPを作ってInstancingすると線が引けます。

line.csvも同様の処理で線が引けます。lineの始点と終点には星があるはずなので始点と終点自体も黄色いSphereSOPで描画します。また、背面まで描かれると画面がわかりづらくなるので後ろが描かれないようにNearに5を設定してClipします。

星座の名前を表示する

最後に星の名前を描画します。
基本的な座標はposition.csvのものを使い、GeoTextCOMPで描画します。カメラからの座標が必要になるので、ObjectMergeCHOPで一度座標を計算しなおすのがポイントです。

この記事が気に入ったらサポートをしてみませんか?