点群OBJでUVずれが起きる理由
点群から作成したOBJをアップロードした際、テクスチャが横へずれる、上下が反転する、特定の面だけ画像が引き伸ばされるといった問題が発生することがあります。このような表示不良は、一般にUVずれとして扱われます。
UVとは、三次元形状の表面に対して、二次元のテクスチャ画像のどの位置を割り当てるかを示す座標です。三次元空間ではX、Y、Zの座標を使用しますが、画像上の位置を表す座標にはUとVが使われます。形状を構成する頂点や面が正しくても、UV座標との対応が崩れていれば、表面の画像は意図した位置に表示されません。
実務で使われる「点群OBJ」という表現には、複数の状態が含まれます。点群の各点をOBJの頂点として保存しただけのデータもあれば、点群から三角形の面を生成し、その面に画像を貼り付けたメッシュデータもあります。UVずれが問題になるのは、主に面情報と画像テクスチャを持つOBJです。頂点だけで構成されたOBJには、一般的な面への画像貼り付けに必要な対応関係がないため、UVよりも頂点カラーや点の表示方式を確認する必要があります。
UVずれが発生する工程は、アップロード時だけではありません。点群からメッシュを生成したとき、不要な面を削除したとき、頂点を統合したとき、面数を減らしたとき、UVを作成したとき、画像を編集したとき、OBJを書き出したときなど、さまざまな段階で対応関係が変化する可能性があります。
作業中の画面では正常に見えていても、書き出したOBJを別の環境で開くとずれる場合もあります。作業環境が独自の内部情報を参照して表示していても、その情報がOBJへ正しく保存されていなければ、アップロード先には引き継がれません。また、OBJにUV情報が保存されていても、参照する画像の向きや縦横比が変われば、表示位置は異なります。
アップロード後の環境がUV範囲外の座標をどのように処理するかによって、結果が変わることもあります。画像を繰り返して表示する環境もあれば、画像端の色を引き伸ばして表示する環境もあります。作業環境で意図した表示になっていても、別の環境で同じ結果になるとは限りません。
そのため、点群OBJのUVずれを防ぐには、画面上の見た目だけでなく、形状、面、UV、材質、画像、参照先という要素を分けて確認することが重要です。アップロード前の確認手順を標準化しておけば、修正と再アップロードの繰り返しを減らし、現場で必要な三次元データを安定して共有できます。
OBJとUVの関係を理解する
OBJは、三次元形状に関する情報をテキストとして記録できるファイル形式です。一般的なOBJには、三次元空間上の頂点座標、画像上のUV座標、面の向きを表す法線、頂点を結んで構成する面などが記録されます。ただし、すべてのOBJにこれらの情報がそろっているわけではありません。
頂点座標は、三次元空間における点の位置です。UV座標は、テクスチャ画像上の位置を示します。面情報は、どの頂点を使用して三角形や多角形を作るかを表します。テクスチャを正しく表示するには、面を構成する各頂点と、画像上のUV座標との組み合わせが正しく記録されていなければなりません。
ここで注意したいのは、形状の頂点番号とUV座標の番号が必ずしも同じではないことです。一つの形状頂点が、面によって異なるUV座標を参照する場合があります。立体を二次元画像へ展開するときには切れ目が必要になるため、三次元空間では同じ位置にある頂点でも、UV上では複数の位置に分けられることがあります。
たとえば、建物の角にある一つの頂点が、正面と側面の両方に使われている場合を考えます。三次元形状としては一つの位置ですが、正面用の画像領域と側面用の画像領域は離れていることがあります。この場合、形状頂点は同じでも、正面と側面で異なるUV座標が必要です。
したがって、頂点数とUV座標数が一致しないことだけを理由に、異常と判断することはできません。頂点数よりUV座標数が多い場合でも、UVの切れ目を表現するために必要な構成である可能性があります。確認すべきなのは、それぞれの面が存在する頂点番号とUV番号を参照し、その組み合わせが意図した画像位置を示しているかどうかです。
OBJ本体にテクスチャ画像が埋め込まれているとは限らない点にも注意が必要です。一般的には、OBJが材質情報を記述したMTLを参照し、MTLがテクスチャ画像を参照します。OBJだけをアップロードした場合、形状は表示されても画像が表示されないことがあります。この状態はUVずれではなく、材質または画像の参照が成立していない状態です。
また、OBJにUV座標があっても、すべての面がUVを参照しているとは限りません。形状の一部だけにUVが設定されている場合、その部分だけ画像が表示され、残りは単色になることがあります。点群からメッシュを自動生成した後に面を追加した場合などは、追加面にUVが割り当てられているかを確認する必要があります。
点群OBJのアップロード前確認では、画像が見えるかどうかだけではなく、OBJ内の面が正しいUVを持ち、正しい材質が割り当てられ、材質が正しい画像を参照しているという一連の関係を見ることが大切です。
チェック1 形状編集とUV作成の順序を確認する
最初のチェックは、形状編集とUV作成の順序です。基本的には、不要な面の削除、穴の補修、頂点の整理、面数の調整といった形状編集を終えてから、UVを作成または確定します。
点群から生成されたメッシュには、細かな凹凸、孤立した面、重複に近い頂点、極端に細長い三角形などが含まれることがあります。そのため、アップロード前には対象外部分の削除や面の整理が必要です。しかし、UVを作成した後に形状を大きく変更すると、面とUVの対応が変わり、画像の伸びやずれが発生しやすくなります。
特に注意したいのが、既存の面を削除して新しい面を作り直す処理です。画面上では同じ場所に面が戻ったように見えても、内部では別の面として扱われます。新しく作成した面にUVが設定されていなければ、その部分だけ画像が表示されなかったり、予想外の画像領域が割り当てられたりします。
頂点を統合する処理にも注意が必要です。三次元空間では同じ位置に見える二つの頂点でも、UV上では別の位置を持っている場合があります。これはUVの切れ目を維持するために必要な状態です。位置が近いという理由だけで無条件に統合すると、離れていたUV領域がつながり、画像の端同士が引っ張られることがあります。
面数を減らす簡略化処理も、UVずれの原因になり得ます。形状だけを基準に面を統合すると、画像上で重要な境界が失われる可能性があります。建物の角、構造物と地面の境界、異なる画像領域の境目などが統合されると、画像が斜めに引き伸ばされることがあります。
簡略化を行う場合は、UV境界、材質境界、形状の鋭い角などを保持できる処理条件を選ぶ必要があります。処理後には、元データと簡略化後のデータを同じ視点から比較し、画像の位置や境界が変わっていないかを確認します。
安定しやすい作業順序は、点群の整理、メッシュ生成、不要面の削除、穴の補修、頂点や面の整理、面数の調整、UV作成、画像の割り当て、OBJ書き出しという流れです。UV確定後に形状を変更した場合は、変更した範囲のUVを再確認します。
形状全体を移動、回転、拡大縮小しただけでは、通常、UV座標そのものは変化しません。しかし、変換を確定する処理や別形式を経由する変換によって、頂点や面の構成が変化する場合があります。形状の位置が同じに見えても、内部の面番号や頂点番号が変わっている可能性があるため、最終的に書き出したOBJを再読み込みして確認することが重要です。
作業途中のデータではなく、実際にアップロードする最終ファイルを確認することも欠かせません。簡略化前のデータや修正途中のデータが正常でも、最終書き出し時にUVが崩れていれば意味がありません。最終版を明確に識別し、アップロード対象を取り違えない管理が必要です。
チェック2 頂点・面・UV座標の対応を確認する
二つ目のチェックは、頂点、面、UV座標の対応です。UVずれの多くは、UV座標の数値そのものよりも、面が誤ったUV番号を参照することで発生します。
OBJでは、形状の頂点、UV座標、法線がそれぞれ別の番号で管理されます。面情報には、使用する頂点番号だけでなく、対応するUV番号や法線番号が記述されることがあります。書き出し処理や変換処理で番号の対応が崩れると、形状は正常に見えても、違う画像領域が面に割り当てられます。
たとえば、壁面に貼られるはずの画像が地面に表示される場合は、壁面の面情報が別のUV領域を参照している可能性があります。一つの三角形だけが極端に引き伸ばされる場合は、その面を構成するUV座標のうち一つが、他の二点から大きく離れていることがあります。
面ごとに異なる画像領域が交互に表示される場合は、変換や結合の工程でUV番号が広範囲にずれている可能性があります。一部だけではなく、規則的に異常が繰り返される場合は、個別の面を修正する前に、OBJを書き出した方法やファイルを結合した方法を見直す必要があります。
複数のOBJを一つに結合したときも注意が必要です。単純にファイルの内容をつなげるだけでは、後から追加したOBJの頂点番号やUV番号が、先に記述された番号と重複することがあります。その状態では、後半の面が前半のUVを参照し、意図しない画像が表示される可能性があります。
OBJを結合する場合は、頂点、UV、法線、材質の対応を維持できる方法を使用し、結合後に一つのデータとして書き出し直します。その後、代表的な面だけではなく、結合境界付近も確認します。
多角形を三角形へ分割する処理にも注意が必要です。アップロード先が多角形を自動的に三角形化する場合、書き出し元とは異なる分割になることがあります。形状の外周が同じでも、内部の分割線が変わると、画像の補間結果が異なる場合があります。
互換性を高めたい場合は、アップロード前に面を三角形化し、その状態でUVを確認しておく方法があります。最終的な面構成を先に確定できるため、アップロード後の自動処理による表示差を減らしやすくなります。
確認時には、規則的な模様を持つ確認用画像を一時的に使用する方法が有効です。格子、数字、方向を示す文字などが入った画像を貼ると、上下反転、左右反転、回転、伸び、縮みを見つけやすくなります。確認後は元の画像へ戻し、最終データで再度表示を確認します。
代表的な確認箇所には、建物の角、屋根と壁の境界、地面と構造物の境界、異なる材質の境界、細長い面が多い場所などを選びます。平らで単調な面だけを確認しても、小さなずれを発見できない場合があります。
チェック3 テクスチャ画像の向きと比率を確認する
三つ目のチェックは、テクスチャ画像の向き、縦横比、画像範囲、余白です。UV座標が正しくても、画像の扱いが変われば、結果として位置がずれたように見えます。
代表的な問題は、画像の上下反転です。画像の縦方向を上から数えるか、下から数えるかは、処理環境によって扱いが異なる場合があります。作業環境では正しく表示されていても、アップロード後に画像が上下逆になることがあります。
上下反転を修正する方法としては、UV座標のV方向を反転する方法と、テクスチャ画像自体を上下反転する方法があります。ただし、両方を同時に行うと再び元の向きへ戻ります。どちらで対応するかを決め、工程内で処理を統一することが重要です。
画像が左右逆になる場合は、U方向の反転や、形状を鏡像化した工程を確認します。文字、標識、番号などが含まれる画像は、左右反転を見つけやすい確認材料です。自然地形の画像だけでは左右の違いに気づきにくいため、方向を判断できる箇所を重点的に確認します。
画像の縦横比も維持する必要があります。横長の画像を正方形に変形すると、UV座標が同じでも、表面の模様は縦方向または横方向へ引き伸ばされます。画像を保存し直した際に、画素数や縦横比が変わっていないかを確認します。
画像の切り抜きもUVずれの原因になります。UVは画像全体に対する相対的な位置を参照するため、画像の左側や上側を切り落とすと、同じUV座標が別の場所を示すようになります。不要な余白だけを削除したつもりでも、UV作成後に画像範囲を変更すれば対応は崩れます。
テクスチャ画像を差し替える場合は、元画像と同じ縦横比、同じ配置、同じ余白を維持します。画像の解像度だけを高くしたり低くしたりする場合でも、画像内の配置が変わらなければ、UVを維持できることが一般的です。一方、複数画像を一枚へまとめ直した場合や、画像内の配置を整理した場合は、UVの再配置が必要です。
UV座標が画像範囲外へ出ていないかも確認します。作業環境では範囲外の画像が繰り返し表示されていても、アップロード先では画像端の色が引き伸ばされる場合があります。その結果、模様が細かく繰り返されたり、単色の帯が伸びたりすることがあります。
特別な繰り返し表現を必要としない点群OBJでは、主要なUVを一般的な画像範囲内に収めると、環境差による表示不良を防ぎやすくなります。範囲外のUVを使用する場合は、アップロード先が同じ繰り返し処理に対応しているかを確認する必要があります。
UV領域同士の余白も重要です。複数の面を一枚の画像上へ配置する場合、隣接するUV領域の間隔が狭すぎると、遠距離表示や画像縮小時に隣の色が混ざることがあります。面の境界に細い線が出る場合は、UV領域の位置だけでなく、周囲の余白も確認します。
画像端ぎりぎりにUVを配置すると、表示処理によって反対側や端の色が混ざる可能性があります。画像の外周にも一定の余白を確保しておくと、境界のにじみを抑えやすくなります。
チェック4 OBJ・MTL・画像の参照関係を確認する
四つ目のチェックは、OBJ、MTL、テクスチャ画像の参照関係です。UV情報が正しくても、別の画像を読み込んでいたり、画像を読み込めなかったりすれば、正しい表示にはなりません。
一般的なファイル構成では、OBJがMTLのファイル名を参照し、MTLがテクスチャ画像のファイル名を参照します。そのため、テクスチャ付きの点群OBJをアップロードするときは、OBJだけではなく、必要なMTLと画像を一式として準備します。
まず、OBJ内に記述されたMTLの名前と、実際のMTLのファイル名が一致しているかを確認します。次に、MTL内に記述された画像の名前と、実際の画像ファイル名を確認します。
大文字と小文字、全角と半角、空白、記号、拡張子の違いにも注意が必要です。作業端末では同じファイルとして読み込めていても、アップロード先では別の名前として扱われる場合があります。
ファイル名は、英数字を中心とした短く分かりやすい名称に統一すると、入力ミスや文字の変換による問題を減らしやすくなります。複数の画像を使用する場合は、画像の役割や範囲を識別できる名称にします。
参照先に作業端末内の絶対パスが残っていないかも確認します。絶対パスは、特定の端末にある保存場所を示すため、別の端末やアップロード先には同じ場所が存在しません。作業環境では正常に画像を読み込めても、アップロード後には画像が見つからない可能性があります。
外部へ渡すデータでは、OBJとMTLと画像を同じフォルダーへ置くか、決められた下位フォルダーへまとめ、相対的な参照関係を使用する方法が適しています。ただし、実際に対応するフォルダー構成はアップロード先の仕様によって異なるため、事前確認が必要です。
関連ファイルをまとめた後は、書き出した一式だけを別の確認用フォルダーへ複製し、そこでOBJを開き直します。元の作業場所に画像が残っていると、参照設定が誤っていても、作業環境が元の画像を見つけて表示する場合があります。
確認用フォルダーには、OBJ、必要なMTL、使用する画像だけを格納します。その状態で画像が表示されれば、少なくとも一式の中で参照関係が完結している可能性が高くなります。
複数の材質を使用している場合は、各面に正しい材質が割り当てられているかも確認します。UV座標が正しくても、別の画像を参照する材質が指定されていれば、表面には異なる画像が表示されます。
特定の区域だけ違う画像が表示される場合は、UVを作り直す前に材質割り当てを確認します。同じUV座標でも、参照する画像が異なれば表示結果は変わります。
同じ名前の画像が複数のフォルダーに存在する状態も避けます。書き出し時と確認時で異なる画像が読み込まれ、どのファイルが正しいのか分からなくなるためです。最終アップロード用のフォルダーには、実際に使用する最新版だけを残します。
ファイルを圧縮してアップロードする場合は、展開後の位置関係も想定します。不要な親フォルダーが何重にも入っていると、OBJから見たMTLや画像の位置が変わることがあります。圧縮前後で参照関係を維持できる構成にします。
チェック5 実際のアップロード条件でテストする
五つ目のチェックは、実際に使用する環境に近い条件でテストアップロードすることです。書き出し元の画面で正常に見えることだけでは、アップロード後の表示品質を判断できません。
読み込み環境によって、対応するOBJの記述、画像形式、材質情報、UV範囲、面の向き、画像の上下方向などが異なる場合があります。書き出し元では問題がなくても、アップロード先が一部の情報を読み込まなかったり、異なる方法で解釈したりする可能性があります。
最終データをいきなり全量アップロードするのではなく、代表的な部分を含む小さなテストデータを作成すると、原因を確認しやすくなります。平らな面だけではなく、角、曲面、UVの切れ目、複数材質の境界、細長い三角形などを含む範囲を選びます。
小さなテストデータで問題が発生した場合は、再書き出しや再アップロードにかかる時間を抑えられます。修正内容の比較もしやすくなるため、どの設定が表示へ影響しているかを切り分けやすくなります。
テスト時は、正面から見た状態だけで判断しません。斜め方向、裏側、近距離、遠距離からも確認します。正面では気づきにくい画像の伸びや境界のずれが、斜めから見ると明確になる場合があります。
面の境界に沿って画像が途切れていないか、細長い面だけ異常な画像になっていないか、文字や線が反転していないかも確認します。複数の視点を固定しておけば、修正前後の比較が容易になります。
アップロード後に自動変換が行われる場合は、変換処理が完了した状態で確認します。アップロード直後の簡易表示と、処理完了後の表示が異なる可能性があるためです。処理途中の粗いプレビューだけを見てUV異常と判断しないようにします。
問題が起きた場合は、複数の設定を同時に変えないことが重要です。画像の上下反転、UVの再作成、材質の変更、ファイル名の変更を一度に行うと、どの修正が有効だったのか分からなくなります。
一回のテストでは、一つの原因候補だけを変更します。変更前後の結果を記録し、改善したか、別の症状が出たかを比較します。この方法を繰り返すことで、原因を段階的に絞り込めます。
テストで正常に表示された書き出し条件は、作業手順として残します。面の処理方法、画像の向き、ファイル構成、UV範囲、圧縮方法などを記録しておけば、別の点群OBJでも同じ条件を再現しやすくなります。
UVずれの症状から原因を切り分ける
UVずれが見つかったときは、すぐにすべてのUVを作り直すのではなく、症状を観察して原因を絞り込むことが重要です。
テクスチャ全体が上下逆になっている場合は、画像の縦方向の解釈を確認します。すべての面が同じように反転しているなら、個別の面番号よりも、V方向または画像自体の向きが原因である可能性があります。
全体が左右逆の場合は、U方向の反転や、形状を鏡像化した工程を確認します。形状だけを反転し、UVが元の状態のまま残っていると、文字や標識が逆向きに表示されることがあります。
一部の面だけ違う画像領域を表示している場合は、その面のUV参照と材質割り当てを確認します。面を作り直した箇所、複数OBJを結合した境界、簡略化で面構成が変わった範囲などを重点的に調べます。
画像が一点から放射状に引き伸ばされている場合は、複数の形状頂点が同じUV座標へ集まっている可能性があります。反対に、一つの小さな面へ画像全体が表示される場合は、その面のUV三点が画像上の離れた場所を参照している可能性があります。
遠くから見たときだけ面の境界に線が現れる場合は、UV領域の余白不足や隣接領域の色の混入を確認します。近距離では正常でも、遠距離表示用に画像が縮小されたときに、隣の画像領域が混ざることがあります。
画像が表示されず単色になる場合は、UVずれより先にMTLと画像の参照を確認します。画像自体が読み込まれていない状態では、UV座標が正しいかどうかを表示だけで判断できません。
画像が細かく繰り返される場合は、UV座標が通常の画像範囲を大きく超えていないかを確認します。書き出し元とアップロード先で、範囲外の座標に対する処理が異なる可能性があります。
場所によって画像の鮮明さが極端に違う場合は、UV上で各面に割り当てられている面積を確認します。三次元空間では同じ大きさの面でも、UV上の面積が小さければ画像は粗くなり、大きければ細かく表示されます。これは位置のずれではなく、UV密度のばらつきです。
原因調査の記録では、単に「UVがずれている」と書くのではなく、全体か一部か、上下か左右か、反転か伸びか、特定の距離だけで起きるかを明確にします。症状を具体化することで、確認すべき工程を絞りやすくなります。
点群からOBJを作成するときの注意点
点群からOBJを作成する工程では、一般的な手作業による三次元モデルとは異なる問題が発生します。点群には多数の位置情報が含まれていますが、面のつながりや画像の貼り方が最初から定義されているとは限りません。
点群から自動生成されたメッシュは、計測状況によって面の密度が大きく変わります。情報が多い場所には細かな面が生成され、点が不足している場所には大きく細長い面が作られることがあります。
極端に細長い面は、UV展開時に画像が伸びやすくなります。点群に存在しない空間を自動的に面でつないだ場合、その面へ周辺の画像が無理に割り当てられることもあります。
不要な背景や浮遊点が残った状態でメッシュ化すると、本来必要のない面にもUV領域が割り当てられます。その結果、重要な構造物に使用できる画像領域が小さくなり、見た目の解像度が下がる場合があります。
メッシュ化の前後で不要部分を整理し、対象範囲を明確にすることが重要です。ただし、UV作成後に不要面を大量に削除する場合は、周辺のUV境界が変化していないかを確認します。
点群が色情報を持っている場合でも、その色が一般的な画像テクスチャとして保存されているとは限りません。点ごと、または頂点ごとの色として記録されている場合と、画像ファイルを面へ貼り付ける場合では、データ構成が異なります。
頂点カラーで表示されていたOBJにUVが存在するとは限りません。アップロード先が頂点カラーに対応していない場合、作業環境では色付きで見えていたOBJが単色になることがあります。この状態はUVずれではなく、色情報の方式が対応していない可能性があります。
複数方向から取得した画像をメッシュへ投影する場合は、画像間の明るさや色の違いも継ぎ目として現れます。UV座標が正しくても、撮影方向や明るさが異なれば、面の境界で色が変化することがあります。
画像の境界が位置的にずれているのか、同じ位置で明るさだけが変わっているのかを見分ける必要があります。明るさの違いをUVずれと判断してUVを作り直しても、根本的な改善にはつながりません。
計測範囲が広い場合、すべての画像を一枚へまとめると、必要な解像度を確保しにくくなることがあります。複数画像や複数材質に分ける方法もありますが、アップロード先がその構成を読み込めるかを事前に確認する必要があります。
点群から作成したOBJでは、三次元座標が大きな値を持つ場合があります。大きな三次元座標が直接UV座標を変えるわけではありませんが、座標を原点付近へ移動する処理や別形式への変換で面構成が変われば、間接的にUVへ影響する可能性があります。
点群処理、メッシュ処理、UV処理、書き出し、アップロードを別々の工程として記録し、どの段階で表示が変わったかを追えるようにすることが重要です。
軽量化でUVを崩さないための考え方
点群から作成したOBJは、頂点数、面数、画像容量が大きくなりやすいため、アップロードや表示の前に軽量化が必要になることがあります。
軽量化には、不要範囲の削除、面数削減、画像解像度の調整、画像枚数の整理などがあります。どの方法を使用するかによって、UVへの影響は異なります。
不要範囲の削除は、必要な部分の面構成を変えずに行える場合、比較的UVへの影響を抑えやすい方法です。ただし、削除した境界を新しい面で埋める場合は、その面にUVを設定する必要があります。
面数削減では、UV境界を保持できるかが重要です。UVの切れ目をまたいで面が統合されると、画像上で離れた領域が一つの面として補間され、意図しない画像が引き伸ばされます。
材質境界や形状の鋭い角も、軽量化時に保護したい部分です。建物の正面と側面、構造物と地面などを一つの滑らかな面として処理すると、画像の境界も崩れる可能性があります。
画像の解像度を下げる場合は、縦横比と画像内の配置を維持します。画像全体を同じ比率で縮小するだけであれば、一般的にはUV座標を変更せずに使用できます。
一方、縮小時に余白を切り取ったり、画像を正方形へ変形したりすると、同じUV座標が別の位置を指します。画像容量を減らす目的でも、画像範囲そのものは変更しないことが大切です。
複数画像を一枚へまとめる処理は、画像枚数を減らす方法として有効ですが、UVの再配置が必要です。画像だけを結合してUVを更新しなければ、すべての面が元とは異なる場所を参照します。
画像統合を行う場合は、画像の配置変更とUV座標の更新を一体の処理として扱います。統合後には、各材質の面が正しい画像領域へ移動しているかを確認します。
軽量化後は、形状の輪郭だけではなく、文字、線、角、模様の境界などを比較します。形状がほぼ同じでも、画像の位置が数画素ずれれば、現場の確認対象によっては大きな違いになります。
画像を過度に圧縮すると、UVずれではなくても境界や細部が不鮮明になります。点群OBJの用途に応じて、形状精度、画像解像度、データ容量、表示速度のバランスを決めることが必要です。
複数担当者でUV品質を保つ運用
点群OBJの作成、編集、書き出し、アップロードを複数の担当者で行う場合、個人の判断だけに依存すると品質が安定しません。同じ元データを使っていても、作業順序や書き出し条件が異なれば、表示結果が変わる可能性があります。
最初に、形状を確定する時点とUVを確定する時点を分けます。形状担当者がUV確定後に面を修正し、その変更が共有されていないと、一部の面だけ対応が崩れます。
形状確定、UV確定、書き出し確定、アップロード確認という段階を設け、確定後の変更には再確認が必要であることを共通ルールにします。
ファイル名のルールも統一します。OBJ、MTL、画像に共通する識別名を使用し、案件、対象範囲、版を判別できるようにします。名称を長くしすぎると入力ミスが増えるため、短く一貫した形式が適しています。
更新版を作成するときは、OBJだけではなく、関連するMTLと画像も同じ版として管理します。OBJは最新版でも、MTLや画像が旧版であれば、材質名や画像配置が一致しない可能性があります。
最終アップロード用のフォルダーを作り、必要な一式だけを格納する運用も有効です。作業中の画像、確認用画像、旧版のOBJが同じ場所にあると、誤ったファイルを選びやすくなります。
最終フォルダーへ一式を複製した後、そのフォルダー内のOBJを開いて表示を確認します。この確認によって、作業環境内の別の場所にある画像を誤って参照していないかを判断しやすくなります。
確認記録には、形状、UV、画像、参照関係、アップロード結果を分けて残します。「確認済み」という一言だけでは、どこまで点検したのかが分かりません。
形状に欠損がないこと、代表箇所の画像位置が合っていること、OBJからMTLと画像を読み込めること、アップロード後も同じ表示になることを区別して記録します。
担当者間で画面を比較する場合は、確認する視点を固定します。建物の角、開口部、標識、地面との境界など、位置を特定しやすい場所を基準にします。
修正履歴には、変更内容だけではなく、変更理由も記録します。たとえば、単に「画像を反転」と残すのではなく、「アップロード後に全体が上下反転したため、画像を上下反転した」と記録します。
理由を記録しておけば、別の担当者が同じ反転処理を繰り返し、元の状態へ戻してしまう事故を防げます。UVずれの修正結果を次回の作業手順へ反映することで、再発防止につながります。
アップロード後にUVずれが見つかった場合の修正手順
アップロード後にUVずれが見つかった場合は、最初に問題がUV、材質、画像参照、画像の向きのどこにあるかを切り分けます。
テクスチャがまったく表示されていない場合は、UVを作り直す前に、MTLと画像の参照を確認します。画像を読み込めていなければ、UVが正しくても画面上では確認できません。
次に、実際にアップロードしたOBJ一式を、別の確認用フォルダーや別の読み込み環境で開きます。そこで同じずれが出る場合は、書き出し前または書き出し時のデータに原因がある可能性があります。
別の環境では正常で、アップロード先だけでずれる場合は、画像の上下方向、UV範囲外の扱い、面の三角形化、対応する材質記述など、読み込み方法の違いを確認します。
全体が同じ方向へ反転している場合は、UVを全面的に再作成する前に、U方向またはV方向の扱いを確認します。全体で同じ症状が出る問題は、個別面の参照よりも、共通設定に原因がある可能性があります。
一部だけ異常な場合は、その面のUV参照、材質、面の再生成履歴を確認します。形状編集を行った場所や、複数データを結合した境界を重点的に調べます。
修正は、原因に近い場所で行うことが重要です。画像参照の問題に対してUVを作り直しても解決しません。画像が上下反転しているだけなのに面を再生成すると、別のUVずれを増やす可能性があります。
修正後は、問題が起きた面だけではなく、その周囲も確認します。UV境界を移動した場合、対象の面は直っても、隣接する面に新しいずれやにじみが発生することがあります。
再アップロード時には、旧版と混同しないようにファイルの版を更新します。アップロード先に以前の変換結果が残っていると、新しいファイルを送ったつもりでも旧表示が続く場合があります。
表示が変わらないときは、修正が失敗したと判断する前に、アップロードした版、処理の完了状態、表示対象のデータを確認します。
原因と修正内容は作業記録へ残します。UVずれは一つのOBJだけの問題に見えても、書き出し条件、画像の向き、フォルダー構成などが原因なら、別の案件でも繰り返される可能性があります。
一度解決した内容をアップロード前の確認項目へ追加し、次回から事前に防げる運用へ変えることが大切です。
まとめ
点群OBJのUVずれを防ぐには、アップロード後の見た目だけではなく、形状、面、UV、材質、画像、ファイル参照の関係を順番に確認する必要があります。
一つ目のチェックは、形状編集を終えてからUVを確定することです。UV作成後に面を削除したり、頂点を統合したり、面数を減らしたりすると、画像との対応が崩れる可能性があります。
二つ目のチェックは、頂点、面、UV座標の対応を確認することです。頂点数とUV座標数が一致しないことだけで異常と判断せず、それぞれの面が有効なUV番号を参照しているかを確認します。
三つ目のチェックは、テクスチャ画像の向き、縦横比、画像範囲、余白を確認することです。UV作成後に画像を切り抜いたり、縦横比を変更したりすると、同じUVでも違う場所が表示されます。
四つ目のチェックは、OBJ、MTL、画像の参照関係です。ファイル名の大文字と小文字、拡張子、保存場所、相対的な位置関係を確認し、最終一式だけを別のフォルダーで開き直します。
五つ目のチェックは、実際のアップロード条件でテストすることです。代表部分を含む小さなデータを先にアップロードし、複数の視点と表示距離で画像の位置を確認します。
点群から作成したメッシュは、面の大きさや形が不均一になりやすく、一般的な三次元モデル以上に画像の伸びや境界ずれが発生する可能性があります。点群の整理、メッシュ生成、形状修正、軽量化、UV作成、画像確認、書き出しという順序を決め、工程ごとに結果を確認することが重要です。
また、頂点カラーと画像テクスチャは異なる情報です。作業環境で色付きに見えているOBJに、必ずUVが含まれているとは限りません。アップロード先で必要な表示方式を確認し、用途に合うデータ構成を選ぶ必要があります。
アップロード前の5チェックを標準作業へ取り入れることで、画像の反転、引き伸ばし、材質の取り違え、参照切れといった問題を早い段階で発見できます。再書き出しや再アップロードの手間を減らし、点群OBJを現場確認、記録、共有へ活用しやすくなります。
後工程で扱いやすいOBJを作成するには、元になる点群を安定して取得することも大切です。現地での計測から点群データの確認、三次元データの共有までを一連の流れとして整えたい場合は、LRTK Phoneを起点とした計測運用も検討できます。