
2025/12/05 1:58
Multivox: Volumetric Display
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
概要
本書では、Raspberry Pi 4を用いて2つの体積表示装置—Rotovox(400 mm Orb、縦に配置された2枚の128×64パネル)とVortex(300 mm Orb、横に並んだ2枚の128×64パネル)が連続して設置される)—のMultivoxドライバを構築・設定・実行する方法を説明しています。
ハードウェア前提条件:縦軸に取り付けられた2枚のHUB75 LEDパネル、ABCDEまたはABCシフトレジスタ方式でアドレス指定、回転同期用の単一GPIOフォトダイオード、および任意でBluetoothゲームパッド(Xboxマッピング)とヘッドセット音声出力があります。
ソフトウェア構成:
に設定ファイルが格納されています。src/driver/gadgets- ドライバ実行ファイル(
)は、クライアントが書き込む共有メモリボクセルバッファを作成します;両者は同一Pi上で数百RPMで動作します。vortex.c - シミュレータ(
)は、スライス数・オフセット・チャネルあたりビット数・パネル解像度・走査ジオメトリを選択可能にし、OpenGLでバッファを描画します。virtex.c - おもちゃデモ(例:花火、テッセラクト)は
でコンパイルされます。src/toys - Pythonユーティリティ(
,calibration.py
,grid.py
,colourwheel.py
,obj2c.py
,pointvision.py
)は、キャリブレーション、グリッド可視化、色選択、OBJ変換、点群ストリーミング等をサポートします。vortexstream.py
ビルド手順:
git clone https://github.com/AncientJames/multivox.git cd multivox cmake -DMULTIVOX_GADGET=vortex .. cmake --build .
ランタイム診断(ドライバコマンドライン):
b(ビット深度)、u(均一性)、t(トレイル)、l(ロック)、d D(漂移)、p(パネル無効化)、xyz(軸ビュー)。
おもちゃとビューア:
./viewer またはコンパイル済みバイナリを実行し、.obj/.png ファイルを受け付け、ゲームパッド操作やキーボードショートカット(LB/RB, A, X, Y)でインタラクションが可能です。
サービスインストール:
vortex.service を作成し ExecStart=/home/pi/Multivox/bin/vortex と設定、(systemctl enable vortex.service) で有効化し、コア3を分離(isolcpus=3)します。
ファンタジーコンソール:
~/Multivox/carts にある .mct カートリッジを起動。UIからカートリッジの閲覧、ビット深度変更、電源オフが行えます。
本ガイドは、趣味家や開発者に対し、安価なRaspberry Piハードウェア上で体積表示装置をプロトタイピングするための完全かつ即使用可能なフレームワークを提供します。
本文
Multivox – ボリュメトリックディスプレイドライバ&ランチャー
概要
このプロジェクトは、2 つのボリュメトリックディスプレイガジェットを制御します。
| ガジェット | 説明 |
|---|---|
| Rotovox | 400 mm のオーブで、縦方向に並んだ 128×64 パネル 2 枚。縦解像度が高く、横密度も豊富です。 |
| Vortex | 300 mm のオーブで、左右方向に配置された背面対向の 128×64 パネル 2 枚。明るさとリフレッシュ率が優れています。 |
Vortex 用の 3‑D プリント部品はこちらから入手できます。
ハードウェア前提
- 垂直軸を中心に回転する 2 枚の HUB75 LED パネル。
- パネルは ABCDE または ABC シフトレジスタ方式でアドレス指定します。
- 単一 GPIO ピン(フォトダイオード等)で回転を同期させます。180° の時に HIGH、その他は LOW です。
- Raspberry Pi 4 を使用;コードはメモリマップド GPIO アクセスを利用しています。
別の Pi モデルを使う場合は、GPIO コード内の
を変更してください。BCM_BASE
入力デバイス
- Bluetooth ゲームパッド(既定で Xbox コントローラーマッピング)。
- Bluetooth オーディオ出力(ヘッドセットプロトコルは動作しますが、高品質コーデックは未テスト)。
プロジェクト構成
src/ ├── driver │ ├── gadgets # ディスプレイ設定 │ └── vortex.c # メインドライバ – ボクセルバッファ作成とパネル走査 ├── simulator │ └── virtex.c # 同じボクセルバッファを X11 OpenGL で描画 ├── multivox # ランチャー / フロントエンド ├── platform # 共通クライアントコード └── toys # ボリュメトリックデモ ├── eighty # マルチプレイヤーライトサイクル ├── fireworks.c # 最初のデモ ├── flight.c # 70 年代風 SF ├── tesseract.c # 4 次元立方体 ├── viewer.c # .obj/.png ビューア └── zander # ランチャー/ウイルス型 python/ ├── calibration.py ├── grid.py # キャリブレーション用パターン生成 ├── colourwheel.py ├── obj2c.py # .obj モデルをヘッダに埋め込む ├── pointvision.py # vortexstream.py から点群を受信 └── vortexstream.py # 点群を pointvision.py にストリーム README.md # このファイル
ビルド(Raspberry Pi 上)
git clone https://github.com/AncientJames/multivox.git cd multivox mkdir build && cd build cmake -DMULTIVOX_GADGET=vortex .. cmake --build .
実行
1. ドライバを起動
ドライバはプロファイルデータ(フレームレート、回転速度)を出力し、キーボードで診断が可能です。
| キー | 効果 |
|---|---|
| Esc | 終了 |
| b | ビット深度 – 1, 2, 3 bits/channel を循環 |
| u | 均一性 – 明るさと均一性のトレードオフ |
| t | トレイル – 回転 > リフレッシュ時にバック蓄積を調整 |
| l | ロック – ディスプレイを一定方向に固定 |
| d/D | ドリフト – 同期のため明示的ドリフトを導入 |
| p | パネル – 選択的にパネルを無効化 |
| xyz | 軸 – 待機時に正投影ビューを表示 |
2. デモを起動
例:viewer(ゲームパッドでスケール/回転、リモートキーボード対応)
./viewer ~/Multivox/models/*.obj
viewer のキーボード操作:
| キー | 効果 |
|---|---|
| Esc | 終了 |
| LB/RB | モデルを循環 |
| A | ウォークスルー / オービット |
| X | フィットズーム |
| Y | ワイヤーフレーム切替 |
シミュレーター (virtex
)
virtex物理ディスプレイがない場合に便利です。X11 ウィンドウでボクセルバッファをレンダリングします。
デフォルト(現在のガジェットジオメトリ)で実行:
./virtex
コマンドラインオプション:
| オプション | 効果 |
|---|---|
| スライス数 – 1 回転あたりの垂直スライス |
| オフセット – 軸から前/後スクリーンまでの距離(半径の割合) |
| ビット深度 (1–3) |
| パネル解像度 |
| スキャンジオメトリ (=linear, =radial) |
例:線形スキャン、128 スライス、1280×1280 パネル、3 bits/channel:
./virtex -g l -s 128 -w 1280 1280 -b 3
Tip: Raspberry Pi ではスライス数を減らして描画負荷を軽減してください。
インストール & 自動起動
-
バイナリをインストール
make install # デフォルトで ~/Multivox にインストール -
ドライバサービスを作成
:/usr/lib/systemd/system/vortex.service[Unit] Description=Vortex Display Driver After=multi-user.target [Service] ExecStart=/home/pi/Multivox/bin/vortex [Install] WantedBy=multi-user.target -
サービスを有効化
sudo systemctl daemon-reload sudo systemctl enable vortex.service -
(オプション)ドライバをコア 3 に固定
に/boot/cmdline.txt
を追加。isolcpus=3 -
起動時に Multivox を起動
crontab に
を追加。@reboot /home/pi/Multivox/bin/multivox
Multivox ランチャー
デバイスが起動すると、Multivox ファンタジーコンソールに入ります:
- 各デモはカートリッジ(
)として*.mct
に格納。~/Multivox/carts/ - カートリッジはラベルや色で区別できます。
- カートを終了すると、ボクセルスナップショットがプレビュー用に保存されます。
基本的なランチャー操作:
| キー | 効果 |
|---|---|
| LB/RB | カートリッジを循環 |
| A | 選択したカートリッジを起動 |
| ⧉ | 現在実行中のカートリッジから離脱 / 再開 |
| △/▽ | ビット深度変更 |
| ☰×5 | 電源オフ |
ドキュメント終了