見出し画像

点群データ×TouchDesigner

TouchDesignerで点群データを扱う方法について

目次

  1. はじめに

  2. 点群データとは?

  3. TouchDesignerで点群データを扱う

  4. 点群データを学ぶためのリソース


1,はじめに

3D都市データの魅力と今後の可能性について

ストーリーテリングは観客を魅了するための強力な技術として知られています。3Dビジュアライズにおいても、その重要性は変わりません。しかし、3Dビジュアライズで用いられる幾何学的な模様から明確なストーリーを紡ぎ出し、それを観客に伝えることは一筋縄ではいきません。

そこで私が注目したのは、「観客の記憶をどれだけ刺激できるか」という点です。記憶を触れられるコンテンツに出会うと、観客は自らの解釈を交え、心の中で独自のストーリーを紡ぎます。この時、キーポイントとなるのは「観客の持つ記憶をどう再現・表現するか」ということ。たとえば、人々はそれぞれ異なる記憶を持っていますが、私たちが生きる都市や街は多くの人にとって共通の記憶の場所となり得ます。

私自身、朝方の東京駅八重洲口を見るだけで、大学時代に夜行バスで上京した際の興奮や期待を鮮明に思い出します。このように、都市データをうまく活用することで、多くの人々の共通の記憶や経験に訴えかけ、強力なコンテンツを制作することができると確信しています。

東京駅八重洲口

2,点群データとは?

点群データは、3D空間内の多数の点の集まりで、それぞれの点がXYZ座標を持っています。これにより、物体や環境の三次元的な形状を表現することができます。具体的には、点群データは以下の特徴を持っています。

  1. 高密度の情報: 多数の点からなるため、物体や環境の細部まで詳細に表現できます。

  2. 色や反射率の情報も持つことができる: それぞれの点は、XYZ座標の他に色情報や反射率などの属性情報を持つことができます。

  3. 非構造化データ: 点群は連続した面やエッジを持たないため、データとしては非構造化とされます。このため、通常の3Dモデルとは異なるアプローチで扱われることが多いです。

どのようにして取得されるのか?

点群データは、さまざまな方法で取得することができますが、一般的には以下の手法が用いられます。

  • レーザースキャン: レーザーを使って物体や環境をスキャンし、反射したレーザーの情報から3Dの点群データを生成する。

  • 写真測量: 多数の画像から3Dの情報を抽出して、点群データを生成する。

なぜ点群データは重要なのか?

点群データは、現実の物体や環境を非常に高精度で再現することができます。このため、建築、考古学、映画制作、ゲーム開発など、多岐にわたる分野で利用されています。特に、実環境の詳細な3Dスキャンが必要な場合や、複雑な形状の物体をデジタルで再現したい場合には、点群データは欠かせないツールとなっています。

参考として、東京都デジタルサービス局のYouTubeチャンネルより↓


3,TouchDesignerで点群データを扱う

①PLATEAUの点群データを手に入れる方法
②TouchDesigner用に拡張子を変換する
③TouchDesignerの点群読み込み方法
④色を合わせる
⑤位置を合わせる
完成

①点群データを手に入れる方法

PLATEAUの点群データはG空間情報センター内にあります。

「点群」で検索すると、東京都の多摩地区・島しょ部のデータが閲覧できると思います。

今回は青ヶ島の最南端のデータを使おうと思います。

上記のリンクにアクセスすると島しょ部の地図がでてくると思います。

地図

青ヶ島まで拡大して、一番南のメッシュ(①)をクリックしましょう。そうすると、選択メッシュの欄(②)の選択したメッシュIDが表示されます。メッシュIDが表示されたら、画面右側の中央のダウンロードボタン(③)を押してください、そうるとダウンロードが開始されます。
青ヶ島すべてをダウンロードしたいところですが、データ量が多いので、点群に慣れてからトライされることをお勧めします。

ダウンロードの様子

②TouchDesigner用に拡張子を変換する

「09XD1854.las」というファイルがダウンロードできたと思いますが、この.lasという拡張子は、TouchDesignerでは使えないのでCloudCompareというソフトを使って、変換します。
CloudCompareは無料で点群処理を行えるとても便利なソフトです。
ここでは、CloudCompareの詳しい解説は省略してTouchDesignerで扱える拡張子に変換する処理のみを解説します。

読み込み方法
画面右上のファイルのボタンを押します。

ファイルのボタンを押す

ファイル選択
①の拡張子を「LAS file(*.las*.laz)に選択
②ダウンロードした「09XD1854.las」というファイルを選択
③開く(O)を押す

ファイルの選択

読み込み時の位置設定

点群の位置情報は、平面直角座標系で作られていて、そのままでは扱いにくい状態ですが、「Yes」をクリックすると自動的にいい感じに合わせてくれます。
他のデータと平面直角座標を基準に揃える場合以外は、気にせずYESでOKです。

読み込んだ瞬間、赤と青の点群が出てきますが、これは海面より上と下を表しています。赤青表示とは別にRGB情報も点群内に入っているので気にせず進んでください。

読み込み時の位置設定

保存

 ① 対象ファイルを選択
 ② 保存ボタンを押す
 ③ 拡張.plyを選択
 ④ 保存

拡張子選択

そのあと、保存形式の選択を求められるのでBINARYを選択。

BINARYを選択

③TouchDesignerの点群読み込み方法

TouchDesignerで点群データを読み込む時は Point File In TOPというオペレーターを使用します。
(この時、ディレクトリー名に日本語が入っていると読み込みエラーがでます。)

読み込み時

読み込んだ後、適当なSOPを(直径10cmくらい)に設定して、Geometry COMPを繋ぎ、instanceをonにして点群を読み込んだTOPに設定します。
Tx=R
Ty=G
Tz=B
を入れると、点群が現れます。

点群を表示させる

④色を設定する

点群の色情報は、Point Select TOPで取得することができます。
Point Select TOPで先ほどのPoint File In TOPを選択して、RGBの選択をします。初期設定では、xyzの位置情報が選択されてますが、この項目を
Red = red
Green = green
Blue = blue
を選択することで、RGB情報を取得できます。
(他にも、いろいろな項目が入っています。たとえばscalar_UserDataは先ほど、赤青で分かれていた海面の上下の区別をしてくれます。)

RGB選択の様子

Point Select TOPでRGB情報をGeometry COMP→instance2→Color OPに入れますが、この時は点群は白いままだと思います。
これは、点群データとTouchDesignerの色情報のルールが違うことで発生します。
・点群RGB情報 = 0~255で記録
・TouchDesignerはRGB情報を = 0~1で表現

白い点群

解決方法は、Point File In TOPとPoint Select TOPの間にMath TOPを入れて
RGBの値を1/255にするだけでOKです。

適切なRGB値に
岩と、砂浜と、海がいい感じに

⑤位置を合わせる

色見まで再現できたので、Camera COMPと Render TOPを加えて、映像にしようとすると、点群が見当たら無いと思います。これは、点群が平面直角座標系と呼ばれる基準で作られており、原点からとても遠い位置に配置されるために発生します。
平面直角座標系についてはこちらをご参考に

このままでは、絵作りが大変なので、点群が原点にくるように合わせていきます。

まずは、Top to CHOP を使って Point File In TOP のRGBの値を出します。
Top to CHOP の値は1600個以上あり、読みにくいので、Average CHOPを使って、平均値を出します。

Top to CHOP と Average CHOP

Average CHOP には 
r = -6280
g = -394619
b  =  0.952
という値になっていると思います。
TOPなのでRGBの表記になっていますが、点群としては
r = tx ( -6280m  )
g = ty  ( -394619m )
b = tz (  0.952m )
として扱われ、各値分、原点からの距離がわかります。

TouchDesignerでは、Point Transform TOP で簡単に原点に補正することができます。

Point Transform TOP の Translate に先ほどの tx , ty , tz  (RGB)の値に、マイナスをかけたものを入れます。

各値のマイナスを入れる

すると、点群が原点付近にきて扱いやすくなるのですが、中のデータを見てみると、水面が垂直になっています。
これは、平面直角座標系のXとYの値と、TouchDesigner内のXとYの値の概念が違うため発生してしまいます。
詳しくはこちらの6番を参考にしてください。

ここでは、簡単に修正する方法を説明します。
点群データはYが奥行・Zが高さになっているので、x軸中心に‐90°回転させると、海面が水平の位置にきます。
Point Transform TOP → Rotate → rx の値を‐90にするだけだと、点群が遠いところに消えてしまうので、 Transform Order を[ Translate Rotate Scale ] に変更してください。
この理由についても、こちらの6番を参考にしてください。

方向を修正

これで、点群が扱いやすい状態になりました。
後は、Camera COMPを調整して、かっこいい風景を探してみてください。

カッコいい


点群データを学ぶためのリソース

cloudcompareの使い方について

cloudcompareの基本操作

CloudCompareによる 点群データ処理方法のご紹介(朝日航洋株式会社)

https://committees.jsce.or.jp/cceips17/system/files/%E6%B4%BB%E5%8B%95%E5%A0%B1%E5%91%8A_04_CloudCompare%E3%81%AB%E3%82%88%E3%82%8B%20%E7%82%B9%E7%BE%A4%E3%83%87%E3%83%BC%E3%82%BF%E5%87%A6%E7%90%86%E6%96%B9%E6%B3%95%E3%81%AE%E3%81%94%E7%B4%B9%E4%BB%8B.pdf

大量の点群の処理

3Dデータを点群にする。

点群にノイズをかける

私が作った青ヶ島点群VJ

最後に、imgeeでは、時空とココロをテクノロジアートでつなぐを指針にし、様々なデータで新たな表現方法を模索しております♪
これからも、末永く応援いただけると幸いです。

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