====== Path to Flight Plan ====== スプラインで描いたパスからフライトプランカメラを生成し、3DGS(3D Gaussian Splatting)用のデータセットを作るまでを、1 つのウィンドウで進めるツールです。Chaos Vantage でのレンダリング、Metashape Pro でのアライメント、LichtFeld Studio 用の ''transforms.json'' の書き出しまでを、ステップ順に行えます。 ^ ツール名 | Path to Flight Plan | ^ 収録 | OakCorp Tools 1.1.0 以降([[start|OakCorp Tools for 3ds Max]]) | ^ スクリプトのバージョン | Ver 2026080703 | ^ 対応環境 | 3ds Max 2025 ~ 2027 | ^ 連携ソフト | V-Ray 7、Chaos Vantage、Agisoft Metashape Pro(Standard は一部の機能のみ)、LichtFeld Studio | ^ 起動 | OakCorp ツールバーの **Path to Flight Plan** ボタン、またはマクロ **Path to Flight Plan**(Category:OakCorp) | ===== 実践チュートリアル ===== [[https://oakcorp.net/lesson/archives/7531|{{https://oakcorp.net/lesson/wp-content/uploads/sites/5/2026/08/render2splat.jpg?600}}]] ===== ワークフローの概要 ===== ウィンドウは上から順に 4 つのステップと、セッションの保存で構成されています。 ^ ステップ ^ 内容 ^ 結果 ^ | ① フライトプラン生成 | パス(スプライン)を分割し、1 点 = 1 フレームでカメラにキーを設定します。 | VRayPhysicalCamera(アニメーション付き) | | ② Chaos Vantage レンダリング | ''.vrscene'' を書き出し、Vantage をコマンドラインで実行します。 | 連番画像(Spherical 360 または通常のフレーム画像) | | ③ Metashape Pro | アライメント用のリファレンス CSV を書き出します。 | Metashape でアライメントし、点群(''.ply'')と ''cameras.xml'' を書き出し | | ④ LichtFeld Studio | 画像・点群・カメラ位置から ''transforms.json'' を書き出します。 | LichtFeld Studio で学習できるデータセット | カメラは「1 フレーム = 1 撮影点」のアニメーションとして作ります。カメラを撮影点の数だけ作るのではなく、1 台のカメラのアニメーションを Vantage でまとめてレンダリングするため、シーンの読み込みが 1 回で済みます。 ===== ① フライトプラン生成 ===== ==== 項目 ==== ^ 項目 ^ 内容 ^ | パスの一覧 | フライトプランに使うスプラインです。一覧の順に連結して 1 本のパスとして扱います。 | | 選択を追加 | シーンで選択しているスプラインを一覧に追加します。 | | 更新/削除/クリア | 一覧の表示を更新、選んだパスを一覧から外す、一覧を空にします。 | | セグメント分割数 | ノット間を何分割するかを指定します。1 ならノットの位置だけ、2 ならノットの間に 1 点を追加します。中間点は曲線に沿って配置されます。 | | ルックアット | オンにすると、カメラが注視オブジェクトの中心を向きます。オフのときは進行方向を水平に向きます。 | | 注視オブジェクトをピック | ルックアットで向く対象を選びます。 | | 開始フレーム | 1 点目のキーを置くフレームです。 | | フライトプラン生成(カメラ作成) | カメラを作成し、点ごとに 1 フレームずつキーを設定します。 | ==== 手順 ==== - パスとなるスプラインを描きます。開いたスプラインも閉じたスプラインも使えます。Circle [円] や Rectangle [長方形] などのシェイプもそのまま使えます(元のシェイプは変更しません)。 - スプラインを選択して[選択を追加]を押します。複数のパスを使う場合は、飛ぶ順に追加します。 - [セグメント分割数]と[ルックアット]を設定します。一覧の下に、現在の撮影点の数が表示されます。 - [フライトプラン生成(カメラ作成)]を押します。 ''P2F_Cam360'' という名前の VRayPhysicalCamera(ターゲットなし)が作られ、撮影点ごとにキーが設定されます。Time Slider [タイムスライダー] の範囲も撮影点の数に合わせて変わり、カメラ名は ② の[カメラ名]に自動で入ります。 3DGS の学習に悪影響があるため、作成するカメラの Depth of Field [被写界深度]、Motion Blur [モーションブラー]、Vignetting [ビネット] は自動でオフになります。.vrscene の書き出し直前にも、もう一度オフにします。 パスの形を直したいときは、スプラインのノットを編集してから、もう一度[フライトプラン生成]を押します。新しいカメラが作られます。 ===== ② Chaos Vantage レンダリング ===== ==== .vrscene を書き出す ==== [.vrscene を書き出し(現在のシーン)]を押し、保存先を指定します。 Vantage は、.vrscene を書き出したときの「レンダリングするビュー」のカメラを、アニメーション付きのカメラ(Original Camera)として扱います。そのためこのボタンは、書き出す前に次の処理を自動で行います。 * [カメラ名]のカメラをアクティブなビューポートに設定する * Render Setup [レンダー設定] のビューのロックを解除し、アクティブなビューを使うようにする(Render Setup [レンダー設定] が開いている場合は閉じます) * カメラのレンズ効果をオフにする 書き出したあと、ファイルの中でカメラがアニメーション付きになっているかを検証し、結果を表示します。 V-Ray のメニューから手動で書き出す場合は、フライトプランカメラを「レンダリングするビュー」にしてから書き出してください。素のビューポートのまま書き出すと、Vantage でカメラのアニメーションが再生されません。 ==== 項目 ==== ^ 項目 ^ 内容 ^ | .vrscene シーンファイル | レンダリングする .vrscene です。書き出すと自動で入ります。既存のファイルを[参照...]で指定することもできます。 | | Vantage exe | Vantage の実行ファイルです。''C:\Program Files\Chaos\Vantage\vantage.exe'' があれば自動で入ります。 | | 出力フォルダ | 画像の出力先です。④ の写真フォルダとしても使います。 | | カメラ名(-camera) | レンダリングするカメラです。① で生成すると自動で入ります。 | | 画像ベース名/拡張子 | 出力する画像の名前です。番号は Vantage が付けます(例:''shot.00000.png'')。 | | 連番桁数 | 画像の番号の桁数です(既定は 5)。 | | 解像度 | Spherical 用の 2:1 のプリセット(1K~8K)と Custom です。Custom では幅と高さを入力します。 | | Samples | Vantage のサンプル数です。 | | 追加オプション | Vantage のコマンドラインに追加するオプションです(任意)。 | | カメラモード | Spherical 360(全天球)または通常フレームカメラです。 | ==== レンダリングする ==== [Vantage レンダージョブ実行(全フレーム)]を押すと、Vantage がコマンドラインで起動し、全フレームをレンダリングします。次の設定は自動で付けます。 ^ 設定 ^ 値 ^ | カメラ | Spherical 360 のときは 360°×180° の全天球。通常フレームカメラのときはシーンのカメラの画角 | | 自動露出 | オフ(画像ごとの明るさの差をなくすため) | | デノイズ | オン | | Light Cache | オン | | モーションブラー | オフ | | アルファ | オン(PNG) | | 終了後 | Vantage を自動で閉じる | ==== 差分レンダリング ==== パスを編集したり分割数を変えたりしたあと、変わったフレームだけをレンダリングし直す機能です。 - パスを編集し、① の[フライトプラン生成]と ② の[.vrscene を書き出し]をやり直します。 - [差分レンダリング(変更/追加フレームのみ)]を押します。 - 前回のレンダリングと比べた結果(そのまま使う/番号を付け替える/新しくレンダリングする枚数)が表示されるので、確認して実行します。 * 全フレームのレンダリング時に、出力フォルダへ ''p2f_frames.txt''(フレーム番号とカメラ位置の一覧)を保存し、これを比較の基準にします。 * カメラ位置が[差分一致許容距離](既定は 1 mm)以内なら同じ撮影点と見なします。比較するのは位置だけで、向きは比較しません。 * 番号がずれた画像は付け替え、不要になった画像は出力フォルダ内の ''_p2f_old'' に移します(Metashape に誤って読み込まれないようにするため)。 解像度、Samples、画像名の設定が前回と違う場合は、画質が混ざらないよう差分レンダリングを中止します。[Vantage レンダージョブ実行(全フレーム)]でレンダリングし直してください。初回も全フレームでのレンダリングが必要です。 ===== ③ Metashape Pro(アライメント) ===== ==== 項目 ==== ^ 項目 ^ 内容 ^ | Y-up 回転(X−90°) | オンにすると、CSV のカメラ位置を X 軸まわりに −90° 回転します。LichtFeld Studio で正立して表示させるための設定です(既定はオン)。 | | スケール | CSV のカメラ位置に掛ける倍率です(既定は 1.0)。 | | リファレンス CSV 書き出し | Metashape の Reference [リファレンス] に読み込む CSV を書き出します(Pro のみ)。 | Y-up 回転とスケールは、プロジェクトの途中で変えないでください。CSV に適用した回転とスケールは、Metashape の座標系を通して点群(''.ply'')と ''cameras.xml'' にも自動で反映されるため、途中で変えると全体の向きや大きさが合わなくなります。 ==== Metashape Pro の手順 ==== - Vantage で出力した画像を Metashape に読み込みます。 - Camera type [カメラタイプ] を ② のカメラモードに合わせます(Spherical 360 なら Spherical、通常フレームカメラなら Frame)。 - File [ファイル] > Import [インポート] > Import Reference [リファレンスのインポート] で CSV を読み込みます。列は label/x/y/z に割り当て(位置のみ。CSV には向きの列もありますが使いません)、座標系は Local Coordinates、精度は 0.005 m に設定します。 - Align Photos [写真のアライメント] を実行し、Update Transform [変換を更新] を実行します。 - 点群(Tie Points)を、カラー付き・Local Coordinates の ''.ply'' で書き出します。 - カメラを ''cameras.xml'' として書き出します(④ で使います)。 ==== Metashape Standard の場合 ==== Standard では CSV のインポートを使えないため、③ の CSV、Y-up 回転、スケールは使えません。画像をアライメントしたあと、''cameras.xml'' と ''.ply'' を書き出して ④ に進んでください。座標系はそのまま整合します。 ===== ④ LichtFeld Studio(transforms.json) ===== ==== 項目 ==== ^ 項目 ^ 内容 ^ | Metashape cameras.xml | Metashape で書き出したカメラです(推奨)。指定すると、Metashape が推定したカメラ位置で ''transforms.json'' を作ります。未指定の場合は、3ds Max のカメラ位置(真値)を使います。 | | Metashape からの点群 .ply | 学習の初期点群として使う ''.ply'' です。 | | 写真フォルダ | レンダリングした画像のフォルダです。未指定の場合は ② の出力フォルダを使います。 | | transforms.json 書き出し | 保存先を指定して ''transforms.json'' を書き出します。画像と点群の場所は、''transforms.json'' からの相対パスで記録します(別のドライブなどで相対パスにできない場合は絶対パス)。 | * カメラモデルは、② のカメラモードに合わせて自動で切り替わります(Spherical 360 は EQUIRECTANGULAR、通常フレームカメラは PINHOLE)。 * 解像度は、''cameras.xml'' にセンサーの解像度があればそれを使います。 * Spherical 360 のデータを LichtFeld Studio で学習するときは、3DGUT を有効にしてください。通常フレームカメラ(PINHOLE)の場合は不要です。 * 点群の ''.ply'' を指定しなかった場合は、点群の指定なしで書き出します。 点群の ''.ply'' が読み込まれず、LichtFeld Studio のログに「Generated random point cloud」と表示される場合は、LichtFeld Studio が古い可能性があります。新しいビルドに更新してください。 ===== セッション(途中からの再開) ===== パスの一覧、注視オブジェクト、各ステップの設定はシーンに保存されます。主な操作のたびに自動で保存され、''.max'' ファイルを開き直すと自動で復元されます。 * [シーンへ保存]/[シーンから復元]で手動でも保存・復元できます。 * シーンに保存されるので、''.max'' ファイルの保存を忘れないでください。 * Vantage の実行ファイルや出力フォルダなどは、3ds Max の plugcfg フォルダーの ''path2flightPlan.ini'' にも保存され、次回の起動時に入力済みになります。 ===== よくある質問 ===== ==== Vantage でカメラが動かない ==== .vrscene を書き出したときの「レンダリングするビュー」がフライトプランカメラになっていない可能性があります。② の[.vrscene を書き出し]で書き出し直してください。書き出し後の検証メッセージで、カメラのアニメーションが正しく書き出されたかを確認できます。 ==== 画像ごとに明るさが違う ==== Vantage の自動露出がオンになっていると、画像ごとに明るさが変わり、3DGS の学習に悪影響があります。このツールは自動露出をオフにして起動します。[追加オプション]で自動露出を有効にしていないか確認してください。 ==== LichtFeld Studio でシーンが上下逆さまになる ==== ③ の[Y-up 回転]をオンにして、CSV の書き出しからやり直してください。プロジェクトの途中で切り替えると、点群とカメラの向きが合わなくなります。 ===== 更新履歴 ===== ^ バージョン ^ 日付 ^ 内容 ^ | OakCorp Tools 1.1.0 | 2026-10-06 | OakCorp Tools に収録(スクリプト Ver 2026080703)。 | ===== 著作権 ===== 本ソフトウェアの著作権は株式会社オークに帰属します。 Copyright (c) 2026 株式会社オーク [[https://oakcorp.net/|https://oakcorp.net/]]