LRTKレフィクシア株式会社

点群OBJアップロードで非多様体エラーを防ぐ5つの修復手順

点群OBJで非多様体エラーが起きる理由

点群から生成したOBJをクラウド型の三次元データ管理環境や点群ビューアへアップロードすると、非多様体、形状不正、メッシュ解析失敗などのエラーが表示されることがあります。元の点群は問題なく表示できていても、点を三角形などの面でつなぎ、OBJへ変換する過程で接続関係や幾何形状の不整合が生じると、アップロード先で正常に処理できない場合があります。

非多様体とは、メッシュの局所的な接続関係が、連続した一枚の面として扱えない状態を指します。閉じた二次元表面の通常部分では、一本のエッジを二枚の面が共有します。外周を持つ開いた表面では、境界エッジに一枚の面だけが接続していても、それだけで非多様体とは限りません。一方、一本のエッジへ三枚以上の面が接続している場合や、一つの頂点の周囲に互いにつながらない面のまとまりが複数存在する場合は、代表的な非多様体形状です。

面の向きの不統一、自己交差、縮退面、穴は、厳密には非多様体とは別の不具合として扱われることがあります。ただし、アップロード先によっては複数の形状不良をまとめて非多様体エラーやメッシュ不正として表示する場合があります。そのため、エラー名だけで原因を決めつけず、接続関係と幾何形状の両方を確認する必要があります。

点群から作られるメッシュは、設計段階で作成された規則的な三次元モデルとは異なります。実測点には、反射ノイズ、欠測、移動体、植生、重複計測範囲などが含まれるため、表面生成の条件によって細長い三角形、重複面、穴、内部面が生じることがあります。現場を複数回に分けて計測し、それぞれの点群から作ったメッシュを結合した場合には、境界部分で面が重なったり、わずかな隙間が発生したりすることもあります。

OBJは、頂点、面を構成する頂点の参照、テクスチャ座標、法線、オブジェクトやグループなどを記録できる形式です。OBJ自体が常に閉じた立体を要求するわけではありません。地表面のように外周が開いたモデルも保存できます。ただし、アップロード先で体積計算、閉鎖性の検査、簡略化、交差判定などが行われる場合は、表示だけを行う環境よりも厳しい形状条件が求められることがあります。

そのため、ある環境では表示できたOBJが、別の環境では非多様体または形状不正として扱われることがあります。これは必ずしも片方の環境が間違っているという意味ではなく、読み込み後に実行する処理や許容する形状条件が異なるためです。アップロード前には、利用する機能が単純表示なのか、距離や断面の確認なのか、閉じた形状を前提とする体積計算なのかを整理し、目的に合う形状へ修復します。

非多様体エラーを解消するときに注意したいのは、検出された箇所を機械的に削除しないことです。点群データには、薄い壁、鋭い稜線、狭い隙間、地表面の端など、処理条件によって不正と判定されやすい複雑な形状が含まれることがあります。必要な形状まで削除すると、アップロードは成功しても、現場の状態を適切に表さないデータになるおそれがあります。

修復は、重複、境界、接続関係、面の向き、交差という順番で進めると原因を切り分けやすくなります。最初から形状全体を自動再構成すると、どの部分が変わったのか把握しにくくなります。小さな処理単位で保存し、修復前後を比較することが重要です。

修復前に確認するデータの状態

修復作業を始める前に、取得直後の点群、表面生成直後のメッシュ、書き出したOBJ、修復後のOBJを別々に保存します。修復用データを原本へ上書きすると、面の削除や頂点統合によって必要な形状が失われたときに、元へ戻せなくなる可能性があります。

ファイル名には、対象現場、計測日、処理段階、座標系、単位などを識別できる情報を含めます。原本、ノイズ除去後、メッシュ生成後、修復後、アップロード用といった状態を区別できれば、誤った版を送信するリスクを抑えられます。同じ名前のファイルを繰り返し上書きする運用では、どの条件で正常に処理できたのかを後から確認しにくくなります。

修復前には、頂点数、面数、オブジェクト数、連結成分数、境界エッジ数、非多様体エッジ数など、使用する編集環境で取得できる情報を記録します。処理後にこれらの数値を比較すれば、修復によってどの程度の要素が削除または追加されたかを把握できます。重複頂点を少し整理しただけなのに面数が大幅に減った場合は、頂点を統合する許容距離が大きすぎた可能性があります。

座標単位の確認も必要です。一単位をメートルとして扱うデータと、一単位をミリメートルとして扱うデータでは、同じ数値の許容距離でも実空間での意味が大きく異なります。単位を確認せずに近接頂点を統合すると、本来は別々に残すべき段差や薄い構造まで一体化されることがあります。

測量座標のように原点から遠い大きな座標値を持つOBJでは、編集環境やアップロード先の内部精度によって、近接判定や表示が不安定になる場合があります。必要に応じてローカル原点へ平行移動しますが、移動量と基準点の情報は必ず記録し、元の座標へ戻せる状態を保ちます。座標を移動したことが分からなくなると、別の点群や設計データと重ねられなくなります。

修復対象が頂点だけのOBJなのか、面を持つOBJなのかも確認します。面を持たず、頂点や点要素だけで構成されたOBJには、通常、面メッシュに対する非多様体エッジという判定は適用できません。それにもかかわらずアップロード時に非多様体エラーが出る場合は、ファイル内に一部だけ面定義が残っている、アップロード先が内部で表面生成を行っている、または複数の形式不良を包括的な名称で表示している可能性があります。

OBJの内容を確認できる場合は、頂点情報と面情報の有無を調べます。面が存在する場合は、面が参照している頂点番号が実際に存在するか、同じ頂点を一つの面内で重複して参照していないかを確認します。存在しない頂点番号や不完全な行が含まれると、非多様体とは別の問題でも読み込みに失敗します。

修復前には利用目的も明確にします。外観確認だけに使うOBJと、閉じた領域を前提とする体積算出に使うOBJでは必要な条件が異なります。地表面の表示だけであれば外周が開いていても問題にならない場合がありますが、閉じた立体として体積を求める処理では、側面や基準面を含む計算領域を定義する必要があります。すべての利用目的を一つのOBJで満たそうとせず、表示用と計算用を分ける方法も有効です。

手順1 重複頂点と重複面を整理する

最初の修復手順では、同じ位置または極めて近い位置にある重複頂点を整理します。重複頂点が存在するだけで直ちに非多様体になるとは限りませんが、複数のメッシュ境界が見かけ上だけ重なり、実際には接続されていない状態や、重複面を伴う状態を生みやすくなります。

画面上では面同士がつながって見えていても、境界線上に別々の頂点が並んでいるだけで、実際には接続されていないことがあります。この状態では、片方の面を移動すると境界が開きます。アップロード先の形状検査では、連続した表面として認識されず、穴や分離した形状として判定される場合があります。

重複頂点を統合するときは、近接判定に使う許容距離を慎重に決めます。許容距離が小さすぎると重複が残り、大きすぎると本来別々の頂点まで統合されます。特に壁の表裏、段差の上下、縁石、薄い板状構造などは、近接していても別の面として保持すべき部分です。

適切な許容距離は、点群の平均点間隔、計測精度、対象物の最小寸法、座標単位によって変わります。すべてのデータへ同じ値を適用するのではなく、問題が疑われる境界を拡大し、重複頂点間の距離を確認してから設定します。

頂点を統合すると、面の参照情報も更新されます。その結果、一つの三角形を構成していた複数の頂点が同じ頂点へ置き換わり、面積がゼロまたは極端に小さい面が発生する場合があります。このような縮退面は、交差判定や簡略化などの処理を不安定にする原因になります。頂点統合後には、面積がない面や、同じ頂点番号を重複して参照する面を検出し、形状を確認したうえで削除または再構成します。

重複面も確認します。同じ位置に同じ三角形が二枚存在すると、表示時にちらつきが起こったり、一本のエッジへ必要以上の面が接続したりします。頂点の並び順が逆であっても、同じ三つの頂点を使って同じ場所を占めていれば、重複面または逆向きに重なった面として確認が必要です。

ただし、近接する面をすべて重複と判断してはいけません。薄い構造物の表面と裏面、建物の外壁と内壁、地表面と地下構造物などは、近い位置に別々の面が存在します。位置だけでなく、法線方向、周囲との接続、属するオブジェクトを確認し、不要な面だけを削除します。

複数範囲のメッシュを結合した場所では、境界が完全には一致していない場合があります。わずかな隙間であれば頂点統合で接続できることがありますが、ずれが大きい状態で強制的に統合すると、細長い三角形や不自然な折れ曲がりが生じます。境界のずれが大きい場合は、重複部分を切り直し、共通の境界を作ってから面を再生成した方が安全です。

重複頂点と重複面を整理した後は、頂点数と面数を修復前の記録と比較します。想定以上に減少している場合は、許容距離や削除条件が適切だったかを見直します。形状の角、段差、壁面、外周などを確認し、必要な特徴が残っていることを確かめてから次の手順へ進みます。

手順2 穴と開いた境界を確認する

二つ目の修復手順では、面が途切れている境界と、意図せず生じた穴を確認します。閉じた表面の通常部分では、各エッジを二枚の面が共有します。一枚の面にしか接続していないエッジは境界エッジですが、外周を持つ表面では正当な境界となるため、境界エッジがあるだけで非多様体とは判断できません。

地形や法面を一定範囲で切り出したメッシュは、外周が開いていることが一般的です。計測範囲の端を無理に閉じると、実際には存在しない垂直面や底面を追加することになります。

確認すべきなのは、必要な外周境界と、欠測や表面生成失敗による不要な穴の違いです。外周境界は、計測範囲や切り出し範囲に沿って大きな輪郭を作る傾向があります。一方、不要な穴は面の途中に孤立して現れ、周囲の三角形が不規則になっていることがあります。

穴が発生する原因には、点密度不足、反射しにくい対象、遮蔽、移動体の除去、ノイズ除去のしきい値が厳しすぎることなどがあります。穴の周囲に十分な測定点が存在しない場合、メッシュ上で面を追加しても、実際の形状を正しく復元できるとは限りません。

自動的な穴埋め処理を使うときは、埋める穴の大きさを制限します。小さな欠損で、周囲の面が連続しており、元の点群から形状を推定できる場合は、境界頂点を使って面を再生成できることがあります。大きな欠測範囲を一枚または数枚の面で閉じると、地形の凹凸や構造物を無視した平面が作られる可能性があります。

穴埋め後には、生成された三角形の形を確認します。一つの頂点へ多数の面が集中していないか、極端に細長い三角形がないか、周囲の面を横切っていないかを見ます。自動処理で見た目が滑らかになっても、面の接続関係が不自然であれば、新たな非多様体や自己交差につながる場合があります。

境界線が途中で分岐している場合は、単純な穴ではない可能性があります。通常の穴の境界は連続した輪になりますが、分岐がある場合は、重複面、非多様体頂点、内部面などが残っていることがあります。分岐した境界をそのまま埋めず、周囲の面を一時的に分離して接続状態を確認します。

地表面モデルを体積計算へ利用する場合は、どの基準面との間で体積を求めるかを決める必要があります。地表面の外周を閉じるだけでは、底面の高さや側面の形状が適切に定義されないことがあります。計算用の閉じたモデルは、表示用OBJとは別に作成し、基準面と外周条件を明確にした方が管理しやすくなります。

穴を修復した後は、元の点群とメッシュを重ねて確認します。追加した面が測定点から大きく離れていないか、実際の空洞や開口部を誤って閉じていないかを確認します。建物の窓、設備の開口、橋の下部などは、見た目だけでは欠損と判断しやすい部分です。対象物の構造を考慮し、閉じるべき穴と残すべき開口を区別します。

手順3 非多様体エッジと内部面を修復する

三つ目の修復手順では、一本のエッジへ三枚以上の面が接続している部分を確認します。この状態は代表的な非多様体形状です。エッジ周辺の面を一枚の連続した表面としてたどれないため、内外判定や閉鎖性を前提とする処理で問題になることがあります。

非多様体エッジは、同じ範囲のメッシュを重ねた場合、一部だけを再生成して古い面を削除しなかった場合、薄い面が別の面へ分岐して接続した場合などに発生します。検出した場所では、エッジに接続している面を一枚ずつ確認し、どの面が必要かを判断します。

重複面が原因であれば、余分な面を削除します。内部面が原因であれば、利用目的に不要な面だけを取り除きます。ただし、建物内部、配管内部、トンネル、空洞などを計測したデータでは、外側から見えない面が必要な形状である可能性があります。単に内部に見えるという理由だけで削除してはいけません。

薄い壁や板状の形状では、地面と壁が一本のエッジで接していることがあります。表示上は自然でも、厚みのない壁と地面の接続方法によっては、閉じた立体として扱えない場合があります。表示だけが目的であれば、壁と地面を別オブジェクトとして管理する方法もあります。

体積計算などで閉じた形状が必要な場合は、板状の面に厚みを与え、表面と裏面を側面で接続する方法があります。ただし、任意の厚みを追加すると寸法や体積が変わります。実測結果にない厚みを追加する場合は、計算結果へ与える影響と、その厚みを採用した根拠を記録します。

複数の立体が互いに交差している場合は、単にオブジェクトを一つへまとめても、幾何形状として一体化したことにはなりません。交差部分の内側に不要な面が残り、非多様体エッジ、内部面、自己交差が生じることがあります。一体化が必要な場合は、交差線に沿って面を分割し、用途に必要な外周面だけを残します。

二つの形状を別々に表示できればよい場合は、無理に一体化せず、独立したオブジェクトとして保持する方法もあります。アップロード先が複数オブジェクトを扱えるかを確認し、利用目的に応じて一体化と分離を使い分けます。

非多様体エッジを修復した後は、エッジへ接続する面の数を再検査します。閉じた表面の通常部分では二枚、意図的に開いている外周では一枚になっていることを確認します。三枚以上の面が接続するエッジが残っている場合は、重複面、内部面、分岐形状のどれが原因かを改めて調べます。

頂点だけで複数の面集合が接している非多様体頂点にも注意が必要です。二つの面集合が一点だけで接すると、頂点周辺の面を一つの連続した扇状領域としてたどれません。この場合は、頂点を分離して独立した形状にするか、実物の接続状態に合う面を再構成します。どちらを選ぶかは、実際の対象物が接続しているのか、別々の物体なのかによって決めます。

手順4 面の向きと法線をそろえる

四つ目の修復手順では、面を構成する頂点の並び順と法線方向を確認します。OBJの面は複数の頂点番号で定義され、頂点の巡回順序から幾何学的な表裏を判断できます。OBJに法線情報が記録されている場合は、読み込み側がその法線を陰影計算などに使用することもあります。

面の向きの不統一は、厳密には非多様体トポロジーとは別の問題です。しかし、閉じた形状の内外判定、片面描画、体積計算などでは不具合の原因になります。アップロード先によっては、面の向きの不整合をメッシュ不正としてまとめて報告する場合があります。

裏向きの面は、両面表示する環境では見えることがあります。しかし、表面だけを描画する環境では消えて見えたり、陰影が不自然になったりします。閉じた立体の内外を判定する処理では、向きが混在していることで正常に処理できない場合もあります。

まず、隣接する面の向きを接続関係に基づいて統一します。整合した向き付けが可能な表面では、二枚の面が共有するエッジを互いに反対方向へたどります。同じ方向へたどっている場合は、どちらかの面の頂点順序が反転している可能性があります。

自動的に面の向きをそろえた後は、形状全体の向きが意図どおりかを確認します。閉じた立体では、一般に外側を向くように面をそろえます。形状全体が反転している場合は、すべての面の頂点順序を反転します。

地表面のような開いたメッシュでは、内側と外側を閉じた立体と同じ方法では定義できないことがあります。その場合は、地表面の上側を表面とする、主な閲覧方向を表側とするなど、利用目的に応じて基準を決めます。急斜面や張り出した形状を含む場合は、高さ方向だけで法線を判断すると、一部の面を誤って反転させる可能性があります。

OBJに頂点法線が保存されている場合は、面の向きを変更した後に法線情報も確認します。面だけを反転し、以前の法線を残すと、読み込み側の扱いによっては陰影が逆になったり、表面が不自然に見えたりします。形状を修復した後に、面の接続状態と必要なスムージング条件を基に法線を再計算する方法が安全です。

法線を平均化すると、曲面は滑らかに見えますが、構造物の角まで丸く見えることがあります。壁と床の境界、縁石、段差、鋭い稜線などを保持したい場合は、面同士の角度やグループを考慮し、法線を共有する範囲を限定します。

面の向きを確認するときは、一時的に片面表示を利用します。両面表示では裏向きの面も表示されるため、不整合を見落としやすくなります。視点を表側と裏側へ移動し、意図しない方向から見たときに面が消えるかを確認します。

法線を修復した後は、断面表示でも確認します。閉じた形状の内部に不要な面が残っていないか、空洞の表面が意図した方向を向いているかを調べます。外観が正常でも、内部面や面の向きの不整合が、体積や交差判定へ影響することがあります。

手順5 自己交差と孤立した形状を取り除く

五つ目の修復手順では、面同士が互いに突き抜けている自己交差と、本体から離れた小さな形状を確認します。自己交差は、トポロジー上は多様体であるメッシュにも発生し得るため、厳密には非多様体と同じ問題ではありません。ただし、閉鎖性、内外判定、体積計算、簡略化などを妨げ、アップロード先で形状不正として扱われることがあります。

自己交差は、複雑な凹凸、薄い構造物、点密度の低い場所、複数方向から作った表面を重ねた場所などで生じます。交差部分では、処理方法によって内側と外側の判定が不安定になるため、計算用途では特に確認が必要です。

小さな自己交差であれば、周囲の面を一度削除し、境界に沿って三角形を作り直せる場合があります。交差が広範囲に及ぶ場合は、メッシュ上で修復を続けるよりも、元の点群を整理して表面生成をやり直した方が、元の形状を保ちやすいことがあります。

細長い三角形にも注意が必要です。遠く離れた点同士を表面生成処理が誤って接続すると、周囲の面を横切る長い三角形が作られます。また、三つの頂点がほぼ一直線に並ぶと、面積が極端に小さい縮退面になります。これらは表示上目立たなくても、交差判定や数値計算を不安定にする要因になります。

辺の長さ、面積、縦横比などを基準に異常な面を抽出し、元の点群と比較します。周囲に測定点が存在しない面や、空間を横断している面は削除候補になります。ただし、急な斜面や細長い構造物では、実在する面も細長くなることがあります。数値条件だけで自動削除せず、対象物の形状を確認します。

孤立した形状は、連結した面のまとまりごとに調べます。反射ノイズや空中の誤測点から作られた小さなメッシュは削除候補ですが、小型設備、標識、配管、測量標などの必要な対象物が独立している場合もあります。

面数が少ないという理由だけで孤立形状を一括削除すると、必要な構造物まで失われる可能性があります。元の点群、現場写真、計測記録などと照合し、実在する対象かどうかを判断します。不要な孤立片が点群内のノイズから生成されている場合は、メッシュ上で削除するだけでなく、点群のノイズ除去条件も見直します。

自己交差を自動修復する機能の中には、形状全体を再構成するものがあります。処理後の見た目が整っていても、頂点位置や細かな凹凸が大きく変化している可能性があります。修復前後で代表点の座標、断面形状、外周、高低差などを比較し、利用目的に対して許容できる変化であることを確認します。

自己交差と孤立形状を整理した後は、非多様体検査と自己交差検査をそれぞれ再度実行します。一つの問題を修復することで別の穴や境界が生じる場合があるためです。検査結果だけでなく、元の点群との位置関係も確認し、形状の意味が変わっていないことを確かめます。

修復後のOBJを検証する方法

五つの手順を完了した後は、エラーの件数だけでなく、修復によって形状がどのように変化したかを検証します。非多様体エラーが解消されていても、必要な面が削除されたり、実在しない面が追加されたりしていれば、計測成果として適切ではありません。

最初に、修復前後の頂点数、面数、連結成分数、境界エッジ数、非多様体エッジ数を比較します。変化が大きい項目については、どの処理によって変わったかを確認します。手順ごとにファイルを保存していれば、問題が発生した段階へ戻りやすくなります。

次に、元の点群と修復済みメッシュを同じ座標上で重ねます。点群からメッシュ表面までの距離を確認し、修復部分だけが測定点から大きく離れていないかを調べます。穴埋め、境界再生成、自己交差の修復を行った場所は、特に重点的に確認します。

複数の位置で断面を作成すると、平面表示だけでは分かりにくい問題を発見できます。内部面、折り返し、二重面、急激な高さ変化などは、断面で確認しやすい要素です。法面、壁面、段差、構造物の角など、形状変化が大きい場所を優先します。

既知の二点間距離や構造物の寸法を使い、縮尺が変化していないことも確認します。OBJの受け渡しでは単位の解釈がソフト間で一致しない場合があるため、作成側と読み込み側でメートル、ミリメートルなどの扱いを明示します。修復環境では正しく見えていても、アップロード後に大きさが変わる場合があります。

座標位置も確認します。ローカル原点へ移動して修復した場合は、移動量が正しく反映されているかを調べます。別の点群、基準点、設計データと重ね、位置が一致することを確認します。

OBJにテクスチャ座標や法線が含まれている場合は、形状修復後の参照関係も検査します。頂点や面を削除した後の書き出し方法によっては、不要なテクスチャ座標や法線が残ることがあります。面の参照先が欠けていたり、読み込み側が解釈できない記述になっていたりすると、アップロード時にエラーが発生する可能性があります。

関連ファイルを使う場合は、OBJ内のマテリアル参照と実際のMTLファイル名、MTLから参照されるテクスチャファイル名が一致しているかを確認します。修復作業でOBJの名前だけを変更しても、参照先が自動で更新されるとは限りません。フォルダ構成を変更した場合は、相対的な配置も確認します。

ファイルを保存した直後だけでなく、一度編集環境を閉じ、保存済みのOBJを再度読み込むことも重要です。編集画面では正常でも、保存時や再読み込み時に一部の情報が失われる場合があります。再読み込み後に形状検査を行い、問題が再発しないことを確認します。

アップロード前には、ファイルが最後まで正常に保存されているかも調べます。大容量ファイルでは、保存処理の中断やストレージ容量不足によって末尾が欠ける場合があります。ファイル容量だけで正常と判断せず、再読み込みできることを確認してからアップロードします。

点群からOBJを作成するときの予防策

非多様体エラーは、OBJを書き出した後に修復するよりも、点群整理と表面生成の段階で予防した方が効率的です。最初に、点群内の孤立点、反射ノイズ、移動体、不要な植生、重複範囲などを整理します。

不要点が残ったまま表面を生成すると、本体から離れた小さなメッシュや、空間を横切る細長い面が作られることがあります。点群の段階でノイズを除去しておけば、メッシュ修復の作業量を減らせます。

ただし、ノイズ除去の条件を厳しくしすぎると、壁の端、細い部材、地表面の急変部などの必要な点まで削除されます。点密度だけで判断せず、対象物の形状と計測精度を考慮します。

点密度が大きく異なる範囲を一度に表面化する場合も注意が必要です。高密度部分に合わせた条件では低密度部分に穴が生じやすく、低密度部分に合わせると遠く離れた点が接続されやすくなります。必要に応じて範囲を分け、それぞれに適した条件で表面を生成します。

範囲を分割する場合は、境界の処理方法を事前に決めます。隣接範囲へ適度な重複を設けたうえで、結合時にどちらの面を残すかを整理します。両方のメッシュをそのまま重ねると、重複面や内部面の原因になります。

表面生成時の最大接続距離も重要です。離れた点同士を接続しないように制限すれば、大きな欠測範囲を横断する面を減らせます。一方で、制限を厳しくしすぎると必要な面が生成されず、穴が増えます。点間隔の分布を確認し、対象範囲に合う条件を設定します。

地表面と垂直構造物が混在する場合は、一つの方法ですべての表面を生成できるとは限りません。地表面だけを作るのか、壁面や裏側も含む立体を作るのかを明確にします。地表面向けの処理へ複雑な立体形状を含めると、面の折り返しや重なりが生じる場合があります。

OBJを書き出す前には、複数頂点で構成された多角形を三角形へ分割することも検討します。OBJは三角形以外の多角形面も記録できますが、アップロード先で自動的に三角形へ分割される場合があります。凹形状の多角形や、同一平面上にない頂点を含む面は、分割方法によって結果が変わる可能性があります。

書き出し前に意図した方法で三角形化しておけば、環境ごとの解釈差を減らせます。三角形化した後には、細長い面、重複面、法線の反転が発生していないかを再確認します。

座標値の保存桁数も適切に設定します。桁数を減らしすぎると、近接した別々の頂点が同じ位置へ丸められ、縮退面や重複頂点が発生する場合があります。反対に、計測精度を大きく超える桁数を残しても、元データの実質的な精度が高くなるわけではありません。

複数のオブジェクトやグループを含む場合は、同じ面が異なるグループへ重複して書き出されていないかを確認します。グループ名が異なっていても、同じ頂点と面を重ねて保存すれば重複面になります。表示上の分類と、幾何形状の分離を区別して管理します。

書き出し直後に形状検査を実行し、問題があれば点群整理や表面生成の工程へ戻ります。毎回同じ修復を手作業で行うのではなく、どの条件で非多様体形状や自己交差が発生したかを記録し、次回の生成条件へ反映することが大切です。

OBJアップロードで失敗したときの切り分け方

修復済みのOBJでもアップロードに失敗する場合は、形状だけが原因とは限りません。エラー表示が非多様体であっても、ファイルの破損、参照番号の不整合、容量、面数、オブジェクト数、対応していない記述などが影響している可能性があります。

まず、全体を一度にアップロードせず、代表的な小範囲へ分割して試します。小範囲が正常に処理できれば、その小範囲については基本的なOBJの記述や座標の扱いが受け入れられている可能性が高くなります。範囲を順番に追加し、失敗する部分を絞り込みます。

問題範囲が特定できたら、その周辺の重複面、内部面、非多様体エッジ、自己交差、縮退面を重点的に確認します。全体を繰り返し修復するよりも、原因範囲を限定した方が必要な形状を失いにくくなります。

分割したすべての範囲が個別にはアップロードできるのに、結合したOBJだけが失敗する場合は、境界の重複、オブジェクト数、面数、ファイル容量などが関係している可能性があります。各範囲の境界面を整理し、同じ場所に二重の面が残っていないかを確認します。

ファイル容量だけで処理負荷を判断しないことも重要です。同じ容量でも、非常に多くの小さな三角形やオブジェクトを含むOBJは、読み込み後の解析に時間がかかることがあります。利用目的を満たせる範囲で面数を減らす場合は、簡略化後に再び非多様体検査と自己交差検査を行います。

簡略化処理では、近接頂点の統合や面の再構成によって、新たな穴や自己交差が生じることがあります。修復済みOBJを簡略化したからといって、形状の整合性が維持されるとは限りません。簡略化後のファイルを最終版として再検証します。

OBJのテキスト記述に問題がある可能性も確認します。面が存在しない頂点番号を参照していないか、途中で行が切れていないか、一つの面が同じ頂点を複数回使っていないかを調べます。保存中に処理が中断されると、ファイル末尾が欠けることがあります。

関連ファイルを含む場合は、アップロード対象の組み合わせを整理します。古い版のMTLやテクスチャが同じフォルダに残っていると、意図しないファイルを送信する原因になります。アップロード用フォルダには、最終版に必要なファイルだけを配置します。

圧縮してアップロードする場合は、展開後のフォルダ階層と参照関係を確認します。OBJから見たMTL、MTLから見たテクスチャの位置が変わると、形状は読み込めても外観情報が反映されない場合があります。

アップロード後は、全体が表示されたことだけで完了と判断せず、修復した部分を拡大して確認します。穴を埋めた場所、内部面を削除した場所、面の向きを反転した場所、自己交差を修正した場所を順番に確認します。

既知の基準点や距離を用いて、座標と縮尺も検証します。アップロードが成功しても、単位や原点の解釈が異なれば、実務で利用できないデータになります。別の点群や設計データと重ねて確認できる場合は、位置ずれがないことを確かめます。

点群OBJの品質管理を標準化する

点群OBJを継続的に扱う現場では、担当者ごとの経験だけに頼らず、確認手順を標準化することが重要です。問題が発生するたびに異なる方法で修復すると、品質にばらつきが生じ、正常なファイルと異常なファイルの違いを説明しにくくなります。

作業工程は、原本保存、点群整理、表面生成、重複除去、非多様体検査、面の向きと法線の確認、自己交差検査、再読み込み、アップロード確認という流れで統一します。各工程で使用した条件と結果を記録し、問題が発生した場合に前の段階へ戻れるようにします。

記録には、元ファイル名、対象範囲、座標系、単位、頂点数、面数、検出されたエラー数、修復方法などを含めます。頂点統合の許容距離や穴埋めの最大範囲も残しておけば、同じ現場の更新データを処理するときの参考になります。

ただし、前回と同じ条件を無条件に使うのではなく、点密度や対象範囲が変わっていないかを確認します。計測方法、天候、対象物、移動体の量などによって点群の状態は変化します。同じ現場でも、毎回適切な条件が同じとは限りません。

修復前後の画像や断面を保存する方法も有効です。数値だけでは、どの穴を埋め、どの孤立形状を削除したのかを把握しにくい場合があります。代表的な場所の確認記録を残せば、別の担当者が修復内容を確認しやすくなります。

アップロードに成功したかどうかだけを品質基準にしないことも大切です。アップロードできたOBJでも、不要な穴埋め、位置ずれ、縮尺変化、面の向きの不整合が残っている可能性があります。形状の意味と必要な計測精度が維持されていることまで確認して、完了と判断します。

表示用、共有用、体積計算用など、用途別にOBJを分ける運用も検討します。一つのファイルにすべての要件を持たせようとすると、表示には不要な閉鎖面を追加したり、計算には不要な細部を大量に残したりすることがあります。用途別に必要な範囲と精度を設定すれば、ファイル容量や処理時間も管理しやすくなります。

現場で再計測や追加計測を行う場合は、既存メッシュへ新しい面だけを継ぎ足すのではなく、重複範囲を整理してから統合します。古い面と新しい面が重なると、非多様体エッジや内部面が発生しやすくなります。更新範囲を明確にし、置き換える部分と残す部分を区別します。

修復の自動化を進める場合も、すべての問題を自動削除するのではなく、検出結果を確認できる仕組みが必要です。重複頂点や明らかな縮退面は自動処理しやすい一方で、穴、孤立形状、内部面などは利用目的によって残すべき場合があります。

自動処理の結果を担当者が確認し、元の点群や現場情報と照合できる流れを維持します。処理時間の短縮と、計測成果の信頼性を両立させることが重要です。

まとめ

点群OBJアップロードで非多様体エラーを防ぐには、エラー部分を無条件に削除するのではなく、形状の接続関係と幾何形状を分けて確認する必要があります。

最初に重複頂点と重複面を整理し、頂点統合によって生じた縮退面を取り除きます。次に、正当な外周境界と意図しない穴を区別し、必要な部分だけを修復します。外周を持つ表面では、一枚の面だけに接続する境界エッジが存在しても、それだけで非多様体とは限りません。

その後、一本のエッジへ三枚以上の面が接続している場所や、一つの頂点の周囲に分離した面集合がある場所を確認します。複数の形状が交差している場合は、単に同じオブジェクトへまとめるのではなく、交差部分の面構造を整理します。

続いて、面の頂点順序と法線方向をそろえます。面の向きの不統一は非多様体とは別の問題ですが、片面表示、内外判定、体積計算などで不具合を起こすため、同じ検証工程で確認することが重要です。

最後に、自己交差、細長い三角形、孤立した形状を見直します。自己交差も非多様体と同義ではありませんが、形状解析やアップロード処理を妨げる場合があります。自動修復によって形状全体が変化することがあるため、元の点群と重ね、代表点、断面、外周、高低差などを比較します。

修復後は、非多様体エラーの件数だけでなく、頂点数、面数、境界、自己交差、座標、縮尺、関連ファイルの参照関係まで検証します。一度保存したOBJを再度読み込み、同じ状態を再現できることも確認します。

すべての境界や穴を閉じることが正しいとは限りません。地表面の外周や実在する開口部など、用途によって残すべき部分があります。単純表示、断面確認、体積計算などの目的に合わせ、必要な修復範囲を判断することが大切です。

非多様体エラーが繰り返し発生する場合は、OBJを書き出した後の処理だけでなく、点群のノイズ除去、表面生成条件、範囲分割、境界結合の方法まで見直します。問題が生じた工程を特定できれば、毎回同じ修復を繰り返す手間を減らせます。

現場で取得した点群を確認し、三次元データとして保存、閲覧、共有する運用を整える際は、LRTK PhoneとLRTKクラウドを組み合わせた計測・データ管理の活用も検討してください。

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

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