点群データをOBJ形式でアップロードしたあと、作成時には滑らかに見えていた地形や構造物が角張って表示されたり、スムージングを有効にしたはずなのに陰影が変化しなかったりすることがあります。設定を変更して何度も書き出しても結果が同じ場合、単純な操作ミスではなく、OBJに含まれる要素、点群とメッシュの違い、法線の扱い、アップロード先の読み込み処理、表示キャッシュなどが関係している可能性があります。
「点群 OBJ アップロード」で検索する実務担当者の多くは、測量や現況確認で取得した点群を共有し、地形や構造物の状態を立体的に確認したいと考えているでしょう。しかし、画面上で滑らかに見えるかどうかだけでデータの良否を判断すると、形状そのものの問題と表示上の陰影の問題を混同するおそれがあります。
一般に、OBJのスムージングは頂点座標を動かして形状を丸める処理ではありません。ポリゴン面の法線を補間し、表面の陰影を滑らかに見せるための指定として扱われます。そのため、面を持たない点要素だけのOBJでは、面のスムージングによる変化は生じません。また、面を持つOBJであっても、頂点法線が出力されていなかったり、アップロード先で法線が再計算されたりすると、作成時と同じ表示にはならないことがあります。
この記事では、点群OBJのスムージング設定が反映されないときに確認したい5項目を、原因を切り分けやすい順に解説します。書き出し元の設定だけを繰り返し変更するのではなく、データ構造、OBJの記述、法線、読み込み処理、表示条件を順番に確認することで、不要な再出力を減らしやすくなります。
点群OBJのスムージングが反映されない状態とは
スムージングが反映されないという表現には、複数の異なる現象が含まれています。たとえば、曲面が三角形の集合のように角張って見える状態、面と面の境界に筋が出る状態、設定を切り替えても表示がまったく変わらない状態、アップロード前には滑らかだったのに共有画面では粗く見える状態などです。
これらの現象を正しく切り分けるには、最初にスムージングの役割を理解しておく必要があります。3Dデータの処理で使われるスムージングという言葉には、大きく分けて二つの意味があります。一つは、頂点の座標を移動させ、細かな凹凸やノイズをならす形状処理です。もう一つは、形状を変更せず、面の向きを示す法線を補間して滑らかに見せる表示処理です。
OBJに記録されるスムージンググループの指定は、主に後者の表示処理に関係します。頂点座標や面の構成が変わるわけではないため、スムージングを有効にしても断面形状や体積が自動的に滑らかになるわけではありません。画面上で丸みが増したように見えても、実際のポリゴンや頂点位置は変更されていないことがあります。
反対に、画面上で角張って見えていても、元の頂点座標が間違っているとは限りません。法線が出力されていない、面ごとに法線が分断されている、アップロード先がOBJ内の法線やスムージンググループを利用しない、輪郭線表示が有効になっているなど、表示側の条件だけが原因となる場合があります。
OBJでは、座標を示す頂点データは v、点要素は p、ポリゴン面は f で記述されます。したがって、v 行が大量にあっても、p や f などの要素記述がなければ、仕様上は表示対象の点や面が明確に定義されていない状態です。実際の読み込み結果はソフトウェアによって異なり、v 行だけを点群として扱う実装もありますが、互換性を確認するときは p と f の有無を分けて確認する必要があります。OBJの要素には点、線、面などがあり、頂点データとは別に要素が頂点番号を参照する構造です。([The Library of Congress][1])
面を持たない点要素では、隣接するポリゴン面の法線を補間するスムージンググループは働きません。点表示が粗い場合は、面のスムージングではなく、点の描画サイズ、密度、間引き、色、視点距離などを確認します。
したがって、最初からスムージング設定だけを疑うのではなく、対象データがどのような要素を持っているかを確認する必要があります。点要素なのか、ポリゴン面を持っているのか、法線があるのか、読み込み後もその情報が保持されているのかを順番に確認することで、原因を整理できます。
確認1 点だけのOBJか面を持つOBJかを確認する
最初に確認したいのは、対象のOBJが点要素を持つデータなのか、三角形や四角形などの面を持つメッシュデータなのかという点です。点群OBJという名称だけでは、実際のデータ構造を判断できません。点群を点要素として書き出したOBJもあれば、点群から表面を生成したメッシュをOBJとして保存したものもあります。
OBJでは、頂点座標を表す v と、頂点番号を参照して点を定義する p、複数の頂点を結んで面を構成する f が分かれています。頂点座標が大量に保存されていても、f がなければポリゴンメッシュではありません。また、p もなければ、頂点データだけが並び、読み込み先によっては点群として描画されない可能性があります。
点要素だけのOBJで見た目が粗い場合、確認すべきなのは面のスムージング設定ではなく、点の表示サイズ、点密度、表示距離、点の色、間引き率、欠測範囲などです。点を大きく表示すると点同士の隙間が減り、表面のように見えることがあります。しかし、これはメッシュが生成されたわけではなく、点の描画方法が変わっただけです。
点を小さく表示すると、平坦な場所でも隙間が目立ち、ざらついて見えます。また、遠距離表示で点が間引かれる環境では、取得時には密だった点群でも粗く見える場合があります。このような状態でポリゴン面のスムージング設定を変更しても、見た目はほとんど変化しません。
面を持つOBJかどうかは、書き出し元の情報表示で頂点数と面数を確認すると判断しやすくなります。ただし、面数が0だからといって必ず点群であるとは限りません。点要素、線要素、自由曲線、自由曲面、または要素に参照されていない頂点だけが含まれる可能性もあるため、OBJ内部の p、l、f などの記述を確認します。
書き出し元で要素数を確認できない場合は、OBJをテキストとして確認する方法もあります。ただし、点群OBJは容量が大きくなりやすいため、一般的な編集環境で全体を開くと動作が重くなることがあります。ファイルの先頭や一部だけを確認できる方法、特定の行頭キーワードを検索できる環境を使うと安全です。
面が含まれていたとしても、隣接する面が同じ頂点番号を共有しているとは限りません。見た目上はつながっている三角形でも、それぞれが別々の頂点番号を参照している場合、読み込み側では連続した表面として扱われないことがあります。座標値が同じでも頂点が重複していると、法線の補間が境界で切れ、直線状の筋や角張りが現れる原因になります。
この問題は、複数の範囲を別々にメッシュ化してから結合した場合や、タイル単位で処理した場合に起こりやすくなります。各タイルの端に同じ位置の頂点が別々に生成されると、読み込み条件によっては境界で法線が共有されません。その結果、スムージングを有効にしても継ぎ目が残ることがあります。
ただし、重複している頂点をすべて統合すればよいわけではありません。構造物の角、段差、壁と地面の境界などは、法線を分けて鋭く表示したほうが形状を把握しやすい場所です。滑らかにつなぐべき曲面の境界と、意図的に角を残す境界を区別する必要があります。
確認1では、まず p、f などの要素記述を確認し、点要素か面付きメッシュかを判断します。点要素であれば点群表示の条件を見直し、面がある場合は次のスムージンググループと法線の確認へ進みます。
確認2 スムージング情報がOBJへ出力されているか確認する
面を持つOBJであることを確認したら、書き出し元で設定したスムージング情報が実際のOBJへ含まれているかを確認します。作成画面でスムーズ表示を有効にしても、その情報がエクスポート時に保存されるとは限りません。
書き出し元の画面では、表示用に自動計算された法線が使われている場合があります。画面上では滑らかに見えていても、OBJへ書き出す際に頂点法線やスムージンググループを含めない設定になっていれば、アップロード後には角張って見える可能性があります。
OBJでは、s の記述によって後続の面を同じスムージンググループへ割り当てられます。同じグループに属し、かつ共有頂点を持つ面は、読み込み時に法線を滑らかに補間する対象になります。s off では、面ごとのフラットな陰影として扱われるのが基本です。([NVIDIA Docs][2])
ただし、OBJ内に s が記録されていても、アップロード先がその情報を使用するとは限りません。明示的な頂点法線 vn を優先する環境、s から法線を計算する環境、読み込み時に独自条件で法線を再計算する環境があります。そのため、スムージンググループの有無は重要な確認項目ですが、それだけで最終的な表示が決まるわけではありません。
確認時には、OBJの内部に s 1 などのスムージンググループ指定や s off が含まれているかを調べます。また、一つのグループがファイル全体に適用されているのか、場所によってグループが切り替わっているのかも確認します。
地形、法面、壁、構造物、縁石などが一つのOBJに含まれている場合、すべてを一つのスムージンググループにすると、本来は鋭く残すべき境界まで丸く見えることがあります。たとえば、地面と垂直な壁が共有頂点を持ち、同じスムージンググループに含まれると、座標上は直角であっても、陰影が補間されて丸みを帯びたように見える可能性があります。
反対に、曲面を構成する面が細かく別のグループへ分かれていると、面の境界が途切れ、スムージングを有効にしても角張って見えます。メッシュを複数の区画に分けて処理した場合や、書き出し時にオブジェクト単位で分割した場合には、この状態が起こることがあります。
スムージング情報が出力されていない場合は、エクスポート設定を確認します。設定項目の名称は利用環境によって異なりますが、法線を含める、スムージンググループを出力する、表示属性を保持する、スムーズシェーディングを保存するといった意味の項目が関係する場合があります。
設定名だけで判断するのではなく、小規模な試験データを使って比較することが大切です。スムージング有効と無効の二種類を書き出し、OBJ内部の違いとアップロード後の見え方を比べます。同じ現場全体のデータで試すと書き出しやアップロードに時間がかかるため、曲面と鋭い角を含む小さな範囲を切り出すと効率的です。
比較用のファイルは、同じ名前で上書きしないようにします。スムージング有効、無効、法線あり、法線なしなど、条件が分かる別名で保存してください。同じファイル名を使い続けると、古いデータを表示しているのか、新しい設定が反映されていないのかを判断しにくくなります。
確認2では、作成画面の設定ではなく、書き出されたOBJに s や vn などの必要な情報が含まれているかを確認します。そのうえで、滑らかにする範囲と角を残す範囲が適切に分かれているかを見直します。
確認3 頂点法線と面の対応を確認する
スムージングの見え方に大きく影響するのが頂点法線です。法線とは、面や面上の頂点がどちらの方向を向いているかを示す情報で、画面上の明暗を計算するために使われます。頂点座標や面の形が正しくても、法線に問題があると、表面が角張る、黒く見える、明暗がまだらになる、視点によって一部が消えたように見えるといった現象が起こることがあります。
面ごとに一つの法線を使う表示では、隣り合う面の境界がはっきり見えます。一方、頂点ごとの法線を隣接面の間で補間すると、複数の面で構成された曲面が滑らかに見えます。スムージング設定が反映されないと感じる場合、実際にはスムージンググループではなく、頂点法線の有無や分割方法が表示を左右している可能性があります。
OBJでは、頂点座標 v と頂点法線 vn が別々の配列として保存され、面の f 記述からそれぞれの番号を参照できます。代表的な形式は f v/vt/vn またはテクスチャ座標を省略した f v//vn です。位置、UV、法線は別の番号を参照できるため、同じ位置でも面ごとに異なる法線を割り当てられます。([NVIDIA Docs][2])
データ変換や編集の途中で頂点の並びだけを変更し、法線番号を更新していないと、面と法線の対応がずれます。また、不要な面を削除したあとに参照関係が崩れたり、複数のOBJを結合したときに番号が正しく調整されなかったりすることもあります。
書き出し元では滑らかに見えているのに、アップロード後だけ角張る場合、書き出し元が内部で法線を自動計算している可能性があります。内部の画面表示には計算済みの法線を使用しながら、OBJには vn を書き出していない場合、別の環境では面法線や再計算法線で表示されることがあります。
反対に、OBJに法線が含まれていても、アップロード先が読み込み時に法線を再計算すると、書き出し元とは異なる見え方になります。再計算の際に、隣接面を滑らかにつなぐ角度の条件が厳しければ、緩やかな曲面でも細かく分断されます。条件が緩すぎれば、構造物の角や段差まで丸く見えることがあります。
法線の確認では、まずOBJに vn が存在するかを調べます。次に、各面が頂点だけを参照しているのか、頂点と法線の両方を参照しているのかを確認します。同じ位置にある頂点へ複数の法線が割り当てられている場合は、意図した鋭角表現なのか、不要な分断なのかを判断します。
面の表裏も重要です。多くの読み込み環境では、面を構成する頂点の並び順から幾何学的な表向きを判断します。ただし、表裏判定や片面描画の規則は読み込み先によって異なり、明示的な vn の向きと面の頂点順が一致していない場合もあります。面の向きが混在していると、隣接面の陰影が不自然になったり、片面描画で一部が見えなくなったりすることがあります。
スムージングが反映されないように見えて、実際には一部の面が反転しているケースもあります。両面表示へ一時的に切り替えられる場合は、面の欠落が解消されるかを確認します。両面表示で見えるようになるなら、法線や面の向きを見直す必要があります。
法線を再計算する前には、メッシュの形状も確認してください。重複面、極端に小さな面、面積がほぼ0の面、細長すぎる三角形、自己交差、接続関係が不自然な形状などがあると、法線計算や表示が不安定になる場合があります。スムージングを強くして見た目を隠すのではなく、問題のある面を整理してから法線を再計算するほうが適切です。
法線の再計算は、元データを複製してから行います。法線だけを変更する処理であれば通常は頂点座標を変えませんが、利用する処理によっては頂点統合やメッシュ修復が同時に実行されることがあります。測量成果として座標を保持したい場合は、処理前後で頂点数、面数、座標値を確認してください。
確認3では、法線の有無だけでなく、面との参照関係、面の表裏、境界での法線分割、重複頂点の状態まで確認します。スムージンググループを変更しても結果が変わらない場合は、明示的な法線や読み込み時の法線再計算が優先されている可能性を考える必要があります。
確認4 アップロード先の読み込み処理を確認する
OBJ側に面、スムージンググループ、頂点法線が正しく含まれていても、アップロード先の処理によって設定が反映されないことがあります。書き出し元の画面だけを確認していると、この原因には気付きにくいため、読み込み後の情報や表示設定を確認する必要があります。
アップロード先では、表示を安定させるために法線を自動生成する場合があります。OBJに法線がない場合だけ補うこともあれば、既存の法線を使用せず、常に再計算することもあります。この処理が書き出し元と異なれば、同じOBJでも見え方は変化します。
読み込み時に、近い位置の頂点を統合する処理が行われる場合もあります。頂点が統合されると、分断されていた曲面が滑らかになる可能性があります。しかし、本来は別々に保つべき構造物の角や、近接した別部材まで統合されると、意図しない陰影や形状の乱れにつながります。
反対に、大規模なOBJを処理するため、メッシュが複数の区画へ分割されることもあります。分割後に区画ごとに法線が計算されると、境界で法線が一致せず、直線状の筋が見える可能性があります。書き出し元では連続していた面でも、アップロード後の変換処理によって継ぎ目が生じる場合があります。
読み込み設定に、法線を保持する、法線を再計算する、スムーズ表示を使用する、頂点を統合する、鋭角を保持する、面を簡略化するといった項目がある場合は、一つずつ変更して結果を確認します。複数の設定を同時に変更すると、どの処理が見え方へ影響したのか分からなくなります。
確認時には、同じ視点、同じ表示倍率、同じ光の向きで比較してください。視点や照明が異なると、設定による変化なのか、単なる見え方の違いなのかを判断しにくくなります。
アップロード後に頂点数、面数、オブジェクト数などを確認できる場合は、書き出し前の値と比較します。面数が0になっていれば、スムージング以前に面情報が読み込まれていない可能性があります。面数が大幅に減っていれば、簡略化、一部の面の除外、変換失敗などを確認します。
大規模データでは、視点から遠い場所の面数を減らし、近づくと詳細な形状へ切り替える表示方法が使われることがあります。その場合、近距離では滑らかでも、全体表示では角張って見えることがあります。視点を近づけたときに見え方が変わるなら、元のスムージング設定ではなく、表示段階の切り替えが関係している可能性があります。
アップロード先が点要素とメッシュを自動判定している場合、OBJの一部に不整合があると、想定とは異なる表示方法が選ばれることも考えられます。面情報が存在していても、参照番号の不整合や不正な面が多いと、正常なメッシュとして処理されない場合があります。
原因を調べるには、単純な試験用OBJを利用すると効果的です。滑らかな曲面、平面、鋭い角を含む小さなモデルを用意し、スムージンググループと法線の条件を変えてアップロードします。試験モデルでも設定が反映されなければ、アップロード先の読み込み処理が影響している可能性が高まります。
仕様が明示されていない場合は、推測だけで断定せず、実際の比較結果を記録します。法線ありの場合だけ滑らかになる、s を変えても差が出ない、アップロード後に面数が減るといった観察結果を残すことで、必要な書き出し条件を絞り込めます。
確認5 古いデータと表示条件の影響を確認する
設定を変更して再アップロードしたのに見た目が変わらない場合、古いデータや以前の表示結果を見ている可能性があります。同じファイル名で上書きした場合、アップロード先や閲覧環境に以前のデータが残り、新しいOBJが表示されていないように見えることがあります。
まず、再出力したOBJの更新日時とファイル容量を確認します。更新日時が変わっていなければ、想定した保存先へ新しいファイルを書き出せていない可能性があります。容量が同じでも内容が同一とは限りませんが、比較の手掛かりにはなります。
次に、同じファイル名を使用せず、版番号や日時を付けた別名で保存します。アップロード後も、登録日時、容量、頂点数、面数などを確認し、新しいデータが読み込まれていることを確かめます。
表示条件によって、スムージングの差が見えにくくなることもあります。輪郭線表示が有効になっている場合、陰影が滑らかでも三角形の境界線が表示されるため、スムージングが反映されていないように感じることがあります。確認時には、輪郭線を無効にし、単色の面表示へ切り替えると判断しやすくなります。
頂点色やテクスチャが表示されている場合も、色の変化によって陰影差が目立たなくなることがあります。テクスチャ上の境界線を法線の継ぎ目と誤認する可能性もあります。単色表示へ切り替えて筋が消えるなら、スムージングではなく画像やUV座標の問題を確認します。
光源の向きも重要です。表面を正面から均一に照らすと、面法線と補間法線の差が見えにくくなります。斜め方向から光が当たる条件では、曲面の陰影が連続しているかを確認しやすくなります。設定前後の比較では、光の向きをそろえてください。
非常に大きな座標値を持つOBJや、表示環境の原点から遠い位置にあるOBJでは、使用する数値型や描画処理によって細かな形状が不安定に見える場合があります。視点を動かすと面がちらつく、境界が揺れる、細かな凹凸が消えるといった現象は、スムージングとは別の問題かもしれません。
測量座標を保持する必要がある場合、元データの座標を不用意に変更してはいけません。表示確認用の複製データを作り、一定量だけ原点付近へ移動させて比較する方法があります。その際は、移動量を記録し、成果用データと混同しないように管理します。
同じ位置に複数の面が重なっている場合、描画の前後関係が不安定になり、ちらつきやまだらな陰影が生じることがあります。この状態では法線を修正しても表示が安定しません。複数時点のメッシュが同時に表示されていないか、同じOBJ内に重複面がないかを確認してください。
大規模OBJでは、アップロード後に変換処理や詳細データの生成が行われる環境もあります。処理状態を確認できる場合は、変換が完了していることを確かめてから比較します。単に時間を空けるだけでは原因を判断できないため、登録状態や処理完了の表示を基準にします。
確認5では、別名での再アップロード、登録情報の照合、輪郭線の無効化、単色表示、光源変更、表示倍率変更、重複面の確認を行います。OBJ自体に問題がなくても、古いデータや表示条件によって設定差が見えない場合があります。
スムージングと形状の平滑化を区別する
スムージング設定を調整するときは、陰影を滑らかにする処理と、頂点座標を動かす形状の平滑化を明確に区別する必要があります。両者を混同すると、表示だけを改善するつもりで、測量データの形状や数量まで変えてしまう可能性があります。
陰影のスムージングでは、通常、頂点座標や面の位置は変わりません。隣接する面の法線を補間し、光の当たり方を滑らかに見せます。そのため、画面上では曲面に見えても、断面を確認すると元のポリゴン構造が残っています。
形状の平滑化では、周囲の頂点位置を参考にして座標を移動させ、細かな凹凸やノイズを減らします。この処理を行うと、断面形状、勾配、体積、境界位置が変化する可能性があります。出来形確認や土量算出に使うデータでは、適用範囲と設定値を慎重に管理しなければなりません。
たとえば、点群から生成した斜面メッシュが細かな凹凸を持っている場合、陰影のスムージングを適用すると画面上は滑らかに見えます。しかし、実際の頂点は動いていないため、断面や数量計算には元の凹凸が残ります。
反対に、形状を平滑化すると見た目だけでなく計算結果も変わります。法肩、法尻、段差、縁石、排水溝、構造物際などの境界へ平滑化を適用すると、本来残すべき形状が丸くなったり、位置がずれたりするおそれがあります。
表示確認が目的であれば、最初に法線とスムージンググループだけで解決できるかを確認します。形状のノイズを修正する必要がある場合は、元データを保存し、処理後のデータを別ファイルとして管理してください。
画面上で滑らかに見えることは、点群やメッシュの品質が高いことを保証しません。点密度が不足していても、法線補間によって自然な面に見える場合があります。欠測範囲をまたいで不要な面が張られていても、スムージングによって違和感が小さくなることがあります。
そのため、スムージング後の表示だけでなく、元点群、ポリゴンの大きさ、欠測範囲、境界線、断面などを合わせて確認することが重要です。見栄えを整えながらも、形状上の問題を隠さない表示方法を選ぶ必要があります。
点群からメッシュを作成した直後の確認
点群からOBJメッシュを作成した直後は、スムージングを設定する前にメッシュの基礎状態を確認します。面構造に問題があるまま法線を調整しても、陰影の乱れを一時的に目立たなくするだけで、根本的な解決にはなりません。
最初に、点が存在しない範囲をまたいで不要な面が生成されていないかを確認します。地表の欠測、構造物の裏側、樹木や重機を除去した跡などでは、離れた点同士が結ばれ、大きな三角形が生成される場合があります。
このような面は周囲と向きが大きく異なるため、法線を補間しても陰影の筋や不自然なへこみが残りやすくなります。穴を自動的に埋める設定を使用した場合は、実在しない面が作られていないかを確認してください。
三角形の大きさと形状も重要です。極端に細長い三角形や、周囲より著しく大きな三角形は、法線計算や陰影の連続性へ影響することがあります。点密度に対して面が大きすぎる場合、局所的な地形変化を十分に表現できません。
反対に、非常に細かな面がノイズ点まで追従していると、法線が細かく揺れ、表面がまだらに見えることがあります。スムージングを強くすれば見た目は整う可能性がありますが、ノイズや不要面を見つけにくくなります。
面の表裏がそろっているかも確認します。隣接面の向きがばらばらでは、法線を平均化しても安定した陰影になりません。急斜面や垂直面を含むデータでは、単純に上向きだけを基準にすると、意図しない反転が残る可能性があります。
複数の範囲を別々にメッシュ化した場合は、接合部を重点的に確認します。境界上に同じ座標の頂点が重複していると、法線補間が分断され、線状の継ぎ目が見えることがあります。
材質やオブジェクトの分割も影響します。連続する地表面が複数のオブジェクトへ分かれている場合、読み込み側によっては境界で法線共有が切れることがあります。タイル分割して書き出す場合は、境界の頂点と法線がどのように扱われるかを確認します。
メッシュ生成とスムージングの設定は、分けて管理することが重要です。点群の不要点除去、面生成、穴埋め、頂点統合、法線計算、スムージングを同時に変更すると、どの処理が結果へ影響したのか分からなくなります。
まず、不要な面や不自然な三角形がないメッシュを作成します。その後、法線とスムージングを調整し、表示を整えます。この順序を守ることで、見た目の問題と形状の問題を区別しやすくなります。
大規模な点群OBJで起きやすい問題
現場全体を含む大規模なOBJでは、小規模な試験データでは発生しない問題が現れることがあります。データ量を抑えて表示するため、読み込み時に分割、簡略化、段階表示などが行われる環境があるためです。
大規模OBJが複数のタイルへ分割されると、タイルごとに法線が再計算される場合があります。隣り合うタイルの境界で法線が一致しなければ、元のOBJでは滑らかだった面に直線状の筋が現れます。
遠距離表示用に面数を減らす処理も影響します。簡略化によって頂点や面が削除されると、元の法線を維持できず、新しい面構成に合わせて法線が再計算されることがあります。全体表示では角張り、近づくと滑らかになる場合は、表示段階の切り替えが原因かもしれません。
座標値が大きいデータでは、表示環境による計算精度の影響も考えられます。測量座標を保持したOBJは、表示環境の原点から遠い位置に配置されることがあります。細かな面がちらつく、視点移動に合わせて境界が揺れる場合は、スムージング設定以外の精度問題を疑います。
確認用に原点付近へ移動させる場合は、必ず複製データを使用します。元の測量座標を持つ成果データを上書きすると、他のデータと重ね合わせられなくなる可能性があります。移動量を記録し、確認用と成果用を明確に分けてください。
テクスチャ付きOBJでは、画像の境界と陰影の境界を混同しやすくなります。画像の解像度、圧縮、UV座標、タイル境界などによって筋が見える場合、法線を変更しても改善しません。単色表示で筋が消えるかを確認すると、原因を分けやすくなります。
大規模OBJを毎回全体で再出力すると、確認に時間がかかります。問題が出ている範囲だけを切り出して試験すると効率的ですが、タイル境界や座標値が原因の場合、切り出すことで現象が消えることがあります。そのため、部分データと全体データの両方で確認することが重要です。
原因を効率よく切り分ける手順
スムージングが反映されない場合は、思いつく設定を次々に変えるのではなく、確認する順序を固定すると原因を見つけやすくなります。
まず、現在のOBJと書き出し元データを保存し、比較の基準を作ります。ファイル名、更新日時、容量、頂点数、点要素数、面数、法線の有無、書き出し条件を記録します。
次に、OBJが点要素か面付きメッシュかを確認します。p があり f がなければ点要素としての表示条件を確認します。f があるなら、書き出し前後で面数が維持されているかを確認します。v だけで p も f もない場合は、読み込み先がどのように解釈するかを試験し、必要に応じて点要素を明示できる書き出し方法を検討します。
その後、s と vn の有無を確認します。小さな試験範囲を使い、スムージング有効で法線あり、スムージング無効で法線あり、スムージング有効で法線なし、スムージング無効で法線なしという条件を比較すると、アップロード先がどの情報を利用しているかを判断しやすくなります。
法線ありのデータだけが滑らかになるなら、明示的な頂点法線が表示を左右している可能性があります。s の有効と無効だけで差が出るなら、読み込み先がスムージンググループから法線を生成していると考えられます。すべて同じ表示になるなら、読み込み時の法線再計算や表示設定を確認します。
次に、単色表示、輪郭線なし、斜め方向の光、近距離表示という条件で比較します。この状態で差が見えるなら、元の表示条件がスムージングの効果を隠していた可能性があります。
境界だけが角張る場合は、重複頂点、オブジェクト分割、材質境界、タイル分割を確認します。全体が角張る場合は、法線欠落、法線再計算、点要素のみのOBJなどを疑います。黒い面や欠落がある場合は、面の向きや参照番号の不整合を確認します。
修正後は、頂点座標や面数が意図せず変わっていないかを確認します。表示だけを修正するつもりでも、頂点統合やメッシュ修復によって形状が変わる場合があります。
最後に全体データへ適用し、地表の曲面だけでなく、法肩、法尻、段差、構造物際、タイル境界を確認します。一部が滑らかになっても、本来残すべき角が丸く見えていないかを確かめる必要があります。
再発を防ぐためのデータ管理
スムージングの問題は、書き出し条件が記録されていないと再発しやすくなります。同じOBJという拡張子でも、点要素、面付きメッシュ、法線あり、法線なし、複数オブジェクトなど、内容は大きく異なります。
原本、処理中データ、共有用データを分けて管理すると、問題が発生したときに原因を追いやすくなります。原本は取得時の座標と属性を保持し、上書きしません。処理中データは、メッシュ生成、不要面除去、法線計算、スムージング調整などの段階ごとに保存します。共有用はアップロード先の条件に合わせて作成します。
ファイル名には、対象範囲、処理日、版番号、点要素または面の区別、法線の有無などを含めます。同じ名前で設定違いを上書きすると、どのファイルをアップロードしたのか分からなくなります。
書き出し条件も記録してください。座標系、単位、原点移動の有無、頂点数、点要素数、面数、法線の有無、スムージンググループ、頂点統合、三角形化、テクスチャの有無などを残すと、再現しやすくなります。OBJ自体は一般的な線形単位を標準項目として持たないため、単位は別途記録して受け渡すことが重要です。([NVIDIA Docs][2])
小規模な標準確認データを用意する方法も有効です。曲面、平面、鋭い角、接合部を含む簡単なデータを作り、アップロード環境や書き出し方法を変更したときに使用します。標準データの表示が以前と変われば、現場データではなく読み込み環境や設定の変化を疑えます。
アップロード後の確認項目も統一します。面数が維持されているか、表裏が混在していないか、曲面が滑らかか、鋭角が残っているか、タイル境界に筋がないか、近距離と遠距離で表示が大きく変わらないかを確認します。
閲覧用と検査用で表示方法を分けることも大切です。共有時には滑らかな陰影が見やすくても、メッシュの状態を検査するときは輪郭線や面境界を表示したほうが問題を見つけやすくなります。用途に応じて表示を切り替え、滑らかに見えることだけを品質基準にしないようにします。
まとめ
点群OBJのスムージング設定が反映されないときは、最初にOBJ内の要素を確認します。OBJでは頂点座標 v、点要素 p、ポリゴン面 f が別に記述されるため、面数が0という情報だけで点群と断定することはできません。点要素だけのデータでは、面に対するスムージングを有効にしても見た目は変化しません。
面付きOBJであれば、s のスムージンググループが実際のファイルへ出力されているか、vn と f の参照関係が正しいかを確認します。法線が欠けていたり、面の境界で分断されていたりすると、設定を有効にしても曲面が角張って見えます。
OBJが正しくても、アップロード先で法線が再計算されたり、頂点が統合されたり、メッシュが簡略化されたりすれば、書き出し元とは異なる表示になります。頂点数や面数を比較し、読み込み処理による変化がないかを確認してください。
設定変更後に結果が変わらない場合は、同名ファイルの上書き、古い表示結果、輪郭線、光源、テクスチャ、表示倍率、重複面なども確認します。別名で再アップロードし、単色表示と一定の視点で比較すると原因を切り分けやすくなります。
また、陰影を滑らかにするスムージングと、頂点座標を動かす形状の平滑化は別の処理です。見た目を整えるために形状まで変更すると、断面や体積、境界位置へ影響する可能性があります。まずは法線と表示設定で解決できるかを確認し、形状編集が必要な場合は原本を残して処理内容を記録します。
点群の取得からメッシュ生成、OBJ書き出し、アップロード、共有までの条件を統一すれば、スムージングが反映されない問題を再発しにくくできます。現場で取得した座標付き点群を効率よく管理し、確認や共有へつなげる際には、LRTK Phoneを活用した点群取得とデータ運用の流れも合わせて確認してみてください。