BVE Trainsim 用の DirectX .x ファイルを作ったり直したりするための Windows デスクトップアプリ(C# / .NET 10 / WPF)。
- ダウンロード: Releases から
BveTsStructureEditor-<バージョン>.zipを取得し、展開してBveTsStructureEditor.exeを起動。 - 動作環境: Windows 10 / 11(64 bit)と .NET 10 デスクトップ ランタイム(x64)。
- 使い方: 同梱の
manual.html(docs/manual.html。アプリの「ヘルプ → 説明書を開く」/ F1 でも開く)。 - 利用規約: フリーソフト。dist/利用規約.txt を読んでから使ってください(再配布・改変版の配布は不可)。
- 不具合・要望: Issues へ。
以下は開発用の説明。
dotnet run --project src/BveTsStructureEditor.App
powershell -ExecutionPolicy Bypass -File tools\publish.ps1
テストを通してから artifacts\BveTsStructureEditor-<バージョン>.zip を作る(.NET ランタイムは同梱しない framework-dependent)。
バージョンは src/BveTsStructureEditor.App/BveTsStructureEditor.App.csproj の <Version>。
zip には exe と DLL のほか、docs/manual.html と dist/ の readme.txt・利用規約.txt・THIRD-PARTY-NOTICES.txt が入る。
リリースのときは dist/readme.txt の更新履歴も書き足す。
.x / .pmx をウィンドウにドラッグ&ドロップするか、exe の引数にパスを渡すと開く。
すでにファイルを開いているところへモデルをドロップすると、「今のファイルに追加」か「新しいファイルとして開く」かを選べる
(追加は元の座標のまま。3D ビューの地面に落としたときは「ドロップした地点に置く」も選べる)。
メニューの「ファイル > 今のファイルに追加で読み込み」(Ctrl+I)でも追加できる。追加したメッシュのテクスチャのパスは今のファイル基準に直す。
| 分類 | 内容 |
|---|---|
| 読み込み | テキスト txt ・バイナリ bin ・MSZIP 圧縮 tzip / bzip、float32/64。Frame 階層と FrameTransformMatrix は座標に焼き込む。文字コードは UTF-8 / Shift_JIS を自動判別。壊れた面や数の合わない法線・UV は、読めるところまで読んで警告に出す |
| 書き出し | テキスト形式 xof 0303txt 0032(Shift_JIS か UTF-8、ファイルメニューの「保存設定…」で指定)。法線がないメッシュはスムーズ角から法線を作る |
| PMX | PMX 2.0 / 2.1 の読み込みと、PMX 2.0 での保存(「名前を付けて保存」で種類を PMX に)。扱うのは形・法線・UV・マテリアル(拡散色・鏡面・テクスチャ)だけで、ボーン・ウェイト・モーフ・剛体・ジョイント・スフィア/トゥーンは読み飛ばし、何を読まなかったかを数付きで警告に出す。保存は全メッシュを 1 モデルにまとめた静的モデル(三角形化、ルートボーン 1 本、Root/表情 の表示枠)。単位は「保存設定…」で指定(初期値 1 単位 = 1 m)。配布されている実物の PMX(tests の Fixtures にある kodan.pmx など)で読み込み・面の向きを確認済み。ボーン等を含む PMX を上書き保存するときは確認する |
| 作業ファイル (.bvex) | ファイルメニューの「作業ファイルとして保存…」(「名前を付けて保存」で種類を選んでも同じ)。モデルは .x に書き出すときの丸めや法線の作り直しをせずそのまま(頂点カラー・読み込んだ法線・面ごとの法線番号も)、さらに下絵・線路と限界のガイド、カメラ・平行投影・表示の設定・隠したメッシュとマテリアル・選択の種類と選択中の要素・作業中のメッシュ・ギズモ・左右対称・開いているタブ、保存設定と最後の書き出し先を保存する。中身は zip の中の JSON(project.json)。テクスチャ画像は入れずにパスだけ(作業ファイルからの相対パス。別のフォルダーへ保存し直すと同じ画像を指すよう直す)。元に戻すの履歴は保存しない。開くとそのときの画面に戻る。BVE で使う .x / .pmx は 書き出し(Ctrl+E)で、開いているファイルは変えずに出力し、前回の場所に書き出す(Ctrl+Shift+E)で同じ場所へ更新できる |
| 3D ビュー | テクスチャ表示(PNG/BMP/JPG/GIF/DDS の DXT1・3・5)、裏面を赤で表示(BVE では描かれない面が一目でわかる)、ワイヤーフレーム、メッシュごとの表示切り替え、平行投影(ツールバー/表示メニュー/O キー。見ている範囲と注視点を保ったまま切り替え)、視点の操作(表示 > 視点の操作。標準=メタセコイア風: 右で回転・中/Shift+右で移動・Ctrl+右でズーム / Blender 風: 中で回転・Shift+中で移動・Ctrl+中でズーム / SketchUp 風: 中で回転・Shift+中で移動 / Fusion 風: Shift+中で回転・中で移動。左ボタンはどれも選択用。ホイールのズーム方向の反転、マウス位置中心か画面中心かも選べ、%AppData%\BveTsStructureEditor\navigation.json に覚える。左下の操作説明も方式に合わせて変わる) |
| マテリアルの表示 | 左下の一覧で、作業中メッシュのマテリアルごとに表示 ON/OFF(テクスチャのサムネイル付き)。「全部表示」「これだけ表示」「反転」、ダブルクリックでそのマテリアルの面を選択。隠した面は選択の対象にもならない。表示状態はファイルに保存しない(マテリアルの数が変わったメッシュは解除) |
| 選択 | オブジェクト / 面 / 頂点。クリック、矩形ドラッグ、Shift 追加、Ctrl 反転 |
| ギズモ | 3D ビュー上でドラッグして移動(軸の矢印 / 平面の四角 / 中心の箱で画面と平行)・回転(X/Y/Z のリング)・拡大縮小(先端が立方体の軸で 1 方向、軸の間の斜めの帯で 2 方向、中心の箱を左右ドラッグで全体)。Ctrl でスナップ(移動は「矢印キーの移動量」刻み、回転は 15°、拡大は 0.1 倍)、Esc で取り消し。モデルに隠れないよう専用の層に描く |
| 変形 | 数値で移動・回転・拡大(中心は選択の中心 / 底面中心 / 原点)、X・Z 反転(面の向きは保つ)、底面中心を原点へ、矢印キーで移動(Shift で 10 倍) |
| 面・頂点 | 裏返す、三角形分割、頂点から面を張る、押し出し、切り離す、頂点の結合、削除、法線の作り直し、面取り(大きさ m と「○° 以上曲がった角だけ」を指定。オブジェクト選択/選択なし = 全部の角、面選択 = 選んだ面の辺、頂点選択 = 両端を選んだ辺。3 本以上集まる角は三角形などでふさぐ。辺が短いところは大きさを抑え、つながった面取りの幅は揃える。三角形に分かれた平らな四角形は四角形に戻してから行う) |
| 面を増やす | インセット(選んだ面の内側に一回り小さい面。押し出しと組み合わせて窓・扉)、両面化(裏向きの面を複製して両側から見えるように。すでに両面なら飛ばす)、分割(四角形を u×v の格子に)、ループカット(頂点選択で辺の両端 2 頂点を選び、四角形の帯を一周たどって切れ目を入れる。UV の継ぎ目も位置でつなぐ) |
| 配列複製 | 編集タブの「配列複製」。直線(個数と間隔 X/Y/Z)と円周(個数・角度・中心、Y 軸まわり)。窓・柱・架線柱・柵などを並べる |
| 作図 | 「形を追加」タブの 描いて押し出す(描く面を選ぶ。正面図: 角をクリック → +Z 方向に奥行きぶん押し出し。車体・ホーム・擁壁 / 上面図: 下絵の建物をなぞる → 高さぶん押し出し。地理院地図の下絵と組み合わせる)と 輪郭を描いて回転体に(Y 軸まわり。タンク・柱・碍子)。どれも押すと視点が切り替わり平行投影になる。へこんだ多角形も蓋は正しく三角形に分ける。点を置く操作は Enter / ダブルクリックで確定、Backspace で 1 点戻す、Ctrl でグリッド、Shift で頂点に吸着、Esc で取り消し |
| 計測・スナップ | ツールバーの 計測 で 2 点の距離と ΔX/ΔY/ΔZ・水平距離を表示(頂点の近くでは頂点に吸着)。ギズモで移動するとき Shift を押すと、マウスの近くの頂点に、選択の中で掴んだ点に一番近い頂点をぴったり重ねる(軸ハンドルならその軸だけ、平面ハンドルなら平面内だけ)。吸着先は黄色い丸 |
| 寸法 | ツールバーの 寸法 (D)(表示メニューにも)で、3D ビューに長さ (m) を出す。面選択なら選んだ面の辺、頂点選択なら両端とも選んだ辺(辺でつながっていない 2 頂点ならその距離を黄色の破線で)、オブジェクト選択・選択なしなら外形の幅 (X)・高さ (Y)・奥行 (Z) を軸の色の線で。同じ位置の辺は 1 本にまとめ、画面上で短すぎる辺や、長い辺の数字と重なる数字は省く。辺が 400 本を超えるときは外形だけ。視点を動かしても、ギズモでドラッグ中でも追従する。作業ファイルに ON/OFF を保存 |
| 線路・限界のガイド | BVE メニューの「線路・限界のガイド」で、在来線 1067 mm / 1435 mm / 新幹線のレール、車両限界(橙)・建築限界(水色)の輪郭、ホーム端・高さ(緑)を表示。原点 = 軌道中心・レール面。限界の形は代表的な寸法を単純化した目安で、規程の正確な形ではない |
| BVE 互換チェック | BVE メニューの「互換チェック…」で別ウィンドウに一覧(開いたまま編集でき、編集すると調べ直す)。テクスチャが見つからない / 絶対パス / 日本語などの文字 / 4096px 超 / 2 の累乗でない、面積 0 の面、同じ位置に重なった面、平らでない多角形、へこんだ多角形、未使用の頂点・マテリアル、面の多いメッシュ、読み込み時の警告を一覧にする。「選択」で該当箇所を選び、「直す」で自動修正(未使用の削除・重なった面の削除・三角形分割。元に戻せる) |
| 文字から看板 | BVE メニューの「文字から看板を作る…」。文字(複数行・縦書き可)、フォント、太字、文字色、背景色(透明可)、余白、配置、板の高さか幅を指定すると、PNG(2 の累乗の大きさ)を .x と同じフォルダーに保存してテクスチャ付きの板を追加。両面にすると裏面は左右を反転して貼るので裏からも読める |
| 一括変換 | BVE メニューの「一括変換…」。フォルダー内の .x / .pmx(サブフォルダーも可)を、拡大縮小・左右/前後反転・テクスチャパスの文字列置換・相対パス化・未使用の削除をしてテキスト形式の .x か PMX で書き出す。元の場所に書く(上書きは .bak を残す)か、構成を保って別フォルダーへ(テクスチャの相対パスは出力先から同じ画像を指すよう直す)。失敗したファイルは理由付きで一覧に出す |
| Repeater 用に分割 | BVE メニューの「Repeater 用に分割…」。別ウィンドウで、長いストラクチャを進行方向 (Z) の等間隔に切り分ける(切り目をまたぐ面は切って UV・頂点カラーを補間。切り目に乗った面は法線の向く側のピースにだけ入れて重なりを作らない)。ピースの長さに満たない端数(25.2 m を 5 m ずつにしたときの 0.2 m など)は既定で飛ばし、繰り返しの周期も満たしたピースのぶんにする(外すと最後のピースに残す)。各ピースを Z=0 起点に揃える(Repeater は繰り返し位置に原点を置くため)、面のない区間を飛ばす(番号は飛び番で残す)。重ね代で区間より長く切り出せる(5 m 間隔で 5.05 m のピースなど。Repeater の interval・span は区間の長さのまま)。「半径から自動 R」(既定 ON・R80)は、その半径の右・左カーブのどちらに置いても継ぎ目の外側に隙間が出ない最小値(次のピースの始まりの面を自分の進行方向で測った出っ張り)を、モデルの左右の張り出しから 1 mm 単位で切り上げて入れる。重なる面を持ち上げる(既定 0.003 m)で、重ね代のところで前後のピースの面がぴったり重なってちらつかないよう、並んだ順に 0, +1, 0, +1 … 倍(数が奇数なら最後は +2 倍で、最後と先頭も揃わない)高さをずらす。伸ばした先がモデルの端を越えたら先頭から回り込む(形と UV が繰り返しの続きになる。継ぎ目に重なる先頭の蓋は落とす)。書き出しはピースごとに 名前_00.x … と 1 ファイルずつ(テクスチャの相対パスは出力先基準に直す)。プレビューは BVE と同じ置き方で、半径(正=右カーブ)・interval・span・本数から並べて 3D ビューに重ねる(軌道に沿って interval ごとの点に原点を置き、そこから span 先の点へ向かう弦の向きに +Z を合わせる。ピース自体は曲げない。既定で表示 ON)。緩和曲線・カント・勾配・横オフセットは扱わない。モデルに反映で対象メッシュを元の位置のままピースに置き換える(重ね代・持ち上げなし・端数も残す。元に戻せる) |
| 左右対称 | ツールバーの 左右対称 (M) を ON にすると、ギズモ・変形欄・矢印キーで選択を変形したとき、X=0 をはさんだ反対側の頂点(位置が鏡像の頂点。別メッシュも含む)も鏡像で動く。連動する頂点は紫の印、中心線は紫の線で表示。片側だけを動かしたときは中心線上の頂点は中心に留まる。反対側に対応がない頂点はそれだけ動く。対称化(面・頂点グループ)は、選んだメッシュ(選択なしなら全部)を X=0 で切って、+X 側または -X 側を残し、その鏡像で反対側を作り直す(中心線上の頂点は左右で共有、UV は切り口で補間) |
| メッシュ | 名前変更、複製、削除、結合、選択面を別メッシュに、マテリアルごとに分割 |
| マテリアル | 選択面への割り当て、追加・削除、「整理」の重複統合・未使用削除。拡散色・不透明度・鏡面・発光・テクスチャは、編集タブのマテリアル一覧をダブルクリック(または「色・テクスチャ…」)で開く別ウィンドウで編集する(テクスチャの見本と大きさ付き。開いたまま一覧で選び直すと対象が切り替わり、数値は Enter か「適用」で反映)。拡散色は色コードの横の「パレット…」(または色見本のクリック)で、色相・鮮やかさ・明るさのドラッグ、基本の色(コンクリート・レンガ・バラスト・信号の赤など 24 色)、このメッシュで使っている色、最近使った色(%AppData%\BveTsStructureEditor\recent_colors.json に 12 色まで)から選べる。決定するとそのままマテリアルに反映し(元に戻せる)、キャンセルや外側のクリックでは元の色に戻す |
| UV エディタ | テクスチャ上で UV を選択・ドラッグ移動、左右・上下反転、90° 回転、0〜1 に合わせる、数値変形、平面投影(自動の箱投影 / 面の向き / 正面 / 側面 / 上面、引き伸ばし / 縦横比維持 / 実寸 m 指定) |
| テキスト | .x の本文を直接編集して 3D に反映(Ctrl+Enter、自動反映も可)。構文色分け・検索 (Ctrl+F) |
| 新規作成 | 右の「形を追加」タブから箱・板(立て / 寝かせ)・円柱・パイプ(円柱の「パイプ(中空)」で厚さを指定。外側・内側の側面と上下の縁で閉じた筒)・L 字(円柱の形を「L字」にすると、高さまで立ち上がって +Z / -Z / +X / -X へ横の長さだけ伸びる。曲げ半径を 0 にすると角ばった継ぎ目、正なら円弧で曲げる。パイプと組み合わせ可。折れ目は二等分面で継ぐので太さは変わらない)。底面 Y=0、原点中心。タブを開いている間は、マウスを乗せた・入力中の形を 3D ビューに水色のゴーストで表示(値を変えると即反映、モデルに隠れない) |
| 画像から板 | 画像ファイル(PNG/BMP/JPG/GIF/DDS)を 3D ビューにドロップすると、テクスチャ付きの板メッシュとして追加。ドロップした位置の地面 (Y=0) に置き、複数なら横に並べる。大きさ(高さ / 幅 / 1px あたり)と向き(立てる / 寝かせる)は「形を追加」タブで指定、同タブの「画像を選んで追加…」や exe の引数に画像を渡しても同じ。テクスチャは .x からの相対パス(未保存時は絶対パスにし、保存時に保存先フォルダー以下なら相対パスへ直す) |
| 下絵 | 右の「下絵」タブで、図面や写真を 3D ビューに敷く(上面図 = 地面 / 正面図 / 側面図)。幅・中心・回転(±90° ボタン)・不透明度・表示 ON/OFF。「2 点で縮尺を合わせる」は 3D ビューで寸法のわかる 2 点をクリックして実際の距離を入れると、1 点目を基準に拡大する。「1 点目を原点へ」でクリックした点を原点に合わせる。モデルではないので .x に保存されず選択にも引っかからない。設定は .x のパスごとに %AppData%\BveTsStructureEditor\references.json へ保存し、次に開いたとき復元。このタブを開いている間は画像のドロップが下絵になる。「地理院地図から追加」で地理院タイル(標準地図・淡色地図・写真)を取得して、指定地点を原点・北を +Z にした実寸の下絵にできる(地点は緯度経度・地理院地図/Google マップの URL・度分秒で入力、範囲は一辺 250〜4000 m、ズームは自動。取得した地図は %LocalAppData%\BveTsStructureEditor\gsi に保存。出典「国土地理院」を表示) |
| 参考オブジェクト | 下絵タブの「参考オブジェクト」で、.x / .pmx / .bvex のモデルを半透明で表示して見比べる(下絵タブを開いている間はモデルのドロップでも追加)。編集・選択はできず、位置 X/Y/Z(数値か「地面をクリックして置く」)、回転 X/Y/Z(度。モデルの原点まわりに、編集タブの変形欄と同じ向き。Y ±90° ボタン付き)、不透明度、表示 ON/OFF だけ変えられる。作業ファイル (.bvex) には保存し、.x / .pmx の保存・書き出しには含めない(.x を開いているときの置き方は %AppData%\BveTsStructureEditor\reference_objects.json に .x のパスごとに覚える) |
| その他 | 元に戻す / やり直し(100 回)、最近のファイル、未保存の確認 |
| テクスチャの編集 | 画像を取り込む前に簡易編集できる。「形を追加」タブの画像から板で「取り込む前に編集する」にチェック(ドロップにも効く)、マテリアルの「編集して取り込み…」、ファイルメニューの「テクスチャ画像の編集…」(編集して保存するだけ)から開く。歪み補正(四隅の丸をドラッグして、斜めに写った壁や看板を正面から見た長方形に。実寸の幅・高さを入れると縦横比をそれに合わせる)、回転・反転、シームレス化(横・縦。反対側の端と重ねてなじませ、2×2 に並べたプレビューで確認)、明るさ・コントラスト・彩度、透過色(スポイトで拾った色に近い部分を透明に。許容差とぼかし)、出力の大きさ(自動なら縦横比に近い 2 の累乗、長辺の上限 512/1024/2048)。操作中は縮小画像でプレビューし、決定時に元の解像度から作る。編集した画像は .x と同じフォルダーに「元の名前_edit.png」で保存(未保存なら場所を聞く)。板にするときは画素数を 2 の累乗に伸ばしても元の見た目の縦横比で作る |
| 画面 | 右のタブは 編集 / 形を追加 / 下絵 / テキスト。編集タブは「変形」「面・頂点」「マテリアル」だけ最初から開き、形の加工・頂点と法線・配列複製・メッシュなどは折りたたみ(開閉は次回も復元)。長い説明はボタンのツールチップに、3D ビューの操作一覧は左下の文字にマウスを乗せると出る |
| キー | 動作 |
|---|---|
| Q / E / R | オブジェクト / 面 / 頂点 選択 |
| G / T / S | 移動 / 回転 / 拡大縮小ギズモ(もう一度押すと隠す) |
| W | ワイヤーフレーム |
| O | 平行投影 / 透視投影の切り替え |
| M | 左右対称モード |
| D | 寸法の表示 |
| F | 全体表示 |
| 1 / 3 / 7 / 5 | 正面(運転台側から)/ 右側面 / 上面 / 斜め(Ctrl+1・Ctrl+3 で反対側) |
| 矢印 / PgUp / PgDn | 選択を水平 / 上下に移動 |
| Delete / Esc / Ctrl+A | 削除 / 選択解除 / すべて選択 |
| Ctrl+Z / Ctrl+Y / Ctrl+S | 元に戻す / やり直し / 保存 |
| Ctrl+E / Ctrl+Shift+E | .x / .pmx に書き出し / 前回の場所に書き出す |
| Shift(ギズモで移動中) | 近くの頂点に吸着 |
| Enter・ダブルクリック / Backspace / Esc(点を置いている間) | 確定 / 1 点戻す / 取り消し |
| 右ドラッグ / 中ドラッグ / ホイール | 回転 / 平行移動 / ズーム(表示 > 視点の操作 で変えられる) |
- データは
.xの値そのまま = BVE 空間(X 右 / Y 上 / Z 進行方向、左手系、m)。 - 表面は 表から見て時計回り。三角形 a,b,c なら
Cross(b-a, c-a)が表の向き。 BveStructureStudio のisFrontFacingと同じ規約。 - WPF(右手系)への変換は
SceneRendererの中だけ。Z を反転し、三角形の頂点順も逆にして渡す (カメラも一緒に反転するので、画面上の巡回は変わらない。DirectX は画面上で時計回りが表、WPF は反時計回りが表)。
PMX(MMD)も左手系・Y 上・表は時計回りで同じ規約なので、軸や頂点順は変えずに読み書きする(three.js の MMDLoader が右手系化で Z 反転と頂点順反転を両方していることから確認)。
参考: LowPolyBuildingGen/sample_building.x は面がすべて内向きで、MeshNormals も 182 個と宣言して 172 個しか書かれていない。
開くと裏面の赤で表示され、法線は作り直される(これは正しい挙動)。
src/BveTsStructureEditor.Core UI に依存しない部分(テスト対象)
Format/ XHeader, Inflate+MsZip, XLexer(テキスト/バイナリ), XParser, XSceneReader, XTextWriter, XFile
Format/ BvexFile(作業ファイル .bvex: zip + JSON。画面の状態はアプリが決めた JSON をそのまま持つ)
Format/Pmx/ PmxReader(ボーン以降は数えて読み飛ばす), PmxWriter(静的モデル)
Model/ XScene / XMesh / XFace / XMaterial, MeshMath(法線)
Editing/ Selection, SelectionQuery, MeshOps, Chamfer, Symmetry, FaceOps(インセット・両面化・配列・分割・ループカット),
ProfileOps(耳切り三角形分割・押し出し・回転体), TrackGuides, BveCheck, BatchConvert, UvOps, Primitives, GizmoMath
Imaging/ DdsDecoder, ImageHeader(画像の大きさだけ読む), TextureEdit(射影補正・シームレス化・色調整・透過色・拡縮)
Geo/ WebMercator(タイル計算), LatLonParser(緯度経度の貼り付け)
src/BveTsStructureEditor.App WPF
Document/EditorDocument 開いているファイル・履歴(シーン丸ごとのスナップショット)・選択・書き出し
Document/ProjectState 作業ファイルに入れる画面の状態(カメラ・表示・選択・下絵・ガイド・保存設定)
Rendering/ SceneRenderer(WPF 3D 化・ピック用の対応表), ReferenceRenderer(下絵), ReferenceObjectRenderer(参考オブジェクト), GuideRenderer(線路・限界), RepeaterPreviewRenderer(Repeater で並べたプレビュー), TextureCache, TransformGizmo(形と画面上の当たり判定), ShapePreview(追加する形のゴースト)
UiState 折りたたみの開閉を %AppData%\BveTsStructureEditor\ui.json に記憶
NavigationSettings 視点の操作の方式を %AppData%\BveTsStructureEditor\navigation.json に記憶
Views/ ViewportView(+ .Gizmo.cs ドラッグ処理・頂点スナップ, .Pick.cs 点を置く操作・計測, .Dimensions.cs 寸法の表示, .Navigation.cs 視点の操作の割り当て), UvEditorView+UvCanvas, TextEditorView, EditPanel+MaterialEditorWindow, CreatePanel, CheckPanel+CheckWindow, RepeaterPanel+RepeaterWindow, ReferenceObjectPanel, SignDialog, BatchDialog, SaveOptionsPanel+SaveOptionsWindow, TextureEditorDialog+TextureImport
tests/BveTsStructureEditor.Core.Tests xUnit
tests/tools/make_zip_fixtures.py チャンクをまたぐ後方参照のある tzip を作る(zlib の zdict を使う)
読み込みはテンプレート定義を使わず、値を平らに並べてから Mesh などの意味づけをする。 テキストとバイナリで区切り記号の出方が違っても同じ処理で読めるのと、壊れ気味のファイルに強いため。
dotnet test
他の方が配布しているモデル(kodan.pmx、WallUnder_QN_25m_*.pmx、real_*.x、pmx/ 以下)は、
再配布になるのでリポジトリに入れていない。それらを使うテストは、ファイルが無ければ自動で飛ばす
(tests/BveTsStructureEditor.Core.Tests/Fixtures.cs)。手元の Fixtures フォルダーに置けばそのまま走る。
grid_*.x は自作・自動生成(tests/tools/make_zip_fixtures.py)なので入っている。
- バイナリ形式での保存(BVE 用途ではテキストで困らないため)
- アニメーション・スキンメッシュ(読み飛ばして警告に出す)
- UV の継ぎ目の自動展開(投影と切り離しで対応)