LRTKレフィクシア株式会社

点群OBJのテクスチャが表示されないときの相対パス6確認

点群OBJで形状だけ表示される仕組みを理解する

点群や計測データから作成したOBJをアップロードしたとき、立体形状は表示されるのに、撮影画像を利用した色や模様だけが表示されないことがあります。画面上では灰色や白色のモデルとして表示されるため、OBJそのものが破損しているように見えるかもしれません。しかし、形状が正常に表示されている場合は、頂点座標や面情報の読み込みには成功しており、材質情報またはテクスチャ画像への参照だけが途切れている可能性があります。

OBJは、形状、材質、画像を一つのファイルにすべて格納する形式ではありません。一般的には、形状を記録するOBJファイル、材質の設定を記録するMTLファイル、表面に貼り付ける画像ファイルを組み合わせて使用します。OBJにはMTLを参照する記述があり、MTLにはテクスチャ画像を参照する記述があります。そのため、OBJだけをアップロードしても、材質や画像が別ファイルになっていれば、テクスチャは再現されません。

たとえば、OBJ内に

mtllib model.mtl

という記述がある場合、読み込み側は

model.mtl

という材質ファイルを探します。さらに、MTL内に

map_Kd texture.jpg

という記述があれば、材質ファイルを基準とした場所、または読み込み処理が基準としている場所から

texture.jpg

を探します。ここでファイル名、フォルダ名、階層、拡張子などが一つでも一致していないと、形状だけが読み込まれ、画像が欠落することがあります。

このように、点群OBJのテクスチャ表示は、単独のOBJファイルではなく、複数ファイル間の参照関係によって成り立っています。点群 OBJ アップロード後にテクスチャが表示されない場合は、画像の解像度やモデルの重さを疑う前に、まず相対パスとファイル構成を確認することが重要です。

相対パスとは、あるファイルの位置を基準にして、別のファイルがどこにあるかを表す方法です。絶対的な保存場所を示すのではなく、「同じフォルダにある」「一つ下のフォルダにある」「一つ上の階層に戻る」といった関係で指定します。作成環境では正常に表示されていても、別の端末やアップロード先へ移動すると表示されなくなるのは、この相対関係が崩れているケースが少なくありません。

以下では、点群OBJのテクスチャが表示されないときに確認したい相対パスの要点を、六つに分けて解説します。

確認1 OBJからMTLへの参照先が正しいか

最初に確認するのは、OBJファイルからMTLファイルへの参照です。OBJの形状が正常に表示されても、OBJ内で指定されたMTLが見つからなければ、材質設定やテクスチャ画像の情報は読み込まれません。

OBJは一般的なテキストエディターで内容を確認できます。ファイルの先頭付近や材質を使用する記述の前後に、

mtllib

から始まる行があるかを探します。たとえば

mtllib model.mtl

と書かれている場合は、OBJが

model.mtl

というファイルを参照していることを意味します。

実際のフォルダ内にあるMTLの名前が

model_01.mtl

であるのに、OBJ側が

model.mtl

を参照していれば、名前が一致していません。作業途中でMTLだけを改名した場合や、複数のOBJを整理するときに材質ファイル名を変更した場合に起こりやすい問題です。

OBJの記述が

mtllib materials/model.mtl

となっている場合は、OBJがある場所を基準として、

materials

フォルダ内の

model.mtl

を参照しようとしている可能性があります。ところが、アップロード時にOBJとMTLを同じ階層へ移動していると、元の参照先にはファイルが存在しません。この場合は、フォルダ構成を元に戻すか、現在の配置に合わせてOBJ内の参照を修正する必要があります。

反対に、OBJとMTLが同じフォルダにあるのに、OBJ内へ作成端末固有の長い保存場所が記録されていることもあります。たとえば、特定のドライブ名や利用者フォルダを含む記述が残っていると、その保存場所が存在しない別環境ではMTLを見つけられません。OBJとMTLをまとめて受け渡す用途では、端末固有の絶対パスよりも、同じフォルダを基準にした単純な参照のほうが扱いやすくなります。

一つのOBJから複数のMTLが参照されている場合も注意が必要です。OBJ内に複数の

mtllib

行がある、または一つの行に複数のファイル名が記録されていると、アップロード先の解析仕様によっては一部だけ読み込まれることがあります。すべてのアップロード先が複数MTLの扱いに同じ方法で対応するとは限らないため、可能であれば書き出し段階で材質ファイルを整理し、参照関係を単純にしておくと安全です。

OBJ内に

usemtl

という記述があるかも確認します。

usemtl

は、どの面にどの材質を適用するかを指定するための記述です。MTLファイルが存在していても、OBJ側の

usemtl

で指定された材質名と、MTL側の

newmtl

で定義された材質名が一致していなければ、意図した材質が割り当てられない可能性があります。

たとえば、OBJ側が

usemtl surface01

を指定しているのに、MTL側が

newmtl Surface01

となっている場合、大文字と小文字を区別する環境では別の名前として扱われることがあります。ファイル名だけでなく、材質名の一致も確認しておくことが大切です。

確認時には、OBJ内の

mtllib

に書かれた名前、実際のMTLファイル名、MTLが置かれている階層の三点を照合します。形状が表示されているからOBJ全体が正常とは限りません。材質参照部分だけに不整合がある可能性を切り分けてください。

確認2 MTLから画像への相対パスが正しいか

OBJからMTLが正常に読み込まれていても、MTLからテクスチャ画像への参照が誤っていれば、画像は表示されません。点群OBJのテクスチャ欠落では、このMTL内の画像パスが原因になることが多いため、重点的に確認します。

MTLもテキスト形式で記録されているため、一般的なテキストエディターで内容を開けます。テクスチャ画像を指定する代表的な記述として、

map_Kd

から始まる行があります。これは主に表面色に使用する画像を指定するものです。たとえば

map_Kd texture.jpg

と書かれている場合、読み込み側は

texture.jpg

を探します。

画像を

textures

という下位フォルダへ置いている場合は、

map_Kd textures/texture.jpg

のような記述になっていることがあります。このとき、アップロード後も

textures

フォルダと画像の配置が保たれていなければ、参照先が見つかりません。

作成時のフォルダ構成が、OBJ、MTL、画像をそれぞれ別の場所へ保存する設定になっている場合もあります。作成環境では元の場所を参照できるため正常に見えますが、OBJを書き出したフォルダだけを別の端末へ移すと画像が抜け落ちます。エクスポート後は、OBJとMTLだけでなく、MTLが参照するすべての画像が出力先へ複製されているかを確認する必要があります。

MTL内に絶対パスが残っている場合は、相対パスへの整理を検討します。絶対パスには、作成に使用した端末のドライブ名、利用者名、作業フォルダ名などが含まれることがあります。その端末では参照できても、アップロード先の処理環境から同じ保存場所へアクセスすることは通常できません。

たとえば、MTLに作業端末内の特定フォルダを指す長い記述があり、実際には画像をOBJと同じフォルダへコピーしている場合、画像が近くに存在していても参照は元の保存場所を向いたままです。画像の配置に合わせて、

map_Kd texture.jpg

のような単純な相対参照へ修正すると、別環境へ移動しやすくなります。

ただし、相対パスの基準位置は、使用する解析処理によって解釈が異なる場合があります。MTLファイルの位置を基準に画像を探す処理もあれば、OBJファイルやアップロードされたファイル群の基準階層から探す処理もあります。この違いによる問題を避けるには、最初の確認用データではOBJ、MTL、画像を同じフォルダに置き、フォルダ名を含まない短い参照にする方法が有効です。

MTLには、表面色以外の用途で別の画像が指定されていることもあります。複数の画像参照行がある場合、表面色用の画像だけを修正しても、凹凸、透明度、反射などに関係する画像が欠けたままになる可能性があります。アップロード先がどの材質表現に対応しているかは個別に確認が必要ですが、少なくともMTL内に記録されている各画像ファイルが実在するかは調べておきます。

ファイル名の末尾に見えない空白が入っているケースにも注意します。たとえば、画像名をコピーして修正したときに余分な空白や制御文字が混ざると、画面上では同じ名前に見えても一致しないことがあります。MTL内の画像指定行を一度削除し、実際のファイル名を確認しながら手入力し直すと、見えない文字による不一致を減らせます。

画像が複数枚に分かれている点群OBJでは、すべての

map_Kd

行を確認します。一枚目だけが正常で、二枚目以降の画像パスだけに元のフォルダ名が残っていることもあります。モデルの一部だけ白くなる、特定方向の面だけ画像が抜ける場合は、複数材質のうち一部の参照先が切れている可能性があります。

確認3 OBJ・MTL・画像のフォルダ構成が維持されているか

相対パスは、ファイル同士の位置関係を前提にしています。そのため、OBJ、MTL、画像の名前が正しくても、アップロード前後でフォルダ構成が変われば参照が途切れることがあります。

たとえば、元の構成でOBJとMTLが最上位フォルダにあり、画像だけが

textures

フォルダに入っていたとします。MTLには

textures/texture.jpg

と記録されています。この状態で、アップロード画面へOBJ、MTL、画像を個別に選択し、フォルダ階層が失われると、MTLが期待する

textures

という位置関係が再現されない可能性があります。

反対に、アップロードしやすくするために全ファイルを一つのフォルダへ集めた場合も、MTL内の参照が

textures/texture.jpg

のままでは一致しません。ファイルの配置を変更するなら、それに合わせてMTL内の相対パスも変更する必要があります。

複数階層を含む構成は、作成環境では整理しやすい一方、アップロード先で同じ階層を維持できるか確認が必要です。アップロード処理によっては、圧縮ファイル内の階層を保持して展開する場合もあれば、対応するファイルだけを抽出し、同じ階層として処理する場合もあります。仕様が明確でないときは、複雑な階層を避けた検証用データを用意すると原因を切り分けやすくなります。

最初の切り分けでは、OBJ、MTL、画像を同じフォルダに置き、OBJ内のMTL参照をファイル名だけにし、MTL内の画像参照も画像名だけにする方法が分かりやすいです。この単純な構成で表示されるなら、元のデータでテクスチャが欠落した原因は、階層または相対パスにある可能性が高くなります。

一方、同じフォルダへ集めても表示されない場合は、ファイル名の不一致、文字コード、材質名、UV情報、画像形式など、別の原因を調べます。フォルダ構成を単純化する目的は、最終的な運用構成を必ず一階層に限定することではなく、問題の範囲を狭めることです。

圧縮してアップロードする場合は、圧縮ファイルを開いた直後の最上位階層も確認します。圧縮ファイルの中にプロジェクト名のフォルダがあり、その中へOBJ一式が入っている構成では、アップロード先が最上位にあるOBJだけを探す仕様だと認識されない可能性があります。反対に、OBJだけを最上位へ移し、MTLや画像を下位フォルダへ残すと、相対関係が崩れます。

圧縮前のフォルダをそのまま開き、OBJから見たMTLの場所と、MTLから見た画像の場所をたどれるかを確認してください。確認するときは、作成に使用したソフトウェアを起動して表示できるかだけでなく、新しい空の場所へ一式をコピーし、コピー後のデータだけで表示できるかを見ると有効です。

元データが作業端末内の別フォルダを参照している場合、同じ端末で開く限りは欠落に気づけないことがあります。新しいフォルダへコピーした後、元画像の保存場所を一時的に参照できない状態にして確認すると、OBJ一式だけで完結しているかを判断しやすくなります。

また、複数のOBJと画像を同じフォルダへまとめると、同名ファイルの上書きにも注意が必要です。異なるモデルがそれぞれ

texture.jpg

という画像を使用していた場合、一つのフォルダへ集約すると、どちらかの画像が上書きされる可能性があります。テクスチャが完全に消えるのではなく、別の画像が表示される場合は、同名ファイルの衝突を疑います。

ファイルを集約するときは、モデルごとに一意の画像名を付け、MTL内の参照も合わせて修正します。ただし、ファイル名だけを一括変更するとMTLとの対応が切れるため、変更前後の一覧を残して作業することが大切です。

確認4 ファイル名の大文字・小文字・拡張子が一致しているか

相対パスの文字列は、見た目が似ているだけでは不十分です。実際のファイル名と一文字単位で一致している必要があります。特に、大文字と小文字の扱いは環境によって異なるため、作成端末では表示できても、アップロード先では見つからない原因になります。

たとえば、MTL内に

map_Kd Texture.JPG

と書かれている一方、実際のファイル名が

texture.jpg

である場合、大文字と小文字を同一として扱う環境では読み込めることがあります。しかし、両者を区別する処理環境では別ファイルと判断され、テクスチャが見つかりません。

安全な運用としては、OBJ、MTL、画像のファイル名を半角英数字中心にそろえ、大文字と小文字の使い方も統一します。たとえば、すべて小文字で管理すれば、表記揺れを減らせます。フォルダ名についても同様で、

Textures

と

textures

が混在しないようにします。

拡張子の違いも確認が必要です。ファイル一覧では拡張子が非表示になっていることがあり、実際には

texture.jpg.jpg

のように二重になっている場合があります。反対に、見た目では

texture.jpg

と表示されていても、実際の画像形式や拡張子が異なることもあります。

MTLに

texture.jpeg

と記録されているのに、実ファイルが

texture.jpg

であれば、画像としては近い形式でもファイル名としては一致しません。拡張子を変更する場合は、画像ファイルの名前だけでなく、MTL内の参照も同じ表記に直します。

全角文字と半角文字の混在にも注意します。数字、空白、記号などは見た目が似ていても、内部では異なる文字として扱われます。特に、全角空白が含まれていると、ファイル名を目視しただけでは違いに気づきにくくなります。

日本語のファイル名やフォルダ名が必ず使用できないわけではありませんが、アップロード先、圧縮処理、解凍処理、文字コードの扱いによっては、文字化けや参照不一致が発生する可能性があります。異なる環境間で受け渡す点群OBJでは、半角英数字とアンダースコアなどに整理すると問題を避けやすくなります。

ファイル名を短く整理するときは、OBJ、MTL、画像を同時に確認してください。たとえば、MTLを

material.mtl

に変更した場合はOBJ内の

mtllib

も変更します。画像を

texture_01.jpg

に変更した場合は、MTL内の該当する

map_Kd

を変更します。

複数の画像を使用しているデータでは、連番の桁数にも注意します。

texture_1.jpg

と

texture_01.jpg

は別名です。撮影画像を一括変換した際に連番形式が変わると、MTLが古い名前を参照したままになることがあります。

ファイル名を一括置換する作業では、意図しない箇所まで変更しないようにします。たとえば、

texture_1

を

texture_01

に置換した結果、すでに

texture_10

となっている名前まで変わることがあります。大量の画像を扱う場合は、変更後にMTL内のすべての参照先が実在するかを一覧で照合すると安全です。

さらに、同じ名前のファイルが異なる階層に存在している場合は、どちらが参照されているか分かりにくくなります。作成時に古い画像と修正版画像が別フォルダへ残っていると、作成環境では古い画像を参照し、アップロード用フォルダには修正版だけが入っているといった不整合が起こります。不要な重複ファイルを整理し、参照対象を明確にしておくことが重要です。

確認5 パス区切りや空白文字が解析を妨げていないか

ファイル名と階層が合っていても、パスの書き方によってテクスチャを読み込めない場合があります。特に注意したいのが、フォルダを区切る記号、空白を含む名前、特殊記号、相対階層を示す記述です。

フォルダ区切りには、向きの異なる二種類の記号が使われることがあります。作成環境によっては一方の形式で書き出されますが、アップロード先の解析処理が同じように解釈するとは限りません。異なる環境へ渡すOBJ一式では、一般的な相対参照として扱いやすい区切り方へ統一し、実際のフォルダ構成と一致しているかを確認します。

たとえば、MTLに記録された画像パスが

textures\texture.jpg

である場合と、

textures/texture.jpg

である場合では、読み込み処理によって結果が異なる可能性があります。作成環境で表示できることだけを根拠にせず、アップロード先が受け付ける形へ整理します。

フォルダ名や画像名に空白を含める場合も注意が必要です。

site texture.jpg

のような名前は、人が読むには分かりやすい一方、解析処理によっては空白以降を別の情報として解釈する可能性があります。MTLの画像指定には追加設定が同じ行に含まれることもあるため、空白を含むパスの扱いは処理ごとの差が出やすい部分です。

トラブルを避けるには、空白をアンダースコアへ置き換え、

site_texture.jpg

のような名前にします。フォルダ名も

project data

ではなく

project_data

のように整理すると、参照の曖昧さを減らせます。

丸括弧、角括弧、引用符、記号、連続した点などを含む名前も、アップロード先や圧縮処理で特別な意味として扱われる場合があります。ファイル名には、半角英字、数字、アンダースコア、必要に応じてハイフン程度を使用し、単純な構成にするほうが安全です。

相対パスに

../

のような上位階層を示す記述が含まれている場合も確認します。これは現在の場所から一つ上のフォルダへ戻ることを表しますが、アップロード先では指定されたファイル群の外側へアクセスできないことがあります。

たとえば、MTLに

../images/texture.jpg

と書かれている場合、ローカル環境ではMTLの一つ上にある

images

フォルダを参照できます。しかし、MTLとOBJを含むフォルダだけをアップロードすると、上位階層の画像はアップロード対象に含まれません。また、安全上の理由などから、上位階層への参照を受け付けない処理も考えられます。

この場合は、画像をOBJ一式のフォルダ内へ移し、上位階層へ戻らなくても参照できる構成にします。移動後はMTL内のパスも変更します。アップロード用データは、指定した一つのフォルダ内で完結させると管理しやすくなります。

パスの先頭に

./

が付いている場合は、現在のフォルダを表す意図があります。多くの処理で扱える表現ですが、単純なファイル名だけでも参照できる構成なら、不要な記号を省いたほうが互換性を確保しやすいことがあります。

引用符で囲まれたパスも確認します。空白を含むファイル名を表すために引用符が追加されることがありますが、解析処理によっては引用符そのものをファイル名の一部として扱う可能性があります。空白を使わない名前へ変更し、引用符を必要としない参照へ整理すると切り分けが容易です。

また、コピーしたパスの末尾に空白が残っていないか、行末に余分な文字が付いていないかも確認します。MTLの一行を目視するだけで分からない場合は、参照行を新しく入力し直す方法が確実です。

確認6 アップロード対象に必要な関連ファイルが含まれているか

相対パスが正しくても、その参照先ファイルがアップロードされていなければテクスチャは表示されません。点群 OBJ アップロードでは、OBJだけを選択すれば必要なファイルが自動的にすべて取得されるとは限りません。

まず、アップロード対象にOBJ、MTL、画像が含まれているかを確認します。OBJ内に複数のMTL参照がある場合は、参照されているMTLをすべて含めます。各MTL内で複数画像を参照している場合は、それらの画像もすべて必要です。

撮影画像を大量に利用したモデルでは、画像枚数が多くなります。アップロード用フォルダを作る途中で一部だけコピーした場合、モデル全体ではなく一部の面だけテクスチャが欠けることがあります。画像の総数だけを見るのではなく、MTLに記録された参照先と実ファイルを照合してください。

不要と思って除外した画像が、実際には小さな範囲に割り当てられている場合もあります。見た目が似た画像や、ファイル容量が小さい画像であっても、MTLから参照されているならアップロード対象に含める必要があります。

圧縮ファイルを使用する場合は、圧縮前のフォルダと圧縮後の内容が一致しているかを確認します。圧縮処理の設定によっては、隠しファイルや特定の拡張子が除外される可能性があります。また、圧縮ファイルを別の場所で展開し、OBJ、MTL、画像がそろっているかを確認すると、作成時の取りこぼしを発見できます。

画像ファイルが破損していないかも確認します。ファイル名が存在していても、画像を開けない、容量が極端に小さい、転送途中で内容が欠けている場合は、テクスチャとして読み込めません。画像を個別に開き、正常に表示できるかを調べます。

画像の形式についても、アップロード先が対応している範囲を確認する必要があります。一般的な画像形式であっても、色の持ち方、圧縮方式、透明度、付加情報などによって読み込み結果が異なる可能性があります。相対パスを修正しても表示されない場合は、検証用に一枚の画像を一般的な設定で保存し直し、その画像だけを参照させて切り分けます。

アップロード時の容量制限やファイル数制限にも注意が必要です。処理の途中で一部ファイルだけが受け付けられなかった場合、OBJとMTLは存在するのに、画像だけが不足することがあります。アップロード完了の表示だけで判断せず、エラー、除外ファイル、処理ログなどを確認します。

同じ名前のファイルがアップロード先にすでに存在する場合、上書き、名称変更、重複排除などが行われる可能性もあります。たとえば、アップロード時に

texture.jpg

が自動的に別名へ変更されると、MTLは元の名前を参照したままになります。アップロード後に保存されたファイル名を確認できる場合は、MTLの指定と一致しているかを見ます。

関連ファイルをまとめて選択する方法と、圧縮して一括アップロードする方法では、階層の扱いが異なることがあります。個別選択で失敗した場合は階層を保った圧縮データを試し、圧縮データで失敗した場合は同一階層へ単純化した小規模データを試すと、アップロード方法による差を確認できます。

ただし、原因が分からないまま元データを何度も変更すると、どの修正が有効だったのか判断しにくくなります。変更は一項目ずつ行い、アップロード結果を記録してください。

相対パスを直しても表示されない場合の切り分け

六つの相対パス確認を行ってもテクスチャが表示されない場合は、参照先以外の情報を切り分けます。形状表示の成否、材質適用の成否、画像読込の成否を分けて考えることが重要です。

最初に、OBJへテクスチャ座標が含まれているかを確認します。OBJでは、頂点座標とは別に、画像上のどの位置を面へ割り当てるかを示す情報が記録されます。MTLと画像を読み込めても、この対応情報が欠けていれば、意図した位置へ画像を貼り付けられません。

OBJ内にテクスチャ座標を表す行があるか、面の記述でその座標が参照されているかを確認します。頂点座標と面情報だけで構成されたOBJは、立体形状を表示できても、画像を面に対応させる情報を持っていない場合があります。

点群からメッシュを作成した時点では画像が表示されていても、OBJを書き出す際にテクスチャ座標や材質の出力を無効にしている可能性があります。エクスポート設定で、材質、テクスチャ座標、画像の出力が含まれているかを見直します。

次に、材質名の対応を確認します。OBJ内の

usemtl

と、MTL内の

newmtl

が一致していなければ、MTLが読み込まれていても面へ割り当てられません。名前の前後に空白がある、文字の大小が違う、書き出し後に片方だけ変更しているといった不整合を探します。

モデルの一部だけテクスチャが表示されない場合は、材質ごとに確認します。正常な面と欠落する面が別の材質名を使用しているなら、欠落側の材質定義、画像参照、画像ファイルに原因が絞られます。

画像の縦横サイズが極端に大きい場合や、画像枚数が非常に多い場合は、読み込み負荷によって処理が完了しない可能性もあります。ただし、最初から解像度を大きく落とすのではなく、原本を残したうえで検証用の複製を作成し、段階的に条件を変えます。

検証用には、モデルを小さな範囲に分割し、材質一つ、画像一枚の構成を作ると有効です。この最小構成で表示されれば、基本的なOBJ、MTL、画像形式には問題がなく、元データのファイル数、材質数、画像サイズ、階層などが影響していると考えられます。

最小構成でも表示されない場合は、OBJの記述、MTLの記述、画像形式、アップロード先の対応条件を確認します。別の閲覧環境で同じ一式を開き、テクスチャが表示されるかを見る方法もあります。

別環境で正常に表示される場合は、アップロード先の対応条件や変換処理に原因がある可能性があります。別環境でも表示されない場合は、書き出しデータそのものに不整合が残っている可能性が高まります。

なお、テクスチャが暗い、透明になる、色が異なるといった症状は、相対パスの欠落とは別問題の場合があります。画像がまったく表示されず単色になる状態と、画像は表示されるが見え方が異なる状態を分けて確認してください。

再アップロード前に行う安全な修正手順

点群OBJの修正では、元ファイルを直接編集せず、アップロード用の複製を作成します。OBJやMTLはテキストとして編集できますが、一文字の誤りで参照関係や材質定義が崩れる可能性があります。必ず修正前の一式を保存しておきます。

最初に、OBJ、MTL、画像を一つの作業フォルダへ集めます。複数のモデルが混ざっている場合は、対象モデルだけを別フォルダへコピーします。どの画像が必要か分からない場合は、MTL内の画像参照を確認し、参照されているファイルを抽出します。

次に、ファイル名を整理します。大文字と小文字、全角と半角、空白、特殊記号を見直し、半角英数字を中心とした一意の名前へ変更します。変更した名前は、OBJとMTLの参照記述にも反映します。

その後、OBJ内の

mtllib

を確認し、同じフォルダにあるMTLの名前と一致させます。続いてMTL内の画像参照を確認し、同じフォルダに置いた画像名だけを指定します。この段階では、原因切り分けのために下位フォルダを使わず、単純な構成にします。

修正後は、OBJを別の閲覧環境で開きます。作成時に使用した環境だけで確認すると、元の保存場所にある画像を読み込んでしまうことがあります。アップロード用フォルダを別の場所へコピーし、コピー先のデータだけでテクスチャが表示されることを確認します。

正常に表示されたら、アップロード先の条件に合わせて一式を準備します。圧縮が必要な場合は、フォルダ内の相対関係を維持したまま圧縮します。圧縮後は一度展開し、内容と表示を再確認します。

再アップロード時は、古いデータとの混在を避けます。同じモデル名で上書きすると、以前のMTLや画像が残り、修正後の結果を正しく評価できないことがあります。検証用の識別名を付けるなど、旧データと区別できる状態で確認します。

一度に複数の修正を行った場合でも、作業記録は残しておきます。ファイル名、階層、画像形式、画像サイズ、MTLの記述など、どこを変更したかを記録すると、次回同じ症状が起きた際に短時間で対応できます。

アップロード後は、モデル全体を回転させ、上面、側面、裏側、細部を確認します。一見正常でも、一部の材質だけ画像が欠けている可能性があります。複数画像を使用している場合は、モデル全体を確認してから修正完了と判断します。

点群OBJのテクスチャ欠落を防ぐ運用ルール

相対パスの問題は、アップロード直前の確認だけでなく、書き出し時からの運用で予防できます。担当者ごとに保存場所や命名方法が異なると、同じ現場内でも参照関係が複雑になります。

まず、モデル一式を保存する標準フォルダを決めます。OBJ、MTL、画像をどの階層へ置くかを統一し、案件ごとに同じ構成を使用します。階層を分ける場合は、MTLや画像の保存場所を固定し、途中で移動しないようにします。

ファイル名の規則も決めます。現場名、計測日、範囲、連番などを必要に応じて組み合わせつつ、半角英数字と統一した区切り記号で管理します。同名の

model.obj

や

texture.jpg

を複数案件で繰り返し使用すると、集約時に上書きしやすいため、案件内で一意になる名前を付けます。

書き出し完了後は、OBJだけを確認するのではなく、MTLと画像が出力されているかを確認します。作成画面でテクスチャが表示されていることと、書き出したOBJ一式が独立して表示できることは別です。

受け渡し前には、新しいフォルダへ一式をコピーして確認します。この確認を標準工程にすると、元の作業フォルダや画像保管場所への依存を発見できます。別の担当者が別端末で開く確認まで行えると、環境依存の問題も見つけやすくなります。

修正履歴を残すことも重要です。OBJやMTLを手作業で変更した場合は、変更日時、変更内容、変更者、確認結果を記録します。最新ファイルが分からなくなると、修正前のMTLを誤ってアップロードする可能性があります。

画像を差し替える場合は、同じ名前で上書きするだけでなく、画像の縦横比や向きが変わっていないかを確認します。相対パスが正しくても、異なる内容の画像へ差し替えると、表面の位置が合わなくなることがあります。

点群データを定期的に更新する業務では、OBJを書き出すたびに画像名や材質名が変わることがあります。前回のMTLや画像を流用すると、新しいOBJの材質構成と一致しない可能性があります。更新時はOBJだけを差し替えず、同じ書き出しで生成されたMTLと画像を一つの組として管理します。

また、アップロード先に合わせた検証用サンプルを用意しておくと便利です。小さなOBJ、MTL一つ、画像一枚で構成された正常データを保管し、問題発生時に同じ環境へアップロードします。正常サンプルも表示されない場合は、元データではなくアップロード環境や処理状態を確認する判断材料になります。

まとめ

点群OBJの形状は表示されるのにテクスチャだけが表示されない場合、OBJからMTL、MTLから画像へ続く参照関係が途切れている可能性があります。最初にOBJ内のMTL参照を確認し、次にMTL内の画像パスを確認します。そのうえで、フォルダ構成、ファイル名の大文字と小文字、拡張子、パス区切り、空白や特殊記号、アップロード対象の不足を順番に切り分けることが重要です。

確認時は、OBJ、MTL、画像を同じフォルダに置き、短いファイル名と単純な相対パスで最小構成を作ると、原因を絞り込みやすくなります。最小構成で表示できた後に、必要な階層や画像を段階的に戻せば、どの変更によって参照が切れるのかを把握できます。

相対パスを修正しても表示されない場合は、テクスチャ座標、材質名、画像形式、画像サイズ、アップロード先の対応条件を確認します。元ファイルを直接変更せず、複製したデータで一項目ずつ検証することが、安全で再現性のある対応につながります。

現場で取得した点群や画像を活用するには、計測だけでなく、書き出し後のファイル管理とアップロード前確認までを一つの工程として整えることが大切です。点群の取得から確認、共有までの作業をより扱いやすくしたい場合は、現場での計測とデータ活用を支援するLRTK Phoneの利用も検討できます。

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

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