LRTKレフィクシア株式会社

点群OBJアップロード前に非多様体エッジを直す6つの確認方法

点群OBJで非多様体エッジが問題になる理由

点群から生成したOBJをアップロードするとき、ファイルの選択まではできても変換処理が途中で止まる、モデルの一部が欠ける、面の表裏が不自然になるといった問題が発生することがあります。その原因の一つとして確認したいのが、ポリゴンメッシュに含まれる非多様体エッジです。

非多様体エッジとは、立体や面のつながり方を一意に解釈しにくい状態になっているエッジを指します。閉じた立体の表面では、通常、一つのエッジを二つの面が共有します。ところが、一つのエッジに三つ以上の面が接続していたり、複数の面が一点だけで不自然につながっていたりすると、モデルの内側と外側を正しく判定できなくなることがあります。

ただし、一つの面だけに接続しているエッジが、すべて異常というわけではありません。地形面、板状モデル、切断面を持つモデルなど、もともと開いた表面として作られたメッシュでは、外周に一つの面だけが接続する境界エッジが存在します。このような境界は、用途によっては正常です。

そのため、非多様体エッジを修復するときは、検出されたエッジを機械的にすべて消すのではなく、アップロード後にどのような処理を行うかを考える必要があります。表示だけを目的とするモデルと、体積計算や内外判定に利用する閉じた立体とでは、求められる状態が異なります。

また、「点群OBJ」という言葉の意味も整理しておく必要があります。OBJファイルには、頂点だけを記録することも、頂点を結んだ面を記録することもできます。頂点だけで構成されたOBJには面やエッジがないため、非多様体エッジという問題は原則として発生しません。非多様体エッジの確認が必要になるのは、点群を三角形や多角形でつないでメッシュ化したOBJです。

OBJ形式は、頂点座標、面、法線、テクスチャ座標などを記述できる汎用的な形式です。一方で、記録されている面が閉じた立体になっているか、面の接続が正しいか、法線がそろっているかまでは形式自体が保証しません。書き出しに成功したOBJであっても、トポロジーに問題を含んでいる可能性があります。

非多様体エッジを残したままアップロードすると、表示だけでなく、その後の簡略化、法線再計算、断面作成、体積算出、面積計算などにも影響することがあります。見た目では異常が分かりにくいモデルでも、内部に重複面や不要な面が残っていると、処理結果が不安定になりやすくなります。

アップロード前には、エッジの共有数、重複要素、境界、面方向、内部面、自己交差、修復後の出力状態を順番に確認することが大切です。ここからは、非多様体エッジを直すための六つの確認方法を、実務で作業しやすい順序に沿って解説します。

確認方法1 エッジを共有する面の数を確認する

最初に確認したいのは、一つのエッジを何枚の面が共有しているかです。閉じた立体の表面であれば、多くのエッジは二つの面に共有されます。一つの面だけに接続しているエッジは、穴や外周などの開放境界である可能性があります。三つ以上の面に接続しているエッジは、非多様体エッジである可能性が高い状態です。

一般的な3D編集環境には、非多様体要素や境界エッジを選択するための検査機能が用意されている場合があります。こうした機能を利用すると、目視だけでは見つけにくい小さな異常を抽出できます。ただし、検出された部分をすぐに削除するのではなく、周辺の面がどのようにつながっているかを確認することが重要です。

一つのエッジへ三枚以上の面が接続する原因には、複数のメッシュを単純に重ねて結合したこと、内部面が残っていること、同じ場所に重複面があることなどが考えられます。例えば、壁と床を別々に作成し、境界部分を整理せずに一つのモデルとして出力すると、接合部のエッジに複数の面が集中することがあります。

点群から自動生成したメッシュでは、薄い部材の表面と裏面が近づき、再構築処理によって枝分かれした面が作られる場合があります。計測ノイズが多い範囲では、実際の表面とは異なる小さな突起や膜状の面が発生し、それらが正常な面へ接続して非多様体エッジを作ることもあります。

三枚以上の面が接続するエッジを見つけたら、まず周囲の面を一時的に非表示にし、どの面が必要で、どの面が不要かを判断します。不要な内部面や重複面が原因であれば、その面を削除します。接続すべき頂点が分かれている場合は、位置を確認してから頂点を統合します。

ただし、面を削除するだけでは解決しないことがあります。不要な面を消した結果、開口部が生じる場合があるためです。その場合は、境界の形を確認し、必要に応じて面を作り直します。削除、頂点統合、穴修復という作業を一度に行うのではなく、一つずつ実施して検査結果を確認すると、意図しない変形を抑えやすくなります。

一つの面だけに接続している境界エッジについては、モデルの用途を考えて判断します。閉じた立体の中央に境界がある場合は、面の欠落や接続不良を疑います。一方、地形メッシュの外周や、意図的に切断した断面の周囲であれば、境界が残っていても正常です。

特に地形OBJでは、上面だけを表す開いたメッシュが一般的です。この外周をすべて閉じようとすると、側面や底面が自動生成され、意図しない立体になる場合があります。アップロード先が地形面をそのまま扱えるのであれば、外周境界を無理に閉じる必要はありません。

エッジ共有数の確認では、三枚以上の面に接続するエッジ、意図しない境界エッジ、見た目では接しているのに実際には接続されていない箇所を分けて確認します。非多様体という検査結果だけを見るのではなく、各箇所がどの種類の問題なのかを分類することが修復の第一歩です。

確認方法2 重複頂点と重複面を整理する

非多様体エッジの原因として多いのが、同じ位置に存在する重複頂点や重複面です。画面上では一つの頂点や一枚の面に見えていても、データ上では複数の要素が重なっている場合があります。

OBJでは、同じ座標にある頂点でも、異なる頂点番号として記録されていれば別の頂点として扱われます。そのため、二つの面が同じ位置で接しているように見えても、それぞれが別の頂点を参照していれば、実際には接続されていません。

重複頂点は、複数の範囲に分けて作成したメッシュを後から統合したときに発生しやすくなります。点群を区画ごとにメッシュ化し、それらを一つのOBJにまとめた場合、区画境界に同じ位置の頂点が二重に残ることがあります。見た目は連続していても、アップロード後の法線計算や簡略化で継ぎ目が開く可能性があります。

重複頂点を整理する際には、一定距離以内にある頂点を統合する処理が利用されます。ただし、統合する距離を大きく設定しすぎると、本来は別々である頂点まで結合されます。細い溝、薄い板、狭い隙間、小さな段差などがあるモデルでは、形状がつぶれるおそれがあります。

適切な統合距離は、モデルの単位と最小形状によって異なります。座標値がメートルを基準にしているのか、ミリメートル相当の数値を使っているのかを確認せずに処理すると、想定以上の範囲が統合されることがあります。最初は小さな距離から試し、統合された頂点数と形状の変化を確認しながら調整する方法が安全です。

重複面については、同じ頂点を使った面が複数存在する状態だけでなく、頂点の並び順が逆になった面も確認します。表向きの面と裏向きの面が同じ位置に重なっていると、表示時にちらついたり、陰影が不自然になったりすることがあります。

同じ場所に二枚の面が存在すると、その周囲のエッジが三枚以上の面に共有され、非多様体として検出される場合があります。重複面を削除した後は、周囲のエッジ共有数を再確認し、必要な面まで消していないかを調べます。

頂点統合後には、面積がほぼゼロになった面も発生しやすくなります。例えば、三角形を構成する二つの頂点が統合されると、面が線状につぶれます。このような面は表示上ほとんど見えませんが、変換処理や面積計算で問題になる場合があります。

同じ頂点を複数回参照する面、一直線上に近い三頂点で構成された面、極端に細長い三角形も確認対象です。これらは必ずしも非多様体エッジではありませんが、後工程の処理を不安定にする原因になります。

重複要素の整理前には、元のOBJを別名で保存しておきます。頂点統合や重複削除は広い範囲へ影響する可能性があり、細部の消失に後から気づくことがあるためです。修復前後のモデルを比較できる状態にしておけば、統合条件が適切だったかを判断しやすくなります。

処理後は、モデルを回転させて外観を確認するだけでなく、断面表示や頂点表示を使って接続状態を調べます。見た目が変わっていない場合でも、重複頂点が整理され、隣接面が正しく一つのエッジを共有しているかを確認することが大切です。

確認方法3 穴と開放境界を区別する

三つ目の確認方法は、一つの面だけに接続している境界エッジを抽出し、それが意図した外周なのか、修復すべき穴なのかを区別することです。

閉じた立体を作る場合、外皮を構成するエッジは原則として二つの面に共有されます。面が一部欠けると、その周囲に一つの面しか接続しない境界エッジが現れます。境界エッジが輪のようにつながっていれば、穴が開いている可能性があります。

点群から生成したメッシュでは、計測できていない部分、遮蔽物の裏側、反射が不安定な表面、急な角度で取得した箇所などに穴が生じやすくなります。点の密度が低い範囲や、大きなノイズを除去した跡にも開口部が残ることがあります。

小さな穴であれば、周囲の境界を利用した自動修復で埋められる場合があります。ただし、穴を塞げば必ず正しい形状になるとは限りません。自動的に生成された面が実際の対象形状と異なる可能性があるため、元の点群と重ねて確認することが重要です。

境界の大きさだけでなく、形にも注目します。閉じた輪になっている境界は、内部の穴である可能性が高い状態です。モデルの外周まで続いている境界は、地形や板状モデルの端部である可能性があります。細い亀裂では、二本の境界線が非常に近い位置に並ぶため、通常の表示では一本に見えることがあります。

穴を埋めるときは、周囲の曲面や稜線を考慮します。単純に一枚の大きな多角形で塞ぐと、面が正しく分割されなかったり、極端に細長い三角形が生成されたりすることがあります。曲面上の穴では、周辺の面密度や法線方向に合わせて複数の面を配置した方が、自然な形状になりやすくなります。

大きな欠損を自動的に塞ぐと、点群に存在しない推定面が広い範囲に作られます。表示用途では許容できる場合もありますが、計測や体積算出に使用すると結果へ影響する可能性があります。欠損範囲に有効な点が残っている場合は、その部分だけ点群から再メッシュ化する方法も検討します。

点が存在しない部分を推定で埋める場合は、実測した表面と補間した表面を区別できるように作業記録を残すことが望ましいです。後工程の担当者が、すべてを実測形状と誤認するのを防ぎやすくなります。

地形OBJでは、外周を開いたまま利用することがあります。この場合、外周境界は修復対象ではありません。体積計算などのために閉じた立体が必要な場合は、地形面の外周から側面を作り、基準となる底面へ接続します。

底面を追加する場合は、その高さや形によって体積が変わります。単に非多様体エッジをなくすためだけに適当な底面を作るのではなく、比較面や基準高など、計算目的に合う条件で閉じる必要があります。

穴を修復した後は、境界エッジが減ったことだけで完了と判断しません。新しく作った面が重複していないか、周囲のエッジに三枚以上の面が接続していないか、法線が反転していないかを再確認します。

穴修復は、非多様体エッジを解消する作業の中でも形状を大きく変える可能性があります。小さな穴から順番に処理し、修復前後を比較しながら進めると、意図しない面の生成を抑えられます。

確認方法4 面の向きと法線をそろえる

四つ目は、面を構成する頂点の並び順と、法線の向きを確認する方法です。ポリゴンの表裏は、面を構成する頂点が記述される順番によって決まります。隣り合う面の向きが不統一になると、一部だけ裏返った状態になります。

面が裏返っていても、両面を表示する環境では異常が分かりにくいことがあります。しかし、表側だけを描画する設定では、裏向きの面が消えたように見える場合があります。アップロード後にモデルの一部が欠けたように見える場合は、面の欠落だけでなく法線反転も確認します。

法線の不整合は、非多様体エッジそのものとは異なる問題です。ただし、非多様体部分では内側と外側を一意に決めにくいため、法線の自動再計算が正しく働かないことがあります。そのため、法線をそろえる前に、重複面、内部面、三枚以上の面に共有されるエッジを整理することが重要です。

閉じた立体では、通常、法線を外側へそろえます。開いた地形面では、利用目的に応じて上側へそろえることが一般的です。面方向が不規則なままだと、陰影表示にむらが出たり、面の向きを利用する処理で結果が不安定になったりする可能性があります。

法線を自動再計算する機能を利用すると、多数の面を一括でそろえられる場合があります。ただし、内部面や重複面が残っているモデルでは、自動処理だけで意図した方向にならないことがあります。処理後には、法線を線として表示する機能や、表裏を色分けする表示を利用して確認します。

薄い板状の対象は特に注意が必要です。点群から厚みのない表面を作るつもりでも、ノイズによって近接した二枚の面が生成されることがあります。この二枚の面を残したまま法線だけそろえると、閉じた薄い立体のように見える場合がありますが、端部が正しく接続されていなければ問題は解決していません。

表面と裏面のどちらを残すべきかは、元の点群や対象物の構造を見て判断します。不要な二重面を削除した後、残した面の向きをそろえます。厚みのある部材として扱う場合は、表面と裏面を側面で接続し、一つの閉じた形状にする必要があります。

複数の独立した部品を一つのOBJに含める場合は、部品ごとに法線を確認します。一つの部品だけが反転していても、モデル全体を一括表示したときには見落とすことがあります。連結成分ごとに分けて表示すると、異常を見つけやすくなります。

OBJへ法線情報を書き出す場合でも、面を構成する頂点順序そのものを正常にしておくことが大切です。保存された法線だけを調整して見た目を整えても、アップロード先で法線が再計算されると、面方向の問題が再び現れる場合があります。

法線を修正した後は、表側と裏側の両方からモデルを確認します。表面表示、陰影、輪郭、断面を見比べ、部分的な反転が残っていないことを確認します。閉じた立体では、内側から見たときと外側から見たときの表示が想定どおりであることも確認します。

確認方法5 内部面と自己交差を取り除く

五つ目の確認方法は、モデル内部に残った不要な面と、面同士が交差している部分を調べることです。外観が正常に見えるOBJでも、内部に余分な面が含まれている場合があります。

複数のメッシュを重ねて一つの形状にした場合、接触面や重複部分の面が内部に残ることがあります。例えば、二つの箱形状を交差させ、見た目だけを一体化した場合、重なった範囲の内部には元の面が残っています。この状態は、一つのきれいな外皮を持つ立体とは異なります。

内部面が残っていると、体積計算で余分な領域として扱われたり、断面表示で不要な線が現れたりする可能性があります。また、内部面の周囲で一つのエッジへ三枚以上の面が接続し、非多様体エッジになることもあります。

内部面を確認するには、外側の面を一時的に非表示にする方法や、断面表示を利用する方法があります。視点に近い面を順番に隠し、内部の状態を確認する方法も有効です。複雑なモデルでは、連結していない小さな面の集合を抽出し、必要な部品かノイズかを判断します。

点群から生成したメッシュでは、対象物の内部に本来存在しない薄片や膜状の面が作られることがあります。複数方向から取得した点群がわずかにずれていると、表面が二重になり、その間をつなぐ面が生成されることもあります。

自己交差とは、面同士がエッジを共有せずに途中で突き抜けたり、重なったりしている状態です。通常のエッジ共有数の検査だけでは見つからないことがあります。エッジの接続自体は正常でも、三角形同士が空間内で交差している場合があるためです。

自己交差は、薄い部材、鋭い角、細い配管状の対象、植生、複雑な凹凸などで発生しやすくなります。点群の密度が不均一な場所や、外れ値が残っている範囲でも、細長い面が別の面を突き抜けることがあります。

交差面を検出できる機能がある場合は、該当する面の組を抽出します。ただし、検出された面をすべて削除すると、大きな穴が開くことがあります。交差の原因が不要な薄片であれば薄片を削除し、必要な面同士が交差している場合は、交差部分を分割して正しく接続する必要があります。

複数の部品を一体化する場合は、単に重ねるだけでなく、重複部分を整理して一つの外皮にします。複数部品のまま扱う場合は、各部品が個別に正常なメッシュであることを確認します。アップロード先によっては、独立した閉じた部品が同じOBJ内に複数存在していても扱える場合がありますが、重なり方によって処理結果が変わる可能性があります。

対象物から離れた場所にある小さな浮遊面も確認します。点群中の孤立点やノイズが局所的にメッシュ化されると、数枚だけの面が離れた位置に作られることがあります。こうした面は非多様体エッジの原因になるだけでなく、モデル全体の表示範囲を広げ、中心位置や縮尺の確認を難しくします。

浮遊面を削除するときは、面数だけで機械的に判断しないようにします。小さな付属物や細い部材など、必要な形状も少ない面数で構成されている場合があるためです。元の点群や対象物の構造と照合してから削除します。

内部面や自己交差を修正した後は、再びエッジ共有数、境界エッジ、法線を確認します。交差面の分割や削除によって新しい頂点や境界が生じるため、それまで正常だった周辺に別の問題が発生する可能性があります。

確認方法6 修復後の連結性とOBJ出力を検証する

六つ目は、修復したモデルの連結性と、OBJとして書き出した後の状態を確認する方法です。編集画面で正常に見えていても、書き出しや再読み込みによって問題が表面化することがあります。

まず、モデルがいくつの連結成分に分かれているかを確認します。連結成分とは、頂点やエッジを通じてつながっている面のまとまりです。一つの対象物として作ったつもりのモデルが、多数の小さな成分に分かれている場合、接続されていない頂点や浮遊面が残っている可能性があります。

一方、離れた複数の対象物を一つのOBJに含めている場合は、連結成分が複数あっても異常とは限りません。重要なのは、意図した構成と検査結果が一致しているかです。

小さな連結成分を一括削除する機能を使う場合は、必要な部品まで消さないように注意します。細いボルト状の部分、小さな突起、独立した付属物などは、正しい形状であっても面数が少ない場合があります。削除前に位置と形状を確認します。

次に、面積がほぼゼロの面、極端に細長い面、同じ頂点を複数回参照する面が残っていないかを確認します。これらは必ずしも非多様体ではありませんが、アップロード時の変換や簡略化で処理を不安定にすることがあります。

頂点統合後には、三角形の二頂点が同じ位置になり、面が線状につぶれることがあります。交差面を分割した後には、非常に細い三角形が生成されることもあります。修復前にはなかった異常が、修復操作によって生じていないかを確認します。

OBJを書き出す際は、必要なオブジェクトだけが出力対象になっているかを確認します。編集途中の補助線、点だけの要素、非表示にした不要なメッシュなどが一緒に書き出される場合があります。非表示であることと、出力対象から除外されていることは同じとは限りません。

面が参照している頂点番号が有効であることも重要です。通常は書き出し処理によって整理されますが、変換を繰り返したデータや手作業で編集したデータでは、参照関係が不正になる可能性があります。

テクスチャを利用している場合は、形状修復後のUV座標も確認します。頂点を統合したり面を作り直したりすると、テクスチャの対応が崩れる場合があります。形状が正しくても、アップロード後に色や模様がずれる可能性があるため、テクスチャ表示でも検証します。

書き出したOBJは、新しい作業環境へ再度読み込みます。元の編集データをそのまま見て判断するのではなく、実際に出力したファイルを独立して開くことが大切です。再読み込みによって、頂点、面、法線、連結成分、表示範囲が維持されているかを確認します。

再読み込み後には、非多様体エッジの検査をもう一度実行します。編集環境内で修復済みでも、書き出し設定によって頂点が分離されたり、法線や面の構成が変化したりする可能性があります。

可能であれば、実際のアップロード先に近い条件でも確認します。表示用途では開いた面を扱えても、体積計算では閉じた形状が必要になる場合があります。アップロードが完了したことだけで合格とせず、その後に予定している表示、計測、断面作成なども試します。

最終確認では、非多様体エッジがゼロになったかどうかだけを基準にしないことが重要です。地形モデルでは正常な外周境界が残る場合があります。複数部品を含むモデルでは、連結成分が複数存在します。用途ごとの合格条件を決め、その条件を満たしているかを判断します。

自動修復だけに頼らないための考え方

非多様体エッジが多数検出されると、自動修復機能を使って一括で直したくなることがあります。小さな穴、明らかな重複頂点、単純な重複面であれば、自動処理によって効率よく整理できる場合があります。

しかし、自動修復は対象物の意味や利用目的を理解しているわけではありません。近い頂点を統合する、境界を穴として塞ぐ、内部に見える面を削除するといった処理を、設定された条件に基づいて実行します。

地形の外周が穴と判断されて閉じられたり、実際に必要な細い隙間が頂点統合によって消えたりする可能性があります。薄い板の表裏が近い場合には、本来別々である面が一体化することもあります。

点群由来のメッシュは、設計モデルと比べて面の大きさや頂点間隔が不均一です。高密度な範囲と低密度な範囲が混在しているため、一つの距離条件をモデル全体へ適用すると、場所によって修復の強さが変わります。

安全に進めるには、修復前のモデルを複製し、問題箇所を分類してから処理します。最初に非多様体エッジを抽出し、重複、穴、内部面、自己交差などの原因ごとに分けます。次に、小さな範囲で処理を試し、形状が維持されることを確認してから他の箇所へ適用します。

自動処理後には、頂点数や面数がどの程度変化したかも確認します。少数の重複頂点を直すつもりだったのに、面数が大幅に減った場合は、統合条件や削除条件が強すぎた可能性があります。

頂点数や面数だけで品質を判断することはできませんが、予想外の変化を見つける手掛かりにはなります。処理前後の数値と外観を両方確認することが大切です。

修復操作を複数まとめて実行すると、どの処理によって形状が変わったのか分かりにくくなります。重複頂点の整理、穴の修復、内部面の削除、法線の再計算などを段階ごとに分けて保存すると、問題が起きたときに原因を追いやすくなります。

自動修復は作業を短縮するための手段です。修復結果が実物や元の点群と一致していることを保証するものではありません。アップロード後の利用目的を踏まえ、人が確認しながら適用することが重要です。

点群から生成したOBJを修復するときの注意点

点群から作成したOBJは、設計段階で規則的に作られた3Dモデルとは性質が異なります。点の密度、欠測、計測ノイズ、位置合わせの状態、対象表面の反射特性などが、メッシュの品質へ影響します。

非多様体エッジが広い範囲に発生している場合、OBJ上で一つずつ面を直すよりも、元の点群を整理して再度メッシュ化した方が効率的なことがあります。外れ値や孤立点が残っていると、それらを周囲の点とつなぐ細長い三角形や突起が作られます。

点群段階で明らかな外れ値を除外すれば、メッシュに発生する薄片や自己交差を減らせる可能性があります。ただし、外れ値除去を強くしすぎると、対象物の角、段差、細い部材なども失われます。

平滑化についても同様です。表面を滑らかにすると小さな凹凸やノイズを抑えられる場合がありますが、必要な形状まで丸くなる可能性があります。修復の目的は見た目だけを滑らかにすることではなく、用途に合う接続状態へ整えることです。

点群密度が急に変化する境界では、極端に大きな三角形や細長い三角形が生成されやすくなります。高密度部分と低密度部分を無理につなぐと、実際の形状から離れた面が作られる場合があります。

このような場所では、点群を補間するのか、境界として開いたままにするのか、部分的にメッシュを作り直すのかを判断します。閉じた立体を作ることだけを優先すると、実測していない範囲に大きな推定面が作られる可能性があります。

複数回取得した点群を統合している場合は、点群同士の位置ずれも確認します。表面がわずかにずれて二重化すると、近接した二枚のメッシュが生成され、その間をつなぐ面が非多様体エッジや自己交差の原因になります。

メッシュ修復だけで対応する前に、元の点群を断面表示し、表面が二重になっていないかを確認します。位置合わせのずれが原因であれば、点群の統合条件を見直してからメッシュを作り直す方が自然な形状になりやすくなります。

実際の対象物に隙間や重なりがある場合は、それを誤って異常として消さないことも重要です。配管、柵、薄い板、枝分かれした部材などは、形状自体が複雑です。すべてを一つの閉じた塊にすると、実物とは異なるモデルになります。

地形メッシュでは、上面だけを持つ開いた形状として利用することが多いため、外周の境界エッジが正常に残ります。アップロード先が開いた地形面に対応しているのであれば、無理に側面や底面を作る必要はありません。

反対に、土量などを算出するために閉じた形状が必要な場合は、基準面との関係を考えて側面や底面を作ります。底面の高さや範囲を誤ると、非多様体は解消されても計算結果が目的に合わなくなります。

修復の判断に迷う箇所では、元の点群とメッシュを重ねて確認します。メッシュが点群から大きく離れている場所、点がないのに面が作られている場所、点があるのに穴が残っている場所を調べることで、再メッシュ化と手動修復のどちらが適切か判断しやすくなります。

点群OBJアップロード前の実務的な確認手順

実務では、非多様体エッジだけを単独で確認するのではなく、一定の順序でモデル全体を検査すると手戻りを減らせます。

最初に、元の点群、修復前のメッシュ、修復作業用の複製を分けて保存します。元データを保持しておけば、自動修復や頂点統合によって意図しない変形が起きた場合にも比較できます。

次に、OBJに面情報が含まれているかを確認します。頂点だけが記録された点群OBJであれば、非多様体エッジの修復対象ではありません。その場合は、アップロード先が点のみのOBJを扱えるか、別の対応形式が必要かを確認します。

面を持つOBJであれば、まず三枚以上の面が共有するエッジを抽出します。同時に、一枚だけの面に接続する境界エッジと、周囲の面が不自然に分かれている頂点も確認します。

非多様体頂点とは、一つの頂点を共有しているものの、周囲の面が一つの連続したまとまりになっていない状態などを指します。エッジだけでなく頂点周辺の接続も確認すると、点で接しているだけの不自然な構造を見つけやすくなります。

次に、重複頂点、重複面、面積がほぼゼロの面を整理します。頂点統合は小さな距離から試し、細部が失われていないかを確認します。処理後には頂点数と面数を確認し、想定外の大幅な減少がないかを調べます。

続いて、境界エッジを用途別に分類します。地形外周や意図した切断面は残し、閉じた立体の途中にある穴は修復します。穴を塞いだ後は、新しく作られた面の形、密度、法線を確認します。

その後、内部面、交差面、浮遊する小片を整理します。一体化する部品については、重なり部分の内部面を残したままにせず、一つの外皮として接続します。別部品として保持するものは、各部品を個別に検査します。

形状の接続を整えた後に、面方向と法線をそろえます。先に法線を調整しても、内部面や重複面を削除すれば再計算が必要になるためです。法線の自動再計算後は、部分的な反転が残っていないかを確認します。

次に、連結成分の数を確認します。一つの対象物が多数の成分に分かれている場合は、未接続部分や浮遊面を探します。複数部品を含む場合は、想定した部品数と一致しているかを確認します。

最後に、非多様体エッジ、境界エッジ、自己交差、重複要素を再検査します。修復中に新たな問題が生じていないことを確認したら、OBJとして書き出します。

書き出したOBJは、新しい状態で読み込み直します。元の編集画面ではなく、実際に出力されたファイルを確認することで、出力設定による変化を見つけられます。

再読み込み後は、全体の外観だけでなく、拡大表示、裏側からの表示、断面表示、法線、連結成分を確認します。テクスチャがある場合は、形状修復によって表示位置がずれていないかも確認します。

アップロード後には、モデル全体が表示されたことだけで完了と判断しません。必要に応じて寸法、面積、断面、体積などを確認し、用途に合う状態であることを検証します。

問題が残っている場合は、アップロード先だけを原因と決めつけず、書き出したOBJを再検査します。元の点群、修復中のモデル、書き出したOBJ、アップロード後の表示を比較すると、どの段階で問題が発生したかを切り分けやすくなります。

案件ごとに、開いた表面を許容するのか、閉じた立体が必要なのか、複数部品を含めるのかを事前に決めておくことも重要です。合格条件が明確であれば、境界エッジや連結成分を必要以上に修復することを防げます。

まとめ

点群OBJアップロード前に非多様体エッジを直すには、検出されたエッジを一括で削除するのではなく、問題の原因を分類して順番に修復することが重要です。

最初に、一つのエッジを共有する面の数を確認します。閉じた立体では二枚の面が共有する状態が基本ですが、地形や板状モデルの外周には、一枚の面だけに接続する正常な境界エッジが存在することがあります。

次に、同じ位置に重なっている頂点や面を整理します。頂点統合の距離を大きくしすぎると、細い隙間や段差が失われるため、モデルの単位と最小形状に合わせて慎重に設定します。

穴と開放境界は、形と用途を見て区別します。閉じた立体の途中にある穴は修復対象ですが、地形外周や意図的な切断面は、そのまま残すことがあります。大きな欠損を推定で塞ぐ場合は、実測した形状ではないことを意識する必要があります。

面の接続を整理した後には、面方向と法線をそろえます。法線情報だけを調整するのではなく、面を構成する頂点順序も正常にしておけば、アップロード先で法線が再計算された場合にも形状を維持しやすくなります。

内部面と自己交差も、外観だけでは見つけにくい重要な確認項目です。断面表示や部分非表示を利用し、重なった部品の内部面、点群ノイズから生成された薄片、交差した三角形などを整理します。

修復後には、連結成分、面積がほぼゼロの面、極端に細長い面などを確認し、OBJとして書き出したファイルを再度読み込みます。編集画面で正常に見えることだけでなく、実際に出力されたOBJでも状態が保たれていることを確認します。

非多様体エッジをゼロにすることだけを目標にすると、正常な地形境界や必要な隙間まで失う場合があります。アップロード後に表示するのか、断面を確認するのか、体積を求めるのかによって、必要なメッシュの状態は異なります。

元の点群と修復後のメッシュを比較しながら、用途に必要な形状を維持することが大切です。異常が広範囲にある場合は、OBJ上の修復だけでなく、点群の外れ値、位置ずれ、密度差を見直し、再メッシュ化する方法も検討します。

点群OBJの確認手順を定型化すれば、アップロード時の変換エラーや表示欠損を減らし、その後の共有、計測、断面確認なども進めやすくなります。現場で取得した点群をより手軽に確認し、業務で活用する方法を検討している場合は、LRTK Phoneもあわせてご確認ください。

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

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