STL splitter

3Dプリンタのビルドプレートに収まらない大きなモデルを、接着しやすいジグザグ形状の切断面で分割するブラウザベースのツールです。
アプリケーションリンク
https://stl-splitter.pages.dev
特徴
- STLファイルの読み込みと3D表示 — ドラッグ&ドロップまたはファイル選択でバイナリ・ASCII両形式に対応
- インタラクティブな切断面操作 — 位置・X回転・Y回転をスライダーでリアルタイム調整
- ジグザグ接合面 — 三角波形状の切断面を生成し、接着時の位置決めと強度を向上
- 水密メッシュ出力 — 適合細分化とT字接合部除去により、スライサーでエラーの出ない閉じたソリッドを生成
- iPhone / iPad対応 — タッチ操作(1本指回転・ピンチズーム・2本指パン)とモバイルレイアウト
- 単一HTMLファイル — インストール不要。ブラウザで開くだけで動作(Three.jsはCDNから読み込み)
使い方
1. STLファイルを開く
ヘッダーの「📂 開く」ボタンからファイルを選択するか、3Dビューポートにドラッグ&ドロップします。
読み込みが完了すると、モデルが青色で表示され、右側(モバイルでは下部)に設定パネルが現れます。
2. 切断面を調整する
設定パネルの「✂️ 切断面の設定」セクションで3つのスライダーを操作します。
| スライダー | 機能 |
|---|---|
| 位置 | 切断面をモデル中心からの距離で前後に移動(mm単位) |
| X回転 | 切断面をX軸まわりに傾ける(-90°〜+90°) |
| Y回転 | 切断面をY軸まわりに傾ける(-90°〜+90°) |
緑色の半透明プレーンがリアルタイムでプレビュー表示されます。「切断面を表示」チェックボックスで表示/非表示を切り替えられます。
3. 接合部の形状を選ぶ
「🔗 接合部の形状」セクションで2つのモードを選択できます。
フラット
通常の平面カット。単純な分割に適しています。
ジグザグ(推奨)
三角波形状の凹凸を切断面に生成します。2つのパラメータで形状を調整できます。
| パラメータ | 説明 |
|---|---|
| 高さ | ジグザグの山の高さ(mm)。大きいほど噛み合わせが深くなる |
| 幅 | ジグザグの1周期の幅(mm)。小さいほど細かい歯になる |
ジグザグの利点:
- パーツ同士がV字型の歯で噛み合うため、接着時に位置がずれにくい
- 接着面積が平面カットより大きく、接合強度が向上
- 接着剤が歯の谷に溜まり、保持力が増す
4. ビュー操作
3Dビューポートでモデルを自由に回転・移動・ズームできます。
| 操作 | PC(マウス) | iPhone/iPad(タッチ) |
|---|---|---|
| 回転 | 左ドラッグ | 1本指ドラッグ |
| 移動(パン) | 右ドラッグ | 2本指ドラッグ |
| ズーム | スクロールホイール | ピンチイン/アウト |
ビューポート右上のボタンで定型ビューに切り替え可能です。
| ボタン | カメラ位置 |
|---|---|
| 正面 | Z軸方向から正面を見る |
| 背面 | Z軸方向から背面を見る |
| 天面 | Y軸方向から上面を見る |
| 底面 | Y軸方向から底面を見る |
| 右側 | X軸方向から右側面を見る |
| 左側 | X軸方向から左側面を見る |
5. 分割を実行する
「⚡ 実行」セクションの「分割する」ボタンを押します。
分割が完了すると、パーツAが青色、パーツBがオレンジ色で表示されます。2つのパーツは切断面に対して垂直方向に離れて表示されるため、断面の形状を確認できます。
6. 分割結果をダウンロードする
「📥 パーツA」「📥 パーツB」のリンクをクリックしてSTLファイルをダウンロードします。
ファイル名は元のファイル名に _A / _B が付加されます(例:model_A.stl, model_B.stl)。
「← 元のモデルに戻る」ボタンで分割前の状態に戻り、設定を変えて再分割できます。
技術仕様
切断アルゴリズム
分割エンジンは以下のパイプラインで処理を行います。
1. 頂点プール(Vertex Pool)
空間ハッシュを用いた頂点管理システム。epsilon(0.00001mm)以内の頂点を自動的に同一頂点としてマージし、浮動小数点誤差によるメッシュ不整合を防止します。3×3×3近傍を検索するため、ハッシュセル境界を跨ぐケースにも対応します。
2. メッシュ細分化(ジグザグモードのみ)
Phase 1: 適応的細分化
切断面付近の三角形をジグザグ周期の1/8以下のサイズに分割します。切断面からの距離が amplitude × 5 以内の三角形が対象です。
Phase 2: 適合細分化(Conforming Refinement)
Phase 1で生じたT字接合部(隣接三角形との共有辺に中点が存在するが、自分の辺にはない状態)を解消します。全頂点を空間ハッシュに登録し、各三角形の辺の中点が既存頂点に存在するかを確認。存在する場合、その三角形を2分割または4分割して頂点を共有させます。変更がなくなるまで最大20回反復します。
3. 三角形–曲面交差判定
各三角形の3頂点について符号付き距離を計算し、切断面の両側に頂点がある三角形を検出。辺と曲面の交点を線形補間で求め、1つの三角形を1+2個の三角形に分割します。コプレナ三角形(全頂点が曲面上)は明示的にpartAに割り当てます。
4. 境界ループ構築
切断で生じたエッジを隣接リストで管理し、使用済みフラグ付きのトレースで閉じた境界ループを検出します。
5. キャップ(蓋)生成
フラットモード: 境界ループを切断面法線に垂直な2D座標系に投影し、イヤークリッピング法で三角形分割します。
ジグザグモード: 境界ループの重心をジグザグ曲面上に配置し、各境界辺と重心を結ぶファン三角形を生成します。境界辺は一切分割しないため、キャップの全辺が本体メッシュの切断辺と正確に一致し、水密なメッシュが保証されます。
6. メッシュクリーンアップ
- 退化三角形(同一頂点を持つ、または面積が極小の三角形)を除去
- 同一巻き方向の重複三角形を除去(反対面は保持)
- 法線方向を切断面法線との内積で検証・修正
対応ファイル形式
| 形式 | 入力 | 出力 |
|---|---|---|
| STL バイナリ | ✅ | ✅ |
| STL ASCII | ✅ | — |
動作要件
- モダンブラウザ(Chrome, Safari, Edge, Firefox)
- Three.js r128(CDNから自動読み込み、初回はインターネット接続が必要)
- ローカルファイルとして開く場合、追加のサーバーは不要
既知の制限事項
- 非常に大きなSTLファイル(100万三角形以上)ではブラウザのメモリ制限に達する可能性があります
- ジグザグモードではメッシュ細分化により三角形数が増加するため、複雑なモデルでは処理に時間がかかります
- 1回の操作で2分割のみ対応。3分割以上は分割結果を再度読み込んで繰り返してください
- 穴やオープンエッジを含む非水密な入力メッシュでは、分割結果も非水密になる場合があります
トラブルシューティング
| 症状 | 対処法 |
|---|---|
| モデルが表示されない | ファイルが正しいSTL形式か確認。ASCII/バイナリ両対応 |
| 分割が遅い | ジグザグの幅を大きくすると細分化の量が減り、高速化します |
| 分割面に穴がある | ジグザグの高さと幅のバランスを調整してください |
| iPhoneでダウンロードできない | Claudeのプレビュー画面ではなく、HTMLファイルをSafariで直接開いてください |
| スライサーでエラーが出る | 入力STLが水密(manifold)であることを確認してください |





