点群OBJアップロード後に陰影がちらつく現象とは
点群から生成したメッシュをOBJとしてクラウドやブラウザ上のビューアへアップロードした後、モデルを回転させると表面の陰影が細かく点滅したり、縞模様のような明暗が移動したりすることがあります。静止中は正常に見えても、視点を少し動かしただけで黒い斑点が現れる、面の境界が震える、反射光だけが急に切り替わるといった症状もあります。
これらは、すべて同じ原因で起こるわけではありません。ほぼ同じ位置に二つの面が存在して描画順が競合する場合もあれば、法線の不整合によって光の計算だけが乱れている場合もあります。細かすぎる形状やテクスチャが画面上で十分に標本化されず、遠距離でちらついて見えることもあります。
代表的な確認対象は、重複面と近接面、反転した面、法線の参照不整合、極端に細長い三角形、微小ノイズを含む過密メッシュ、大きな座標値、材質の透明度、強い光沢、細かなテクスチャです。ただし、単にOBJのファイル容量が大きいだけで必ず陰影ちらつきが発生するとは限りません。容量や面数が過大な場合は、まず読み込み遅延や操作時のフレーム落ちとして現れることが多く、形状が交互に見える現象とは分けて考える必要があります。
点群からOBJを作成する工程では、点を三角形でつないで表面を構成します。元点群に二重化、位置合わせ誤差、飛び点、反射ノイズが含まれていると、それらが近接する二層の面や不自然な三角形として残る場合があります。異なる日時や位置から取得した点群を統合したときも、同じ対象がわずかにずれた状態で重なり、表示時の競合につながることがあります。
OBJは、頂点座標、テクスチャ座標、頂点法線、面の参照情報、グループ、材質参照などをテキストで記述できる形式です。形状が読み込めたとしても、法線や材質の参照、面の向き、付属ファイルの対応が適切であるとは限りません。そのため、アップロードが完了したことと、陰影表示まで正常であることは分けて確認します。
実務では、症状を具体的に記録すると原因を絞り込みやすくなります。面そのものが交互に表示されるのか、黒い斑点だけが動くのか、白い反射だけが移動するのか、モデルの一部だけで発生するのか、遠距離だけで発生するのかを確認します。
作成環境では正常に見え、アップロード後だけ不安定になる場合もあります。表示環境ごとに、法線の再生成、裏面の扱い、透明面の並べ替え、深度バッファの精度、カメラの近距離面と遠距離面、テクスチャ縮小処理などが異なるためです。最終的に利用するビューアと端末で検証することが重要です。
陰影のちらつきが起こる仕組み
三次元モデルを表示するとき、描画側は各面の位置と深度を計算し、どの面を手前に表示するかを判断します。通常は視点に近い面が残り、奥側の面が隠れます。しかし、同じ位置または非常に近い位置に二つの面があると、深度値の差が小さくなり、画素ごとの前後判定が安定しないことがあります。
この状態は一般に深度競合やZファイティングと呼ばれます。視点や投影条件が変わるたびに一方の面ともう一方の面が交互に採用されるため、縞、斑点、点滅として見えます。二つの面に異なる色、法線、テクスチャが設定されていると、症状がさらに目立ちます。
深度競合の発生しやすさは、面同士の距離だけで決まりません。カメラの近距離面と遠距離面の比、深度バッファの形式、投影方法、ビューアの実装、モデルの大きさなどにも左右されます。したがって、実距離で数ミリメートル離れているから安全、または一定距離以内なら必ずちらつく、と一律には断定できません。
法線は、表面の向きと光の計算に使われる方向情報です。隣接面の法線が反対方向を向いている、急に大きく変化している、意図しない法線が面から参照されている場合、形状は同じでも明暗が不連続になります。視点や光源が動くと、その不連続がちらつきのように見えることがあります。
点群由来のメッシュでは、平坦に見える地表にも微小な凹凸が残ることがあります。各三角形の向きが少しずつ異なると、面法線によるフラットシェーディングでは細かな明暗差が出ます。頂点法線を使った平滑化でも、異常な面やノイズが残っていれば、反射が細かく移動することがあります。
透明面は、不透明面より描画順の影響を受けやすい要素です。透明な面を正しく合成するには、一般に奥側から手前側へ並べるなどの処理が必要ですが、複雑に交差する面を常に正しい順序で描くことは容易ではありません。不要な透明度や重なった半透明面があると、視点移動時に色や明暗が変化する場合があります。
遠距離だけで細かな模様が揺れる場合は、深度競合とは限りません。細い三角形、細密なテクスチャ、規則的な格子模様などが画面上の画素より細かくなると、エイリアシングによるちらつきが発生することがあります。形状が交互に消えるのか、模様だけが変化するのかを見分けることが重要です。
修正法1 重複面と近接面を削除する
点群OBJアップロード後の陰影ちらつきで、最初に確認したいのが重複面です。重複面とは、同じ位置または極めて近い位置に二枚以上の面が存在する状態です。完全に一致する面だけでなく、わずかな間隔を空けて平行に重なった面も対象になります。
重複面は、複数の点群や部分モデルを統合したときに発生しやすくなります。同じ地表を含む二つのメッシュを一つのOBJへまとめると、共通範囲に二層の表面が残る場合があります。外観上は一枚に見えても、内部では別々の三角形群が同じ画素の深度を競っています。
同じ点群から複数回メッシュを生成し、既存面を削除せずに修正版を重ねた場合にも重複が生じます。穴埋めや局所修正のために既存面の上へ新しい面を作ると、修正範囲だけが二重になることがあります。この局所重複は、モデル全体を眺めるだけでは発見しにくいものです。
確認にはワイヤーフレーム表示が有効です。同じ場所に線が二重に見える、三角形の密度が局所的に不自然に高い、視点を動かすと線の見え方が入れ替わる場合は、重複面や近接面を疑います。
断面表示も役立ちます。モデルを垂直または水平に切り、断面から見ると、一枚であるはずの地表が二本の線として現れることがあります。点群段階の断面も併せて確認すると、OBJ化で生じた重複なのか、元点群に二層の点列があったのかを分けやすくなります。
完全に同一の頂点や面を検出できる場合は、重複要素を削除します。同じ座標が別の頂点番号で記録されていることもあるため、許容範囲を慎重に設定して重複頂点を統合し、その後に重複面を検査すると整理しやすくなります。
近接頂点の統合では許容距離に注意します。値を大きくしすぎると、本来別々に存在する段差、薄い板、縁石、壁の表裏などまで結合される可能性があります。モデルの単位がメートル、センチメートル、ミリメートルのどれであるかを確認し、必要な形状精度を損なわない範囲で処理します。
どちらの面を残すかも重要です。片方に正しいテクスチャ座標があり、もう片方にしか必要な形状がない場合、単純な一括削除では情報を失います。用途、更新時期、点群品質、法線、材質参照を比較して残す面を決めます。
完全には一致しない二層の面を整理する場合は、採用範囲を切り分け、境界を再接続します。二つの面を無理に一括結合すると、自己交差や極端に細長い三角形が新たに生じることがあります。境界頂点の並びを整え、必要に応じて局所的に再三角形化します。
同一位置に表向きと裏向きの面が重なっている場合もあります。片面表示では一方だけが見え、両面表示では競合が目立つことがあります。法線異常に見える場合でも、面そのものが重複していないかを併せて確認します。
削除後は穴、欠損、境界の開口が生じていないかを確認します。表側、裏側、斜め方向から観察し、必要な面まで削除されていないかを検査します。
元のOBJは上書きせず、重複面削除前と削除後を別ファイルとして保存します。同じビューア、同じ視点、同じカメラ設定で比較し、形状の点滅が大きく減れば、重複面による深度競合が主要因だった可能性が高いと判断できます。
修正法2 法線の向きと平滑化設定を整える
重複面が見つからない場合や、削除しても陰影が不安定な場合は、法線を確認します。法線に問題があっても頂点と面が有効なら形状自体は表示されるため、陰影だけが異常になることがあります。
三角形の幾何学的な面法線は、通常、頂点の並び順から計算されます。ただし、どちらの向きを表側として扱うか、裏面を非表示にするかは、座標系やビューアの設定にも左右されます。作成ソフトで表側に見えても、別の表示環境で反転面として扱われる場合があります。
地表モデルでは、意図して表示したい側へ法線がそろっているかを確認します。穴の周辺、急斜面、垂直面、点群密度の低い場所では、局所的に面の向きが反転することがあります。片面表示で一部が消え、両面表示で暗い斑点が出る場合は、面の向きと法線の両方を調べます。
確認時は、面法線または頂点法線を線として表示します。周囲と逆向きの法線、長さや方向が異常な法線、面から大きく外れた方向を向く法線があれば、対象範囲の面接続と参照関係を確認します。
法線を再計算する前に、メッシュの接続状態を調べます。見た目ではつながっていても、隣接面が別々の頂点を使用していると、頂点法線が共有されず、境界で陰影が分断されることがあります。滑らかにつなぐ必要がある場所では、許容距離を確認しながら頂点を統合します。
一方、建物の角、壁と床の境界、擁壁端部、段差、稜線などは、意図的に法線を分けたほうがよい場所です。角をまたいで法線を平均すると、本来直角の部分が丸く見えたり、光が不自然に回り込んだりします。
平滑化角度を設定できる場合は、地形と人工構造物で条件を分けます。緩やかな地表では隣接面の法線を連続させ、鋭い角や段差では法線を分離します。ただし、最適な角度はモデルの用途と形状によって異なるため、一つの数値をすべてのOBJへ固定するのは避けます。
点群由来の微小凹凸を法線の平均だけで隠すと、見た目は滑らかでも形状異常が残ります。ゼロ面積に近い面、自己交差面、細長い面、孤立面がある状態で法線を再計算すると、別の不自然な陰影が生じる場合があります。先に形状を整理し、その後に法線を再計算します。
OBJでは、頂点位置の一覧、テクスチャ座標の一覧、頂点法線の一覧が別々に記録され、面ごとにそれぞれの番号を参照できます。そのため、頂点数と法線数が一致しないこと自体は異常ではありません。問題になるのは、存在しない番号を参照している場合、面の各頂点に意図しない法線が割り当てられている場合、書き出し後に参照関係が崩れている場合です。
法線を含めずにOBJを書き出すと、アップロード先が面形状や平滑化グループから法線を再生成することがあります。作成時とアップロード後で陰影が異なる場合は、書き出された法線の有無と、表示側の再計算条件を確認します。
修正後は、単色かつ不透明な材質で表示します。局所的な黒い斑点が消え、モデルを回転させたときの明暗変化が連続的になれば、法線修正の効果が確認できます。テクスチャや強い光沢は、法線の確認が終わってから戻します。
修正法3 不安定な三角形と過密メッシュを修正する
点群から生成したOBJでは、極端に細長い三角形、面積がほぼゼロの三角形、微小な凹凸を追従した大量の三角形が作られることがあります。これらは法線計算を不安定にし、エイリアシングや細かな反射の移動を目立たせる要因になります。
一方、面数が多いことだけで、必ず形状のちらつきが発生するわけではありません。過大な面数は、読み込み時間、メモリ使用量、操作時のフレームレート低下として現れることがあります。視点移動がカクつく現象と、面が交互に表示される深度競合は区別して診断します。
特に注意したいのが、一辺が非常に長いのに面積が小さい三角形です。三つの頂点がほぼ一直線上に並ぶと、わずかな座標変化で面法線の方向が大きく変わります。周囲と異なる反射や黒い線として見える場合があります。
細長い三角形は、点群の欠損部を無理につないだ場所、密度が急変する境界、地面と壁面の切り替わり、植生で地表が隠れた場所、水面や反射面の周辺などに生じやすくなります。
まず、二つ以上の頂点が同じ位置にある面や、面積が設定した許容値を下回る面を検出します。削除で穴が生じる場合は、周囲の境界を使って再三角形化します。許容値はモデルの単位と必要精度に合わせて設定します。
次に、アスペクト比が極端な三角形や、周囲から大きく突出する辺を持つ面を確認します。自動削除だけでなく、欠損部の採用範囲、境界線、点群の品質まで見直します。単に面を消すと、必要な構造物の薄い部分まで失う可能性があります。
過密メッシュを軽量化する場合は、一律の割合だけで削減するのではなく、形状変化の少ない部分を優先します。平坦な地表や大きな壁面では面数を減らし、角部、段差、法面の変化点、構造物境界、計測に必要な特徴は残します。
軽量化率を大きくしすぎると、断面作成や出来形確認に必要な形状まで変わる可能性があります。処理前後で既知の距離、標高差、断面、体積計算の前提となる表面を比較し、用途上許容できる変化かを確認します。
点群自体にノイズが多い場合は、OBJ化後の修正だけでなく、点群段階へ戻る方法が有効です。孤立点、反射で飛び出した点、移動体、植生の揺れによる不安定な点を除去し、必要な範囲を選び直してメッシュを再生成します。
複数の点群を統合している場合は、断面上で同じ表面に複数の点列がないかを確認します。位置合わせ誤差が小さくても、両方の点列を使ってメッシュ化すると近接面や不規則な三角形が生じることがあります。
平滑化処理は、回数と強度を抑えて適用します。強い平滑化はノイズを減らす一方で、角、段差、縁石、壁際などを変形させます。ノイズ除去と形状保存を別の検査項目として扱います。
修正後は近距離と遠距離の両方から確認します。近距離で黒い線や斑点が残る場合は、異常面や法線の乱れを疑います。遠距離だけで模様が揺れる場合は、細密形状、テクスチャの縮小、アンチエイリアスやミップマップなど表示側の処理も確認します。
修正法4 座標原点とモデルのスケールを見直す
測量や地理空間データをOBJに変換すると、各頂点に大きな実座標が記録される場合があります。実位置を示す値としては正しくても、表示側が主に単精度浮動小数点で頂点変換を行う場合、座標の絶対値が大きいほど小さな差を保持しにくくなり、頂点や陰影が揺れて見えることがあります。
ただし、大きな座標値と深度競合は同じ問題ではありません。ほぼ同一位置の面が争うZファイティングは、面間距離、カメラの近距離面と遠距離面、深度バッファ、投影条件などの影響を受けます。大きな座標値は主に頂点変換や位置計算の精度低下を招く可能性があり、結果として症状を悪化させる場合がある、と整理すると安全です。
モデルの幅が数十メートルでも、頂点座標が大きな桁を持つと、表示実装によってはミリメートルやセンチメートルの差を安定して扱えないことがあります。作成環境で問題がなくても、ブラウザビューアへ変換された段階で精度が変わる場合があります。
試験方法として、形状、法線、材質を変えずにモデルをローカル原点付近へ移動します。モデル中心または既知の基準点を表示用原点とし、すべての頂点座標から共通のオフセット値を差し引きます。これで改善する場合は、座標の絶対値と表示実装の精度が関係していた可能性があります。
実座標との対応が必要な場合は、差し引いたX、Y、Zのオフセット値を必ず記録します。回転、軸入れ替え、上下反転を行った場合は、その変換条件も保存します。表示用OBJだけを残し、元座標へ戻す情報を失わないようにします。
原点移動と縮尺変更は区別します。原点移動ではすべての頂点へ同じ移動量を適用するため、点間距離や高低差は変わりません。縮尺変更では寸法そのものが変わります。ちらつき対策として無計画に倍率を変更すると、計測値が実寸と一致しなくなるおそれがあります。
OBJ形式自体は、実務で使用する単位を強制しません。変換工程でメートルとミリメートルが混在すると、想定より千倍大きい、または千分の一のモデルになることがあります。表示側が自動で画面へ収めると見た目だけでは気付きにくいため、既知の二点間距離と高さ差を測って確認します。
複数のOBJを同時に表示する場合は、座標系、軸方向、単位、原点の扱いを統一します。一方が実座標、もう一方がローカル座標であっても、表示側が明確な変換情報を使って配置できれば問題ありません。変換情報が不明なまま見た目だけで合わせることが危険です。
同じ対象を別工程で変換した場合は、わずかな倍率差、回転差、軸変換差が生じることがあります。基準点を一つだけ合わせると、離れた場所でずれが拡大するため、複数の基準点と既知距離で確認します。
広範囲モデルを区画分割する場合は、単にファイルを分けるだけでなく、区画ごとにローカル座標化し、表示側が保存したオフセットで正しく配置できる構成にします。同じ大きな座標値のまま複数ファイルへ分けるだけでは、精度改善につながらない場合があります。
原点移動後は、ちらつきだけでなく、基準点位置、寸法、標高差、軸方向、モデルの向きを確認します。表示が安定しても、座標対応が失われていれば測量や施工管理の用途には使えません。
LRTK Phoneで取得した測位情報や現地写真と点群モデルを組み合わせる場合も、実座標と表示用座標の関係を管理します。オフセット、単位、軸方向、使用した座標系を処理履歴に残すことで、表示の安定性と現地位置との対応を両立しやすくなります。
修正法5 材質・透明度・テクスチャ設定を整理する
形状、法線、座標に大きな問題がなくても、材質設定によって陰影が不安定に見えることがあります。OBJは形状を記述し、表面色、光沢、透明度、テクスチャなどは一般に付属するMTLファイルから参照します。
最初に確認したいのが透明度です。本来不透明でよい地表や建物面に透明度が設定されていると、奥側の面との合成や描画順の影響を受けやすくなります。複雑に重なる半透明面では、視点方向によって色や明暗が変化する場合があります。
透明表現が不要なら、試験用として完全に不透明な単色材質へ置き換えます。これで症状が消えるなら、形状より材質または透明面の並べ替えが関係している可能性があります。
MTLの標準的なd値は、1.0が完全不透明、0.0が完全透明を表します。一方、Trという逆向きの透明度表現を使う実装もあり、読み込みソフトによって対応状況や優先順位が異なることがあります。dとTrが同時に存在する、独自拡張が混在する、不要な透明度が残る場合は、アップロード先の仕様に合わせて一つの表現へ整理します。
光沢や鏡面反射が強い場合も、ちらつきのように見えることがあります。視点を動かすと白いハイライトが細かな三角形の間を急速に移動するためです。面そのものは消えず、反射部分だけが動く場合は、深度競合より法線と光沢設定を疑います。
原因切り分けでは、鏡面反射を弱め、拡散反射を中心とした単純な材質にします。陰影が安定した後、必要な光沢を段階的に戻します。
テクスチャ画像に細かい規則模様がある場合、遠距離でエイリアシングが起こることがあります。舗装、屋根、格子、草地などの模様が画面上の画素より細かくなると、視点や縮尺の変化に応じて模様が点滅して見えます。
近距離では正常で、遠ざかったときだけテクスチャ部分が揺れる場合は、適切な縮小フィルタ、ミップマップ、アンチエイリアスが表示側で有効かを確認します。アップロード先の推奨解像度に合わせて画像を調整する方法もあります。
テクスチャ座標も確認します。UVが意図せず重なっている、極端に引き伸ばされている、画像の端をまたいでいる、同じ面へ異なる材質が重複して割り当てられている場合、視点移動時に不自然な色変化が現れることがあります。
材質ファイルとテクスチャ画像の参照先も整理します。作成端末だけで有効な絶対パスや、アップロード先が解釈できないパスが残ると、画像が読み込まれず既定材質へ置き換わることがあります。
OBJ、MTL、テクスチャ画像は、アップロード先の仕様に従って一つの管理単位にまとめます。相対パス、ファイル名の大文字と小文字、空白、記号、拡張子を確認します。システムによっては同一フォルダや圧縮ファイル内の構成を求めるため、利用先の仕様を優先します。
両面表示にも注意します。厚みのない地表モデルでは便利ですが、裏向きの面や重複面まで描画されるため、法線異常や近接面があると症状が強く見えることがあります。
片面表示でちらつきが消えた場合でも、材質設定だけで解決したと判断せず、反転面と重複面を再確認します。両面表示は必要なモデルに限定し、形状不良を隠す目的では使用しません。
症状から原因を切り分ける実務手順
点群OBJアップロード後にちらつきが発生したら、複数の修正を同時に行わず、一つずつ条件を変えて原因を絞り込みます。
最初に、OBJを書き出す前の作成環境でも同じ症状が出るかを確認します。作成環境でも形状が交互に見えるなら、重複面、近接面、自己交差などデータ側の問題を優先します。
作成環境では正常で、アップロード後だけ発生する場合は、書き出された法線と材質、座標範囲、ビューアの裏面処理、カメラ設定、変換後データの状態を重点的に確認します。
次に、材質を単色かつ完全不透明へ変更します。テクスチャ、透明度、強い光沢を使わない状態で表示し、症状が残るかを確認します。
単色表示で症状が消えるなら、材質、透明面、テクスチャ縮小の影響が考えられます。単色でも面が交互に現れる場合は、重複面や深度競合を疑います。単色でも明暗だけが不連続なら、法線と面形状を確認します。
続いてワイヤーフレーム表示へ切り替えます。線が二重になっている場所、局所的に極端に密集している場所、欠損部を横切る長い三角形、遠方へ伸びた面がないかを確認します。
片面表示と両面表示の比較も有効です。片面表示で一部の面が消える場合は、面の向きが統一されていない可能性があります。両面表示で黒い模様やちらつきが増える場合は、反転面または重複面を疑います。
問題範囲だけを切り出してアップロードします。小範囲でも同じ場所がちらつくなら、その範囲の形状、法線、材質に原因がある可能性が高くなります。切り出し版は正常で、全体版だけ不安定なら、座標精度、カメラの深度範囲、変換負荷、表示側の分割処理などを確認します。
形状、法線、材質を変えず、座標だけをローカル原点へ移動した試験版も作ります。改善した場合は、大きな座標値と表示側の計算精度が関係していた可能性があります。ただし、これだけで重複面が解消されたわけではないため、重複検査は別に行います。
面数を段階的に減らしたモデルも比較します。軽量化で操作のカクつきだけが改善した場合は、描画負荷が主因です。遠距離の細かなちらつきまで改善した場合は、微小面やエイリアシングの影響も考えられます。
試験版のファイル名には、重複削除、法線再計算、座標移動、材質簡略化、軽量化などの処理内容と版番号を記録します。同じファイルへ複数処理を重ねると、どの変更が有効だったか判断しにくくなります。
同じ視点、同じ倍率、同じ照明、同じ表示モードで比較します。比較条件が変わると、症状が弱く見えただけなのか、実際に改善したのかを判断できません。
OBJを書き出す前に確認したい項目
OBJの書き出し前には、モデルが表示できるかだけでなく、頂点、面、法線、テクスチャ座標、材質、座標、単位を総合的に確認します。
まず、孤立した頂点や面がないかを確認します。点群の外れ値から生成された小さな面が、本体から離れた場所に存在することがあります。モデル全体を大きく引いて表示し、遠方へ飛び出した要素を探します。
次に、面の参照番号を確認します。OBJでは、面が頂点、テクスチャ座標、法線の各一覧を番号で参照します。存在しない番号、範囲外の番号、意図しない負の相対番号、連結時に更新されていない番号があると、読み込み失敗や不自然な面の原因になります。
複数のOBJをテキストとして単純に連結すると、後半の面参照が前半の頂点を指すことがあります。統合する場合は、追加した頂点、テクスチャ座標、法線の数に合わせて参照番号を正しく更新するか、OBJを理解するソフトで統合します。
頂点数、テクスチャ座標数、法線数は一致している必要はありません。各面のf行で指定された参照先が有効で、意図した対応になっていることが重要です。
法線を含める場合は、各面の頂点へ適切な法線が割り当てられているかを確認します。法線を含めない場合は、アップロード先がどの条件で再計算するかを確認します。
テクスチャ座標を使う場合は、UVの重なり、反転、極端な引き伸ばし、画像外参照が意図したものかを確認します。複数の材質を使う場合は、usemtlの切り替え位置とMTL側の材質名を照合します。
不要な材質が大量に残っている場合は整理します。材質数が多いこと自体が必ずちらつきを起こすわけではありませんが、参照ミスの発見やアップロード後の確認が難しくなります。
テクスチャ画像は、アップロード先が対応する形式、解像度、容量に合わせます。必要以上に巨大な画像を多数使うと、読み込みやメモリ使用量が増え、操作の安定性を損なう場合があります。
座標と単位は、既知寸法を使って確認します。モデル全長、代表構造物の幅、基準点間距離、高さ差を測り、元データと一致するかを確認します。
モデルの軸方向も確認します。上下軸の違い、左右反転、軸入れ替えがあると、表示側の自動変換後に意図しない向きになることがあります。
書き出したOBJは、元の編集プロジェクトとは別の空の環境へ読み込み直します。再読込によって、書き出しファイルだけで形状、法線、材質、テクスチャ、単位が再現されるかを確認できます。
元の編集画面では、内部データやキャッシュによって正常に見えていても、OBJと付属ファイルへ必要情報が書き出されていない場合があります。再読込はアップロード前の重要な検査です。
修正版を再アップロードするときの注意点
修正済みOBJを再アップロードしても見た目が変わらない場合、新しいデータが表示対象になっているかを確認します。サービスによっては、ブラウザキャッシュ、配信キャッシュ、同名ファイルの版管理、変換済みアセットの再利用などにより、旧表示が一時的に残ることがあります。
検証時は、利用先の仕様が許す範囲でファイル名または版番号を変更し、新しいデータとして登録します。同名上書きしかできない場合は、更新日時、処理状態、公開版の切り替え、キャッシュ更新方法を確認します。
修正前と修正後を並べて表示できる場合は、同じ視点、倍率、照明、材質条件で比較します。アップロード日時、元ファイルサイズ、頂点数、面数など、更新を確認できる情報も記録します。
アップロード先が内部で別形式へ変換する場合、変換後の頂点数や面数が元OBJと一致しないことがあります。そのため、数値比較はサービスが同じ指標を表示する場合に限って使い、最終的には版番号と表示内容を組み合わせて確認します。
試験用モデルに一時的な識別形状を追加する方法もあります。新しいファイルだけに小さな目印を付け、表示更新を確認した後、正式版では削除します。測定対象や成果物へ影響しない位置を選びます。
アップロード完了後も、サーバー側の変換や最適化が継続するサービスがあります。簡易表示と処理完了後の表示が異なる場合があるため、処理状態を確認してから評価します。
通信中断や容量制限が疑われる場合は、アップロード結果、エラー表示、処理ログ、元ファイルのハッシュ値など、利用先で確認可能な情報を使います。単に画面へモデルが出たことだけで、すべての付属ファイルが正しく処理されたとは限りません。
修正版でも同じ場所がちらつく場合は、元点群まで戻って確認します。OBJだけを繰り返し加工しても、元点群が二重化していれば、再メッシュ時に近接面が再び生成されます。
点群を断面表示し、同じ地表に複数の点列が存在しないかを確認します。複数回の計測結果を統合している場合は、位置合わせ結果、採用範囲、重複部の処理方針を見直します。
特定の表示環境だけで症状が出る場合は、別の端末やブラウザでも比較します。ただし、別環境で見えなくなっただけでデータが完全に正常とは断定できません。深度精度、裏面処理、材質解釈、テクスチャ縮小などの実装差により、問題が目立たない可能性があります。
ちらつきを再発させない点群OBJの管理方法
陰影のちらつきを毎回個別に修正するより、点群取得からOBJアップロードまでの工程を標準化するほうが効率的です。
元点群、ノイズ除去済み点群、位置合わせ済み点群、メッシュ化データ、修正済みメッシュ、軽量化データ、アップロード用OBJを分けて保存します。どの工程で問題が混入したかを追跡できる構成にします。
元点群は上書きせず、外れ値除去、位置合わせ、間引き、メッシュ化、穴埋め、法線再計算などの処理ごとに版を分けます。使用した設定値と処理ソフトのバージョンも記録すると再現しやすくなります。
ファイル名には、対象場所、取得日、処理日、座標系、単位、版番号、主要処理を含めます。同じ名称で繰り返し上書きすると、新旧ファイルの混同や旧表示の見落としにつながります。
点群を統合するときは、重複範囲と採用基準を決めます。同じ地表を複数データから採用する場合、基準とする点群、除外する範囲、接続境界を明確にします。単純にすべての点を重ねると、わずかな位置差が二層の表面につながることがあります。
メッシュ生成時には用途に合った密度を設定します。外観確認、距離計測、断面作成、施工記録、体積算出など、目的によって必要な解像度は異なります。必要以上の密度は容量と処理負荷を増やし、微小ノイズを形状として残しやすくします。
検査項目を固定します。重複頂点、重複面、反転面、自己交差面、孤立面、開いた境界、極小面、細長い面、異常な法線、無効な参照番号、不要な透明度を確認します。
アップロード後は、正面だけでなく、斜め、真横、裏側からも確認します。拡大と縮小、静止と回転、単色とテクスチャ表示、片面と両面表示を比較します。
確認担当者によって結果が変わらないよう、基準視点、操作速度、表示倍率、照明条件を決めます。特定箇所を一定角度で回転させるなど、再現可能な手順にすると異常を比較しやすくなります。
問題記録は「ちらつく」だけで終わらせず、黒い斑点、面の交互表示、縞模様、白い反射の移動、遠距離だけの点滅、操作のカクつきなどに分類します。形状の競合と描画負荷を混同しないことが重要です。
発生場所、視点角度、表示倍率、使用ファイル、頂点数、面数、材質条件、座標範囲、修正履歴を残します。同じ問題が再発した際に、過去の有効な修正を適用しやすくなります。
座標変換を行う場合は、オフセット値、回転角、軸方向、単位、基準点、座標系を一つの管理情報として保存します。表示用OBJだけを受け渡すと、後から実座標へ戻せなくなる可能性があります。
LRTK Phoneを活用して現地の位置情報や点群を扱う場合も、取得時の座標情報と表示用OBJの変換条件を一貫して管理します。現地計測、点群処理、OBJ化、アップロード後確認を一つのデータフローとして整理することで、表示不具合と位置ずれの両方を抑えやすくなります。
まとめ
点群OBJアップロード後に陰影がちらつく場合、主な確認対象は、重複面や近接面、反転面、法線の不整合、細長い三角形、微小ノイズを含むメッシュ、大きな座標値、透明度、光沢、細かなテクスチャです。
最初に単色かつ不透明な表示へ変更し、材質とテクスチャの影響を切り分けます。その後、ワイヤーフレームと断面表示で重複面を確認し、面の向き、法線、三角形品質、座標原点の順に検査すると原因を絞り込みやすくなります。
修正法の一つ目は、同じ位置に存在する重複面と近接面を整理することです。二つ目は、反転面と法線参照を修正し、地形と構造物に適した平滑化条件を設定することです。
三つ目は、ゼロ面積に近い面、極端に細長い三角形、用途に対して過密な部分を整理することです。ただし、面数が多いことによる操作のカクつきと、面が交互に表示される深度競合は分けて判断します。
四つ目は、表示実装の精度が疑われる場合に、実座標を管理したままローカル原点へ移動して比較することです。原点移動と縮尺変更を混同せず、単位、軸方向、オフセットを記録します。
五つ目は、不要な透明度、強すぎる光沢、過度に細かなテクスチャを整理することです。MTLのdとTrの扱い、付属ファイルの参照、アップロード先の材質対応を確認します。
修正は一度にすべて行わず、重複削除版、法線再計算版、軽量化版、座標移動版、材質簡略化版のように、一つの条件だけを変更した試験版を作ります。どの処理で症状が変わったかを記録すると、原因と対策の関係を判断できます。
ちらつきが消えた後も、寸法、標高差、基準点位置、段差、稜線、テクスチャ対応が維持されているかを確認します。表示を滑らかにするために形状を変えすぎると、実務で必要な精度が失われる可能性があります。
点群OBJを安定して運用するには、元点群の取得品質、位置合わせ、メッシュ生成、法線、座標、材質、アップロード後の確認までを一連の工程として管理することが重要です。LRTK Phoneを含む現地計測データと連携する場合も、座標変換条件と版管理を明確にし、再現可能な手順で確認します。