demo API
Luna-Flow/geometry3d/demo はライブラリではなく実行ファイルで、MoonBit の項目は何も公開しません。そのインターフェースはここで説明するコマンドラインです。TUI バックエンドでアニメーションするシーンをターミナルに描画し、.tui3d シーケンスと .tuiimg 画像の記録、再生、書き出し、表示を行います。使用する時計、環境変数、ファイルシステムを提供する native ターゲット向けです。
moon run src/demo --target native -- [options]
オプションは完全一致で判定され、未知のオプションは無視されます。典型的な使い方は demo チュートリアルに、シーンの説明は demo の設計にあります。
環境変数
COLUMNS, LINES
フレームの幅は COLUMNS セル、高さは LINES - 1 行で、1 行はシェルのプロンプト用に残します。値がないか読めない場合は 80 × 32 です。リポジトリの just レシピは stty size から両方を設定します。
シーン
シーンのオプションがなければ、半辺長 1 の立方体を回転させます。
--sphere
--sphere は半径 2.4、18 リング、36 セグメントの静止した UV 球を表示します。
--torus
--torus は半径 2.1 と 0.72、28 × 16 分割のトーラスを、6.8 単位離れた位置から見て回転させます。
--hitchcock
--hitchcock は円柱、円錐、三角錐の手前にある中央の立方体を表示します。カメラは 3.4 から 8 単位の間でドリーし、焦点距離が距離に追従するので、立方体の大きさは変わらず背景の縮尺が変わります。
--dolly
--dolly は 5 × 7 枚の円盤の壁の前で回転する立方体を表示します。カメラは 3.2 から約 69.6 単位の間でドリーし、焦点距離は 23 mm から 500 mm まで増えます。
メッシュのシーン(立方体、球、トーラス)は、フルサイズセンサーに 18 mm レンズを使い、特に断りがなければ 4.5 単位離れています。
効果
--long-exposure
--long-exposure は直前の動きを 12 回描画したものを各フレームに平均し、動く輪郭をぼかします。
--flow-exposure
--flow-exposure は --long-exposure と同じですが、以前の各描画をまずブロックマッチングによるオプティカルフロー(探索半径 4、パッチ半径 1)で現在のフレームに位置合わせします。
実行
--once
--once は 1 フレームだけ描画して(またはシーケンスの 1 フレームだけ再生して)終了します。指定しなければ、ライブモードは中断されるまで 33 ms ごとに 1 フレームで動き続けます。
ファイル
--record PATH
--record PATH は選んだシーンと効果のシーケンス全体を描画し、.tui3d として PATH に書き込みます。
--record-stdout
--record-stdout は同じ .tui3d テキストをシーケンスをメモリに保持せず 1 フレームずつ標準出力に書きます。長い記録ではファイルにリダイレクトしてください。
--duration SECONDS, --fps N
これらのオプションは --record と --record-stdout の長さ(既定 3 秒)とフレームレート(既定 30)を設定します。どちらも正の整数を取ります。パーサは引数の数字だけを残すので、--duration 0.5 は 5 秒を意味します。
--play PATH
--play PATH は .tui3d ファイルを読み、記録時のフレームレート(60、30、24、12、10 fps のうち切り捨てで最も近いもの)でターミナルに再生します。
--export-image PATH
--export-image PATH は選んだシーンと効果の静止画を 1 枚描画し、.tuiimg として PATH に書き込みます。
--show-image PATH
--show-image PATH は .tuiimg ファイルを読んで表示します。
優先順位
複数のモードを指定した場合は、次の順で最初に当てはまるものが優先されます。--record-stdout、--show-image、--export-image、--play、--record、--dolly、--hitchcock、そしてメッシュのシーンです。読み書きできないファイルがあると、そのパスを示すメッセージとともにプログラムは中断します。