LRTKレフィクシア株式会社

点群OBJアップロードで頂点数と法線数の不一致を直す5手順

点群から作成したOBJをアップロードした際に、頂点数と法線数の不一致、法線インデックスの範囲外、面データの参照エラーなどが表示されることがあります。作業画面では問題なく表示されていたにもかかわらず、アップロード後に一部の面が黒くなる、陰影が乱れる、表面が欠ける、処理そのものが停止するといった症状が現れることもあります。

こうした問題に対して、頂点数と法線数を機械的に同じ件数へそろえれば解決すると考えるのは適切ではありません。OBJでは、頂点座標、テクスチャ座標、法線がそれぞれ独立した一覧として管理されます。面を構成する各点が、使用する頂点番号と法線番号を個別に参照できるため、正常なOBJでも頂点数と法線数が一致しないことがあります。

本当に確認すべきなのは、頂点と法線の件数差そのものではなく、面が参照している番号が存在するか、現在の形状と法線の向きが一致しているか、アップロード先がそのOBJ構造を処理できるかという点です。点群OBJアップロードの現場では、原因を切り分けないまま法線を削除したり、同じ法線を複製したりすると、元の陰影や稜線が失われ、別の表示不良を引き起こすことがあります。

この記事では、点群OBJの頂点数と法線数の不一致を安全に確認し、参照切れを修正して再アップロードするまでの流れを5手順で解説します。元データを壊さずに調査する方法から、法線の再計算、書き出し後の検証、再発防止までを実務担当者向けに整理します。

頂点数と法線数が一致しなくても正常な理由

OBJは、三次元形状をテキストで記録できるデータ形式です。一般的なOBJでは、vで始まる行に頂点座標、vtで始まる行にテクスチャ座標、vnで始まる行に法線、fで始まる行に面の構成が記録されます。

たとえば、v行に書かれた三次元座標が10万件あり、vn行に書かれた法線が8万件ある場合でも、それだけでデータ破損とは判断できません。面を表すf行では、頂点番号と法線番号を別々に指定できるためです。同じ法線を複数の頂点で共有している構造であれば、法線数が頂点数より少なくなることがあります。

反対に、頂点数より法線数が多くなる場合もあります。一つの頂点座標が複数の面で共有されていても、面の境界を鋭く見せるために異なる法線を割り当てることがあるためです。建物の角、構造物の稜線、段差、切断面などでは、同じ座標位置に対して複数の法線が必要になることがあります。

面の記述には、頂点番号だけを指定する形式、頂点番号とテクスチャ座標番号を指定する形式、頂点番号と法線番号を指定する形式、三種類すべてを指定する形式があります。頂点番号と法線番号を指定する場合は、f 1//1 2//2 3//3のように記録されます。最初の数字が頂点番号で、最後の数字が法線番号です。二つの番号はそれぞれ別の一覧を参照しており、同じ番号である必要はありません。

したがって、頂点数と法線数が違うという情報だけでは、修正が必要か判断できません。問題になるのは、面が存在しない頂点や法線を参照している場合です。たとえば、法線が8万件しかないのに、面の中で80001番目の法線を参照していれば、その参照は範囲外です。このような状態では、アップロード先が面を正しく処理できず、エラーや表示不良につながります。

また、OBJとして成立している構造でも、アップロード先の処理方式によっては受け付けられないことがあります。処理を簡略化するために、一つの頂点へ一つの法線が対応する構造を前提としている場合、OBJ上では有効な複雑な参照関係を正しく展開できないことがあります。その場合は、頂点を必要に応じて複製し、各頂点に対応する法線を一つずつ持たせた状態で再書き出す必要があります。

点群をOBJへ変換したデータでは、そもそも面が存在しないことにも注意が必要です。点だけを保存したOBJでは、v行は多数存在していても、f行やvn行がない場合があります。点群として扱う用途では異常とは限りませんが、アップロード先がOBJをポリゴンメッシュとして読み込む場合は、面がないことを理由に処理できない可能性があります。

最初に行うべきことは、頂点数と法線数を無理に一致させることではありません。対象データが点のみなのか、面を持つメッシュなのかを確認し、面がどの頂点番号と法線番号を参照しているかを調べることが重要です。

手順1 元のOBJを複製してデータ構造を確認する

最初の手順は、修正前のOBJを複製し、元データを上書きしない状態で調査を始めることです。頂点番号や法線番号の修正では、数値の置換範囲を誤ると多数の面が壊れる可能性があります。必ず元のOBJを保管し、調査用と修正用を分けてください。

OBJ本体だけでなく、同じ場所に保存されている関連ファイルも一緒に複製します。OBJから材質定義が参照されている場合、再書き出しによってファイル名や参照先が変わることがあります。今回の主な確認対象は頂点と法線ですが、関連ファイルを別々に扱うと、法線修正後に材質や画像が表示されなくなることがあります。

複製したOBJは、テキストを確認できる環境で開きます。データ量が大きい場合は、ファイル全体を一度に表示する必要はありません。先頭付近、頂点行から法線行へ切り替わる付近、面データが始まる付近、ファイル末尾を確認します。

最初に調べるのは、v、vn、fの各行が存在しているかです。v行だけがあり、f行がなければ、対象は面を持たない点データである可能性があります。この場合、法線数を頂点数に合わせても面は生成されません。アップロード先が点のみのOBJを扱えるか、別の点群形式が必要かを先に確認する必要があります。

f行がある場合は、面の記述形式を確認します。f 1 2 3であれば頂点番号だけが指定されています。f 1/1 2/2 3/3であれば、頂点番号とテクスチャ座標番号です。f 1//1 2//2 3//3であれば、頂点番号と法線番号です。f 1/1/1 2/2/2 3/3/3であれば、頂点、テクスチャ座標、法線の三種類が指定されています。

ここで注意したいのが、f 1/1 2/2 3/3の二番目の数字を法線番号と誤解しないことです。スラッシュが一つの場合、一般的には頂点番号とテクスチャ座標番号の組み合わせです。テクスチャ座標を省略して法線を指定する場合は、二つのスラッシュを使います。

面によって書式が異なっていないかも確認します。前半は法線あり、後半は法線なしという状態や、一部だけスラッシュの数が違う状態は、OBJの処理環境によっては読み込みエラーの原因になります。仕様上は複数の形式を含められる場合でも、アップロード用データでは可能な限り書式を統一した方が互換性を確保しやすくなります。

複数のオブジェクトやグループを含むOBJでは、グループの境界も調べます。別々のOBJをテキストとして単純に連結した場合、後半の面が1番から始まる頂点番号や法線番号をそのまま持っていることがあります。OBJ全体では番号が連続して参照されるため、後半の面が前半の頂点や法線を誤って参照する原因になります。

この段階では、まだデータを削除したり番号を書き換えたりしません。点群かメッシュか、法線参照があるか、面の形式が統一されているか、複数グループを含むかを整理します。原因を記録してから修正に進むことで、必要以上に形状を変更することを防げます。

手順2 頂点・法線・面の件数と参照番号を調べる

二つ目の手順では、OBJ内の各要素を集計します。最低限調べたいのは、頂点行の総数、法線行の総数、面行の総数、面で使用されている頂点番号の最大値、面で使用されている法線番号の最大値です。

頂点数と法線数が一致しているかだけを見るのではなく、実際に参照されている番号が有効かを確認します。頂点が20万件ある場合、面から参照される正の頂点番号は1以上20万以下である必要があります。法線が15万件ある場合、正の法線番号は1以上15万以下でなければなりません。

面の中に0番が使われていないかも確認します。OBJの正の参照番号は通常1から始まるため、0番は有効な頂点や法線を表しません。f 0//0 1//1 2//2のような面があれば、読み込みエラーの原因になる可能性が高い状態です。

負の参照番号が含まれている場合は、その扱いにも注意が必要です。負の番号は、その行より前に定義された要素の末尾から数える相対参照として使われます。正しく記述されていればOBJとして扱えることがありますが、アップロード先が負の番号に十分対応していない場合があります。互換性を優先するなら、最終的な書き出しで正の番号へ統一する方法が安全です。

次に、法線が指定されていない面の件数を確認します。法線を利用する方針のデータで、一部の面だけ法線番号を持っていない場合、表示時に自動計算される面と保存済み法線を使う面が混在します。処理環境によって陰影が変わったり、読み込み時の変換でエラーになったりする可能性があります。

使用されていない法線も調べます。vn行が10万件あるのに、面から参照される法線が2万件しかない場合、形状編集前の古い法線が残っている可能性があります。未使用法線が存在しても必ず読み込みに失敗するわけではありませんが、ファイル容量を増やし、参照の確認を複雑にします。

頂点を削減した後に法線だけが元の件数で残っている場合は、古い法線を整理して再計算する方が安全です。頂点数に合わせて法線行を先頭から残すような処理では、面と法線の対応を維持できません。どの法線が使われているかを調べ、面の参照と一緒に扱う必要があります。

複数のOBJを結合した場合は、グループ境界付近の面を重点的に確認します。たとえば、一つ目のOBJに頂点が5万件、法線が4万件あり、二つ目のOBJを後ろへ追加する場合、二つ目の面にある頂点番号には5万、法線番号には4万をそれぞれ加算する必要があります。頂点番号だけを加算し、法線番号を変更しなければ、頂点は正しくても法線だけが前半のデータを参照します。

集計結果は、修正前後を比較できるように保存します。頂点数、法線数、面数、最大頂点参照、最大法線参照、範囲外参照数、法線なし面数、未使用法線数を記録すると、修正によって何が変化したかを把握できます。

頂点数と法線数の差は、参考情報の一つにすぎません。合否を判断するときは、範囲外参照がないこと、面の記述が成立していること、意図した法線が割り当てられていることを重視します。

手順3 範囲外参照と不要な法線データを整理する

三つ目の手順では、集計で見つかった範囲外参照、未使用法線、形式が異なる面を整理します。ここでは、不正な法線番号が少数に限定されている場合と、広い範囲で対応関係が壊れている場合を分けて考えます。

少数の面だけが存在しない法線を参照しており、本来使用する法線が明確な場合は、対象の面だけを修正できます。周辺の面と同じ平面にあり、滑らかにつながる部分であれば、隣接面が使っている法線を参考にできます。

ただし、隣接面の法線番号を単純にコピーする方法は、常に正しいとは限りません。建物の角や構造物の稜線では、隣り合う面が別々の法線を持つことで角が明確に表示されます。異なる法線を持つべき部分で同じ法線を共有させると、鋭い角が丸く見えることがあります。

広範囲に法線番号のずれがある場合や、本来の対応が分からない場合は、法線番号を推測して埋めるよりも、古い法線を一度外して再生成する方が安全です。法線を外す場合は、vn行を削除するだけでは不十分です。面の中に残っている法線参照も同時に整理する必要があります。

たとえば、f 10//20 11//21 12//22という面から法線を外すなら、f 10 11 12へ変換します。テクスチャ座標を残す場合は、f 10/5/20 11/6/21 12/7/22から法線部分を取り除き、f 10/5 11/6 12/7のようにします。

法線番号だけを空欄にし、スラッシュの数が不規則な状態を作ると、別の構文エラーにつながります。法線を削除する場合は、面の記述形式を全体で統一してください。

法線を外した中間OBJを読み込めるか確認することには、原因を切り分ける意味があります。法線なしでは正常に読み込める場合、頂点座標と面の頂点参照はおおむね成立しており、問題が法線一覧または法線番号に集中していると考えられます。

法線を外しても読み込めない場合は、頂点番号の範囲外参照、途中で切れた面、同じ頂点番号を重複して使う面、面積がゼロの面、数値として解釈できない文字など、別の問題が残っている可能性があります。この場合、法線数を合わせる作業だけでは解決できません。

未使用法線を削除して番号を詰める場合は、旧番号と新番号の対応表が必要です。たとえば、1番、2番、5番の法線だけを残す場合、旧5番は新3番になります。面が旧5番を参照したままでは範囲外になるため、すべての面参照を新3番へ変更しなければなりません。

法線行だけを途中から削除する方法は避けてください。削除した位置より後ろにある法線の番号がすべて変わり、面からの参照がずれます。不要な法線を整理する場合は、法線一覧と面の法線番号を一体として再構築します。

同じ数値を持つ法線が複数ある場合でも、すぐに一つへ統合する必要はありません。同じ方向を示す法線は共有できる場合がありますが、書き出し構造や後工程の処理によっては、面の境界を管理するために別々の番号が使われていることがあります。アップロードエラーの解消を優先する段階では、過度な最適化をせず、参照切れの解消と構造の統一に集中した方が安全です。

アップロード先が頂点と法線の一対一対応を必要とする場合は、同じ頂点座標を複数に分ける処理が必要になることがあります。一つの頂点が異なる法線を使う面に共有されている場合、その頂点を面ごとに複製し、それぞれに対応する法線を割り当てます。法線数だけを増減させても、一対一構造には変換できません。

手順4 最終形状に合わせて法線を再計算する

四つ目の手順では、整理した最終形状を基準として法線を再計算します。点群から面を生成した後に、頂点削減、穴埋め、面の削除、頂点結合、平滑化などを行った場合、編集前の法線は現在の形状と一致しない可能性があります。

法線は、表面がどちらを向いているかを表す方向情報です。三角形の面では、三頂点から作られる二つの辺ベクトルを使って面の向きを求められます。ただし、頂点の並び順が逆になると、求められる法線の向きも反対になります。

隣接する面の頂点順がそろっていないメッシュでは、法線を再計算しても、外向きと内向きが混在することがあります。この状態では、ある角度から面が消えたように見えたり、一部だけ暗く表示されたりします。法線再計算の前に、連続する表面で面の向きが統一されているか確認してください。

閉じた形状であれば、法線を外側へそろえる処理を利用しやすくなります。穴がある形状、厚みのない面、複数の独立した部品が混在するデータでは、自動判定が難しい場合があります。主要な表面を複数方向から確認し、意図した向きになっているかを検証します。

滑らかな曲面では、周辺面の方向を考慮して頂点付近の法線を作ります。隣接する面の法線を平均することで、面と面の境界を滑らかに見せられます。しかし、すべての面を無条件に平均すると、本来鋭く見せたい稜線まで丸く表示されます。

建物の角、箱形構造物の辺、段差、切断面などでは、一定以上の角度で折れている面の法線を分離します。この場合、同じ座標位置に複数の法線が割り当てられるため、頂点数と法線数は一致しないことがあります。この不一致は、形状を適切に表示するために必要な構造です。

点群から作成したメッシュは、三角形の大きさや密度が不均一になりやすい傾向があります。単純に周囲の面法線を平均すると、細かい三角形が密集している方向へ法線が偏ることがあります。面積や頂点付近の角度を考慮できる計算方法を選ぶと、密度差のあるメッシュでも自然な陰影を得やすくなります。

法線を再計算する前には、ゼロ面積の面を整理します。同じ位置にある頂点だけで構成された三角形や、三頂点がほぼ一直線に並ぶ面では、安定した方向を求められません。方向を計算できない面からは、長さがゼロに近い法線や無効な数値が生じる可能性があります。

同じ頂点番号を一つの面の中で重複して使っている場合も、面として成立しないことがあります。f 10 10 12のような面は、二つの頂点が同じであり、面積を持てません。このような面は、法線を作る前に削除または修正します。

面を持たない点群OBJに法線が必要な場合は、各点の近くにある点から局所的な平面を推定し、その平面に垂直な方向を法線として求めます。この方法では、近傍として利用する範囲が重要です。

近傍範囲が小さすぎると、計測ノイズや点のばらつきに影響され、法線の方向が不安定になります。範囲が大きすぎると、細い部材や角の形状が平均化され、実際の表面方向を表せなくなります。対象物の寸法、点間隔、必要な細部の大きさに合わせて設定します。

点群から推定した法線には、表裏の向きが自動では決まらない場合があります。同じ平面上の点でも、法線が反対方向へばらばらに向くことがあります。計測位置、視点方向、周辺点との連続性などを基準にして、向きをそろえる必要があります。

面を持つメッシュであれば、最終的な面構成から法線を計算する方が、面参照との整合を取りやすくなります。点群に付けた法線をそのままメッシュへ流用すると、メッシュ化や簡略化で変わった表面と一致しないことがあります。

再計算後は、すべての法線が有効な三成分を持っていることを確認します。方向ベクトルの長さがゼロになっていないこと、極端に大きな値や無効な文字列がないことも重要です。出力前に法線を一定の長さへ正規化しておくと、読み込み環境による表示差を減らしやすくなります。

手順5 小規模な検証用OBJで確認してからアップロードする

五つ目の手順は、修正後のデータをいきなり本番用としてアップロードせず、小規模な検証用OBJで動作を確認することです。大容量の点群OBJでは、アップロードと変換に時間がかかります。処理の最後にエラーが出ると、修正と再試行を繰り返す負担が大きくなります。

問題が発生していた面を含む一部の範囲を切り出し、修正版と同じ条件で書き出します。平面だけでなく、角、曲面、穴埋め部分、グループ境界など、異なる法線構造を含む範囲を選ぶことが重要です。

再書き出しでは、頂点番号、テクスチャ座標番号、法線番号、面参照を再構築します。編集前の番号を維持する設定は差分確認には便利ですが、削除済み要素や未使用要素を残す可能性があります。アップロード互換性を優先する場合は、未使用要素を除き、正の連続番号で書き出す方法が適しています。

法線を書き出す方針であれば、vn行が存在し、法線を使うすべての面に有効な法線番号が付いていることを確認します。テクスチャ座標を使わない場合は、頂点番号と法線番号の間に二つのスラッシュが入っているかを見ます。

法線を書き出さず、アップロード後の処理で自動生成させる方針なら、古いvn行と法線参照を完全に除きます。一部だけ法線参照を残すと、保存済み法線と自動計算法線が混在する可能性があります。

小規模OBJをアップロードできたら、読み込み成功の表示だけで判断せず、形状を複数方向から確認します。表面が片側から見えない、面ごとに明暗が大きく変わる、曲面が角張って見える、稜線が不自然に丸くなる場合は、法線方向や平滑化の範囲に問題が残っています。

検証用OBJで問題がなければ、全体データを同じ条件で再書き出します。その後、頂点数、法線数、面数、最大参照番号、範囲外参照数を再集計します。頂点数と法線数が一致していなくても、すべての参照が有効で、表示が意図どおりなら正常と判断できます。

全体データだけがアップロードに失敗する場合は、後半のグループに参照ずれが残っている可能性があります。OBJを前半と後半に分けて検証すると、問題がある範囲を絞り込めます。問題を含む側をさらに分割する方法を繰り返せば、大容量データでも異常な面を探しやすくなります。

アップロード前には、修正版のファイル名も確認します。元データと修正版が同じ場所に混在していると、誤って古いOBJを選択することがあります。修正版には版番号や作業日を含め、元データへ上書きしない管理が安全です。

アップロード後は、頂点数や面数が想定どおりか、座標位置が変わっていないか、表示範囲が極端に広がっていないかも確認します。法線を直した後に形状が見えない場合、原因が座標原点、単位、極端に離れた頂点など別の要素である可能性があります。

頂点数と法線数の不一致が起きる主な原因

頂点数と法線数の問題が起きる代表的な原因は、形状を変更した後に法線を更新していないことです。頂点の削除や結合を行うと面の構成が変わりますが、法線一覧と面の法線番号が以前の状態で残ると参照関係が崩れます。

点群から作成したメッシュを軽量化するときにも注意が必要です。頂点削減では、近い頂点を統合したり、小さな面を取り除いたりします。位置情報だけを更新し、法線属性を適切に再割り当てしない処理では、削減後の面が存在しない法線を参照することがあります。

複数OBJの結合も典型的な原因です。別々のOBJを一つへまとめるときは、頂点番号、テクスチャ座標番号、法線番号をそれぞれ別に補正しなければなりません。三種類の件数は通常一致しないため、同じ加算値を使うことはできません。

一つ目のOBJに頂点が10万件、法線が8万件ある場合、二つ目のOBJの頂点番号には10万を加え、法線番号には8万を加えます。両方へ10万を加えると、法線番号が範囲外になる可能性があります。

一部のグループだけ別の書き出し条件になっている場合もあります。あるグループは法線あり、別のグループは法線なし、追加した面だけ異なる平滑化条件といった状態では、データ全体の構造が不統一になります。

面を三角形化した後に法線を更新していない場合も、表示が変わることがあります。四角形や多角形を複数の三角形へ分割すると、面の構成や頂点順が変わります。三角形化前の法線をそのまま使うと、新しい面の向きと一致しない可能性があります。

頂点の順序を変更したときも注意が必要です。ファイル容量の整理や処理速度の改善を目的として頂点一覧を並べ替えた場合、面の頂点番号を同時に更新しなければ形状が壊れます。同様に、法線一覧を並べ替えた場合は、すべての面の法線番号を更新する必要があります。

法線数を頂点数に合わせるために、足りない法線を単純に複製した処理も問題を残します。追加された法線がどの面の方向を表すか分からなければ、件数だけ一致しても表示は正常になりません。

点群から法線を推定した後に、点を間引いた場合も対応が崩れることがあります。間引きによって削除した点の法線が残っていたり、残った点の順番だけが変わったりすると、頂点と法線の関連付けがずれます。点の間引き後に法線を再推定するか、頂点と法線を同じ対応表で整理する必要があります。

点群OBJを修正するときに避けたい対応

最も避けたいのは、頂点数と法線数の少ない方に合わせて行を削除する対応です。頂点数が10万件、法線数が9万件だからといって、頂点を末尾から1万件削除すると、その頂点を使用していた面がすべて範囲外参照になります。

法線を末尾へ1万件追加するだけの対応も適切ではありません。同じ法線を複製して件数を合わせても、面が新しい法線番号を参照するとは限りません。また、複製した方向が実際の面と一致している保証もありません。

面の法線番号を頂点番号と同じ値に置換する方法にも注意が必要です。OBJでは頂点番号と法線番号が独立しているため、両者を同じにする必要はありません。一つの頂点が複数の法線を使う構造では、この置換によって稜線や陰影が崩れます。

範囲外の法線番号を一律で1番へ置換する対応も避けるべきです。エラーを回避できたとしても、異なる向きの面がすべて同じ法線を参照し、不自然な表示になります。原因調査用の一時的な試験として行う場合でも、公開用データには使用しない方が安全です。

法線行だけを削除し、面の法線番号を残すこともできません。vn行がないのにf行が法線番号を持っていれば、すべての法線参照が無効になります。法線を削除するなら、面から法線部分も除きます。

手作業で大規模な番号置換を行う場合は、数字の一部まで置換しないよう注意が必要です。たとえば、法線番号の12を置換する操作が、112や120にも影響すると、多数の参照が壊れます。番号の区切りを認識できる方法で処理し、修正後に必ず再集計します。

修正前のOBJを上書きすることも避けます。一度番号を詰め直すと、元の面と法線の対応を復元するのが難しくなります。元データ、法線を外した中間データ、法線再計算後の修正版を別々に保存してください。

アップロードに成功したという理由だけで、表示確認を省略するのも危険です。読み込み処理が範囲外法線を無視し、自動的に別の法線を作っている可能性があります。形状が表示されても、陰影や表裏が意図どおりでなければ修正は完了していません。

アップロード前に確認したい最終チェック

アップロード前には、まず対象が点のみのOBJか、面を持つメッシュOBJかを確認します。点のみのデータでは、法線や面が存在しないことがあります。アップロード先が求めるデータ構造と一致しているかを確認してください。

次に、すべての正の頂点番号が1以上で頂点総数以下、すべての正の法線番号が1以上で法線総数以下であることを確認します。0番や範囲外番号が一つでも残っていれば、対象面を修正します。

負の番号を利用している場合は、アップロード先の対応状況を確認します。対応が明確でなければ、正の連続番号へ変換して再書き出す方が安全です。

面の記述形式も確認します。法線を使わない面と使う面が意図せず混在していないか、テクスチャ座標を省略するときのスラッシュが正しいかを調べます。

法線を利用する場合は、各法線が有効な数値で構成され、長さがゼロになっていないことを確認します。向きが反転した法線が混在していないか、曲面の陰影が滑らかにつながっているか、稜線が必要以上に丸くなっていないかも見ます。

形状側では、同じ頂点番号を重複して含む面、面積がゼロの面、極端に細長い面、孤立した面を確認します。法線参照が正しくても、面自体が成立していなければアップロード時に別のエラーが発生します。

修正前後の頂点数と面数も比較します。法線を再計算すると法線数が変わることはありますが、意図していないのに頂点や面が大幅に減っている場合は、書き出し条件を見直します。

座標値が不要に丸められていないかも重要です。OBJをテキストとして再保存した際に、小数桁数が大きく減ると、形状精度が低下することがあります。法線の修正に集中するあまり、座標精度を変えないよう注意してください。

検証用OBJと全体OBJで同じ書き出し条件を使っているかも確認します。検証版だけ法線なし、全体版だけ法線ありという状態では、検証結果をそのまま適用できません。

最後に、アップロードするファイルが本当に修正版であるかを確認します。元データと修正版の名前が似ている場合、選択ミスが起こりやすくなります。版番号を付け、修正内容と集計結果を一緒に記録すると、再現性のある管理ができます。

まとめ

点群OBJアップロードで頂点数と法線数の不一致が表示されても、二つの件数が違うだけでデータ破損とは判断できません。OBJでは、頂点座標と法線が独立して管理され、面の各点がそれぞれの番号を個別に参照します。

修正で重要なのは、頂点数と法線数を無理に同じにすることではなく、面から参照されるすべての頂点番号と法線番号が有効であることです。最初に元のOBJを複製し、点群かメッシュか、面がどの形式で記録されているかを確認します。

次に、頂点数、法線数、面数、最大参照番号、範囲外参照、未使用法線を集計します。少数の参照切れで正しい対応が明確なら対象面を修正し、広範囲にずれている場合は古い法線を整理して、最終形状から再計算する方が安全です。

法線再計算では、面の表裏、滑らかに見せる範囲、鋭く残す稜線、ゼロ面積の面に注意します。点のみのOBJに法線を付ける場合は、周辺点から局所的な表面方向を推定し、法線の向きも統一します。

修正後は、小規模な検証用OBJを先にアップロードし、陰影、表裏、稜線、曲面の見え方を確認します。その後、全体データを同じ条件で書き出し、範囲外参照がないことを再集計してからアップロードします。

点群OBJの整合性確認を定型化すれば、大容量データでも原因を段階的に絞り込めます。頂点と法線の件数差だけに注目せず、面を含めた参照構造全体を確認することが、アップロード失敗や表示不良を防ぐポイントです。

現場での計測から点群の確認、データ共有までの流れをより効率化したい場合は、次の検討先としてLRTK Phoneをご確認ください。

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

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