3D図面をAR表示したとき、TINの一部が抜け落ちたように見えたり、見る方向によって地表面が突然消えたりすることがあります。元の3Dデータでは連続した地形として表示されているのに、現場でAR表示すると三角形状の穴が現れる場合、三角形の頂点順序、座標変換、形状品質、数値精度、描画設定などが影響している可能性があります。
特に、測量座標や公共座標などの絶対座標を利用して3D図面をAR表示する場合は、一般的なモデル表示より確認項目が増えます。座標軸の役割や正方向が異なるデータを組み合わせると、変換処理に鏡像反転が入り、三角形の表裏が反転することがあります。また、大きな座標値を単精度浮動小数点の描画処理へそのまま渡す構成では、原点から離れるほど位置表現の刻みが粗くなり、境界の隙間、揺れ、重複面のちらつきが目立つ場合があります。
TIN面の欠落を直すには、法線を再計算するだけでは不十分です。標準的な背面カリングは、保存された頂点法線ではなく、投影後の三角形の頂点順序を基準に表裏を判定します。法線は主に照明やシェーダー表現へ影響するため、頂点順序、変換行列、絶対座標から表示座標への変換、AR側のカリングと深度処理を分けて確認する必要があります。三角形の頂点順序と変換後の行列式が表裏に関係することは、OpenGLやglTFの仕様でも整理されています。([Khronos Registry][1])
本記事では、「3D図面 AR 表示 絶対座標」で情報を探している実務担当者に向けて、TIN面の裏返りによる欠落を直す5つの方法を解説します。
TIN面がAR表示で欠落する仕組み
TINは、不規則に配置された点を三角形で結び、地形、造成面、掘削面、施工面などの連続形状を表現するデータ構造です。各三角形は3つの頂点を持ち、その頂点をどの順番で参照するかによって、描画上の表側と裏側が決まります。
たとえば、ある描画環境が反時計回りの頂点順序を表面として扱う設定であれば、画面上で時計回りとなる三角形は裏面として判定されます。背面カリングが有効な場合、裏面と判定された三角形は描画されません。その結果、TINの一部が三角形状に欠落したように見えます。どちらの順序を表面とするかは描画APIや設定によって異なるため、「常に反時計回りが正しい」と固定せず、読込先の仕様を確認する必要があります。
背面カリングは、カメラから見えない面の描画を省略し、描画負荷を抑えるために利用されます。閉じた立体では有効ですが、地表面のように厚みを持たないTINでは、面の向きが混在していると穴の原因になります。元の3D図面で正常に見えていても、作成側で両面描画が有効になっていれば、表裏の混在を見逃すことがあります。そのデータを片面描画のAR環境へ読み込むと、初めて問題が表面化します。
ここで、頂点法線と面の表裏を区別することが重要です。一般的なラスタライズ処理の背面カリングは頂点の並び順で判定され、保存済みの頂点法線は通常、照明、陰影、反射、法線方向を利用する独自シェーダーに使われます。したがって、法線だけを反転しても、三角形のインデックス順序が変わらなければ、標準的なカリング結果は変わりません。一方、頂点順序を直した後に法線を更新しないと、面は表示されても陰影が反対向きになることがあります。
三角形の頂点順序が元データで正しくても、座標軸の交換や軸方向の反転によって、変換後の向きが反転することがあります。座標変換の線形成分が向きを反転させる場合、変換後の三角形は元と逆の巻き順になります。glTF 2.0仕様でも、ノードのグローバル変換の行列式の符号によって三角形の巻き順が変わることが明記されています。([Khronos Registry][1])
また、AR表示で見える欠落がすべて面の裏返りによるものとは限りません。非常に細い三角形、面積がほぼゼロの三角形、重複面、接続されていない境界、深度値の競合、カメラのクリッピング、透明描画の順序、実景との遮蔽処理も似た症状を発生させます。そのため、両面表示で穴が消えるかどうかを最初の分岐条件にし、形状、座標、描画の順に切り分けることが重要です。
方法1 三角形の頂点順序と法線方向を統一する
最初に確認したいのは、TINを構成する各三角形の頂点順序です。三角形の頂点をA、B、Cとした場合、辺ベクトルB-AとC-Aの外積を求めることで、頂点順序に対応した面法線を計算できます。BとCを入れ替えると外積の符号が反転し、三角形の向きも逆になります。
地表面を表現する2.5次元のTINでは、多くの場合、上側を表面としてそろえる運用が分かりやすくなります。法線と上方向ベクトルの内積が正なら上向き、負なら下向きと判定できます。ただし、法線がほぼ水平になる急斜面、垂直面、オーバーハング、法面を含む構造物では、標高方向成分だけで一律に判定すると誤反転が起こります。対象が単純な地表面か、閉じた構造物か、複数方向を向く施工面かを先に整理する必要があります。
単純な地表TINで下向き面を検出した場合は、2番目と3番目の頂点インデックスを入れ替えることで向きを反転できます。ただし、個々の面を独立して上向きへ直す方法だけでは、急斜面や複雑な形状で整合しない場合があります。より確実なのは、隣接関係を利用して向きを伝播させる方法です。
一貫して向き付けられた三角形メッシュでは、共有辺を持つ隣接三角形は、その共有辺を互いに逆方向へたどります。基準となる三角形を一つ選び、隣接面の共有辺方向を調べ、同じ方向へたどっている場合は隣接面の頂点順序を反転します。この処理を連結領域へ広げることで、面の向きをそろえられます。
複数の独立したTIN領域が存在する場合は、連結成分ごとに基準面を選びます。現況地形と計画面、掘削前地形と掘削後地形などが別の面集合として保存されている場合、一方の向きを修正しても、もう一方には反映されません。連結成分を分け、用途に合った表側を決めます。
頂点順序を修正した後は、面法線と頂点法線も再計算します。ただし、これは背面カリングを直すためではなく、照明や材質表示を修正後の形状に合わせるためです。UnityのMesh.RecalculateNormalsも、三角形と頂点から法線を再計算する機能として説明されています。([Unity Documentation][2])
頂点法線は、同じ頂点を共有する複数面の法線から計算されることがあります。法肩、法尻、構造物の稜線など、角度変化を明確に見せたい場所まで平滑化すると、境界が丸く見えます。施工境界をARで確認する用途では、一定以上の角度差がある面の頂点を分離する、スムージング範囲を制限する、面法線を使うなどの方法を検討します。
修正後は、片面表示と両面表示の両方で確認します。想定する表側から全面が表示され、裏側から規則的に非表示になるのであれば、頂点順序はおおむね統一されています。法線ベクトルを可視化できる場合は、照明用法線も局所的に反転していないか確認します。
元データだけでなく、中間形式とAR読込後のインデックス順序も確認します。形式変換、座標系変換、メッシュ結合、面削減の工程でインデックスが再構成されることがあります。元データ、中間データ、最終データから同じ位置の三角形を抽出し、頂点座標とインデックス順序を比較すると、反転が起きた工程を切り分けられます。
方法2 座標軸と変換行列による反転を修正する
元データの頂点順序が統一されているにもかかわらず、AR表示でTIN全体が一斉に裏返る場合は、座標変換を確認します。特に、座標軸の交換、軸方向の反転、負の拡大率、親階層を含む鏡像変換が原因になりやすい項目です。
測量座標と3D表示座標では、軸の役割、正方向、右手系と左手系の扱いが一致しているとは限りません。入力データの第1成分が東西、第2成分が南北、第3成分が標高であっても、表示環境では左右、高さ、奥行きとして別の順序へ割り当てる場合があります。
軸交換は、交換回数の偶奇によって向きが変わります。一回の交換に相当する奇置換は座標系の向きを反転させ、二回に相当する偶置換は向きを維持します。また、一つの軸だけへ負の倍率を掛ける変換は鏡像反転になります。二つの軸を同時に反転した場合は、線形成分全体の向きが維持されることがあります。
変換行列を使用している場合は、平行移動を除いた3×3の線形成分の行列式を確認します。行列式が負であれば、その変換は向きを反転させます。この場合は、変換後に三角形の頂点順序を反転するか、目的の軸対応を保ちながら向きを反転しない変換へ組み直します。行列式が正であっても、軸の割り当てや方位が正しいとは限らないため、符号確認だけで検証を終えないことが重要です。
階層構造を持つ3Dデータでは、親と子の変換が合成されます。子のTINに負の拡大率がなくても、親階層に負の拡大率が含まれていれば、最終的なグローバル変換は反転する可能性があります。書き出し前に階層変換を頂点へ適用し、最終的な3×3行列の行列式と代表面の向きを確認します。
座標変換を修正するときは、見た目だけで判断しないことが重要です。TINが正しい向きに見えても、絶対座標との対応が崩れている場合があります。水平位置を確認するには、少なくとも一直線上にない3点を使い、東西方向と南北方向の回転、尺度、鏡像反転を確認します。標高方向まで確認するには、高さが異なる既知点を含めます。3次元変換全体を厳密に検証する場合は、可能であれば同一平面上にない4点以上を使うと、軸の取り違えや立体的な反転を発見しやすくなります。
測量座標からAR表示座標へ変換する処理は、原点移動、軸交換、回転、尺度、AR空間への配置に分けて管理すると原因を追いやすくなります。一つの行列へまとめて実行する場合でも、各段階の設定値と中間結果を記録できるようにします。
単位変換にも注意します。メートル、センチメートル、ミリメートルが混在していないかを確認し、意図しない非一様拡大縮小が入らないようにします。水平軸と標高軸で異なる倍率を使う場合は、設計上の縦倍率表現なのか、単位の誤りなのかを区別します。縦倍率を変えれば形状と法線は変化するため、計測用モデルと見やすさ重視の表示用モデルを混同しないことが重要です。
変換後は法線も更新します。回転だけなら法線へ同じ回転を適用できますが、非一様拡大縮小を含む場合は、位置に使う行列をそのまま法線へ適用すると、法線が面へ垂直でなくなることがあります。法線には線形成分の逆転置行列を使うか、変換後の頂点から再計算します。実務では、最終頂点から法線を再生成する方が処理内容を確認しやすい場合があります。
方法3 重複頂点と不正な三角形を修復する
TIN面の欠落が局所的で、特定箇所だけ三角形状に抜けている場合は、面の向きだけでなく形状品質を確認します。重複頂点、重複面、ゼロ面積に近い三角形、極端に細長い三角形、自己交差、境界の不一致は、AR表示で穴やちらつきとして現れることがあります。
まず、同じ位置または許容範囲内に複数の頂点が登録されていないかを確認します。見た目では一つの頂点でも、内部では別の頂点番号になっていると、三角形同士が接続されず、隣接判定や平滑法線の計算が分断されます。ただし、稜線を鋭く表示するために意図的に頂点を分けている場合もあるため、座標が近いという理由だけで無条件に統合しないことが重要です。
近接頂点を統合するときは、許容距離をデータの縮尺、測量精度、点間隔、保持すべき最小形状に合わせます。許容距離が小さすぎると重複を除去できず、大きすぎると法肩、構造物境界、細い溝などまでつぶしてしまいます。判定は、可能であれば高精度で保持したローカル座標上で行います。
次に、同じ3頂点で構成される重複三角形を確認します。同方向の面が二重に存在すると、同じ深度付近で競合してちらつくことがあります。逆向きの重複面が存在すると、両面表示では一見正常でも、照明や選択処理で不整合が残ります。用途のない重複面は削除し、表裏両面が必要なモデルでは、単純な逆向き複製ではなく、材質や両面シェーダーの仕様を含めて管理します。
面積がほぼゼロの三角形も修復対象です。3頂点がほぼ一直線上に並ぶと外積が極端に小さくなり、安定した面法線を得られません。固定の面積しきい値だけでは、広域地形と小型構造物を同じ基準で評価できないため、代表的な辺長、点間隔、モデルの単位を考慮して判定します。
TINの境界付近では、辺を共有していない微小な隙間が発生することがあります。通常の3Dビューでは背景色に紛れて目立たなくても、ARでは実景が隙間から見えるため、欠落が強調されます。境界上の頂点列が一致しているか、同じ位置を別精度で保持していないか、片側だけに中間点が追加されていないかを確認します。
複数のTINを接合する場合は、接合境界を共通の頂点列として再構成します。現況面と計画面を別工程で作成したデータでは、境界の頂点数や並びが異なることがあります。対応しない点列を無理に接続すると、細長い三角形、折り返し面、自己交差が生じやすくなります。
異常な長辺を持つ三角形も確認します。点群や測量点からTINを作成すると、欠測領域や除外範囲をまたいで遠く離れた点が結ばれる場合があります。最大辺長や最大面積を基準に候補を抽出し、現地に存在しない橋渡し面でないかを確認します。必要であれば境界線やブレークラインを設定し、三角形分割をやり直します。
修復後は、頂点数、三角形数、境界辺数、連結成分数、削除した不正面数を記録します。修復前後で要素数が大きく変化した場合は、統合許容距離や削除条件が強すぎないかを確認します。見た目だけでなく、数値的な差分を残すことで、過剰な単純化や必要面の削除を防げます。
AR表示向けに軽量化する場合は、形状修復と向きの統一を先に実施します。不正な三角形を含んだまま面数削減を行うと、欠落が周囲へ広がったり、境界線が崩れたりすることがあります。形状修復、向きの統一、座標変換、法線更新、軽量化という順序を固定すると、問題が起きた工程を追跡しやすくなります。
方法4 絶対座標をローカル座標へ変換して精度を確保する
絶対座標を利用した3D図面のAR表示では、座標値の大きさと数値形式の組み合わせによって描画精度が低下することがあります。測量座標や地心座標では座標値が大きくなる一方、TINの隣接頂点間の差は数センチメートルから数メートルです。単精度浮動小数点では、値が大きくなるほど隣り合う表現可能値の間隔も大きくなるため、原点から遠い位置で細かな差分を保持しにくくなります。Unityも、原点から離れた大きなワールド座標では位置精度が低下し、近接面のZファイティングが起こり得ると説明しています。([Unity Documentation][3])
この問題を抑える基本的な方法は、TINの絶対座標から現場近くの基準座標を差し引き、原点付近のローカル座標へ変換して描画することです。現場中心、既知点、施工基準点、カメラ付近の基準位置などをローカル原点として選び、各頂点は基準座標からの相対差として保持します。
絶対座標を失う必要はありません。元の絶対座標または地理座標は倍精度など十分な精度で管理し、描画用のローカル座標と、その基準原点を別に保持します。必要なときは基準座標を加算して元の絶対座標へ戻せます。データ管理上の座標とGPUへ渡す描画座標を分離する考え方が重要です。
基準座標は対象TINの近くに設定します。現場から遠く離れた位置を原点にすると、ローカル化の効果が小さくなります。複数工区を一つのデータとして扱う場合は、工区またはタイルごとにローカル原点を持たせる方法があります。ただし、各原点の絶対座標、座標参照系、標高基準、単位を一貫して管理しなければ、工区間の位置関係が崩れます。
広域データでは、カメラや注目地点に合わせて原点を移動するフローティングオリジンやカメラ相対描画も有効です。Cesium for Unityでは、カメラ付近の座標値を小さく保って頂点精度を維持するために原点シフトを利用する仕組みが説明されています。([Cesium][4])
AR空間への配置では、TINのローカル原点、絶対座標系の基準点、ARセッション内の原点を区別します。絶対座標から基準値を差し引いた後、別工程で同じ値を再度差し引く二重変換が起きると、TIN全体が大きくずれます。反対に、基準値を差し引かずに大きな絶対座標のまま単精度のシーン座標へ格納すると、精度問題が残ります。
変換情報には、座標参照系、軸順、単位、基準座標、標高基準、回転、尺度、適用段階を記録します。「原点補正済み」という記載だけでは、別の担当者が再変換した際に二重補正や補正漏れが起こりやすくなります。
標高方向も同様です。水平座標だけをローカル化し、標高は絶対値のまま残す構成も可能ですが、描画環境と標高値の大きさによっては、基準標高を差し引いた方が扱いやすくなります。水平と標高で別の基準を使う場合は、復元式を明確にします。楕円体高、標高、任意基準高などの高さ種別を混同しないことも重要です。
ローカル化の前後では、辺長、三角形面積、隣接関係が維持されているか確認します。平行移動だけであれば、形状と距離は変わりません。変換前後で辺長や面積が変化している場合は、単位変換、丸め、軸ごとの異なる倍率などが混入している可能性があります。
座標値を文字列から数値へ変換する工程にも注意します。読み込み直後に小数桁を過度に丸めると、細かな起伏や境界が失われます。元の座標は十分な精度で読み込み、高精度の計算環境で基準座標を差し引いた後、描画に必要な数値形式へ変換します。
TINを複数タイルへ分割する場合は、タイル境界の頂点を共通データから生成します。同じ絶対位置でも、タイルごとに異なる丸めや変換順序を使うと、復元後に微小な隙間が生じます。境界座標、基準原点、変換式、丸め規則を統一します。
絶対座標ARでは、現地との位置合わせ精度と描画内部の数値精度を分けて評価します。測位結果が高精度でも、描画座標の扱いが不適切なら揺れや隙間が発生します。反対に、描画が滑らかでも、座標参照系、標高基準、基準点が間違っていれば現地には合いません。位置合わせ誤差と描画アーティファクトを別の検査項目として管理することが重要です。
方法5 AR描画のカリングと深度設定を見直す
TIN形状、頂点順序、座標変換に問題が見つからない場合は、AR側の描画設定を確認します。特に、背面カリング、深度判定、クリッピング範囲、透明表示、実景との遮蔽処理、材質の独自条件が欠落の見え方に影響します。
最初に、背面カリングを一時的に無効にし、両面表示を試します。両面表示で欠落が消え、片面表示で再発する場合は、三角形の頂点順序または向きを反転する座標変換を優先して疑います。両面表示でも穴が残る場合は、面そのものがない、透明になっている、クリップされている、深度や遮蔽で隠れている可能性があります。
両面表示は原因切り分けに有効ですが、恒久的な修正として頼り切るのは慎重に判断します。面の向きが混在したままでも見た目の穴は隠せますが、照明、断面表示、法線依存の色分け、選択判定、衝突判定などで不整合が残ることがあります。描画負荷も片面表示より増えるため、基本は元データまたは変換処理を修正し、両面表示は診断用または仕様上必要な場面に限定します。
次に、深度判定を確認します。同じ位置または非常に近い位置に複数の面があると、どちらを手前と判定するかが不安定になり、Zファイティングとしてちらつきます。現況面と計画面を重ねる場合や、TINの上へ色分け用の面を重ねる場合に起こりやすい現象です。
重なった面を表示する必要がある場合は、実座標を恒久的に変更するのではなく、描画専用の深度バイアス、材質の描画順、表示モードの切替などを検討します。Unityの深度バイアスも、同じ深度にある形状のZファイティングを避けるための仕組みとして説明されています。([Unity Documentation][5])
カメラの近クリップ面と遠クリップ面も確認します。カメラに近すぎる面や描画範囲より遠い面はクリップされます。カメラへ近づいた部分だけ切り取られる場合は近クリップ面、一定距離を超えた部分だけ消える場合は遠クリップ面が関係している可能性があります。
クリップ範囲は、必要以上に広げないことが基本です。深度精度への影響はレンダリングAPI、深度バッファ形式、Reversed-Zの採用などで異なりますが、近距離から遠距離まで極端に広い範囲を一つの深度バッファで扱うと、近接面の識別が難しくなる構成があります。使用環境の仕様を確認し、表示に必要な最短距離と最長距離へ設定します。
透明表示では、描画順と深度書き込みを確認します。一般的な半透明材質は不透明材質と異なる順序で描画され、深度書き込みを無効にする場合があります。Unityの資料でも、半透明オブジェクトでは通常ZWriteが無効で、深度順序が不正になる場合はジオメトリの並べ替えが必要になると説明されています。([Unity Documentation][6])
透明度を一時的に無効にし、不透明な単色表示へ切り替えると原因を切り分けやすくなります。不透明表示で正常で、半透明表示だけで欠落や濃淡の逆転が起こる場合は、形状よりも透明ソート、深度書き込み、シェーダーのブレンド条件を疑います。
実景との遮蔽処理も確認します。ARのオクルージョンは、環境深度やステンシル情報を使って、現実物体の奥にある仮想コンテンツを隠すための機能です。深度情報の誤差、位置合わせのずれ、遮蔽許容値が適切でない場合、本来見えるTINまで部分的に隠れることがあります。AR Foundationの公式資料でも、環境深度によって現実物体が仮想コンテンツを遮蔽する仕組みが説明されています。([Unity Documentation][7])
遮蔽処理を一時的に無効にして欠落が解消する場合は、TIN面の裏返りではなく、遮蔽判定側の問題です。遮蔽用深度の更新、平滑化、信頼度、位置合わせ、深度オフセットを確認します。端末や実行環境によって取得できる深度情報が異なる場合があるため、対応状況も含めて検証します。
材質設定も確認対象です。片面だけを描画する設定、視線と法線の角度で透明度を変える設定、標高や法線成分を色や透明度へ変換する独自シェーダーがあると、特定方向の面だけ見えなくなる場合があります。診断時は、単純な不透明単色材質へ切り替え、頂点色、テクスチャ、照明、透明度、遮蔽の影響を減らします。
AR表示の設定を調べるときは、一度に複数項目を変更しません。単色不透明、遮蔽なし、両面表示という診断用の構成から始め、片面表示、透明度、遮蔽、色分けを一つずつ戻します。変更前後の結果を記録することで、原因となった設定を特定できます。
原因を効率よく特定する確認手順
TIN面の欠落を効率よく直すには、元データから現場表示までを段階的に確認します。最初に元TINを単色かつ両面表示し、三角形そのものが存在するかを確認します。両面表示でも穴がある場合は、三角形の欠損、境界の隙間、透明度、クリッピング、深度競合を疑います。
両面表示では穴がなく、片面表示で欠落する場合は、頂点順序または向きを反転する変換を疑います。TIN全体が反対向きなら座標変換や親階層の負の尺度、一部だけ反対向きなら元データの頂点順序、接合処理、面削減処理が原因である可能性が高くなります。
法線の可視化は、照明用法線の不整合を調べるには有効ですが、背面カリングの判定そのものは頂点順序で確認します。診断画面に表面と裏面を別色で表示できる場合は、局所的な巻き順の反転を見つけやすくなります。
次に、中間形式へ変換した直後のデータを確認します。変換前は正常で変換後に裏返る場合は、座標軸変換、階層変換の焼き込み、インデックス再構成の工程を調べます。同じ位置の三角形を選び、変換前後の3頂点とインデックス順序を比較します。
その後、絶対座標からローカル座標への変換結果を確認します。平行移動だけなら辺長、面積、隣接関係、頂点順序は変化しません。形状が鏡像になっている場合は、軸交換や符号反転が混入しています。辺長や面積まで変わっている場合は、単位、尺度、丸め処理を確認します。
AR側では、単色不透明、遮蔽なし、両面表示で確認します。この状態で正常なら、TINの基本形状と配置はおおむね正しいと考えられます。続いて片面表示へ切り替え、透明度、遮蔽、色分け、深度バイアスなどを一つずつ有効にします。
欠落の発生条件も記録します。特定方向から見たときだけ消える場合は頂点順序やカリング、近づいたときだけ切れる場合は近クリップ面、遠方だけ消える場合は遠クリップ面やLOD、端末を動かすと境界がちらつく場合は重複面、近接面、座標精度を優先して確認します。
透明表示だけで不自然になる場合は透明ソートと深度書き込み、遮蔽を有効にしたときだけ消える場合は環境深度と位置合わせを確認します。法線に応じた色分けや透明度制御を使っている場合は、法線値とシェーダー条件も確認します。
現地検証では、欠落箇所を含む小範囲のTINを切り出して使うと効率的です。広域データを毎回読み込むより、変換と描画の条件を素早く比較できます。小範囲で原因と修正方法を確定してから全体へ適用します。
修正前後の画面だけでなく、使用データ、変換条件、基準座標、描画設定も保存します。少なくとも、元ファイルの版、座標参照系、単位、基準座標、軸対応、3×3行列の行列式、法線再計算の有無、カリング、透明度、遮蔽、クリップ範囲を記録します。
TIN面の欠落を再発させないデータ運用
TIN面の欠落は、表示時に個別修正するより、データ作成からAR表示までの受け渡し条件を標準化した方が再発を抑えやすくなります。AR表示用データの座標軸、単位、表面の基準、原点処理、数値形式、描画設定を社内ルールとして定義します。
面の表側については、単純な地表TINでは上側を表とするなど、用途ごとの基準を決めます。閉じた構造物やオーバーハングを含む形状では、外側を表とするなど別の規則が必要です。書き出し前に、連結領域ごとの向き、共有辺の整合、反転面数を自動検査します。
座標変換は、担当者がその都度軸を入れ替えるのではなく、入力座標参照系、出力座標系、軸対応、符号、単位倍率、基準座標を設定ファイルとして管理します。変換の線形成分の行列式が負になる場合は、頂点順序の補正を同じ処理へ組み込みます。
形状品質については、重複頂点、重複面、ゼロ面積三角形、異常な長辺、非接続境界、自己交差を検査します。すべてを自動修復すると設計形状を変えるおそれがあるため、明確に安全な項目だけを自動修復し、それ以外は異常箇所を可視化して担当者が判断します。
絶対座標とローカル座標の管理方法も統一します。元データを絶対座標で保管し、AR用データを基準座標からの相対値として保存する場合は、基準座標、座標参照系、標高基準、単位をデータと一緒に保持します。ファイル名や口頭連絡だけへ依存しないことが重要です。
改訂管理では、版番号、対象工区、元図面の版、変換設定の版、作成日時を記録します。TINを修正しても古いARデータが現場に残っていれば、修正済みか判断できません。AR側で表示中のデータ版を確認できるようにします。
現場で欠落を発見した場合は、欠落位置の絶対座標、見る方向、端末からのおおよその距離、使用データ版、片面表示か両面表示か、透明度と遮蔽の設定を記録します。「一部が消えた」という報告だけでは、面の向き、クリッピング、遮蔽、重複面を切り分けにくくなります。
表示検査は、上面だけでなく、複数の方向、高さ、距離から行います。現場では斜め方向や低い位置から見ることが多いため、上面表示だけでは反転面を見逃します。裏面側から確認できる検査環境では、想定どおりにカリングされるかも確認します。
広域の3D図面では、すべての三角形を目視するのは現実的ではありません。巻き順、法線、面積、辺長、重複、座標範囲、連結成分を数値で検査し、異常箇所だけを可視化します。自動検査と現場での見え方確認を組み合わせることで、データ上の問題とAR特有の描画問題を分けて管理できます。
まとめ
3D図面をAR表示した際にTIN面が欠落する場合は、三角形の頂点順序を最初に確認します。両面表示では見えるのに片面表示で消える場合、巻き順がそろっていないか、座標変換に鏡像反転が含まれている可能性があります。標準的な背面カリングは頂点順序で判定されるため、法線の再計算だけでは直りません。
次に、座標軸の交換、負の拡大率、親子階層の合成変換を確認します。変換の3×3線形成分の行列式が負であれば向きが反転します。変換後に頂点順序を補正し、既知点を使って水平位置、標高、方位、尺度が絶対座標と一致するかを検証します。
局所的な欠落やちらつきがある場合は、重複頂点、重複面、ゼロ面積に近い三角形、細長い面、境界の隙間、自己交差を修復します。形状修復と向きの統一を済ませてから法線更新や軽量化を行うことで、問題の拡大を防げます。
絶対座標を扱う場合は、現場近くの基準座標を差し引き、描画時にはローカル座標を利用します。元の絶対座標と基準原点を別に保持すれば、位置情報を維持しながら、大きな座標値による数値精度低下を抑えられます。
最後に、背面カリング、深度判定、クリッピング、透明表示、実景との遮蔽処理を一つずつ確認します。両面表示だけで問題を隠すのではなく、元データ、座標変換、描画処理のどの段階に原因があるかを切り分けることが、安定した運用につながります。
3D図面のAR表示では、形状が見えるだけでなく、絶対座標上の正しい位置、向き、高さで安定して表示されることが重要です。TINの頂点順序、座標変換、ローカル原点、描画設定を標準化し、現地での確認手順まで整備することで、施工面や地形面の欠落を減らせます。現場で絶対座標に基づく3D図面AR表示を運用する際は、データ検査を行ったうえで、LRTK Phoneを用いた確認作業へつなげることが大切です。