どうも!バスキュールの武田(@neko_300YEN)です。
弊社が、4/22 アースデイにやってる番組『KIBO宇宙放送局 #アースデイライブ』
ここで使われたシステムについてメモを残しておきます。
#アースデイライブ2024
www.youtube.com ⇧番組アーカイブはこちら
プロジェクトがどんな建て付けなのかは、動画でも説明してる通り。
地球映像でコンテンツを作ろうと思ったきっかけ
2年前にトンガの噴火があった際に、ひまわりの衛星画像にその衝撃波が映ってるって話があって、 試しにひまわりの画像をつなぎ合わせて動画を作ってみたことから始まる。
今日のトンガの噴火(0:08~)。衛星写真で見ると地球という惑星規模で何かが起こったんだなぁという感じがする。 pic.twitter.com/cUap9w7gyg
— 𝕟𝕖𝕜𝕠 𝟛𝟘𝟘𝕐𝔼ℕ (@neko_300YEN) 2022年1月15日
だいぶショッキングな映像で、不謹慎だけど自然現象の規模感とかパワーすげぇなと、圧倒されました。
こんなSF映画みたいなことが実際の地球上で今起こっているのかと。
いろいろ端折りますが、このリアルな映像をなんとか体験にしたいなぁと思ったところからコンテンツ作りが始まったわけです。
インタラクティブに地球映像をズームする
気象衛星ひまわりの画像は11K。10分に1度撮影されています。
単純にこのひまわりの画像をタイムラプスとして繋ぎ合わせるだけだと映像がカクカクしてしまう。 あと日本列島までズームすると、フルディスク画像だとさすがにボケる。
そこでひまわりの画像をもとに、機械学習を用いてフレーム補完をしたり、さらに22Kにアップスケールしたりして、高画質で滑らかな映像を作りました。
今回の番組では、コレを4KのLEDディスプレイに表示しています。
※ 映像のクオリティをあげる試行錯誤については、また別の機会に
こんな感じのイメージで、22Kの映像をディスプレイ解像度の4Kで切り取って表示する再生システムを作りました。
TouchDesignerで動画再生しながら、ゲームパッドを使って地球上のいろんな場所に視点を移動したり、ズームできるようになっています。
システム構成
特筆すべきことはないですが、LEDに出されている映像のポン出しはMIDIコンを使っています。
- AKAI MPD226
- AKAI APC40 MKII
パッドに映像切り替え、ノブに映像の明るさとか色味のパラメータ調整をアサインして、適宜調整しています。
ボタンはでかければデカい方がいいし、ノブも硬ければければ硬い方がいい。
本番は焦るから・・・。
あと、APC40 MKIIのパッドのMIDI配列の並びがちょっと使い辛かった。
縦の列でチャンネル毎のパッドがあるんだとしたら下記のような並びが良かったんだけど、 なんかZ型になってて、これはどういうことなんだろう?
MIDI初心者にはわからない何か理由があるんだろうな。
並びを変えたAPC40 MKIIの入力をとるtoxは以下に置いておきます。 MPD226も。
誰もいらないと思うけど。
⇨ https://github.com/Putoshi/TouchDesigner-AKAI-MIDI
あと映像の送出はBlackMagicのDeckLink 8K Proを挿して、SDI出力。
滞ったWindowsアップデートやマカフィーの無料期間終了の通知が画面に出ちゃったら恥ずかしいので、ライブ系の案件ではデスクトップ拡張は避けてます。
映像ファイルがデカすぎる問題
映像ファイルが1日分のデータで40秒くらいしかないのに、40GB近くある・・・。
Hapだとボケまくるので、AppleのProResで書き出して、Windows機で再生しています。 Hapじゃないのにめちゃくちゃでかい。
コレを再生するのにボトルネックになったのは、GPUやCPUではありませんでした。
SSDのデータ読み込みが間に合わない!!
40秒で40GBのファイルだから1GB/s以上の読み込み速度がないといけない。 普通のSATA接続のSSDだとカタついてしまう。 こういう問題は今まで初めて遭遇した。
NVMe接続のM2.SSDにして解決。
TouchDesignerのFloating Cloud Licensesが外れる問題
Floating Cloud Licensesというネットワーク認証のライセンスを初めて使ってみたんですが、なんかコレちょいちょい外れません?? 実行中に急に無料ライセンス版に切り替わったりして、映像が22Kから1280pxになっちゃってびっくりした。
ネットワークの問題なのか、原因を追う時間がなかったので普通のオフラインの商用ライセンスに急遽変更。
ライブ系のプロジェクトで焦らないために・・・。
ライブ系のプロジェクトでは、何かしらの都合で直前に番組の構成が変わったりとか、
何かしらのトラブルで番組中にシステム構成を変更したりしなきゃいけない事があったりします。
いくら自分の作ったものが万全だと思っていても、そういう事態になった時にはけっこう焦ります。
こういう宇宙系のものだと、番組スタッフやそれを実現するために動いてくれた人間が100人とか軽く超えてきてしまう。 その人たちの姿を想像すると流石に震えてきたりしちゃうわけです。
パニックに陥った人間はびっくりするくらい頭が回らなくなるもので、 前述したような、「ボタンはデカく!!!」とか、そういう些細なことでも案外自分を救ったりします。
ちょっとした安心感をいっぱい作っとくと吉。
自分はそういう思想なので、ライブ系のプロジェクトのコントローラーにあたる部分のシステムには、 TouchDesignerやMaxなどのノードベースのプログラミング環境を使うことが多いです。
パニクってる時は、文字がまともに読めません。
スタッフ用のヘッドセットから「なんで〇〇の映像でてないの!!??」とか、「音声聞こえてないぞ!!??」みたいな怒号が飛び交ってる中で、コンソールのちっちゃい文字読めますか??
僕には無理です。
ログの文字が読めるのは本番前日まで!
だから、文字じゃなくてビジュアルとして何が起きているかわかるノードベースのプログラミング環境を好んでいます。 ビルドしないで動くものが好き。
なにか不具合があった際にログを追うよりも早く対応できる気がするし、本番中にプログラムを修正するのも全然怖くない!
あと僕はそもそも自分の書いたコードを信用できるほど、ちゃんとプログラムを書いてないという根本的な問題もある・・・。
以上です。乱文失礼しました!