Tif to Obj Converter
- Digital100 JPY


# 地形メッシュコンバーター 使用マニュアル **GeoTIFF (DEM) → OBJ / STL Converter** このツールは、GeoTIFF形式の標高ラスターデータ(DEM。SRTMなど)を、Blender、PolyBench 3D Converter、MuJoCo、Unityなど、OBJまたはSTLを読み込める任意のツールで使える3D地形メッシュに変換します。処理はすべてブラウザ内で完結し、ファイルがサーバーにアップロードされることはありません。 インターフェースは日英バイリンガル対応です。右上の**EN / 日本語**トグルでいつでも切り替えられます。切り替えると、ラベル・選択中ファイルの表示・統計情報パネルはその場ですべて再翻訳されますが、すでに処理ログに書き込まれた行は、記録された時点の言語のまま残ります。 --- ## 1. 動作環境 - 最新のデスクトップ用ブラウザ(Chrome、Edge、Firefox、Safariなど)。 - 初回起動時のみインターネット接続が必要です(GeoTIFF解析ライブラリ `geotiff.js` をCDNから読み込むため)。また、「プレビュー」ボタンを初めて使用する際にも、3Dライブラリ `three.js` をCDNから読み込むためインターネット接続が必要です。それぞれ一度読み込まれれば、以降は追加のネットワークアクセスは不要です。 - **プレビュー**機能を使うにはWebGLに対応したブラウザが必要です(変換・ダウンロードにはWebGL対応は不要です)。 - `tif-to-obj-converter.html` をダブルクリックして直接開くか、ブラウザにドラッグ&ドロップしてください。サーバーの起動は不要です。 ## 2. 基本的な使い方 1. **ファイルを読み込む** — `.tif` / `.tiff` ファイルをドロップゾーンにドラッグ&ドロップするか、ドロップゾーンをクリックしてファイルを選択します。 2. **パラメータを設定する** — 必要に応じて「最大グリッド解像度」と「垂直誇張倍率」を調整します(多くの場合、デフォルト値のままで問題ありません。詳細は下記)。 3. **(任意)プレビュー** — 「プレビュー」をクリックすると、ファイルを生成せずにブラウザ内でその場で3D地形を確認できます。詳しくは[4章](#4-3dプレビューobjstlへの変換不要)を参照してください。 4. **「変換する」をクリック** — ラスターデータを読み込み、メッシュを生成します。処理状況はログパネルに表示されます。 5. **統計情報を確認する** — 変換完了後、頂点数・三角形数・標高範囲・出力ファイルサイズが表示されます。 6. **ダウンロードする** — 「OBJをダウンロード」または「STL(バイナリ)をダウンロード」をクリックして、結果をパソコンに保存します。 同じファイルを読み込んだまま、パラメータを変更して「変換する」や「プレビュー」を何度でもクリックできます(再読み込みは不要です)。 ## 3. パラメータの説明 ### 最大グリッド解像度(辺の最大セル数) 出力メッシュの長辺方向のグリッドセル数の上限を指定します。元のDEMは、この上限に収まるようにダウンサンプリング(間引き。平均化ではなく一定間隔でのサンプリング)されます。 - **デフォルト: 400** — 多くのSRTMタイルにおいて、精細さとファイルサイズのバランスが取れた値です。 - **値を大きくする**(800〜1000程度)と、より多くの地形の細部が保持されますが、OBJ/STLファイルは大幅に大きくなり、生成にも時間がかかります。 - **値を小さくする**(100〜200程度)と、簡易プレビューや小さいスケールで表示する用途に向いています。 - 範囲: 20〜2000。 ### 垂直誇張倍率 メッシュを生成する前に、すべての標高値に掛け合わせる倍率です。 - **1** = 実寸(高さ1単位=水平距離1単位。例: 1メートル=1メートル)。 - **2〜4** は、広範囲または比較的平坦な地形において、微妙な起伏をより分かりやすく強調したい場合によく使われる範囲です。 - 範囲: 0.1〜20。 この設定はメッシュのZ座標(高さ)のみに影響し、XY方向の範囲(フットプリント)は変化しません。 ## 4. 3Dプレビュー(OBJ/STLへの変換不要) 「プレビュー」ボタンは、「OBJやSTLを作らずに地形を見る方法はないか?」という疑問に答える機能です。ファイルを読み込んだあとであればいつでもクリックでき、先に「変換する」をクリックする必要はなく、ダウンロード可能なファイルも一切生成しません。 処理内容: - 「変換する」と同様の手順でGeoTIFFを読み込み、標高グリッドを構築したうえで、軽量な3DビューアであるThree.jsをモーダルウィンドウで開いて表示します。 - メッシュは簡易的な標高段彩(ハイプソメトリック・カラー)で彩色されます — 最も低い場所は緑、中間はタン(茶褐色)、最も高い場所はほぼ白 — ひと目で起伏がわかるようになっています。 - マウスで**ドラッグ**すると視点を回転でき、**スクロール**でズームイン・ズームアウトできます。 - 快適に操作できるよう、「最大グリッド解像度」の設定値に関わらず、プレビュー用のグリッドは自動的に最大300セルに制限されます。これはプレビュー表示にのみ影響し、その後「変換する」をクリックした際は指定した解像度がそのまま使用されます。この制限が適用された場合はログに記録されます。 - 「垂直誇張倍率」は書き出し時のメッシュと同様にプレビューにも適用されるため、変換前に見た目を確認しながら調整できます。 - プレビューを閉じるには、**×**ボタンをクリックするか、**Escキー**を押すか、モーダルの外側をクリックしてください。 本格的な変換・ダウンロードを行う前に、向き・起伏・NoDataによる不自然な箇所などを素早く確認するのに最適な方法です。 ## 5. 結果の見方 変換が成功すると、統計パネルに以下が表示されます。 | 項目 | 内容 | |---|---| | 頂点数 | ダウンサンプリング後のグリッドの行数×列数 | | 三角形数 | グリッドセル1つにつき2枚の三角形(四角形を対角線で分割) | | OBJサイズ | テキスト形式 `.obj` ファイルのサイズ | | STLサイズ | バイナリ形式 `.stl` ファイルのサイズ | | 標高範囲 | 元データにおける最小〜最大標高(垂直誇張倍率を適用後の値) | 処理ログ(黒いパネル)には、グリッドサイズ、検出された範囲、NoData値(存在する場合)、ダウンサンプリングの間引き幅、使用された座標投影方式など、各処理ステップが記録されます。変換結果に違和感がある場合はログを確認してください。 ## 6. OBJとSTL、どちらを使うべきか - **OBJ** — プレーンテキスト形式で人間にも読みやすく、汎用性が高い形式です。ファイルサイズは大きくなります。特別な理由がなければこちらがデフォルトの選択肢になります。頂点・面のリストを前提とするツール(独自パイプラインや一部のゲームエンジンなど)ではこちらが必須になる場合があります。 - **STL(バイナリ)** — コンパクトなバイナリ形式で、3Dプリントや多くのCAD/メッシュツール(Blender、MeshLab、PolyBench 3D Converterなど)の標準形式です。頂点の共有を行わず、三角形ごとに3頂点をそれぞれ個別に保持するため、ファイルサイズは頂点数ではなく三角形数に比例します。 どちらの形式も同一のメッシュを表しており、品質に差はありません。違いはファイル形式とサイズのみです。 ## 7. 座標系の扱い このツールは、GeoTIFFの座標参照系(CRS)を自動的に判定します。 - **地理座標系(度単位。例: EPSG:4326)** — バウンディングボックスが、ある程度小さい範囲に収まる妥当な経度・緯度の値に見える場合、自動的にこの形式と判定されます。この場合、タイルの中心を基準とした簡易的な正距円筒図法(プレートキャリー図法)により、実距離(メートル)に近似投影されます。したがって、出力メッシュにおけるグリッド単位1はおおよそ1メートルに相当します。 - **投影座標系(すでにメートルなどの線形単位)** — 追加の変換を行わず、そのままの単位を使用します。 これは単一のDEMタイルを対象とした簡易的なローカル近似であり、本格的な測地系変換ライブラリの代替にはなりません。範囲が非常に広い場合や高緯度地域では、精度が低下する点に注意してください。 ## 8. NoData値の扱い GeoTIFFにNoData値が指定されている場合(GDALメタデータから読み取り)、該当するセルは欠損値として扱われ、ラスター内で見つかった有効な標高の最小値で埋められます。これにより、NoDataピクセルの箇所にメッシュの穴やスパイク(突起)が生じるのを防ぎます。ただし、これは単純な埋め処理であり、補間ではありません。NoData領域が広いDEMを扱う場合は、変換前にGDALなどで前処理しておくことをおすすめします。 ## 9. 使用上のヒントと制限事項 - **大きなファイル**: 解像度が非常に高い元データ(フル解像度のSRTMタイルなど)は、読み込みに時間がかかり、ブラウザのメモリを大きく消費する場合があります。変換が遅い、またはブラウザが応答しなくなる場合は、まず「最大グリッド解像度」を下げてください。 - **単一の標高バンドのみ対応**: 最初のラスターバンドのみを読み込みます。マルチバンドのGeoTIFF(RGB画像など)は入力として意味を持ちません。 - **平滑化なし**: ダウンサンプリングは平均化ではなく、一定間隔(stride)でのサンプリングによって行われます。低解像度でより滑らかな結果が必要な場合は、読み込む前にGDALなどで元のDEMを事前にリサンプリングしてください。 - **すべてローカル処理**: アップロード処理が一切ないため、機密性の高い、あるいは公開前の標高データも安全に変換できます。 - **再変換について**: パラメータを変更して再度「変換する」をクリックすると、最初に読み込んだファイルからメッシュ全体を再生成します。前回の変換結果を元に処理するわけではありません。 - **プレビューと書き出しの解像度は別物**: 3Dプレビューは「最大グリッド解像度」の設定に関わらず最大300セルに制限されます。これは表示上の都合であり、ダウンロードするOBJ/STLの内容には一切影響しません。 ## 10. トラブルシューティング | 症状 | 想定される原因・対処法 | |---|---| | ログに「Error: ...」と表示される | 標高バンドを含む有効なGeoTIFFかどうかを確認してください。破損したファイルや未対応の圧縮形式の場合、`geotiff.js` がエラーを投げることがあります。 | | メッシュが平坦で起伏がない | 垂直誇張倍率を上げてみてください。また、元データが実際に標高値を含んでいるか(分類済み・カテゴリカルなラスターではないか)を確認してください。 | | 変換が遅い/タブが固まる | 大きな元データを変換する前に、最大グリッド解像度を下げてください。 | | ダウンロードボタンが押せないまま | 変換が完了していません。ログにエラーメッセージが出ていないか確認してください。 | | 「変換する」ボタンが押せない | まだファイルが読み込まれていません。先に `.tif` ファイルを選択またはドロップしてください。 | | 「Failed to load three.js from CDN」と表示される | 「プレビュー」を初めてクリックした時点でインターネットに接続されていませんでした。接続を確認し、もう一度「プレビュー」をクリックしてください。「変換する」とダウンロードにはこのライブラリは不要です。 | | プレビューで「このブラウザではWebGLが利用できないため、3Dプレビューを表示できません。」と表示される | お使いのブラウザまたは端末がWebGLに対応していないか、無効化されています。別のブラウザを試すか、「変換する」+ダウンロードでファイルを書き出し、BlenderなどのデスクトップツールでOBJ/STLを開いて確認してください。 |

