点群OBJで非多様体メッシュが問題になる理由
点群から作成したOBJファイルをアップロードした際に、形状の一部が欠ける、面が黒く見える、モデルが裏返る、読み込み処理が完了しないといった問題が起きることがあります。こうした現象は、ファイル容量や通信環境だけでなく、OBJに含まれるメッシュの構造が原因になっている場合があります。 特に確認したいのが、非多様体メッシュと呼ばれる状態です。非多様体メッシュとは、立体としてのつながり方が幾何学的に不自然で、面の内側と外側を一意に判断しにくい構造を指します。たとえば、1本の辺に3枚以上の面が接続している状態、厚みのない面だけが内部に残っている状態、頂点同士が接触しているだけで面が連続していない状態などが該当します。 一般的な閉じた立体では、内部の辺には通常2枚の面が接続します。外周として開放している辺には1枚の面だけが接続します。しかし、同じ辺に多数の面が集まっていたり、同じ位置に複数の頂点や面が重なっていたりすると、表示側の処理が表裏や接続関係を正しく判断できないことがあります。 OBJ形式は、頂点座標、テクスチャ座標、法線、面の頂点番号などをテキストで記述できる汎用的な形式です。一方で、ファイル自体が立体として正しいことを必ず保証する仕組みではありません。文法上は読み込めるOBJでも、メッシュの接続関係に問題があれば、アップロード先で期待どおりに表示されない可能性があります。 点群からメッシュを生成する工程では、計測対象の死角、反射の弱い表面、移動体、細い部材、重複計測、ノイズなどの影響を受けます。その結果、穴、重複面、細長い三角形、内部面、自己交差などが生じることがあります。メッシュ生成時には見た目が整っていても、拡大すると微小な欠陥が多数残っているケースも珍しくありません。 非多様体メッシュを修復する目的は、単にエラー表示を消すことではありません。アップロード先で処理しやすい構造に整え、形状の欠落や意図しない結合を防ぎ、閲覧や計測に使える状態にすることが重要です。ただし、修復処理を強くかけすぎると、本来必要な薄板、開放面、細い配管、手すり、ケーブルなどが削除されることがあります。そのため、検出、整理、穴埋め、交差除去、法線確認、最終検証の順に作業し、各段階で形状が変わりすぎていないかを確認する必要があります。 以下では、点群OBJアップロード前に非多様体メッシュを直すための6つの手順を、実務で確認したいポイントとともに解説します。
手順1 非多様体の箇所を検出する
最初に行うべき作業は、自動修復ではなく問題箇所の把握です。非多様体と判定される理由は一つではないため、何が起きているかを確認せずに一括修復すると、必要な形状まで失われるおそれがあります。 メッシュ編集機能を備えた汎用的な三次元編集環境には、非多様体の辺や頂点を選択する検査機能が用意されていることがあります。検査を実行すると、1本の辺に3枚以上の面が接続している部分、孤立した頂点、開いた境界、接続が不自然な部分などを抽出できます。ただし、どの状態を非多様体として扱うかは編集環境や検査条件によって異なるため、検出結果だけで修復方針を決めないことが大切です。 まず、モデル全体を表示した状態で検出箇所の分布を確認します。問題箇所がモデル全体に均等に散らばっている場合は、点群からメッシュを生成した条件そのものに原因がある可能性があります。一方、特定の設備、床下、壁際、樹木、光沢面などに集中している場合は、計測時の死角やノイズの影響を受けた可能性があります。 次に、検出された箇所を拡大し、境界が意図したものかを確認します。建物の外形を閉じた立体として扱いたい場合、外周の穴は修復対象になります。しかし、窓の開口、配管の端部、トンネルの入口、切断した断面などは、意図的に開いていることがあります。開放境界が存在するだけで、必ず不良とは限りません。 薄い部材にも注意が必要です。点群から作成したモデルでは、鋼板、看板、フェンス、屋根材などが厚みのない一枚の面として再現されることがあります。このような面は閉じた立体ではありませんが、閲覧用途では必要な形状です。閉じた立体だけを正しいものとして自動修復すると、薄い部材が消える可能性があります。 自己交差についても確認します。自己交差とは、同じメッシュ内の面同士が不自然に貫通している状態です。点群の重複範囲を別々にメッシュ化して結合した場合や、複雑な凹凸を低い解像度で面化した場合に発生しやすくなります。自己交差は見た目では分かりにくいことがありますが、穴埋めや法線計算を不安定にする原因になります。 問題箇所を確認するときは、元の点群とメッシュを重ねて比較すると判断しやすくなります。メッシュだけを見ると、穴を埋めるべきか、不要な面を削除すべきか判断できないことがあります。元の点群に十分な計測点があるのに面が乱れている場合は、メッシュ生成または結合処理の問題が考えられます。点群自体が欠けている場合は、修復によって正確な形状を復元することは難しく、周囲の形状から補間することになります。 この段階では、非多様体の箇所をすべて自動修正する必要はありません。問題を、重複、穴、内部面、交差、法線、孤立要素などに分けて把握することが重要です。分類してから順番に修復すれば、形状を過度に変えずにOBJを整えやすくなります。
手順2 重複頂点と重複面を整理する
非多様体メッシュを修復するときは、最初に重複頂点と重複面を整理します。重複が残ったまま穴埋めや法線修正を行うと、同じ位置に複数の境界が作られ、修復結果が不安定になることがあります。 重複頂点とは、座標が同じ、または非常に近いにもかかわらず、別の頂点として登録されている状態です。見た目では一つにつながっていても、データ上では別々の頂点になっていると、面同士が接続されていないと判定されます。これにより、細い隙間や開いた境界が大量に発生することがあります。 頂点を統合するときは、距離のしきい値を慎重に設定します。しきい値が小さすぎると、ほぼ同じ位置にある重複頂点を統合できません。反対に、しきい値が大きすぎると、本来別の位置にある頂点まで結合され、角や細部がつぶれます。 適切なしきい値は、モデルの単位、全体寸法、点密度、必要な精度によって変わります。数十メートル規模の設備モデルと、数センチメートル規模の部品モデルでは、同じ数値を使えません。OBJの座標値だけで判断せず、現実の寸法と照らし合わせる必要があります。 点群から生成したメッシュには、非常に短い辺や極端に小さい面が含まれることがあります。これらはノイズや局所的な重複から生じる場合があり、頂点統合によって整理できることがあります。ただし、細い配線、金網、手すりなどを再現している可能性もあるため、小さいという理由だけで一律に削除しないようにします。 重複面は、同じ頂点の組み合わせを持つ面が複数存在する状態です。面の向きまで同じ重複と、表裏が反対になった重複があります。同じ位置に反対向きの面が重なっていると、表示時にちらついたり、部分的に黒くなったりすることがあります。透明表示では、面の描画順序が不安定になり、重なりが目立つ場合もあります。 点群を範囲ごとに処理し、後からメッシュを結合した場合は、境界付近で重複が発生しやすくなります。隣接する範囲に同じ壁面や床面が含まれていると、それぞれから似た面が生成されます。単純にデータを結合しただけでは、見た目がほぼ同じ面が二重に残ることがあります。 重複面の整理では、完全に一致する面だけでなく、近接して平行に重なっている面も確認します。わずかに位置が異なる面は自動検出されにくく、薄い二重壁のような構造になります。元の点群と比較し、実際に二重構造が存在するのか、処理上の重複なのかを判断します。 孤立した頂点や辺も、この段階で整理します。どの面にも使用されていない頂点、面を構成していない短い辺、モデル本体から離れた小さな面群は、アップロード後の表示範囲や自動調整に影響することがあります。遠方に孤立要素があると、モデル全体を表示した際に本体が極端に小さく見える場合があります。 ただし、孤立しているように見える要素が、現場内の別設備や基準点を表している可能性もあります。不要と判断できるものだけを削除し、判断が難しい場合は別ファイルへ退避しておくと安全です。 重複頂点と重複面を整理した後は、もう一度非多様体の検査を実行します。重複の解消だけで、多数の開放境界や接続不良が改善する場合があります。この時点で問題が減っていれば、後続の穴埋めや交差除去を必要最小限に抑えられます。
手順3 開いた境界と不要な穴を修復する
重複を整理したら、開いた境界と不要な穴を確認します。閉じた立体として扱う必要があるメッシュでは、穴が残っていると内側と外側を正しく判定できず、体積計算や断面処理が不安定になることがあります。 開いた境界は、1本の辺に面が1枚しか接続していない部分です。ただし、開いていること自体が必ず誤りとは限りません。地表面、壁面、切断面、入口、開口部など、用途によっては意図した境界です。修復前に、どこまでを閉じた立体として扱うのかを決める必要があります。 点群から生成した地形メッシュは、計測範囲の外周が開いているのが一般的です。地表面だけを表すメッシュに底面や側面を追加して閉じると、立体としては閉じますが、元の計測結果には存在しない面が作られます。閲覧だけが目的であれば、外周を無理に閉じる必要がない場合もあります。 一方、構造物の外形を閉じたモデルとしてアップロードし、体積や内部外部の判定に使う場合は、不要な穴を修復する必要があります。穴の輪郭が単純で、周囲の面が滑らかにつながっている場合は、境界を埋める処理で対応できます。 穴埋めの際は、穴の大きさを確認します。微小な穴であれば、周囲の頂点を使って面を生成しても形状への影響は限定的です。しかし、大きな欠測範囲を一枚または少数の面で埋めると、実際とは異なる平面が作られる可能性があります。 曲面上の大きな穴を修復する場合は、単純にふたをするのではなく、周囲の曲率や元の点群を参考に面を分割しながら補間します。点群に情報が残っている場合は、その点を基準にメッシュを再生成した方が正確なことがあります。点群にも情報がない場合は、修復部分が推定形状であることを作業記録に残しておくと、後から判断しやすくなります。 穴の境界が複雑に折れ曲がっている場合は、境界周辺に重複頂点や交差面が残っていないかを確認します。境界が自己交差している状態では、穴埋め処理が失敗したり、ねじれた面が生成されたりすることがあります。先に境界の頂点を整理し、輪郭を単純な閉曲線に近づける必要があります。 穴を埋めた後は、生成された面の分割状態を確認します。極端に細長い三角形や、ほぼ面積を持たない三角形が作られていると、表示や法線計算が不安定になることがあります。必要に応じて局所的に頂点を追加し、面の形を整えます。 細い隙間については、両側の境界を単純に接続すると形状が急激に変化する場合があります。たとえば、壁と床の間にわずかな隙間がある場合、頂点統合で閉じられることもあれば、新しい面を作った方がよいこともあります。周囲の寸法と点密度を確認し、実際の隙間なのか、メッシュ生成上の誤差なのかを判断します。 開口部を誤って閉じると、窓、出入口、配管口などが失われます。特に自動穴埋めでは、指定した面積以下の穴を一括で閉じる処理が使われることがありますが、小さな開口が必要な形状である場合には適しません。自動処理後は、代表的な開口部が残っているかを目視で確認します。 穴埋めが完了したら、境界だけを再度検出します。閉じる予定だった領域に開放辺が残っていないか、意図的な開口が維持されているかを確認します。閉じた立体として使用する部分と、開放面として使用する部分が混在している場合は、オブジェクトやグループを分けて管理すると検証しやすくなります。
手順4 内部面と交差面を取り除く
次に、メッシュ内部に残った不要な面と、面同士の交差を取り除きます。内部面は外側から見えないため見落とされやすいものの、非多様体の辺や法線の不整合を生む大きな原因になります。 内部面は、複数のメッシュを結合したときに発生しやすくなります。たとえば、床、壁、柱を別々にメッシュ化して後から重ねると、接合部の内部に元の面が残ります。見た目は一つの立体でも、内部では面同士が貫通したり重なったりしている状態です。 点群から作成した複数時期のモデルを結合した場合も注意が必要です。位置合わせにわずかなずれがあると、似た形状が重なり、内部に薄い空間や交差面が生じます。異なる範囲を別処理したメッシュを統合した場合には、境界付近で同様の問題が起きます。 内部面を確認するには、表示を半透明にする、断面を切る、外側の面を一時的に非表示にするなどの方法があります。選択した部分だけを表示し、接合部を内側から観察すると見つけやすくなります。自動検査で内部面候補を抽出できる場合もありますが、複雑な設備では必要な隔壁まで内部面として扱われる可能性があります。 建物や機械設備では、外殻の内側に実在する壁、床、補強材、配管が含まれることがあります。外部から見えないという理由だけで削除してはいけません。OBJを外観閲覧に使うのか、内部構造の確認にも使うのかによって、残すべき面が変わります。 面同士の自己交差は、表面が折り返して自分自身を貫通している状態です。点群ノイズが多い箇所や、狭い隙間の両側を一つの面として処理した箇所で生じることがあります。交差を含むまま法線を再計算すると、局所的に表裏が反転する場合があります。 交差面を修復するときは、交差している面を単に削除するだけではなく、周囲の表面をどのようにつなぎ直すかを考えます。不要な突起やノイズ由来の面であれば削除し、できた穴を周囲の形状に合わせて埋めます。実際の部材同士が交差している場合は、オブジェクトを分けたまま管理する方法もあります。 複数の部材が接触するモデルを、必ず一つの閉じたメッシュに統合する必要はありません。アップロード先が複数オブジェクトを扱える場合は、部材ごとに独立した閉じたメッシュとして保持した方が、形状を壊さずに済むことがあります。無理に一体化すると、接触面の除去や再構成が必要になり、元の寸法が変化する可能性があります。 点群由来の微小な浮遊面も、この段階で確認します。反射ノイズや移動物から生じた小さな面群が、本体の近くや内部に残ることがあります。浮遊面は非多様体とは限りませんが、アップロード後の表示品質やデータ容量に影響します。元の点群で対象物が確認できない場合は、削除候補になります。 交差や内部面を除去した後は、面の欠落が発生していないかを確認します。特に、複雑な角部、狭い隙間、配管の接続部などは、不要面と必要面の区別が難しい箇所です。修復前のデータを別名で保存し、いつでも比較できるようにしておくと安全です。 この工程を終えた時点で、メッシュのつながりは大きく改善します。ただし、面の向きが不ぞろいなままでは、アップロード後に黒い面や消える面が残ることがあります。そのため、次の工程で法線方向を確認します。
手順5 法線方向と面の向きを統一する
法線は、面がどちらを向いているかを表す方向情報です。OBJには頂点法線を記録できますが、面を構成する頂点の並び順から表裏を判断する処理もあります。面の向きが不ぞろいだと、表面の陰影が乱れたり、片側から見たときだけ面が消えたりすることがあります。 閉じた立体では、通常、外側に向かって面の向きをそろえます。しかし、非多様体、穴、内部面、重複面が残っていると、内側と外側を自動判定しにくくなります。そのため、法線修正は重複や穴、交差を整理した後に行うのが基本です。 まず、面の表裏を色分けできる表示や、法線方向を線で示す表示を使って、向きが反転している範囲を確認します。全体が反転している場合は一括で向きを反転できますが、一部だけが反転している場合は接続関係の不良が残っている可能性があります。 隣接面の向きをそろえる処理を実行すると、連続した表面では法線が統一されます。ただし、同じ位置に重複面がある場合や、細い部分で表面が交差している場合は、期待と異なる向きになることがあります。自動処理後も、角部や穴周辺を確認します。 開いたメッシュでは、外側を一意に決められないことがあります。地表面のような一枚の表面では、上向きにそろえるなど、用途に合わせて基準を決めます。垂直な壁面や複雑な曲面では、想定する閲覧方向から表側が見えるように調整します。 薄板を一枚の面で表現している場合、片面表示の環境では裏側から見えないことがあります。両面から表示したいからといって、同じ位置に反対向きの面を複製すると、重複面が生じて表示が不安定になる可能性があります。必要に応じて薄い厚みを付け、閉じた形状にする方法を検討します。 ただし、すべての薄板に厚みを付けると頂点数と面数が増えます。点群OBJアップロードの目的が概略確認であれば、片面のまま運用できることもあります。アップロード先の表示仕様を確認し、必要以上に形状を複雑化しないことが大切です。 頂点法線を再計算する際は、滑らかに見せる範囲にも注意します。隣接面の法線を平均化すると、曲面は滑らかに見えますが、柱や箱形部材の鋭い角まで丸く見える場合があります。形状自体は変わっていなくても、陰影によって寸法感が変わることがあります。 鋭角を保ちたい部分では、面の角度などを基準に法線を分けます。反対に、配管や地形などの連続した曲面では、法線を滑らかにつなげた方が自然に表示されます。法線の設定は、非多様体の修復だけでなく、アップロード後の見え方にも関係します。 OBJを書き出す際には、法線を含めるかどうかを確認します。法線を含めない場合、アップロード先で再計算されることがあります。再計算方法が異なれば、編集時とアップロード後で陰影が変わる可能性があります。表示をできるだけ一致させたい場合は、修復後に整えた法線を含めて書き出し、アップロード後にも結果を確認します。 法線を統一した後は、モデルをさまざまな方向から見ます。外側から正常に見えるだけでなく、開口部や断面から内部を見たときに、不自然な反転がないかを確認します。照明方向を変えたり、陰影を弱めた表示に切り替えたりすると、面の向きの異常を見つけやすくなります。
手順6 修復後の形状を検証してOBJを書き出す
最後の手順では、修復後のメッシュがアップロードに適した状態かを検証し、OBJを書き出します。非多様体の検出結果がゼロになったとしても、必要な形状が削除されていたり、座標や単位が変わっていたりすれば、実務で使えるデータとはいえません。 最初に、非多様体の検査をもう一度実行します。辺、頂点、開放境界、重複面、自己交差、孤立要素などを確認し、修復対象としていた問題が残っていないかを調べます。意図的な開放境界がある場合は、検出数がゼロでなくても問題ありません。重要なのは、残っている箇所を説明できることです。 次に、修復前後の形状を比較します。モデル全体の外形、主要な角、開口部、配管、段差、床面、壁面などを重ねて確認します。自動修復によって頂点が移動している場合は、必要な精度を満たしているかを確認します。 点群を基準にした偏差表示が使える場合は、修復後のメッシュと元の点群の距離を確認します。偏差が大きい部分は、穴埋めや平滑化によって形状が変わった可能性があります。特に計測や出来形確認に使用する場合は、見た目だけでなく数値的な差を確認することが重要です。 全体寸法も確認します。OBJには単位を明示する共通の記述がないため、書き出し側と読み込み側で単位の解釈が異なると、モデルが極端に大きくなったり小さくなったりすることがあります。修復工程で単位や倍率が変わっていないか、既知の距離を測って確認します。 座標位置にも注意します。現場座標や平面直角座標のように大きな座標値を持つモデルでは、表示環境によって細かな形状が不安定になることがあります。アップロード先が大きな座標値をどのように扱うかを確認し、必要に応じてローカル原点へ一時的に移動します。 ただし、原点移動を行う場合は、元の位置へ戻すための移動量を必ず記録します。位置情報を失うと、他の点群や設計データと重ねられなくなります。座標を変更したOBJには、変換前の座標系、移動量、回転量、単位などを別途記録しておくと安全です。 面数と頂点数も確認します。非多様体を直す過程で細分化を繰り返すと、元のデータより面数が大きく増える場合があります。面数が増えるほど形状が正確になるとは限らず、アップロード、変換、表示に必要な処理量が増えます。 一方、面数を減らしすぎると、角、配管、段差、曲面などが粗くなります。軽量化を行う場合は、非多様体の修復を終えた後に実施し、修復済みの接続関係が壊れていないかを再検査します。軽量化後にも穴、反転面、重複面が生じることがあるためです。 OBJを書き出す際は、必要な要素だけを選択します。作業用の補助面、基準線、非表示にした不要オブジェクト、検査用に複製したモデルなどが含まれていないかを確認します。表示されていない要素も書き出し対象になる設定があるため、出力前の選択範囲を明確にします。 複数の部材を一つのOBJに含める場合は、オブジェクト名やグループの分け方も確認します。アップロード先によっては、複数のグループを個別に扱える場合と、一つのモデルとして統合する場合があります。非多様体を避けるために分けた部材が、アップロード時に再び一体化されることもあるため、事前に小規模なデータで挙動を確認すると安全です。 テクスチャを使用する場合は、OBJだけでなく、材質情報を記述する関連ファイルと画像ファイルの参照関係を確認します。メッシュ修復で面を削除、追加、再分割すると、テクスチャ座標がずれることがあります。形状が正常でも、画像が伸びる、ずれる、欠けるといった表示不良が起きる可能性があります。 書き出したOBJは、元の編集環境だけで確認せず、一度新規の空の環境へ読み戻します。読み戻しによって、書き出し時の設定漏れ、法線の欠落、グループ構造の変化、関連ファイルの参照切れなどを検出できます。問題がなければ、アップロード用のデータとして保存します。 ファイル名には、使用できる文字や長さに配慮します。アップロード先の仕様が不明な場合は、空白や特殊記号を避け、半角英数字と分かりやすい区切りを使う方法が無難です。修復前後のファイルを識別できるように、日付や版番号を付けて管理します。 最後に、アップロード前の原本、作業途中、修復済み、軽量化済みを分けて保存します。修復済みデータだけを残すと、後から削除された形状を確認できません。元の点群と修復前のOBJを保持しておけば、問題が見つかったときに工程を戻して再処理できます。
点群から作ったメッシュを修復するときの注意点
点群由来のメッシュは、設計段階で作成した三次元モデルとは性質が異なります。計測できた表面をもとに生成されるため、死角や反射条件によって情報量に偏りがあります。非多様体を直すときは、欠陥を機械的に消すだけでなく、計測結果として残すべき形状を見極める必要があります。 特に注意したいのが、大きな穴を自動的に閉じる処理です。点群が存在しない場所を周囲の形状だけで埋めると、実際には空洞や開口があるにもかかわらず、面が存在するように見えることがあります。閲覧用の外観モデルでは許容できても、施工判断や数量算出に使う場合は注意が必要です。 平滑化も同様です。点群ノイズを減らして滑らかなメッシュにすると見栄えは向上しますが、実際の凹凸や変形まで小さくなる可能性があります。ひび割れ、段差、変形、欠損などを確認する用途では、強い平滑化によって重要な情報が失われることがあります。 計測対象に草木、車両、人、仮設材などが含まれている場合、それらが構造物と接触して非多様体を作ることがあります。自動統合すると、樹木と地面、車両と路面、資材と壁などが一つのメッシュとしてつながる可能性があります。必要に応じて、点群の段階で不要物を分類し、対象範囲を分けてからメッシュ化します。 細い部材は、点群密度や計測方向によって形状が不安定になりやすい部分です。手すり、ケーブル、金網、細い配管などは、面がねじれたり、途中で切れたりすることがあります。非多様体を一括修復すると消失する可能性があるため、重要な部材は個別に確認します。 地面と構造物が接する部分も問題が生じやすい箇所です。地面のメッシュと壁面のメッシュが重なり、内部面や交差面が形成されることがあります。用途によっては地面と構造物を別オブジェクトとして保持し、アップロード後に同じ位置へ表示する方が扱いやすい場合があります。 修復作業では、形状の正確さ、データ容量、表示速度のバランスを取る必要があります。すべての微小な穴や交差を手作業で直すと、作業量が大きくなります。一方で、自動処理だけに任せると、必要な部材が消えたり、推定面が大量に追加されたりすることがあります。 実務では、アップロード後に必要な機能から逆算して修復範囲を決めます。外観確認が目的であれば、見える範囲の欠落や法線反転を優先します。距離や断面を確認する場合は、主要な表面の位置精度を重視します。体積を扱う場合は、対象が閉じた立体になっているかを重点的に確認します。 修復の基準を案件ごとに変えるだけでなく、作業記録も残します。どのしきい値で頂点を統合したか、どの穴を補間したか、どの範囲を削除したか、座標を移動したかといった情報があると、後から結果を検証できます。
アップロード後の表示不良を切り分ける方法
非多様体メッシュを修復しても、アップロード後に表示不良が残ることがあります。その場合は、メッシュ構造だけでなく、OBJの記述、関連ファイル、ブラウザ環境、処理上限などを切り分けます。 まず、小さな検証用OBJをアップロードします。モデル全体ではなく、問題が起きている周辺だけを書き出し、同じ現象が再現するかを確認します。小規模なデータで正常に表示される場合は、全体の面数、ファイル容量、座標範囲、特定のオブジェクトなどが関係している可能性があります。 次に、テクスチャを外した形状のみのOBJで確認します。形状だけなら正常に表示される場合は、画像形式、画像容量、ファイル名、材質情報、相対パス、テクスチャ座標などを確認します。テクスチャを外しても欠ける場合は、面の頂点番号や法線、非多様体、極端に小さい面などが原因候補になります。 面が一方向からだけ見えない場合は、法線や面の向きを確認します。近づいたときにちらつく場合は、重複面やほぼ同じ位置にある面が疑われます。モデル全体が極端に小さく表示される場合は、遠方の孤立頂点や座標値を確認します。 一部だけが大きく伸びる場合は、面を構成する頂点番号が意図しない頂点を参照している可能性があります。OBJを編集した際に頂点を削除したにもかかわらず、面の参照番号が正しく更新されていないと、離れた頂点同士が接続されることがあります。一般的な書き出し機能を使えば番号は再構成されますが、テキストとして直接編集した場合は特に注意が必要です。 読み込みが完了しない場合は、ファイルの末尾まで記述が成立しているか、途中で不完全な行がないかを確認します。また、頂点数や面数が非常に多い場合は、アップロード後の変換処理に時間がかかることがあります。修復と軽量化を分けて行い、どの処理で問題が発生したかを切り分けます。 ブラウザでの表示が不安定な場合は、不要なタブや処理を減らし、利用可能なメモリを確保して再確認します。ただし、同じOBJで毎回同じ場所が欠ける場合は、端末環境よりもデータ側に原因がある可能性が高くなります。 アップロード先の仕様が明確でない場合は、単純な立方体、テクスチャ付きの小規模モデル、複数オブジェクトを含むモデルなどを使って、対応範囲を確認します。検証用データで基本動作を確かめておけば、本番OBJの問題を切り分けやすくなります。
非多様体メッシュを発生させにくい運用
非多様体メッシュは、アップロード直前に修復するだけでなく、点群処理とメッシュ生成の工程から発生を抑えることが重要です。毎回大量の修復が必要になる場合は、元の処理条件を見直した方が効率的です。 点群を取得するときは、対象物を複数方向から計測し、死角を減らします。片側からしか計測できていない部分は、薄い面や穴として生成されやすくなります。複雑な設備や狭い空間では、計測位置を変え、重複する範囲を確保します。 ただし、重複範囲が多ければ自動的に良いメッシュになるわけではありません。位置合わせが不十分な点群を重ねると、壁や床が二重になり、メッシュ化した際に交差面が生じます。複数回の計測データを統合するときは、固定物の位置が一致しているかを確認します。 ノイズ除去も重要です。浮遊点、反射による外れ点、移動物の点が残っていると、周囲の表面と不自然につながることがあります。メッシュ化の前に対象範囲を確認し、明らかな外れ点を整理します。 一方で、ノイズ除去を強くしすぎると、細い部材や角部の点まで消えることがあります。点密度、対象物の最小寸法、必要な精度に合わせて条件を調整します。全体に同じ条件を適用するのではなく、複雑な設備と平坦な地面で処理を分ける方法も有効です。 メッシュ生成では、点間隔に対して細かすぎる面を作らないようにします。計測点が少ない領域を高密度なメッシュで補間すると、推定による面が増え、ねじれや自己交差が発生することがあります。元の点群密度に合った解像度を選びます。 対象範囲を分割する場合は、境界の扱いを決めておきます。隣接範囲を十分に重ねて生成し、後で不要な重複を整理する方法と、共通の境界線で正確に分割する方法があります。どちらの場合も、単純にOBJを結合するだけでは境界が二重になる可能性があります。 部材ごとに分けられる場合は、地面、建物、配管、設備、植生などを別のオブジェクトとして管理します。異なる性質の形状を一括でメッシュ化すると、近接する部分が意図せず接続されることがあります。分けて処理すれば、用途に応じた解像度や修復条件を設定できます。 作業途中で定期的に非多様体を検査することも有効です。すべての編集が終わってから問題を探すと、どの工程で欠陥が生じたか分かりにくくなります。点群統合後、メッシュ生成後、部材結合後、軽量化後、OBJ書き出し前というように、節目ごとに確認します。 修復条件は作業標準として記録します。ただし、距離のしきい値や穴の大きさを固定値だけで運用するのは避けます。モデルの単位や規模が変われば適切な値も変わるため、対象物の寸法に対する割合や、許容誤差との関係を含めて決めます。 アップロード前には、元データを直接上書きせず、検証用の複製を作ります。修復、軽量化、座標変換などを別工程として保存しておけば、問題が起きたときに原因を特定しやすくなります。
まとめ
点群OBJアップロード前に非多様体メッシュを直すには、最初から一括修復を実行するのではなく、問題箇所の検出から順番に進めることが重要です。 まず、非多様体の辺や頂点、開いた境界、自己交差などを検出し、意図した形状と欠陥を区別します。次に、重複頂点、重複面、孤立要素を整理して、データ上の接続関係を整えます。その後、不要な穴を修復し、内部面や交差面を取り除きます。 形状のつながりを整えた後は、法線方向と面の向きを統一します。最後に、元の点群との位置関係、寸法、座標、面数、テクスチャ、グループ構造などを確認し、OBJを書き出します。書き出したファイルを新しい環境へ読み戻して確認することで、出力時の設定漏れも見つけやすくなります。 非多様体を完全にゼロにすることだけが目的ではありません。地表面や切断面のように意図的に開いているメッシュもあり、薄板や内部構造など、用途によって残すべき形状もあります。アップロード後に何を確認し、どの機能を使うのかを整理したうえで、必要な範囲を修復することが大切です。 また、修復によって作られた面は、必ずしも実測形状を示すとは限りません。大きな欠測範囲を補間した場合や、強い平滑化を行った場合は、どこを推定したのかを記録しておく必要があります。施工確認や数量算出などに利用するときは、見た目だけでなく元の点群との偏差も確認します。 点群からメッシュを作る工程では、計測時の死角、位置合わせ、ノイズ除去、範囲分割、メッシュ解像度が最終品質に影響します。アップロード直前の修復作業を減らすには、点群取得からOBJ書き出しまでの各段階で検査する運用が有効です。 現場で取得した点群を継続的に確認する場合は、計測からデータ整理、アップロードまでの流れをできるだけ単純にすることも重要です。LRTK Phoneを活用した点群取得や現場確認の方法も含め、目的に合った作業手順を検討するとよいでしょう。