点群OBJアップロード後に多角形面が欠ける症状
点群から作成したOBJファイルをクラウド環境や三次元データの閲覧環境へアップロードしたところ、元の編集画面では表示されていた面の一部が消えることがあります。地表面に穴が開く、構造物の側面が抜け落ちる、斜面の一部から背景が透ける、視点を回転させると面が見えたり消えたりするといった現象が代表的です。
この問題は、ファイル転送そのものに失敗しているとは限りません。アップロードが完了し、モデル全体が読み込まれていても、一部の面だけが読み込み時の検証、形式変換、三角形化、描画処理などで正しく扱われない場合があります。そのため、アップロード完了の表示だけで正常と判断せず、形状を複数の方向と倍率から確認する必要があります。
点群から作られたOBJは、手作業で作成した比較的小規模な三次元モデルよりも、頂点数と面数が多くなりやすいデータです。計測対象の細かな凹凸を再現するため、非常に小さな面、細長い面、わずかにねじれた面、近接した頂点などが大量に生成されることがあります。作成環境では表示できても、別の読み込み環境では同じ結果にならない可能性があります。
特に確認したいのが、四角形以上の多角形面です。OBJでは三角形に限らず、複数の頂点番号を並べた面を記述できます。一方、実際の描画処理では多角形を三角形へ分割して扱う実装が一般的です。面がねじれている、輪郭が内側へくぼんでいる、辺が自己交差している、同じ頂点が重複しているといった状態では、読み込み側の分割結果が書き出し元と異なることがあります。
欠損の原因を特定するには、どの段階で面が消えたのかを確認することが重要です。点群の時点でデータがないのか、メッシュ化した段階で穴が生じたのか、OBJの書き出し時に面情報が不正になったのか、アップロード後の変換や表示で見えなくなったのかを順番に調べます。
見た目だけで原因を決めつけ、複数の設定を同時に変えて書き出し直すと、ファイル容量や面数だけが変わり、欠損の原因を把握できないことがあります。頂点参照、多角形の構造、面の頂点順序と法線、不正な頂点や面、座標値とモデル規模という五つの観点から、一項目ずつ切り分けることが大切です。
OBJの多角形面が表示される仕組み
OBJファイルでは、三次元空間に配置される頂点と、それらの頂点を参照して作る面が別々に記録されます。頂点情報には座標値が記載され、面情報には使用する頂点の番号と並び順が記載されます。面は座標値を直接並べるのではなく、先に定義された頂点を番号で参照して構成されます。
四つの頂点からなる面を作る場合、OBJ内には四つの頂点座標と、それらを参照する面定義が必要です。面定義で指定された番号の頂点が存在しなかったり、意図しない頂点を参照していたりすると、正しい面を復元できません。頂点番号は通常一から始まる絶対参照で記述されますが、OBJでは負の番号による相対参照も仕様上使えます。ただし、すべての読み込み環境が同じ範囲の記述へ対応しているとは限らないため、互換性確認が必要です。
面を構成する頂点の並び順にも意味があります。多くの描画処理では、三角形化後の頂点の回り順によって表側と裏側が判定されます。裏面を描画しない設定では、周囲と逆向きの面が視点によって消えたように見えることがあります。
OBJには法線情報やテクスチャ座標を含めることもできます。法線は主に陰影計算に使われ、テクスチャ座標は画像を面へ配置するときに使われます。頂点、法線、テクスチャ座標は別の番号体系で管理されるため、面定義に含まれるいずれかの参照が不正だと、読み込み側が警告を出したり、その面の一部または全部を読み飛ばしたりする場合があります。
ここで注意したいのは、面の表裏を決める頂点の回り順と、陰影に使う法線は同じものではないという点です。法線を再計算しただけでは、面の頂点順序が反転した状態まで直らないことがあります。反対に、面の頂点順序をそろえても、古い法線が残れば陰影だけが不自然になることがあります。
三角形は、三つの頂点が重ならず一直線上にも並んでいなければ、一つの平面を定められます。一方、四角形以上の多角形では、すべての頂点が同じ平面上にあるとは限りません。点群から自動生成された多角形は、わずかな凹凸によってねじれていることがあります。
ねじれた四角形を描画するには、いずれかの対角線で二つの三角形へ分割する必要があります。対角線の選び方によって表面の折れ方や三角形の向きが変わる可能性があります。五角形以上の多角形では、頂点の並び、凹凸、自己交差の有無によって分割がさらに難しくなります。
点群OBJアップロード後に多角形面が欠ける問題は、OBJファイルが明確に壊れている場合だけでなく、書き出し元と読み込み先で対応機能や三角形化の方法が異なる場合にも起こります。特定の編集画面で見えていることだけを正常性の根拠にせず、書き出したOBJそのものを別の作業領域へ読み込み直して確認することが重要です。
原因1:面を構成する頂点参照が不正になっている
多角形面が欠ける一つ目の原因は、面が参照する頂点番号の不整合です。OBJでは面ごとに使用する頂点番号が指定されますが、その番号が存在しない頂点を示していると、読み込み側は面を正しく構成できません。
頂点参照の不整合は、メッシュの編集、結合、切り抜き、簡略化、座標変換などを繰り返したデータで発生する可能性があります。通常の編集ソフトは頂点を削除した際に面の参照も更新しますが、変換処理の不具合、対応外の記述、途中で破損したファイル、独自形式からの変換などがあると、不正な参照が残ることがあります。
点群から作成したモデルでは、異常点の削除、範囲の切り抜き、複数点群の統合、メッシュの簡略化、穴埋め、座標変換など、多くの処理を経てOBJを書き出すことがあります。編集画面上では正常に見えていても、最終書き出し時の変換で頂点一覧と面一覧の対応が変化する可能性があるため、書き出したファイルの再読込が必要です。
頂点番号だけでなく、法線番号やテクスチャ座標番号の不整合にも注意します。面定義の中で頂点、テクスチャ座標、法線を同時に参照している場合、頂点番号が正常でも、ほかの参照先が存在しなければ、読み込み環境によってはその面を正常に処理できません。
相対参照を含むOBJにも注意が必要です。負の番号はOBJの記述方法として認められていますが、読み込み機能の実装範囲によっては互換性問題が生じることがあります。相対参照を絶対参照へ変換して比較すると、原因を切り分けやすくなります。
頂点参照が原因の場合、欠損する面は視点を変更しても現れないことが多くなります。面の表裏が原因であれば反対側から見える場合がありますが、読み込み時に面が生成されなかった場合は、どの方向から見ても穴が残ります。
対策1:頂点番号と面定義の整合性を確認する
頂点参照の問題に対する基本的な対策は、OBJ内に記録された頂点数と、各面が参照する番号の範囲を確認することです。正の頂点番号が実際の頂点数を超えていないか、ゼロが使われていないか、負の番号がその時点で参照可能な範囲に収まっているかを検査します。
点群OBJには非常に多くの頂点と面が含まれるため、すべてを手作業で確認することは現実的ではありません。書き出し環境や検証ツールに、無効な面、存在しない参照、未使用頂点、重複面などの検査機能がある場合は、それを利用します。
検証機能が利用できない場合は、書き出したOBJを新しい作業領域へ読み込み、警告の有無を確認したうえで別名保存する方法があります。ただし、最初の読み込み時点で不正な面が除外されると、その面は再保存しても復元されません。元データを残し、再保存後の面数や欠損位置を比較する必要があります。
問題範囲を確認するため、モデルを複数の領域に分けて書き出す方法も有効です。分割したOBJのうち特定のファイルだけで欠損が起きる場合は、その範囲に不正な参照や複雑な面が含まれている可能性があります。個別ファイルでは正常で、結合したOBJだけで欠ける場合は、結合処理や書き出し時の番号再構成を疑います。
法線やテクスチャ座標を含むOBJで問題が起きている場合は、頂点と面だけを含む簡単なOBJを書き出して比較します。単純なOBJで面が表示されるなら、形状を構成する頂点参照ではなく、法線、テクスチャ座標、材質情報の参照が原因である可能性があります。
未使用頂点も整理します。面から参照されていない頂点があるだけで面欠損が起きるとは限りませんが、不要な頂点が多いとファイル構造の確認が難しくなり、表示範囲や処理負荷にも影響する場合があります。
複数の修正を一度に行わず、頂点参照を整理したOBJをまずアップロードして、欠損範囲が変化したかを確認します。変化がなければ、次の原因である多角形の構造と三角形化を調べます。
原因2:複雑な多角形を読み込み側が分割できない
二つ目の原因は、四角形以上の複雑な多角形を読み込み側が想定どおりに三角形へ分割できないことです。OBJには複数頂点からなる面を記録できますが、表示処理へ渡す前に三角形へ変換されることが多くあります。
四つの頂点が同じ平面上にあり、輪郭が単純な凸形状であれば、通常は分割しやすい状態です。しかし、点群から作られたメッシュでは、四つの頂点にわずかな高低差があり、ねじれた四角形になることがあります。
ねじれた四角形は、どちらの対角線で分割するかによって形状が変わります。一方の分割では周囲となめらかにつながっても、もう一方では急な折れや細長い三角形が生じる場合があります。書き出し元とアップロード先で異なる分割結果になると、元の画面とは違う見え方になります。
五角形以上の面では、頂点の並び順や輪郭形状がさらに重要です。内側へくぼんだ多角形は、輪郭の外へ三角形がはみ出さないように分割する必要があります。辺が自己交差している多角形では、面の内側と外側を一意に判断できず、読み込み側が不正な面として扱う場合があります。
同じ多角形の中に、ほぼ同一直線上の頂点や、ほぼ同じ位置の頂点がある場合も注意が必要です。三角形化の結果、面積が極めて小さい三角形が生じると、読み込みや変換の許容値によっては縮退面として除外される可能性があります。
ただし、四角形以上の面が含まれているだけで必ず欠損するわけではありません。問題になりやすいのは、非平面、凹形状、自己交差、重複頂点、極端な細長さなどを含む面です。面の種類と形状を分けて確認します。
対策2:アップロード前に面を三角形化する
複雑な多角形が原因と考えられる場合は、アップロード用データを事前に三角形化します。三角形化によって分割方法をあらかじめ確定させれば、読み込み先が独自の方法で四角形以上の面を分ける必要が減り、環境差を抑えやすくなります。
三角形は三つの頂点で構成されるため、頂点が重なったり一直線に並んだりしていなければ、面の幾何形状を明確にできます。ただし、元の多角形が自己交差している場合や、同じ頂点を重複参照している場合は、三角形化だけで正常化できないことがあります。
三角形化前には、面の輪郭、頂点順序、重複頂点、縮退の有無を確認します。異常な面をそのまま一括処理すると、欠損が別の位置へ移動したり、意図しない細長い三角形が増えたりする場合があります。
三角形化後は面数が増えます。四角形一枚は通常二枚の三角形になり、五角形以上の面はさらに多くの三角形へ分割されます。大規模な点群メッシュでは、ファイル容量、変換時間、表示負荷が増える可能性があるため、アップロード先の上限や用途も確認します。
面数を減らす簡略化を行う場合は、三角形化とは別の工程として扱います。一般的なメッシュ簡略化は三角形を減らす処理であり、必ずしも大きな多角形へ戻すものではありませんが、設定によっては細部や境界が失われます。三角形化後と簡略化後の両方で形状を確認します。
三角形化後は、地形の稜線、構造物の角、開口部、段差、境界線などを重点的に確認します。対角線の選択によってわずかな折れが生じることがあるため、面が欠けなくなっただけで修正完了とせず、形状精度も確認します。
編集用データとアップロード用データは分けて保存します。三角形化したデータは面数が増え、その後の編集が難しくなることがあります。元の多角形を保持したデータを残し、アップロード用の複製だけを処理すると、再修正しやすくなります。
三角形化したOBJは、アップロード前に新しい作業領域へ読み込み直します。編集画面上の状態ではなく、実際に書き出されたOBJを確認することで、書き出し処理中に面が失われていないかを判断できます。
原因3:面の頂点順序と法線が整っていない
三つ目の原因は、面の頂点順序が周囲とそろっていないことや、法線情報が形状と整合していないことです。三次元モデルの表裏判定と陰影計算は関連しますが、同じ処理ではありません。
多くの描画環境では、三角形の頂点が画面上で時計回りか反時計回りかによって表側と裏側を判定します。裏面を描画しない設定では、周囲と逆向きの三角形が視点によって見えなくなります。
地表面を上から見ると正常で、下側から見ると消えるのであれば、片面表示による通常の結果である可能性があります。一方、同じ地表面の一部だけが上から見えず、下側から見える場合は、その部分の頂点順序が反転している可能性があります。
点群からメッシュを自動生成すると、密度が低い部分や複数の表面が近接する部分で面方向が乱れることがあります。薄い板状の対象、壁の表裏、配管の内外、植生や仮設材が重なる範囲では、どちらを外側として面を作るか判断しにくくなります。
法線情報が不正な場合は、面が完全に消えるよりも、陰影が暗い、周囲と異なる明るさになる、視点移動に合わせて色が不自然に変わるといった症状が出やすくなります。ただし、読み込み側が不正な法線参照を厳しく扱う場合は、面の読込結果へ影響することもあります。
面の頂点順序が正しくても、法線が逆向きなら陰影が不自然になります。法線を再計算しても、頂点順序が反転した面を自動的に直せない処理もあります。両者を分けて検査することが重要です。
対策3:面の向きを統一して法線を再計算する
面の表裏が原因と考えられる場合は、最初に面の頂点順序をそろえます。地表面であれば用途に応じて主に上側が表になるようにし、閉じた立体であれば外側が表になるように方向を統一します。その後、統一された形状に合わせて法線を再計算します。
自動的に外側を判定する処理は便利ですが、すべてのモデルで正しく機能するとは限りません。穴の開いた形状、薄い形状、表裏が接近した形状、複数の独立部品を含む形状では、内側と外側を一意に判断できない場合があります。
地形メッシュでは、急斜面、垂直に近い壁面、オーバーハング、橋梁や構造物の下面を重点的に確認します。単純にすべての法線を上向きにそろえるだけでは、垂直面や下面が不適切になるため、連結した面の方向を基準に整える必要があります。
面の向きをそろえた後は、単色表示、陰影付き表示、裏面を識別できる表示のそれぞれで確認します。単色表示では面の存在を確認しやすく、陰影付き表示では法線の連続性を確認しやすくなります。
書き出し時に法線情報を含める場合は、面と法線の参照関係が正しく出力されているか確認します。法線を含めたOBJだけで問題が起き、法線を含めないOBJでは形状が表示される場合は、法線参照や読み込み側の処理を疑います。
両面表示を有効にすると、裏向きの面を診断しやすくなります。しかし、これは原因確認のための手段であり、必ずしも根本修正ではありません。面方向が不統一なままだと、陰影、透過、断面表示、後工程の変換などで別の問題が残る可能性があります。
アップロード後の閲覧だけが目的でも、可能な範囲で面の向きと法線を整えてから書き出します。閲覧環境の両面表示設定へ依存しないデータにしておく方が、別環境へ再利用するときの互換性を保ちやすくなります。
原因4:重複頂点や面積のない面が含まれている
四つ目の原因は、重複頂点、重複面、面積がほとんどない縮退面などが含まれていることです。点群から生成されたメッシュには、同じ位置または非常に近い位置に複数の頂点が作られる場合があります。
画面上では一つの頂点に見えても、内部では別の番号を持つ頂点として存在していることがあります。隣り合う面が別々の頂点を使っていると、見た目では接していても、メッシュとしては連結していない状態になることがあります。
書き出し元では隙間が目立たなくても、アップロード時の変換、頂点統合、法線生成、簡略化などによって境界の見え方が変わる可能性があります。細い隙間が連続すると、面のまとまりが欠けたように見える場合があります。
三角形の三頂点がほぼ一直線上にある場合や、二つ以上の頂点がほぼ同じ位置にある場合、面として定義されていても面積が極めて小さくなります。このような縮退面は、読み込み側の検証や変換で除外されることがあります。
四角形以上の面で同じ頂点が重複して指定されている場合も、不正な面になりやすい状態です。見かけ上は四角形でも、異なる頂点が三つ以下しかなければ、正常に三角形化できません。
複数の点群やメッシュを統合した場合は、同じ位置に複数の面が重なることがあります。重複面は形状欠損とは異なりますが、深度判定の競合によってちらつきや部分的な消失のように見えることがあります。
点群密度の差が大きい範囲では、非常に小さい面と極端に大きい面が隣接することがあります。小さな面が必ず削除されるわけではありませんが、変換時の許容値や簡略化条件によって影響を受けやすくなります。大きく細長い面も、三角形化や法線計算が不安定になりやすいため確認が必要です。
対策4:メッシュを整理して不正な面を除去する
重複頂点や縮退面が疑われる場合は、アップロード前にメッシュの整理を行います。最初に、同じ位置または指定した許容範囲内にある頂点を統合します。
頂点統合で重要なのは、許容値を対象物の大きさと必要精度に合わせることです。許容値が小さすぎると重複頂点を整理できません。反対に大きすぎると、本来は別の位置にある頂点まで一つにまとめられ、角、段差、溝、薄い部材などが変形します。
地形のようになだらかな対象と、構造物のように細部が重要な対象では、適切な許容値が異なります。モデル全体へ一律の値を適用するのではなく、必要に応じて範囲や対象を分けて処理します。
頂点を統合した後は、面積が極めて小さい面、同じ頂点を複数回参照する面、辺が自己交差する面、同じ位置に重なった面を検出して整理します。除去によって新しい穴ができた場合は、周囲の正常な頂点と現地形状を確認したうえで面を再構成します。
穴を自動的に埋める場合は、実際の開口部まで閉じないよう注意します。窓、排水口、管の開口、構造物の隙間、点群の欠測範囲などは、意図的に開いている可能性があります。すべての境界を機械的に閉じると、現実には存在しない面を作ることになります。
どの面からも参照されていない孤立頂点も整理します。孤立頂点が直接面欠損を引き起こすとは限りませんが、モデル全体の境界範囲を不必要に広げたり、確認や変換の負荷を増やしたりすることがあります。
メッシュ整理後は、構造物の輪郭、地表面の段差、薄い部材、境界線を確認します。自動修復によって欠損が埋まっても、形状が丸められたり位置が変わったりしていれば、実務用データとして適切とは限りません。
整理前と整理後のOBJは別名で保存し、アップロード結果を比較します。面欠損だけでなく、寸法、輪郭、面数、ファイル容量、座標位置がどのように変化したかも確認します。
原因5:座標値やモデル規模が大きすぎる
五つ目の原因は、頂点の座標値やモデル全体の範囲が、読み込み先や表示環境の数値精度、変換処理、描画設定に対して大きすぎることです。測量や施工管理で使用する点群には、原点から遠い大きな座標値が含まれる場合があります。
OBJは座標値をテキストで保持できますが、読み込み後の内部処理でどの数値型を使うかは環境によって異なります。単精度浮動小数点などへ変換される処理では、座標の絶対値が大きいほど、近接する頂点間の小さな差を保持しにくくなる場合があります。
本来は別の位置にある近接頂点が内部処理でほぼ同じ位置として扱われると、小さな三角形が縮退したり、法線計算が不安定になったりする可能性があります。ただし、問題の発生条件は読み込み先の実装に依存するため、大きな座標値があるだけで必ず欠損するとは限りません。
広い現場全体と細かな構造物を一つのOBJにまとめている場合も注意が必要です。数キロメートルの広がりを持つ地形と、数センチメートル程度の細部を同じモデルで扱うと、変換時の許容値、簡略化、表示範囲、近距離と遠距離のクリッピング設定などの影響を受けることがあります。
OBJには、長さの単位を読み込み側へ必ず伝える標準的な単位指定がありません。そのため、書き出し元と読み込み先で想定単位が異なると、モデルが極端に大きくなったり小さくなったりします。
単位違いによって縮尺が変わると、カメラの表示範囲から外れたり、変換処理の許容値に対して面が小さくなりすぎたりする場合があります。面が欠けたように見えても、実際には近距離側や遠距離側のクリッピング、表示倍率、簡略表示が原因である可能性もあります。
頂点数や面数が非常に多いOBJでは、アップロード先のサービスが形式変換、分割、簡略化、表示用データの生成を行う場合があります。どの処理が行われるかはサービスごとに異なるため、上限値や変換仕様を確認し、未確認の自動処理を前提に断定しないことが重要です。
対策5:原点移動とモデル分割で数値精度を保つ
座標値が大きい場合は、アップロード用のOBJを現場付近のローカル原点へ移動すると改善することがあります。モデルの中心や既知の基準位置を原点付近に置くことで、各頂点の絶対値を小さくし、内部処理で近接頂点間の差を保持しやすくします。
原点を移動するときは、元の座標へ戻すための移動量を必ず記録します。元の測量座標からどれだけ移動したかを保存しておけば、後から別の点群、図面、測量成果と位置を合わせることができます。
移動量を記録せずに座標を変更すると、OBJ単体では正常に表示できても、ほかのデータと重ねられなくなります。アップロード用座標と元座標の関係を、現場名、作成日、座標系、単位とともに管理します。
単位も確認します。書き出し元とアップロード先で同じ単位を想定しているかを確かめ、既知の距離を測定します。基準点間の距離、構造物の幅、道路幅、部材寸法など、確認可能な値と比較すると縮尺の誤りを発見しやすくなります。
モデル全体の範囲が広い場合は、一つの巨大なOBJとして処理せず、現場区画や構造物ごとに分割します。ファイルを分けることで、一つのOBJに含まれる頂点数と面数を抑え、アップロード、変換、表示の負荷を軽減できます。
分割時は、境界をまたぐ面の処理に注意します。座標範囲だけで単純に切断すると、境界上の面が削除されたり、不完全な面が残ったりする場合があります。切断位置に新しい頂点を作って面を分けるか、用途に応じて隣接範囲をわずかに重ねます。
広域の地形と詳細な構造物を分ける方法も有効です。地形は必要精度を保てる範囲で軽量化し、詳細確認が必要な構造物は高密度のOBJとして別に管理します。表示目的に応じて密度を分ければ、必要な細部を保ちながら処理負荷を抑えやすくなります。
原点移動や分割後は、個別ファイルの形状だけでなく、複数ファイルを同時に表示したときの位置関係も確認します。境界に隙間や重複がないか、構造物と地形がずれていないかを確かめます。
材質やテクスチャの不具合と面欠損を区別する
OBJをアップロードした後に面が白くなる、透明に見える、背景と同じ色になる場合、必ずしも形状が欠けているとは限りません。材質やテクスチャの読み込みに失敗し、面が見えにくくなっている可能性があります。
OBJの形状情報と材質情報は別に管理されます。形状を構成する頂点と面が正常でも、関連する材質ファイルや画像が見つからなければ、表面の色やテクスチャだけが表示されないことがあります。
背景色とモデルの色が近い場合は、面が存在していても穴のように見えることがあります。表示を単色に変更したり、輪郭線やワイヤーフレームを表示したりして、実際に面が存在するかを確認します。
透明度の解釈が原因になる場合もあります。材質に透明度に関する情報が含まれ、読み込み環境で意図しない透明度として処理されると、形状が消えたように見えます。
テクスチャ座標の参照が不正な場合は、画像が意図しない位置へ配置され、面の一部が暗くなったり透明に見えたりすることがあります。形状確認の段階では、材質とテクスチャを外したOBJをアップロードして比較すると原因を切り分けやすくなります。
単色のOBJで面が正常に表示されるなら、頂点や面の欠落ではなく、材質、テクスチャ、透明度、背景色などが原因である可能性が高くなります。単色表示でも同じ場所に穴が残る場合は、形状側の問題を調べます。
材質の問題を形状欠損と誤認し、頂点統合や穴埋めを行うと、正常な形状を不必要に変更してしまいます。形状と外観を分けて確認することが、正確な修正につながります。
点群OBJをアップロードする前の確認手順
点群OBJの多角形面欠損を防ぐには、書き出し直前だけでなく、点群からメッシュを作成する各段階で確認することが重要です。
最初に、元の点群に欠測範囲がないかを確認します。点群の段階でデータが存在しない部分は、メッシュ化しても正確な面を作れません。メッシュの穴がOBJの不具合ではなく、計測時の死角による可能性もあります。
次に、点群から離れた孤立点や明らかな異常点を整理します。異常点が残っていると、メッシュ生成時に細長い面や大きく飛び出した面が作られることがあります。
メッシュを作成した後は、単色表示で全体を確認します。地表面、壁面、構造物の下面などを複数方向から見て、視点によって消える面がないかを調べます。
続いて、重複頂点、孤立頂点、縮退面、重複面を整理します。自動修復を行った後は、構造物の角や薄い部分が変形していないかを確認します。
四角形以上の面を含む場合は、アップロード用データを三角形化します。三角形化した直後に形状を確認し、意図しない対角線による折れやへこみがないかを見ます。
面の頂点順序を統一した後、法線を再計算します。地形の上面だけでなく、急斜面、垂直面、構造物の内外、下面も確認します。
座標値が大きい場合はローカル原点への移動を検討し、移動量、座標系、単位を記録します。広域モデルは用途に応じて分割し、一つのOBJへ過度に多くの頂点と面を含めないようにします。
書き出し時には、まず頂点と面だけを含むOBJを作成して形状を確認します。その後、必要に応じて法線、テクスチャ座標、材質情報を含むOBJを作成します。段階を分けることで、形状と外観の問題を切り分けやすくなります。
最後に、書き出したOBJを新しい作業領域へ読み込み直します。元の編集画面ではなく、実際のOBJファイルを確認することが重要です。書き出し処理中に面定義や参照情報が変化している場合、再読込の段階で問題を発見できます。
アップロード後は、上面、側面、下面、斜め方向から形状を確認します。表示倍率も変え、近距離と遠距離で欠け方が変わらないかを調べます。角度で変わるなら面の向き、倍率で変わるなら表示用簡略化やクリッピング、常に同じ穴が残るなら面定義やメッシュ構造を重点的に確認します。
修正しても多角形面が欠ける場合の切り分け方
五つの対策を行っても多角形面が欠ける場合は、修正内容を一度に増やさず、処理段階ごとのファイルを比較します。
まず、元のメッシュをそのまま書き出したOBJを用意します。次に、頂点と面だけのOBJ、三角形化したOBJ、面方向を統一したOBJ、法線を再計算したOBJ、重複要素を整理したOBJ、原点を移動したOBJというように、一つずつ条件を変えます。
どの段階で欠損が消えるかを確認すれば、原因を特定しやすくなります。すべての処理を同時に適用すると、欠損が直っても、どの対策が有効だったのか分かりません。また、別の現場で同じ問題が発生したときに再現できなくなります。
元の編集環境で書き出したOBJを読み込み直した時点で欠けているなら、アップロード先より前のメッシュまたは書き出し処理に原因があります。読み込み直したOBJは正常で、アップロード後だけ欠けるなら、アップロード先の変換条件、対応範囲、表示処理との相性を疑います。
モデル全体で面が欠ける場合は、頂点参照、面方向、座標値、単位などの共通条件を確認します。特定の範囲だけで欠ける場合は、その範囲の面形状、点群密度、重複頂点、縮退面、自己交差を重点的に調べます。
特定の角度からだけ見えない場合は、面の頂点順序と裏面除去を確認します。どの角度からも同じ場所が見えない場合は、面定義の欠落、不正な参照、縮退面を疑います。近づいたときだけ欠ける、または遠ざかったときだけ欠ける場合は、表示時の簡略化、クリッピング、深度精度などが関係している可能性があります。
モデルを小さな範囲に切り出し、欠損部分だけのOBJを作る方法も有効です。小規模なOBJでは正常に表示されるなら、モデル全体の規模、面数、座標範囲、変換負荷が原因である可能性があります。小規模にしても欠けるなら、その範囲の面構造自体を確認します。
検証時は、ファイル名に処理内容を含めて管理します。どのファイルが三角形化前なのか、面方向統一後なのか、法線再計算後なのか、原点移動後なのかを明確にすれば、誤ったファイルをアップロードする事故を防げます。
点群からOBJを作成する段階で欠損を防ぐ方法
点群OBJの面欠損は、アップロード直前の修正だけでなく、計測とメッシュ生成の段階から対策することで減らせます。
計測時には、対象物を一方向からだけ取得せず、必要に応じて複数方向から点群を取得します。壁の裏側、張り出し部分の下面、段差の奥、植生や資材の陰になる場所は欠測しやすいためです。
複数方向の点群を統合する際は、位置合わせのずれを確認します。同じ表面がわずかにずれた状態で重なると、二重面や細かな段差が生成されます。位置合わせ後に断面や輪郭を確認し、同じ対象が二重になっていないかを調べます。
メッシュ化前には、孤立点や明らかな異常点を整理します。対象物から大きく離れた点が残っていると、その点へ向かう細長い三角形が作られる場合があります。
メッシュ生成の細かさは、点群密度と利用目的に合わせます。点群が疎な範囲で過度に細かなメッシュを作ろうとすると、細長い面や不安定な補間面が増えることがあります。反対に、簡略化を強くしすぎると、段差や構造物の角が失われます。
地形、建物、設備、仮設材など、性質が異なる対象を一つの条件で処理しないことも重要です。なだらかな地形には適度な簡略化を適用し、細部が必要な構造物は高い密度を保つなど、用途別に条件を変えます。
中間データを段階ごとに保存します。元の点群、異常点を整理した点群、メッシュ生成直後、メッシュ整理後、三角形化後、軽量化後、アップロード用OBJを分けて保存すれば、問題が発生した工程へ戻れます。
各工程の設定も記録します。頂点統合の許容値、三角形化の条件、簡略化の強さ、原点移動量、座標系、単位、分割範囲などを残しておけば、同じ現場で再出力するときや、別の担当者が作業するときにも品質をそろえやすくなります。
点群を取得した担当者とOBJを作成する担当者が異なる場合は、必要な精度、表示目的、座標の扱い、欠測を許容できない範囲を事前に共有します。目的が明確であれば、不要に高密度なデータを作成したり、必要な細部を過度に簡略化したりする問題を防げます。
まとめ
点群OBJアップロード時に多角形面が欠ける主な原因は、面が参照する頂点番号の不整合、複雑な多角形の三角形化における環境差、面の頂点順序と法線の不整合、重複頂点や縮退面、座標値やモデル規模に対する数値精度や変換条件です。
対策として、最初に頂点番号と面定義の整合性を確認します。次に、四角形以上の面をアップロード前に三角形化し、読み込み環境による分割結果の違いを抑えます。さらに、面の頂点順序を統一してから法線を再計算し、重複頂点や縮退面を整理します。座標値が大きい場合はローカル原点への移動を検討し、広域モデルは適切な範囲へ分割します。
面が見えない場合でも、必ずしも形状が失われているとは限りません。材質、テクスチャ、透明度、背景色、裏面除去、クリッピングによって面が見えにくくなっている可能性があります。単色表示、輪郭表示、両面表示などを診断に使い、形状の問題と外観や表示設定の問題を分けて確認することが重要です。
修正作業では、複数の処理を一度に適用しないことが大切です。頂点参照の確認、三角形化、面方向の統一、法線再計算、メッシュ整理、原点移動、分割を一つずつ行い、各段階でOBJを書き出して結果を比較します。どの処理で改善したかを把握できれば、同様の問題が起きた際にも対応しやすくなります。
点群OBJの品質は、最後の書き出し設定だけで決まるものではありません。点群取得時の死角対策、異常点の整理、位置合わせ、適切なメッシュ生成、座標管理、中間データの保存までを一連の工程として管理する必要があります。
現場で取得した点群を継続的に活用する場合は、計測から確認、共有までの手順を標準化すると、OBJアップロード時のトラブルを減らしやすくなります。現場の位置情報を効率的に取得し、点群データの確認や共有につなげる方法として、LRTK Phoneの活用も検討できます。