LRTKレフィクシア株式会社

点群OBJのゼロ面積ポリゴンを除去する6つのチェック手順

点群OBJでゼロ面積ポリゴンが発生する理由

点群から作成したOBJをアップロードしたときに、変換処理が途中で止まる、モデルの一部が欠ける、陰影が不自然になる、拡大すると細かな穴が見えるといった問題が起こることがあります。その原因として確認したいのが、面として記録されているにもかかわらず、実際には面積を持たないポリゴンです。

このような面は、ゼロ面積ポリゴン、縮退ポリゴン、退化ポリゴンなどと呼ばれます。三角形であれば、本来は異なる位置にある3つの頂点によって面が作られます。しかし、3頂点のうち2つが同じ位置にある場合や、3頂点が一直線上に並んでいる場合、囲まれる領域がないため面積はゼロになります。

点群OBJという表現は、点群をOBJ形式で保存したデータや、点群から生成したメッシュをOBJ形式で出力したデータを指すことがあります。OBJは頂点だけを記録することもできますが、一般的な3Dモデルとして利用する場合は、頂点を参照する面情報が含まれます。点群から面を生成する工程では、近隣点を接続して三角形を作るため、点の重複、密度差、欠測部、ノイズ、細い構造物などの影響を受けやすくなります。

例えば、同じ地点が複数回記録された点群をそのまま三角形化すると、異なる頂点番号を持ちながら座標が同じ点が作られることがあります。その2点を含む三角形は、形状上は線までつぶれます。また、点が完全には一致していなくても、非常に近い位置にある場合は、OBJの保存時やアップロード後の変換時に座標が丸められ、同一点として扱われる可能性があります。

点群の境界や遮蔽物の周辺でも、ゼロ面積に近い細長い三角形が生まれやすくなります。点密度が急に低下する場所では、離れた点同士を無理に接続することがあります。反対に、高密度な範囲では極端に近い点を結んだ小さな面が大量に作られることがあります。このような面は作成環境では表示できても、アップロード先の内部処理では不正面として扱われる場合があります。

ゼロ面積ポリゴンが一つ含まれているだけで、必ずアップロードに失敗するとは限りません。問題のある面を自動的に除外して処理を続ける仕組みもあります。一方で、面の法線計算、連結判定、軽量化、境界抽出などの工程で計算が不安定になり、処理時間の増加や表示不良につながることもあります。

したがって、点群OBJアップロードの問題を調べるときは、ゼロ面積ポリゴンの有無だけでなく、発生位置、数量、周囲の形状、座標精度、面の接続状態まで確認することが重要です。単に不正面をすべて削除するのではなく、なぜ発生したのかを把握してから修復すると、必要な形状を残しながら安全にデータを整えられます。

チェック手順1 エラーが発生する工程と範囲を切り分ける

最初のチェック手順は、問題がどの工程で発生しているかを切り分けることです。点群OBJをアップロードできないからといって、すぐにゼロ面積ポリゴンだけが原因だと判断してはいけません。点群の前処理、面の生成、OBJへの書き出し、アップロード、アップロード後の変換、画面上の描画という複数の工程があるため、異常が初めて現れる段階を確認します。

まず、元の点群が正常に表示されているかを確認します。元点群の時点で同じ位置に大量の点が重なっている場合や、明らかな外れ点が連続している場合は、面を作成する前の処理に問題がある可能性があります。元点群が正常でも、面生成直後に穴や細い線状の面が現れているなら、三角形化の条件を見直す必要があります。

次に、面生成直後のモデルと、OBJへ書き出した後に再読み込みしたモデルを比較します。書き出し前は正常で、OBJを再読み込みすると異常が生じる場合は、座標の丸め、面情報の変換、頂点番号の整理、三角形化など、出力処理による変化が疑われます。

OBJをローカル環境では正常に開けるのに、アップロード後だけ問題が出る場合は、アップロード先の変換条件との相性を確認します。アップロード先では、読み込んだ多角形を三角形へ分割したり、頂点を近接判定で統合したりすることがあります。その結果、出力元では面積を持っていた小さな三角形が、変換後にゼロ面積になる場合があります。

症状も詳しく記録します。アップロード直後にファイル形式のエラーが出るのか、変換処理が長時間終わらないのか、処理は完了するものの一部が欠けるのかによって、確認すべき項目が変わります。明確な読込エラーが出る場合は、頂点参照の不整合や行の記述異常も考えられます。処理が終わらない場合は、極小面や重複面が大量に存在し、内部の最適化処理に負荷をかけている可能性があります。

表示だけが不自然な場合は、ゼロ面積ポリゴンとともに法線や面の向きも確認します。視点を変えると面が消える、特定の方向から見ると黒くなる、細い筋がちらつくといった症状は、表裏の混在や重複面でも発生します。

モデルが大きい場合は、問題範囲を分割して調べる方法が有効です。対象を複数の領域に分けてそれぞれアップロードし、異常が残る領域を特定します。その領域をさらに分けることで、問題が集中している場所を絞れます。ただし、分割時に面や頂点の構成が変化すると、一時的に症状が消えることがあります。分割結果だけで原因を断定せず、元データ上の同じ領域も確認します。

切り分けを行うときは、元ファイルを直接編集しないことが大切です。元の点群、面生成直後のデータ、OBJ出力直後のデータ、修復作業用データを分けて保管します。ファイル名には処理段階が分かる情報を含め、頂点数、面数、座標単位、出力条件も記録しておくと、問題の発生工程を追跡しやすくなります。

チェック手順2 面を構成する頂点番号の重複を確認する

2つ目のチェック手順は、各面が参照している頂点番号に重複がないかを確認することです。OBJでは、頂点の座標を記録する部分と、それらの頂点を使って面を構成する部分が分かれています。面を示す記述では、どの頂点をどの順序で結ぶかが番号で指定されます。

三角形の面であれば、通常は3つの異なる頂点番号が必要です。同じ頂点番号が一つの面内で繰り返されている場合、実質的には2点以下で構成された形になります。2つの頂点番号が同じなら三角形は線までつぶれ、3つすべてが同じなら一点になります。

頂点番号の重複は、面の変換処理、頂点統合、不要頂点の削除、番号の振り直しなどを行った際に発生することがあります。例えば、近接している2頂点を一つに統合した後、面の参照番号だけを置き換えると、それまで異なる3頂点で構成されていた面が同じ頂点を2回参照する状態になります。頂点統合後にゼロ面積面を再検査しなければ、この不正面が残ります。

四角形以上の多角形についても同様です。同じ頂点番号が途中で繰り返されると、輪郭の一部が折り返したり、面が自己交差したりすることがあります。アップロード先で多角形が自動的に三角形化されると、その一部にゼロ面積三角形が生成される可能性があります。

確認時には、OBJ上の頂点番号とテキストファイルの行番号を混同しないように注意します。OBJには頂点だけでなく、コメント、テクスチャ座標、法線、グループ、材質などの情報が混在することがあります。そのため、ファイル全体の10行目が頂点番号10を意味するとは限りません。

面の記述に頂点番号以外の番号が並んでいる場合もあります。テクスチャ座標や法線を参照する情報が付いていると、一つの頂点に関する記述が複数の番号で構成されます。この場合でも、ゼロ面積判定で最初に確認すべきなのは形状を構成する頂点番号です。法線番号やテクスチャ座標番号が重複していても、それだけで面積がゼロになるわけではありません。

重複する頂点番号を含む面が見つかった場合は、基本的にその面を削除します。別の頂点番号へ機械的に置き換えて面を残すと、実際には存在しない形状を作るおそれがあります。周囲の面や元点群を確認し、本来参照すべき頂点を明確に判断できる場合に限って再構成します。

この検査では、存在しない頂点番号を参照していないかも同時に確認すると効率的です。頂点数を超える番号や、無効な番号を参照する面は、ゼロ面積とは別の問題ですが、アップロードエラーの原因になります。また、同じ3頂点を順序だけ変えて重複登録した面がないかも確認します。重複面が同じ位置に重なると、ちらつきや陰影の乱れにつながります。

頂点番号の重複面が大量に見つかる場合は、個別に削除するだけでなく、直前に行った頂点統合や面再構成の処理を見直します。数個の偶発的な不正面なら除去で対応できますが、モデル全体に広がっているなら、作成工程そのものを修正した方が、形状を安全に維持できます。

チェック手順3 同一座標と極近接頂点を検出する

3つ目のチェック手順は、異なる頂点番号が同じ座標を持っていないか、または極端に近い位置に存在していないかを確認することです。頂点番号がすべて異なっていても、座標が同じなら、幾何学的には同じ点です。この状態は、面情報だけを確認しても見つけられません。

同一座標の頂点は、複数の点群を結合したときや、重なる範囲を別々に処理してから統合したときに発生しやすくなります。同じ場所を複数回計測したデータを重ねた場合にも、非常に近い点が多数存在することがあります。点群として表示するだけなら目立たなくても、面を生成すると縮退した三角形の原因になります。

例えば、三角形を構成する3頂点のうち、2頂点の座標が完全に同じであれば、その三角形は線になります。3頂点すべてが同一座標なら、面は一点までつぶれます。頂点番号は異なるため、番号重複の検査を通過してしまいます。

極近接頂点はさらに注意が必要です。座標が完全には同じでなくても、その差が保存精度や計算精度より小さい場合、後工程で同一点として扱われることがあります。書き出し前には小さな面積を持っていた三角形でも、OBJ保存時に小数桁が減ると、複数の頂点が同じ座標値へ丸められる可能性があります。

アップロード先が近接頂点を自動統合する場合もあります。この処理には一定の許容距離が使われるため、その距離より近い頂点が一つにまとめられます。統合前の面は正常でも、統合後に同じ頂点を2回参照することになり、ゼロ面積面へ変化する場合があります。

同一座標の頂点を統合する処理は有効ですが、すべての重複座標を無条件に一つにすればよいわけではありません。形状上は同じ位置でも、面の表裏、法線の分割、材質境界、テクスチャの切れ目などを表現するために、別の頂点として保持されている場合があります。形状だけを対象に統合するのか、表示情報を含めて統合するのかを判断する必要があります。

近接頂点を統合するときは、許容距離を慎重に設定します。許容距離が大きすぎると、段差の上下、薄い板の両面、縁石の角、細い溝、狭い隙間など、本来別の位置として残すべき頂点まで統合されます。その結果、形状が丸まったり、薄い部分が消えたり、穴が閉じたりすることがあります。

反対に、許容距離が小さすぎると、アップロード先では統合される近接点が修復前のOBJに残ります。作成環境では正常でも、アップロード後に縮退する状態を防げません。許容距離は、モデルの単位、点間隔、計測精度、対象物の最小寸法を考慮して決めます。

検査するときは、最初に完全一致する座標を抽出し、次に非常に近い頂点を段階的に調べる方法が安全です。いきなり大きな許容距離で全体を統合せず、小さな範囲の複製データで結果を確認します。処理前後の頂点数、面数、形状差を記録し、必要な細部が失われていないかを確かめます。

頂点統合後には、必ず面を再検査します。統合によって同じ頂点番号を複数回参照する面、面積がゼロになった面、同じ位置に重なる面が新たに生じる可能性があります。近接頂点の統合とゼロ面積ポリゴンの削除は、別々の作業ではなく連続した検査工程として扱うことが重要です。

チェック手順4 一直線上の頂点と極小面積を確認する

4つ目のチェック手順は、面を構成する頂点が一直線上に並んでいないか、面積が極端に小さくなっていないかを確認することです。3頂点がすべて異なる座標を持っていても、同じ直線上に並んでいれば三角形の面積はゼロになります。

一直線上の頂点は、道路縁、構造物の角、測線、断面線など、点が線状に並ぶ場所で発生しやすくなります。点群から自動的に面を生成すると、同じ線上の点を3つ選んで面を作ってしまう場合があります。また、ほぼ一直線に並ぶ3点から作られた極端に細長い三角形は、数学的には面積を持っていても、処理環境によって不安定になることがあります。

極小面積の判定では、面積が完全にゼロかどうかだけを見るのでは不十分です。座標の丸めや近接頂点統合によって、後からゼロになる可能性がある面も確認する必要があります。そのため、実務ではゼロより少し大きいしきい値を設定し、その値以下の面を検査対象とする方法が考えられます。

ただし、面積しきい値はモデルの単位によって意味が変わります。メートル単位のモデルとミリメートル単位のモデルに同じ数値を使うと、除去される面の大きさが大きく異なります。単位を確認せずにしきい値を流用すると、必要な小面まで大量に削除したり、問題のある極小面を残したりする原因になります。

対象物の性質も考慮します。広い地表面を扱う場合は、極端に小さな三角形を削除しても形状への影響が小さいことがあります。一方で、細い配管、薄い部材、狭い溝、鋭い角などを含むモデルでは、小さな面が重要な形状を表現している場合があります。面積だけで一律に削除せず、周囲の面や元点群との関係を確認します。

細長い三角形を判定する際は、面積だけでなく辺の長さの比率も参考になります。非常に長い辺と極端に短い辺を持つ三角形は、面積がしきい値を超えていても、法線計算や軽量化で不安定になることがあります。このような面は、点密度が急変する境界や、離れた点同士を接続した場所に現れやすくなります。

一直線上またはほぼ一直線上の頂点で構成された面を見つけた場合は、その面を削除するだけでなく、周囲の接続状態を確認します。削除によって穴ができても、その部分がもともと未計測範囲やデータ境界なら、無理に埋めない方が適切なことがあります。逆に、連続した地表面の途中に小さな欠損ができた場合は、周囲の正常な頂点を使って局所的に面を再構成します。

面を再構成するときは、元のゼロ面積面を別の細長い面へ置き換えるだけにならないよう注意します。再三角形化後に、面積、辺長、法線方向、周辺面との角度差を確認します。自動的な穴埋めを行う場合も、生成された面が実測形状を正しく表しているとは限りません。未計測部分を補間した面は、実測部分と区別して扱う必要があります。

極小面が大量に存在する場合は、個々の面を削除するより、点群密度や面生成条件を見直す方が適切です。特定領域だけ過密になっているなら、面生成前に点密度を整える方法があります。離れた点を結んだ細長い面が多いなら、接続できる最大距離を制限する方法が考えられます。発生原因に合わせて処理することで、必要な形状を保ちながら不安定な面を減らせます。

チェック手順5 座標精度と三角形化の条件を見直す

5つ目のチェック手順は、OBJへ保存された座標の精度、座標の大きさ、単位、三角形化の条件を見直すことです。ゼロ面積ポリゴンは元データに最初から存在するとは限らず、書き出しや読み込みの過程で新たに生じることがあります。

測量や土木で使用する点群は、原点から離れた大きな座標値を持つことがあります。その一方で、表現したい細部の差は数ミリメートルから数センチメートル程度という場合があります。大きな絶対座標と小さな頂点間差を同時に扱うと、処理環境の数値精度によって細かな差が保持されにくくなることがあります。

作成環境では頂点同士がわずかに離れていても、OBJを読み込む環境で数値が丸められれば、同じ位置として扱われる可能性があります。その結果、正常だった三角形が線や点へ縮退します。原点から遠いモデルで極小面が多発している場合は、座標値の大きさと使用環境の計算精度を確認します。

対策として、元の位置情報を記録したうえで、対象範囲をローカル原点の近くへ平行移動して処理する方法があります。座標の整数部を小さくすると、局所的な頂点差を保持しやすくなる場合があります。ただし、移動量を記録せずに作業すると、元の位置へ正確に戻せません。業務で座標が必要な場合は、移動前の基準点、移動量、回転、単位を必ず管理します。

OBJには、モデルの単位を必ず記録する共通の仕組みがあるとは限りません。そのため、書き出し側がメートルを想定し、読み込み側が別の単位として扱うと、モデルの大きさが大幅に変わることがあります。単位が変われば、近接頂点統合や極小面判定に使われるしきい値の意味も変わります。

OBJの座標を保存する小数桁数も確認します。小数点以下を少なくしすぎると、元点群に存在した細かな高低差や位置差が失われます。複数の頂点が同じ値へ丸められたり、3頂点が一直線上へそろったりすることで、ゼロ面積面が発生します。

一方で、小数桁を過度に増やしても、元の計測精度を超える正確さが得られるわけではありません。必要なのは、元点群の精度と、保持したい最小形状を表現できる桁数です。書き出し前後で代表的な頂点の座標を比較し、意図しない丸めが起きていないかを確認します。

多角形を含むOBJでは、アップロード先で三角形化された際に不正面が発生することがあります。四角形以上の面が凹形状になっていたり、頂点が一直線上に並んでいたり、輪郭が自己交差していたりすると、三角形への分割結果が安定しません。そのため、アップロード前に三角形化し、各三角形を検査しておく方法が有効です。

三角形化するときは、頂点の並び順も重要です。面の外周を順番にたどる並びになっていないと、面が折り返したり、自己交差したりします。見た目では一枚の面に見えても、内部の分割で重複面やゼロ面積面が生じることがあります。

点群から面を生成する設定では、離れた点同士を結ぶ最大距離、近接点を同一とみなす距離、穴を補間する範囲、対象面の傾きなどを確認します。広い未計測部を自動的に埋める設定は、長く細い三角形を作る原因になります。反対に、接続距離を小さくしすぎると穴が増えるため、対象物と点密度に合わせて調整します。

修復では、ゼロ面積面を除去してから三角形化するのか、先に多角形を三角形化してからゼロ面積面を除去するのかによって結果が変わることがあります。一般には、面の構造を確認し、必要に応じて三角形化した後、各三角形の面積を検査する方が、アップロード後の状態を予測しやすくなります。

チェック手順6 修復後のOBJを検証して再アップロードする

6つ目のチェック手順は、ゼロ面積ポリゴンを除去したOBJの整合性を検証し、条件をそろえて再アップロードすることです。不正面を削除しただけで作業を終えると、修復処理によって生じた別の問題を見落とす可能性があります。

最初に、ゼロ面積面と設定したしきい値以下の極小面が残っていないかを再検査します。修復前後を比較するため、判定条件は同じにします。検査ごとにしきい値を変えると、面が減った理由を判断できません。

次に、同じ頂点番号を複数回参照する面、存在しない頂点番号を参照する面、同一位置に重なる面、未使用頂点を確認します。頂点を統合した場合は、統合後の参照番号が正しく整理されていることを確かめます。面を削除した後に使われなくなった頂点が大量に残ると、ファイル容量が増え、後の検査も複雑になります。

ただし、未使用頂点が存在することと、アップロード不能になることは同じではありません。未使用頂点を整理する目的は、ファイルを簡潔にし、参照関係を分かりやすくすることです。削除する際は、面、法線、テクスチャ座標などの対応を壊さないようにします。

面を再構成した場合は、法線を再計算します。ゼロ面積面は安定した法線を持てないため、削除前に作られた不正な法線情報が残っている可能性があります。周囲の面と向きがそろっているかを確認し、必要に応じて頂点の並び順も整えます。

法線や面の表裏が乱れていると、特定方向から見たときに面が消える、陰影が反転する、一部が黒くなるといった症状が起きます。ゼロ面積面を削除してアップロードエラーが消えても、表示不良が残る場合は、この点を確認します。

修復後のOBJは、新しい空の環境へ読み込み直して確認します。編集中の環境には、書き出されていない補助情報や一時的な表示設定が残っていることがあります。OBJとして保存された内容だけを読み直すことで、実際にアップロードされる状態を確認できます。

確認時は、全体表示だけでなく、問題があった領域を拡大します。辺を表示できる環境であれば、三角形の形状を確認し、極端に細い面や不自然な密集が残っていないかを見ます。視点を回転し、裏側や斜め方向からも確認すると、面の向きや欠損を発見しやすくなります。

修復前後で頂点数、面数、ファイル容量を比較します。ゼロ面積面を数個削除しただけなのに面数が大幅に減っている場合は、近接頂点統合や自動修復が広い範囲へ影響した可能性があります。必要な地物、段差、薄い構造、境界が失われていないかを元データと比較します。

再アップロード用のファイルは、元ファイルと区別できる名前にします。処理内容や版が分かるようにして、誤って修復前のデータをアップロードしないようにします。ただし、過度に長い名前や特殊な記号は避け、関連ファイルがある場合は参照関係も確認します。

再アップロード後は、処理が完了したことだけで成功と判断しません。モデルの表示位置、縮尺、上下方向、面の欠け、陰影、操作時の安定性を確認します。ゼロ面積面の問題が解消しても、単位や座標軸の違いによって別の異常が現れることがあります。

数量計算や出来形確認に利用するモデルでは、修復前後の体積、表面積、代表点の座標、断面形状なども比較します。見た目を整えるための自動修復が、計測結果を変えていないかを確認することが重要です。削除した面の位置と数、頂点統合の条件、再三角形化の有無を記録しておけば、後から処理内容を説明しやすくなります。

ゼロ面積ポリゴンと間違えやすい別の原因

点群OBJアップロード時のエラーや表示不良は、すべてゼロ面積ポリゴンで発生するわけではありません。ゼロ面積面を除去しても改善しない場合は、別の原因を切り分ける必要があります。

まず確認したいのが、面情報の有無です。点群を頂点だけでOBJへ書き出した場合、面を示す情報が含まれていないことがあります。アップロード先が面モデルを前提としていると、頂点だけのOBJを正常なモデルとして表示できない場合があります。この状態では、ゼロ面積面を除去する対象そのものがありません。

次に、頂点番号の範囲外参照があります。面が存在しない頂点番号を参照していると、読込処理が失敗する可能性があります。頂点の削除や番号の振り直しを途中で行った場合、面側の参照が更新されていないことがあります。

面の頂点順序が反転している場合は、表裏の判定によって面が消えて見えることがあります。モデル自体には面積があっても、視点方向から裏面として扱われ、表示されない状態です。視点を反対側へ移すと見える場合は、面の向きや法線を確認します。

重複面もゼロ面積面と似た表示不良を起こします。同じ場所に2枚以上の面が重なっていると、どちらを描画するかが不安定になり、ちらつきや縞模様として見えることがあります。面積はゼロではないため、ゼロ面積検査だけでは見つかりません。

自己交差する面や、複雑な非多様体形状も問題になります。一本の辺を多数の面が共有していたり、面同士が不自然に貫通していたりすると、境界判定や法線計算が不安定になることがあります。開いた地形モデルは必ずしも閉じた形状である必要はありませんが、意図しない接続は修正します。

ファイルの記述や保存状態も確認します。OBJはテキスト形式であるため、途中で保存が中断されたり、一部の行が欠けたりすると、最後まで読み込めないことがあります。ファイル容量が極端に小さくなっていないか、末尾まで面情報が記録されているかを確認します。

関連する材質や画像の参照が原因で、モデルの一部が正しく見えないこともあります。形状は読み込まれていても、透明度や材質設定の影響で消えたように見える場合があります。ゼロ面積面の修復後も見え方だけが異常なら、形状表示と材質表示を分けて検証します。

座標値に扱えない数値が含まれている場合もあります。計算途中の異常によって、通常の有限な座標として解釈できない値が書き出されると、モデル全体の範囲計算や表示位置が乱れる可能性があります。極端に大きい値や不正な値が混ざっていないかを確認します。

このように、点群OBJアップロードの問題は複数の原因が重なって発生することがあります。ゼロ面積面の検査は重要ですが、それだけを唯一の原因と考えず、頂点、面、法線、座標、ファイル記述、表示設定を順番に切り分けることが必要です。

大容量の点群OBJを効率よく検査する方法

大容量の点群OBJには、数百万の頂点や大量の三角形が含まれることがあります。全体に対して一度に重複頂点の統合、ゼロ面積面の削除、法線再計算などを行うと、処理に長い時間がかかり、修復結果の確認も難しくなります。

効率よく検査するには、最初に代表的な範囲を抽出します。平坦な地表、構造物の角、点密度が高い場所、点密度が低い場所、欠測部の周辺など、性質の異なる範囲を選びます。その小範囲で近接頂点の許容距離や最小面積のしきい値を試し、形状への影響を確認します。

代表範囲で適切な条件を確認してから全体へ適用すると、過剰な削除を防ぎやすくなります。ただし、点密度が場所によって大きく異なるモデルでは、全域に同じ条件を適用できない場合があります。密度や対象物の種類ごとに範囲を分け、異なる条件で処理することも検討します。

問題箇所が分からない場合は、モデルを空間的に分割して検査します。複数の領域へ分けてゼロ面積面の数を調べれば、不正面が集中している範囲を把握できます。エラーが出る領域を段階的に狭めれば、全体を何度も処理するより効率的です。

ただし、分割境界には注意が必要です。面の途中で単純に切ると、境界上に新しい穴や細い面が生じることがあります。検査目的の分割では、元のデータを変更せずに範囲選択して確認するか、境界付近に重なりを持たせます。処理後に再結合する場合は、重複頂点と重複面を整理します。

大容量データでは、ゼロ面積面の修復と軽量化を同時に行わない方が原因を追いやすくなります。最初に不正な面や頂点を整理し、正常な形状になったことを確認してから面数を減らします。軽量化処理によって新たな極小面や重複面が生じることもあるため、最後にもう一度検査します。

面の全件を目視確認することは現実的ではありません。そのため、処理前後の数値記録が重要です。頂点数、面数、ゼロ面積面数、極小面数、重複頂点数、重複面数、削除数を残します。変化が想定より大きい場合は、処理条件が強すぎないかを確認します。

アップロード試験では、全体データを毎回使用するのではなく、問題を再現できる最小範囲を使うと効率的です。小さな検証ファイルでアップロードの成否を確認し、問題が解消した条件を全体へ反映します。全体へ適用した後も、再び小範囲を抽出して形状差を確認します。

大容量のOBJでは、頂点数や面数だけでなく、グループ数、材質数、関連ファイル数、座標範囲も処理負荷に影響する場合があります。不要なグループや参照されていない情報を整理し、アップロードに必要な要素だけを含めることで、検査と変換を安定させやすくなります。

ゼロ面積ポリゴンを再発させないデータ作成方法

ゼロ面積ポリゴンを毎回アップロード前に削除するだけでは、作業時間が増え、修復による形状変化のリスクも残ります。再発を防ぐには、点群の取得後からOBJ出力までの工程を整えることが重要です。

最初に、面生成前の点群を確認します。同じ位置に重なる点、極端に近い点、周囲から離れた孤立点、明らかな外れ点が多い場合は、必要な範囲で整理します。ただし、細い構造物や鋭い境界を構成する点を誤って削除しないようにします。

複数の点群を結合する場合は、重なる範囲の扱いを決めます。単純にすべての点を重ねると、同一位置や極近接位置の点が増えます。位置合わせの精度を確認し、必要に応じて重複範囲の点密度を調整します。

面生成時には、離れた点を無制限に接続しないようにします。未計測部や遮蔽物の裏側をまたぐ長い三角形は、細長い不安定な面になりやすくなります。接続距離や穴埋め範囲を対象物と点密度に合わせて設定します。

点が極端に密集している範囲では、小さな面が大量に作られることがあります。必要な形状を維持できる範囲で点密度を整えると、極小面の発生を減らせます。ただし、一律に点を減らすと、角や段差が丸くなることがあるため、形状の変化を確認します。

地表と構造物を一つの条件で面生成すると、境界部で不自然な接続が生じる場合があります。対象の性質が異なる場合は、範囲を分けて面を作成し、必要な部分だけを接続する方法があります。地表の緩やかな面と、構造物の鋭い角では、適切な生成条件が異なります。

OBJへ出力するときは、座標単位と小数桁数を確認します。元点群の精度と保持したい最小形状を表現できる桁数を使用し、不要な丸めを避けます。大きな座標を使用する場合は、ローカル原点への移動が必要かを検討し、移動情報を記録します。

多角形のまま出力する場合は、アップロード後の三角形化で問題が起きないことを確認します。安定性を優先するなら、出力前に三角形化し、ゼロ面積面と極小面を検査します。三角形化後は法線を再計算し、面の向きをそろえます。

出力前の標準検査を工程として決めておくと、作業者による品質差を減らせます。同一面内の頂点番号重複、同一座標、近接頂点、ゼロ面積面、重複面、範囲外参照、未使用要素、法線を順番に確認します。処理の順序を固定すると、問題が発生した際に原因を追跡しやすくなります。

出力後は、保存したOBJを新規に読み込み直します。作成中の表示だけで正常と判断せず、ファイルとして保存された内容を確認します。この再読込検査をアップロード前に行うことで、書き出し時の座標丸めや参照不整合を早期に発見できます。

点群OBJを修復するときの注意点

点群OBJの修復では、アップロードエラーが消えたことだけを成功条件にしないことが重要です。強い修復処理を行えば、問題のある面とともに必要な形状まで削除される可能性があります。

特に注意したいのが、近接頂点の統合距離です。大きな値を設定すると、薄い部材の表裏、段差の上下、狭い溝の両側などが一つにまとまります。モデルの面数が減って処理が軽くなっても、実際の形状が変わっていれば適切な修復とはいえません。

極小面を一括削除する場合も、対象物の最小寸法を確認します。地表面では不要に見える小面でも、構造物の角や細部では必要な場合があります。面積だけで自動削除せず、問題のある範囲と正常な範囲を比較します。

自動穴埋めにも注意が必要です。ゼロ面積面を削除すると小さな穴ができることがありますが、穴があるからといって必ず埋める必要はありません。元点群に情報がない場所を自動的に補間すると、実測していない面を作ることになります。

数量計算、出来形確認、断面作成などに利用する場合、補間面の影響が結果へ現れる可能性があります。修復した範囲、削除した面、追加した面を記録し、必要に応じて実測範囲と補間範囲を区別します。

元ファイルは必ず残します。頂点統合、面削除、再三角形化、軽量化などは、元の状態へ完全には戻せない処理になることがあります。修復前後のファイルを別名で保存し、どの条件で処理したかを記録します。

複数の修復を一度に適用すると、どの処理が形状変化の原因になったか分かりにくくなります。最初に同一座標を確認し、次に近接頂点、ゼロ面積面、重複面、法線というように段階を分けます。各段階で保存と確認を行えば、異常が出た時点へ戻りやすくなります。

OBJの頂点番号を直接編集する場合は、関連するすべての面との対応を確認します。一つの頂点を削除すると、それ以降の番号を振り直す必要が生じることがあります。面の参照番号を正しく更新しなければ、存在しない頂点を参照する別のエラーが発生します。

座標をローカル原点へ移動する場合は、位置を戻すための情報を別途管理します。平行移動量だけでなく、回転や単位変換を行った場合はその内容も記録します。現場座標との対応が必要な業務では、見た目が正常でも位置情報を失ったデータは使用できません。

最終確認では、元点群と修復後モデルを重ねて比較します。表面の欠け、境界の移動、段差の消失、薄い形状の変形がないかを確認します。必要な精度は用途によって異なるため、単なる表示用モデルなのか、計測や数量算出に使うモデルなのかを踏まえて評価します。

まとめ

点群OBJのアップロード時に変換停止、表示欠損、陰影の乱れなどが発生した場合は、ゼロ面積ポリゴンが含まれていないかを確認することが重要です。ゼロ面積ポリゴンは、同じ頂点番号の重複、同一座標の頂点、極近接頂点、一直線上の3頂点、座標の丸め、不適切な三角形化などによって発生します。

確認は、問題が生じる工程と範囲の切り分けから始めます。そのうえで、面内の頂点番号、頂点座標、極小面積、座標精度、三角形化条件を順番に調べます。修復後は、ゼロ面積面が残っていないことだけでなく、重複面、範囲外参照、法線、面の向き、未使用要素も確認してから再アップロードします。

近接頂点の統合距離や極小面のしきい値は、モデルの単位、点間隔、対象物の最小寸法に合わせる必要があります。他のデータで使った数値をそのまま流用すると、必要な細部を失ったり、不正面を残したりするおそれがあります。

大容量の点群OBJでは、代表範囲で条件を試し、問題領域を分割して検査すると効率的です。修復と軽量化を同時に行わず、正常な形状へ整えてから面数を調整し、最後に再検査します。

再発を防ぐには、面生成前の点群整理、接続距離の調整、座標精度の確保、出力前検査、出力後の再読込確認を標準化することが有効です。元データを残し、修復条件と変更量を記録することで、結果の比較や処理内容の説明もしやすくなります。

現場で取得した点群をアップロードや共有へ円滑につなげるには、取得段階から座標、点密度、対象範囲を適切に管理することが大切です。点群の取得から確認、共有までの作業を効率化したい場合は、LRTK Phoneの活用も検討してみてください。

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

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