動画AI使ってほぼ実写に。自宅のロードバイクでブロードウェイや石神井公園を走るソフトを自作した(CloseBox)

テクノロジー AI
松尾公也

テクノエッジ編集部 シニアエディター / コミュニティストラテジスト @mazzo

特集

2025年3月に作った、3D地形を自由に自転車で走り回るプログラム。これをなんとか改良しようと、Project PLATEAUの地形データにテクスチャを貼り付けたりしてみたのですが、これがリアリティ的にぜんぜんダメ。

Blenderで街自体を作り出せば良いのでしょうが、それも手間がかかりそう。なんとかならんものかと思案していたところ、Zwiftでグループライドしながら音声チャットしていたら、小さなバイキングのように閃きました。

「経路の動画を生成して、スピードコントロールすれば良いのでは?」

幸い、妻の対話型アバターのためにMiniMax H3やLTX 2.5の高速化はできています。うまくすればストリーミングでもいけるかも?

そんな感じで、Claude Code Opus 5.5に投げかけてみたところ、できますよ、という回答。

筆者インドアバイクのスマートトレーナーと連動したZwiftのようなバーチャルサイクリングアプリを作りたい。ただし、映像は3Dによる生成ではなく、MiniMax H3やLTX 2.5などの動画生成でリアルタイムで、スピードは自転車のケイデンスやパワーと連動するようにしたい。街並みは、指定した街を進んでいく。スピードの制御は動画再生速度のコントロールで行う

Claude作れると思います。ただ、ここの環境で測った数字に当てはめると、要の部分が「リアルタイムで作る」とは少し違ってきます。設計の案です。

結論:生成と再生を切り離して、作った映像を先に溜める

速さを再生速度で調整するなら、映像は一定の速さで前へ進むカメラとして作っておけばよいことになります。ペダルの入力で変わるのは再生の速さだけで、生成は乗り手の動きを待たずに進められます。さらに道筋は先に決まっているので、走り出す前から作り始められます。

道筋(OSM)→ 道沿いの写真を間隔ごとに選ぶ → 写真と写真の間を動画で作る → 溜める
↓
トレーナー(BLE)→ パワー → 物理計算で速さ → 「進んだ距離」でコマを引く → 画面
↑ 勾配を負荷として返す

生成:速さは足りるが、画質との取り合いになる

寸法

実時間比

使いどころ

LTX-2.5(ltx25d・CUDA Graph)

384×512 前後

約 0.5

走りながら先へ作る

H3+TaoMate

640×352

約 2

前の晩に作っておく

H3(E8)

1280×704

約 9

前の晩に作っておく(高画質)

  • 実時間比 0.5 なら、作ったときの速さの 2 倍まで追いつけます。基準を 20km/h で作ると 40km/h までです。それより速い下り坂は、溜めた分で吸収するしかありません。

  • 30km の道筋を基準 20km/h で作ると 1.5 時間分の映像です。H3 の 640×352 なら約 3時間、1280×704 なら一晩では終わりません。

  • ⇒ 普段は前の晩に H3 で作り、初めての道や作り足しの分だけ LTX で先回りして作る、という分け方を勧めます。

指定した街を写すには:実写の写真を両端に置いて間をつなぐ

  • 文字の指示だけだと、それらしい別の街になります。そこで道沿いの実写を1枚目と最後のコマに固定して、その間を作らせます。H3 の 4面図も、LTX の待機動画も、すでにこの形で動いています。

  • 写真は Mapillary(CC BY-SAで使えます)から取ります。Google ストリートビューは、規約で保存や派生物の作成が禁じられているので使えません。

  • 写真どうしの距離が分かるので、1コマで何メートル進むかが決まります。

速さの調整:再生速度ではなく「距離→コマ」の対応表で引く

  • 生成したカメラは等速で進んでくれません。そこで、オプティカルフローから1コマごとの進みを測ります。それを両端の写真の距離に合わせて、累積距離の表にします。再生側は「いま何メートル地点か」からコマを引きます。これで速さの揺れが画面に出ません。

  • 遅いとき(基準の0.3倍など)はコマが飛び飛びになるので、前後のコマを混ぜるか補間(RIFE)で埋めます。止まったときは静止画になります。

  • 速さはパワーから物理式で出します(空気抵抗・転がり抵抗・勾配)。勾配は標高データから取り、FTMS(Bluetooth Fitness Machine Profile)のシミュレーションモードでトレーナーの負荷として返します。Zwift と同じ仕組みです。

トレーナーとの接続

  • Web Bluetooth で FTMS(0x1826)を直接読めます。 パワー・ケイデンス・速度が取れ、負荷も送れます。いまの studio と同じく、ブラウザの画面 1 枚で済みます。

  • Web BluetoothはChrome(PC・Android)だけで、iPhoneやiPad のSafariでは動きません。トレーナーのそばに置くPCのChromeで開き、映像は Tailscale 経由で galleria(RTX 5090搭載のWindowsマシン) から配ります。

というわけで、できそうです。

我が家のスマートトレーナー(Garmin Tacx FLUX S Smart)には古いCinelliのロードバイクをセットアップ。普段はZwift(月額2400円)で、仲間と週1回、30分一緒に走るというのをここ数年続けています。1年半前と同じく、この組み合わせで行きます。

Mapillaryというサービスの存在は知らなかったのですが、世界中のストリートレベル(道路上など)の写真をユーザー同士で共有し、地図データや3D・自動マッピングに活用するためのプラットフォームだそうです。

ここのデータを自動的に取得し、H3かLTXで2つの画像の間の動画を生成することで、対応する区間の動画を作っていきます。

ところで、実写を使ったインドアバイクサービスとしては、ROUVYというものがあります。使ったことはあるのですが、月額2600円とZwiftと同じくらい高額であるのと、自分が走りたい区間があるとは限らない、ということで、すぐにやめてしまいました。世界150カ国以上における10万kmを超える実際の道路を走行することができる、ということなのですが、走る区間全部の車載動画が投稿されていなければなりません。これはハードルが高い。

また、VZFitというOculus Quest対応VRアプリでは、Googleストリートビューを変形させて、実際のルートを走ることが可能でした。ただ、画像が歪みすぎていて気持ち悪くなってしまう欠点があり、スマートトレーナーとの相性問題もありました。

・VRゴーグル着けてロードバイクで走り抜けるGoogleストリートビューの風景 しまなみ海道からアビーロードまで

それに対して、今作っているシステムは、「車載動画がなければ生成してしまえ」というものです。

そうこうしているうちに、タイムズスクエア~ウォール街のルート、約 6.4kmができました。

最初のルートとして選んだのは、ここならデータが豊富だろう、という理由から。

区間の端に置いた画像は全部で124枚。

Mapillaryでは不足している区間があるので、そこはKrea 2で画像を生成して補完しています。タイムズスクエアからユニオンスクエアにかけては生成画像の方が多いです。

これらの画像を先頭画像と終端画像として、途中の動画をMiniMax H3で生成。動画の数は123個。全部で505MBの動画にまとまりました。

実写の写真(Mapillary)

生成した画像(Krea 2)

タイムズスクエア~Union Square(0~2.85km)

16 枚

46 枚

Union Square~ウォール街(2.85~6.37km)

63 枚

0 枚

合計

78 枚

46 枚

この動画のスピードをスマートトレーナーの数値に合わせてコントロールしていくわけです。

上り坂では負荷が高まります。ニューヨークは平坦だと思っていましたが、意外に勾配がありますね。最後に訪れたのは9.11の前年だったから記憶も薄れています。

LTXならリアルタイムで動画を生成できるわけですが、それはやらなくてもいいだろう、ということで、作りだめしておこうという案に落ち着きました。

スマートトレーナーの接続でトラブった(iPhoneで接続したときのBluetoothペアリングがつかんで離さない、ありがちな問題)以外はすんなりと出来上がりました。

思い立ってからここまで2時間くらい。

ニューヨーク・ブロードウェイの次はどこを走ろうか。

ニューヨークの次は練馬区の富士街道

地元の富士街道にしよう。谷原の五叉路交差点から田無まで。しかし、Mapillaryにデータがあるかどうか。

ありました。さっそく作成に取り掛かります。

103区間、1区間8.6秒の生成に30秒かかります。全部でほぼ50分でこのルートが完成しました。

このようにピンポイントでルートを作っていけるのはなかなか楽しいものですね。

もちろん、自分で走って、そのデータを使ってもいいわけです。

それなら生成AIを絡める必要もないわけですが。

でも、ライドを追体験する楽しみもあるので、そんな機能を追加しておくのもいいかもですね。

実際に走ってみると、勾配がちゃんと反映されていることがわかります。石神井公園駅のちょい手前でなだらかな上り坂になっているのを体感できました。

仮想自転車旅日記

妻は20年前に、「仮想自転車旅日記」というブログを書いていました。エアロバイクを漕いでいた妻が、その走行距離を実際の地名のどこからどこまで走ったかをマッチさせて、仮想的に走ったことにするというブログ。地図デザイナーの仕事をしていた彼女らしいアイデアです。

彼女もブロードウェイを走ってました。20年と2カ月前に。実際には自宅から下井草までの往復とエアロバイクだったのですが。

妻が仮想的に走っていた道を、一緒に走って追体験できます。

ビリー・ジョエルがMovin' Outで言及していたハッケンサックにも行けるはず。

妻の仮想自転車旅日記ルートはゆっくりと育てて、音声チャットをしながら一緒に走っていこうと思います。

《松尾公也》

Amazon売れ筋ランキング

松尾公也

テクノエッジ編集部 シニアエディター / コミュニティストラテジスト @mazzo

特集

BECOME A MEMBER

『テクノエッジ アルファ』会員募集中

最新テック・ガジェット情報コミュニティ『テクノエッジ アルファ』を開設しました。会員専用Discrodサーバ参加権やイベント招待、会員限定コンテンツなど特典多数です。