LRTKレフィクシア株式会社

点群OBJアップロードで三角形化が崩れるときの5つの変換設定

三角形化が崩れる原因を先に整理する

点群OBJアップロード後に、地表面の一部が折れ曲がる、細長い三角形が放射状に伸びる、穴の周囲が勝手にふさがる、裏面だけが表示されるといった問題が起きることがあります。こうした現象は、単純にアップロード先の表示不具合とは限りません。点群から面を生成する段階、ポリゴンを三角形へ分割する段階、OBJとして書き出す段階、アップロード先が読み込む段階のいずれかで、形状の解釈が変わっている可能性があります。 最初に理解しておきたいのは、点群とOBJが同じ種類のデータではないことです。点群は、空間上の多数の点によって対象物の形状を表します。一方、OBJは、頂点と面の接続関係を記録できる形状形式です。点群をそのままOBJへ保存しただけでは面が存在しない場合があり、三角形化の問題を検討するには、どの工程で面が作られたかを確認しなければなりません。点群処理側で表面再構成を行ったのか、変換時に自動で面を生成したのか、アップロード先が独自に三角形化したのかによって、対策が変わります。 OBJでは、三角形だけでなく四角形や多角形の面を記録できる場合があります。しかし、表示や変換の内部処理では、最終的に三角形へ分割されることが一般的です。このとき、多角形が完全な平面でない、輪郭が凹んでいる、自己交差している、頂点順序が乱れていると、分割結果が処理環境ごとに変わります。作成側では正常に見えていても、アップロード後に別の対角線で分割され、面が反転したように見えることがあります。 また、点群由来のメッシュには、ほぼ同じ位置に重複した頂点、非常に短い辺、細長すぎる三角形、開いた境界、孤立面、非多様体形状などが含まれやすい傾向があります。これらは書き出し時には残っていても、アップロード時の自動修復や最適化によって統合、削除、再分割されることがあります。その結果、穴が広がったり、隣接していない面同士がつながったりします。 したがって、点群OBJアップロードで三角形化が崩れたときは、表示だけを調整するのではなく、変換条件を固定して再現性を高めることが重要です。特に、三角形化のタイミング、頂点結合の許容値、法線と面の向き、座標と数値精度、簡略化と修復の順序という五つの設定は、形状崩れに直結しやすい要素です。以下では、それぞれの設定を実務で確認できるように整理します。

変換設定1:三角形化の実行タイミングを固定する

第一の設定は、三角形化をどの工程で実行するかを固定することです。変換元に四角形や多角形が残ったままOBJを書き出すと、アップロード先が独自の規則で三角形へ分割する可能性があります。同じ輪郭を持つ面でも、どの頂点同士を対角線で結ぶかによって、面の傾きや陰影が変わります。特に、地形のように一つの面の頂点が完全な同一平面上にない場合、対角線の選び方によって見た目の差が大きくなります。 安定した結果を得るには、アップロード前の変換工程で三角形化を完了させ、OBJ内のすべての面を三頂点で構成する方法が有効です。これにより、アップロード先が面を再分割する余地を減らせます。ただし、単に自動三角形化を有効にするだけでは不十分です。凹形状の多角形や自己交差した輪郭がある場合は、三角形化前に面を修復しなければ、細長い三角形や面の飛び出しが発生します。 三角形化の方式を選べる場合は、辺の長さだけで判断する方式よりも、面の形状や法線変化を考慮する方式が地形や構造物に向くことがあります。一方で、規則的な格子状データでは、対角線の向きを一定に固定したほうが再現性を確保しやすい場合があります。重要なのは、案件ごとに自動判断へ任せるのではなく、対象形状に応じた方式を決め、その設定を繰り返し使うことです。 三角形化後は、極端に細長い三角形が増えていないかを確認します。細長い三角形は、表示時の陰影が不安定になりやすく、簡略化処理でも消えやすい要素です。境界線に沿って必要な頂点が並んでいる場合、無理に均等な三角形へ変えようとすると、境界形状が崩れることがあります。そのため、外周、段差、角部、穴の輪郭など、形状を保持すべき線を制約として扱える設定がある場合は有効にします。 点群から直接メッシュを生成する場合も、表面再構成と三角形化を別の工程として考える必要があります。まず点群から妥当な近傍関係を推定し、その後に面を作り、最後に三角形の品質を整える流れが基本です。点の密度が不均一な状態で一度に面生成まで行うと、密な領域では細かすぎる面が増え、疎な領域では大きな三角形が空間をまたいでしまいます。三角形化の前に点密度を調整し、孤立点を除去しておくと、変換結果が安定しやすくなります。 また、三角形化を二重に行わないことも大切です。変換元で一度三角形化した後、別工程で再メッシュ化を実行すると、元の辺構成が破棄される場合があります。アップロード直前のOBJがどの時点のデータか分からなくなると、原因追跡が難しくなります。工程名や出力ファイル名に三角形化済みであることを記録し、同じデータへ重複処理をかけない運用が有効です。

変換設定2:頂点結合の許容値を小さく管理する

第二の設定は、重複頂点を結合する距離の許容値です。点群から作成したメッシュには、同じ位置または非常に近い位置に複数の頂点が存在することがあります。頂点結合は、ファイル容量の削減や隙間の解消に役立ちますが、許容値が大きすぎると、本来は別々に保持すべき頂点まで一つにまとめられます。その結果、薄い部材がつぶれる、近接する面が接続される、穴が閉じる、段差が丸まるといった形状崩れが発生します。 頂点結合の許容値は、対象物の最小形状と点間隔の両方を基準に決めます。例えば、数センチメートルの段差を保持したいデータで、それに近い距離を結合許容値へ設定すると、段差の上下が一体化するおそれがあります。反対に、許容値が小さすぎると、見かけ上は同じ位置にある頂点が分離したまま残り、面同士の境界に微細な隙間が生じます。重要なのは、最大限に結合することではなく、意図しない接続を起こさない範囲で必要最小限に設定することです。 実務では、最初から本番データ全体へ適用するのではなく、段差、薄板、狭い隙間、穴、角部を含む小さな範囲で試験します。許容値を段階的に変え、頂点数、面数、境界数、穴の数がどのように変化するかを確認します。頂点数が急激に減る設定では、必要な形状も統合されている可能性があります。処理前後の数値だけでなく、断面表示で高さ関係を確認することが重要です。 座標値が大きいデータでは、浮動小数点の丸め誤差により、意図せず近接頂点と判定される場合があります。現場座標をそのまま保持したOBJでは、原点から遠い位置に大きな値が並ぶため、小さな差分の表現精度が低下することがあります。この状態で頂点結合を行うと、設定値どおりに比較できない可能性があります。必要に応じて、一時的にローカル原点へ移動してから結合や三角形化を行い、変換記録に移動量を残します。 頂点結合と境界保護を同時に設定できる場合は、外周や穴の輪郭を優先して保持します。地形メッシュでは、隣接タイルの境界頂点を不用意に動かすと、タイル間に段差や隙間が生じます。複数ファイルに分割してアップロードする場合は、各ファイルを個別に最適化するのではなく、共有境界の座標をそろえた状態で処理する必要があります。片方のタイルだけが異なる許容値で結合されると、境界の頂点数が一致しなくなります。 重複頂点の除去と、近接頂点の結合は分けて考えることも有効です。完全に同一座標の頂点だけを統合する処理は、形状への影響が比較的小さい一方、一定距離内の頂点をまとめる処理は形状を変える可能性があります。まず同一座標の重複を除去し、その後、必要な場合だけ小さな許容値で近接結合を行うと、問題が起きた工程を切り分けやすくなります。

変換設定3:法線と面の向きを統一する

第三の設定は、法線と面の向きです。三角形の各面には表裏があり、頂点の並び順によって面の正面方向が決まります。変換途中で頂点順序が反転した面が混ざると、アップロード後に一部の面だけ消えたり、裏側から見たときだけ表示されたりします。これは三角形そのものが失われたのではなく、裏面を表示しない設定によって見えなくなっている場合があります。 点群から面を生成するときは、点ごとの法線推定が不安定になりやすい点に注意が必要です。近傍点の選び方が不適切だと、隣接する点で法線方向がばらばらになり、面の向きも局所的に反転します。地表面のように上方向が明確な対象では、基準方向を指定して法線をそろえる方法が有効です。壁、天井、配管、樹木など複雑な形状では、単純に上向きへ統一できないため、連続面の接続関係をたどって向きを伝播させる必要があります。 OBJには頂点位置だけでなく、法線情報を含めることができます。しかし、書き出し元の法線と面の頂点順序が矛盾していると、読み込み側がどちらを優先するかによって表示が変わります。そのため、書き出し前に面向きを統一し、その面から法線を再計算しておくほうが安全です。元データの法線をそのまま残す必要がある場合でも、反転面がないことを確認してから出力します。 法線の再計算では、平滑化の角度にも注意が必要です。角度を広く取りすぎると、本来は鋭角である構造物の角が滑らかにつながり、形状が丸く見えます。逆に、角度を狭くしすぎると、地表面の連続した傾斜に不要な折れ目が生じます。三角形化が崩れたように見えても、実際には形状ではなく陰影だけが不自然になっている場合があります。ワイヤー表示や辺表示で三角形の輪郭を確認し、面構成の問題と法線表示の問題を分けることが大切です。 非多様体形状も面向きの統一を難しくします。一つの辺を三枚以上の面が共有している、面が一点だけで接触している、内部に重複面があるといった状態では、どちらが外側かを一意に決められない場合があります。自動で法線をそろえる前に、重複面、内部面、孤立面を除去し、連続した外殻として解釈できる状態へ整えます。 アップロード先で両面表示が可能な場合、問題の切り分けとして一時的に有効にする方法はあります。ただし、両面表示だけで公開データを成立させると、面向きの不整合が残ったままになります。陰影、断面、体積計算、衝突判定などで別の問題が生じる可能性があるため、最終的には法線と面向きを修正したOBJへ差し替えることが望ましいです。

変換設定4:座標系・単位・数値精度をそろえる

第四の設定は、座標系、単位、原点位置、数値精度をそろえることです。OBJは頂点座標を数値として保持しますが、単位や座標参照系を厳密に固定する仕組みが一般的な運用で十分に共有されないことがあります。そのため、書き出し側ではメートルを想定し、読み込み側では別の単位として扱うと、形状が極端に拡大または縮小します。三角形の接続関係が同じでも、拡大縮小後の許容値処理によって頂点統合や微小面削除の判定が変わり、結果として三角形化が崩れる場合があります。 特に注意したいのが、原点から非常に遠い大きな座標値です。現場座標を保持したままOBJへ変換すると、頂点座標の整数部が大きくなります。数値の保存桁数が限られている場合、小数部の細かな差が失われ、近接する頂点が同じ座標へ丸められることがあります。すると、三角形の二つ以上の頂点が重なり、面積がほぼゼロの三角形になります。こうした退化三角形は、アップロード時に削除され、穴や欠けとして現れます。 対策としては、形状処理を行う前に対象範囲の近くへローカル原点を設定し、座標値を小さくします。元の位置へ戻す必要がある場合は、原点移動量、回転、縮尺を記録し、再配置できるようにします。重要なのは、見た目だけを原点近くへ移動するのではなく、実際に出力される頂点座標を確認することです。表示上の変換と、ファイル内の座標変換が分かれている処理環境では、画面上では原点付近でもOBJには大きな座標が残る場合があります。 書き出し時の小数桁数も確認します。桁数を減らしすぎると、平坦な面では問題が見えなくても、微細な起伏や薄い形状が失われます。反対に、必要以上の桁数を残しても、読み込み側の内部精度が低ければ効果はありません。対象物の最小寸法、要求精度、座標値の大きさを踏まえ、十分な有効桁を確保します。変換前後で代表点の座標差を比較すると、丸めによる変形を把握しやすくなります。 軸方向の違いにも注意が必要です。上方向として扱う軸が変換元とアップロード先で異なると、モデルが横倒しになるだけでなく、法線方向や面の表裏判定にも影響することがあります。軸変換を複数工程で重ねると、回転が二重に適用される可能性があります。座標変換は一度だけ実行し、どの軸を上方向としたかを記録します。 単位変換と頂点結合、微小面削除の順序も重要です。例えば、縮小してから一定値以下の辺を削除すると、元の寸法では必要だった辺まで微小と判定されることがあります。先に単位を確定し、その単位を前提として許容値や最小面積を設定する必要があります。点群OBJアップロードで形状が急に粗くなった場合は、三角形化設定だけでなく、単位変換後に適用された自動最適化のしきい値を確認します。

変換設定5:簡略化とメッシュ修復の順序を見直す

第五の設定は、ポリゴン簡略化とメッシュ修復を行う順序です。容量を減らすために面数を削減する処理は有効ですが、修復前の不安定なメッシュへ適用すると、欠陥を拡大することがあります。例えば、小さな穴の周囲に重複頂点や反転面がある状態で簡略化すると、穴の境界が不正な形で統合され、大きな欠けへ変わる場合があります。 基本的には、最初に明らかな異常を除去し、次に面向きと接続関係を整え、その後に簡略化を行います。孤立頂点、孤立面、完全重複面、面積がほぼゼロの三角形は、早い段階で除去します。次に、意図しない穴や非多様体辺を確認し、必要な範囲だけ修復します。そのうえで三角形化を確定し、最後に簡略化と法線再計算を行う流れが安定しやすいです。 ただし、すべての穴を自動で閉じる設定は避けたほうが安全です。点群には、計測できなかった部分だけでなく、開口部、配管内部、窓、構造物の隙間など、本来開いている形状が含まれます。穴の最大径や境界長を設定できる場合は、ノイズによる微小な穴だけを対象にします。大きな穴を一括で閉じると、存在しない面が生成され、アップロード後に地形が盛り上がったように見えることがあります。 簡略化では、面数の削減率だけを目標にしないことが重要です。同じ削減率でも、平坦部を優先して削減する方式と、全体を均一に削減する方式では、境界や角部の残り方が異なります。地形では標高差や傾斜変化、構造物では角、端部、穴、接合部を保持する設定を優先します。テクスチャ座標や頂点属性を利用する場合は、それらを保持する設定も確認します。属性の境界で頂点が分割されている場合、簡略化によって継ぎ目がずれることがあります。 再メッシュ化は、三角形の形状品質を整える手段ですが、元の計測形状を変える処理でもあります。均一な辺長へそろえる設定を強くしすぎると、点密度の高い重要箇所が粗くなり、逆に不要な平坦部へ面が増えることがあります。再メッシュ化を使う場合は、対象の最小形状を保持できる辺長を設定し、処理前後の断面差を確認します。 アップロード先が自動で面数削減や修復を行う場合、書き出し側で同じ処理を重ねると、想定以上に形状が変わることがあります。可能であれば、まず簡略化していない三角形化済みOBJでアップロード試験を行い、表示が正常であることを確認します。その後、削減率を少しずつ上げて許容できる範囲を探します。最初から最大限に軽量化すると、どの設定で崩れたかを特定できません。

点群OBJアップロード前の確認手順

五つの設定を見直した後は、アップロード前の確認を一定の順序で行います。最初に、変換対象が点だけのデータなのか、面を持つメッシュなのかを確認します。OBJを開いたときに頂点しか存在しない場合、三角形化の問題ではなく、そもそも面生成が完了していません。点群から表面を作る工程へ戻り、点密度、ノイズ、法線推定、穴の扱いを見直します。 次に、すべての面が三角形で構成されているかを確認します。四角形や多角形が残っている場合は、アップロード先で再分割される可能性があります。三角形化後の面数が想定どおり増えているか、凹形状の面が残っていないかを確認します。面数だけでなく、極端に長い辺や細長い三角形がないかも確認します。 続いて、重複頂点、重複面、退化三角形、孤立要素を検査します。退化三角形は、三頂点のうち二点が同じ位置にある、または三点がほぼ一直線に並んでいる面です。画面上では見つけにくいものの、アップロード時の検証で削除されやすく、周辺面の再構成を誘発することがあります。検出した場合は、周囲の接続を確認してから削除または再作成します。 その後、法線と面向きを確認します。外側から見たときに面が一貫して表示されるか、陰影だけが反転している箇所がないかを見ます。ワイヤー表示と陰影表示を切り替え、面構成と表示上の法線問題を区別します。両面表示にしなければ見えない面がある場合は、その面の頂点順序を修正します。 座標については、代表点を数点選び、変換前後で位置と距離を比較します。モデル全体の幅、高さ、奥行きが想定単位と一致しているかを確認し、原点からの距離が過大でないかを見ます。ローカル原点へ移動した場合は、移動量を別途記録します。複数のOBJを重ねる場合は、すべて同じ原点、単位、軸方向で出力します。 最後に、アップロード用ファイルを別の確認環境で開きます。変換作業中の表示は、一時キャッシュや内部データを参照している可能性があるため、実際に書き出されたOBJを新規に読み込み直すことが重要です。新規読み込みで正常に見えるなら、書き出しは概ね成功しています。そこで崩れる場合は、アップロード先ではなく変換工程に原因がある可能性が高いと判断できます。

症状別に原因を切り分ける方法

点群OBJアップロード後の見え方から、原因候補をある程度絞り込めます。一部の面だけが消える場合は、面向きの反転、退化三角形の削除、微小面の自動除去を疑います。視点を反対側へ回すと見える場合は、面向きの問題である可能性が高まります。どの角度からも見えず、ワイヤー表示でも辺がない場合は、アップロード時に面自体が除去された可能性があります。 地表面から鋭い三角形が遠くへ伸びる場合は、孤立点や誤った頂点接続が考えられます。点群中に外れ値が残っていると、その点を含む大きな三角形が生成されることがあります。また、頂点番号の対応が変換途中で崩れている場合も、離れた位置の頂点同士が一つの面として結ばれます。再変換前に孤立点を除去し、面の頂点参照が正しいかを検査します。 穴の周囲が不自然にふさがる場合は、自動穴埋めの最大範囲が広すぎるか、頂点結合の許容値が大きすぎる可能性があります。開口部の両側が近接していると、頂点結合によって輪郭がつながり、その後の穴埋めで全面が閉じられます。穴埋めを無効にした試験データと比較すると、原因を切り分けやすくなります。 モデル全体に波打つような陰影が出る場合は、三角形化の対角線方向、法線の平滑化、非平面四角形の再分割を確認します。ワイヤー表示で形状が正常なら、法線再計算で改善する可能性があります。ワイヤー表示でも稜線が不規則なら、三角形化方式や再メッシュ化の設定を見直します。 アップロード後だけ角部が丸くなる場合は、簡略化で境界保護が無効になっているか、法線の平滑化角度が広すぎる可能性があります。形状の辺が実際に減っているのか、陰影だけが滑らかになっているのかを確認します。前者であれば簡略化設定、後者であれば法線設定が主な対象です。 モデルが極端に小さくなり、細部が消える場合は、単位変換と微小面削除の組み合わせを疑います。縮尺が変わった後に最小辺長や最小面積のしきい値が適用されると、多数の面が削除されます。アップロード前後の外形寸法を比較し、想定単位になっているかを確認します。

再変換を減らす運用ルール

三角形化の問題は、担当者ごとに設定が異なると再発しやすくなります。安定した点群OBJアップロードを続けるには、変換設定を個人の経験だけに依存させず、案件共通の手順として残すことが重要です。少なくとも、入力点群の単位、座標系、ローカル原点、点密度調整、面生成方式、三角形化方式、頂点結合の許容値、穴埋め範囲、簡略化率、法線再計算条件を記録します。 設定名だけでなく、なぜその値を選んだかも残します。例えば、最小保持寸法より十分に小さい値を頂点結合の許容値にした、隣接タイルの境界を守るため境界保護を有効にした、といった判断理由があると、別案件へ流用するときに調整しやすくなります。数値だけをコピーすると、点密度や対象寸法が違うデータで過剰な処理になる可能性があります。 変換工程ごとに中間ファイルを残す方法も有効です。点群整理後、面生成後、修復後、三角形化後、簡略化後という段階ごとに保存しておけば、最終OBJで崩れた際に一つ前の状態へ戻れます。すべてを上書きすると、原因を確認するために最初から処理し直さなければなりません。中間ファイルの名称には、工程と版を分かる形で含めます。 検証用の代表データを用意することも役立ちます。平坦部だけでなく、段差、斜面、薄い形状、穴、狭い隙間、タイル境界など、崩れやすい形状を含む小規模データを使い、設定変更時に毎回アップロード試験を行います。大容量の本番データで試すより短時間で結果を比較でき、設定差の影響を把握しやすくなります。 アップロード結果を確認するときは、正常か異常かだけで判断せず、面数、頂点数、外形寸法、境界数、穴の数など、比較できる項目を決めます。アップロード先で数値を確認できない場合でも、変換前の検査結果と画面上の代表位置を記録しておくと、差分を追いやすくなります。特に、形状の崩れが小さい場合は、全体表示だけでは見落とすため、重点確認箇所を固定します。 また、軽量化版と保存版を分ける運用も有効です。保存版では必要な精度と形状を保持し、軽量化版はアップロードや共有の目的に合わせて作成します。軽量化版だけを残すと、削減しすぎた箇所を後から復元できません。元の点群、修復済み高精細メッシュ、アップロード用OBJの関係を明確にしておくことで、用途が変わった際にも再処理しやすくなります。

まとめ

点群OBJアップロードで三角形化が崩れるときは、アップロード先の表示設定だけを疑うのではなく、点群から面を生成し、OBJとして書き出すまでの変換工程を順に確認する必要があります。点群とメッシュは異なるデータであり、どの段階で面が作られ、どの段階で三角形へ分割されたかを把握することが出発点です。 対策の中心となるのは、三角形化をアップロード前に確定すること、頂点結合の許容値を必要最小限にすること、法線と面向きを統一すること、座標系と単位と数値精度をそろえること、簡略化とメッシュ修復の順序を適切にすることです。これらを一度に変更すると原因が分からなくなるため、代表範囲を使って一項目ずつ比較し、正常な設定を固定します。 また、三角形が消える、伸びる、穴が閉じる、角が丸くなるといった症状には、それぞれ異なる原因があります。ワイヤー表示、両面表示、外形寸法、代表点座標などを確認し、形状の問題と陰影の問題を分けることで、不要な再変換を減らせます。最終的なOBJは、変換作業中の画面だけで判断せず、新規に読み込み直してからアップロードすることが重要です。 現場で取得する点群の品質が安定すると、その後の面生成や三角形化も管理しやすくなります。取得時に不要物や外れ点を減らし、必要な範囲を適切な密度で記録できれば、変換時の過度な穴埋めや簡略化を避けられます。点群の取得から確認、共有までを一連の流れとして整えたい場合は、LRTK Phoneを活用し、現場段階から後工程を意識した点群データを準備することが、安定した点群OBJアップロードにつながります。

現場を3Dで残して、あとから測る。
実際の画面と動画で使い方を確認できます。

LRTK Phoneの使い方・実例を見る
資料請求導入相談
現場をスマホで3DスキャンLRTK Phone実例を見る