点群OBJにおけるmtllibの役割
点群 OBJ アップロードを行った後、形状や点の位置は正常に表示されているのに、色や材質、テクスチャだけが反映されないことがあります。このような症状が出たときに確認したいのが、OBJファイル内のmtllib記述です。 OBJは、頂点座標、テクスチャ座標、法線、面などをテキスト形式で記録できるデータ形式です。一方、材質の色やテクスチャ画像への参照は、一般的にMTLファイルへ分けて保存されます。OBJファイルに書かれるmtllibは、どのMTLファイルを読み込むかを指定するための記述です。 たとえば、OBJファイルと同じ場所に「sample.mtl」というファイルがある場合、OBJファイルには次のような行が記録されます。 mtllib sample.mtl この一行がないと、読み込み側は参照すべきMTLファイルを特定できません。OBJ、MTL、テクスチャ画像がすべて同じフォルダにそろっていても、OBJからMTLへの参照がなければ、材質情報が自動的に結び付かないことがあります。 ただし、すべての点群OBJにmtllibが必要なわけではありません。頂点座標だけを保存したOBJや、頂点行に色成分を付加したデータでは、MTLファイルを使用しない場合があります。また、点だけで構成され、面や材質が割り当てられていないOBJでは、mtllibがなくても意図したデータとして成立します。 そのため、mtllibが見当たらないという事実だけで、直ちにファイル破損と判断してはいけません。まず、そのOBJが材質やテクスチャを必要とするデータなのかを確認する必要があります。テクスチャ付きの面モデルとして出力したはずなのに色が表示されない場合や、OBJと一緒にMTLファイルが生成されているのに読み込まれない場合は、mtllibの記述漏れや参照不整合を疑う価値があります。 点群 OBJ アップロードのトラブルでは、画面上の症状だけを見て原因を決めつけると、不要な再計測や再出力につながります。OBJからMTL、MTLから画像という参照関係を順番に確認すれば、どの段階で情報が途切れているかを効率よく特定できます。
チェック1:OBJファイル内にmtllib行が存在するか
最初のチェック項目は、OBJファイル内にmtllibで始まる行が実際に存在するかどうかです。OBJはテキスト形式なので、一般的なテキスト閲覧機能で内容を確認できます。元データを直接変更する前に複製を作り、確認用のファイルを開くと安全です。 ファイル内検索で「mtllib」を探します。正常な例は次のような形式です。 mtllib terrain_material.mtl 行の先頭にmtllibがあり、その後ろに半角空白を挟んでMTLファイル名が記述されていれば、少なくとも参照命令は存在しています。 検索してもmtllibが見つからない場合は、OBJがどのような内容なのかを続けて確認します。OBJ内に「usemtl」で始まる行があるにもかかわらず、mtllibがない場合は、材質を使用する指示だけが残り、材質定義ファイルへの参照が欠けている可能性があります。 たとえば、次のような記述がある状態です。 usemtl ground_surface f 1/1/1 2/2/2 3/3/3 usemtlは、後続の面などに適用する材質名を指定する記述です。しかし、どのMTLファイルからその材質を読み込むかを示すmtllibがなければ、読み込み側はground_surfaceの定義を見つけられないことがあります。 一方、OBJ内にusemtlもなく、頂点を示すv行だけが並んでいる場合は、mtllibがないこと自体は不自然ではありません。頂点行が次のような構成であれば、材質ファイルを使用しない単純な点群として出力された可能性があります。 v 12.345 67.890 3.210 v 12.348 67.894 3.208 v 12.351 67.899 3.205 一部のデータでは、座標の後ろに色成分が追加されることもあります。 v 12.345 67.890 3.210 0.52 0.48 0.41 OBJの基本的な運用では、材質や画像をMTL経由で参照する方法がよく使われますが、頂点色の扱いは読み込み環境によって異なります。出力元では色付きに見えていても、アップロード先が頂点色を解釈しなければ、白色や単色で表示される場合があります。この症状はmtllib漏れに似ていますが、原因は対応機能の違いです。 mtllib行が存在していても、行頭に意図しない文字が入っていると認識されない可能性があります。特にファイルの先頭にあるmtllibだけが読み込まれない場合は、不可視の制御文字や文字コードを示す情報が付加されていないか確認します。多くの読み込み環境は問題なく処理しますが、厳密な解析を行う環境では、最初の命令を正しく判定できないことがあります。 また、次のような記述ミスにも注意が必要です。 mtlib terrain_material.mtl mtllibterrain_material.mtl MTLLIB terrain_material.mtl 最初の例は文字が一つ不足しています。二つ目は命令とファイル名の間に空白がありません。三つ目は大文字になっています。読み込み側が柔軟に解釈する場合もありますが、OBJの命令は規定どおりの小文字で書き、半角空白で区切るのが安全です。 mtllibは、コメント行や頂点行より後ろに書かれていても読み込まれる場合があります。ただし、解析方法は読み込み環境によって異なるため、ファイルの先頭付近にまとめて記述しておくと問題を避けやすくなります。コメントの直後、頂点や面の記述が始まる前に置く構成が分かりやすいでしょう。 複数のMTLファイルを参照するOBJもあります。その場合は複数のmtllib行を記述する方法や、一つの行に複数のファイル名を並べる方法が使われることがあります。ただし、アップロード先が複数参照に対応しているとは限りません。トラブルを減らすには、可能であれば材質定義を一つのMTLファイルへ整理し、参照関係を単純にすることが有効です。
チェック2:mtllibのファイル名と実ファイル名が一致しているか
mtllib行が存在していても、そこに書かれた名前と実際のMTLファイル名が一致していなければ、材質は読み込まれません。実務では、mtllibの記述漏れよりも、名称変更後の参照更新漏れが原因になることもあります。 たとえば、OBJ内に次の記述があるとします。 mtllib site_model.mtl この場合、アップロードするデータの中に「site_model.mtl」という名前のファイルが必要です。「site-model.mtl」「site_model_01.mtl」「Site_Model.mtl」などは、人が見れば似ていますが、ファイルとしては別の名前です。 大文字と小文字の扱いは、作業環境やアップロード先によって異なります。手元の環境では大文字と小文字の違いを意識せずに開けても、アップロード後の保存環境では区別されることがあります。ローカルでは正常なのに点群 OBJ アップロード後だけ材質が消える場合は、名称の大文字と小文字を一文字ずつ照合してください。 拡張子の確認も重要です。画面上では拡張子が省略されていることがあるため、実際には「site_model.mtl.txt」のような名前になっている場合があります。ファイル一覧ではMTLに見えても、テキストファイルとして別の拡張子が追加されていれば、mtllibから参照できません。 ファイル名の前後に空白が入っていないかも確認します。末尾の空白は画面上で気付きにくく、ファイルを複製したり外部から受け取ったりした際に混入する可能性があります。また、全角空白と半角空白の違いも、目視だけでは判別しにくいことがあります。 ファイル名に空白を含めると、mtllib行の解析で問題が起こる場合があります。たとえば、次のような記述です。 mtllib site model.mtl この行を一つのファイル名として処理するか、複数のファイル名として処理するかは、読み込み側の実装に左右されます。引用符で囲めば必ず解決するとは限りません。OBJとMTLの互換性を優先するなら、ファイル名には半角英数字とアンダースコアを使用し、空白や特殊記号を避ける方法が安全です。 日本語のファイル名も、すべての環境で問題になるわけではありません。しかし、文字コードやアップロード処理との組み合わせによっては、参照名が変換されたり、読み込み側が正しく解釈できなかったりする可能性があります。元の名称を保持する必要がなければ、OBJ、MTL、画像のファイル名を半角英数字中心に統一すると切り分けが容易になります。 MTLファイルの名称を変更した場合は、OBJ内のmtllibも必ず更新します。反対に、OBJ内の記述だけを書き換えた場合は、対応するMTLが実在することを確認します。どちらか一方だけを変更すると、参照が切れます。 複数回の書き出しを行う作業では、古いOBJと新しいMTLが混在することがあります。ファイル名が同じでも、内容の組み合わせが異なれば、材質名や画像参照が一致しない可能性があります。更新日時だけに頼らず、OBJとMTLが同じ書き出し処理で生成された一組であることを確認してください。 パス付きの記述にも注意が必要です。次の例では、OBJと同じ場所ではなく、materialsという下位フォルダにあるMTLを参照しています。 mtllib materials/site_model.mtl アップロード時にmaterialsフォルダが失われたり、MTLだけがOBJと同じ階層へ移動されたりすると、この参照は無効になります。手元で正常に表示できても、アップロード時に階層が変われば材質が消えるため、ファイル名だけでなく相対的な保存場所も確認する必要があります。
チェック3:usemtlとnewmtlの対応が取れているか
mtllibが正しく記述され、指定されたMTLファイルが存在していても、OBJ内のusemtlとMTL内のnewmtlが一致していなければ、目的の材質は適用されません。 OBJ側では、次のように材質名を指定します。 usemtl surface_01 MTL側には、同じ名前の材質定義が必要です。 newmtl surface_01 Kd 0.800 0.800 0.800 map_Kd surface_01.jpg この対応関係では、OBJのusemtlが「surface_01」を要求し、MTLのnewmtlが「surface_01」という材質を定義しています。名前が完全に一致していれば、読み込み側は材質の色やテクスチャ画像を適用できます。 次のように名称がずれていると、参照は成立しません。 OBJ側が次の記述であるとします。 usemtl surface_01 MTL側が次の記述では、末尾の番号が異なります。 newmtl surface_1 アンダースコアの有無、数字の桁、英字の大文字と小文字、前後の空白なども確認してください。見た目がほぼ同じでも、別の材質名として処理される可能性があります。 OBJ内に複数のusemtlがある場合は、それぞれに対応するnewmtlがMTL内に存在するかを確認します。一つだけ定義が欠けていると、モデル全体ではなく特定部分だけが白くなったり、別の材質で表示されたりすることがあります。 反対に、MTL内に多くのnewmtlがあっても、OBJからusemtlで呼び出されていなければ、その材質は使用されません。書き出しを繰り返したデータでは、不要になった材質定義がMTL内に残ることがあります。未使用の定義があること自体は必ずしもエラーではありませんが、確認対象が増えて原因を見つけにくくなります。 点群OBJでは、面のないデータにusemtlだけが残っているケースもあります。材質がどの要素に適用されるかは、OBJの構成と読み込み側の対応機能によって変わります。点に対する材質指定を解釈しない環境では、mtllib、usemtl、newmtlが正しくても期待どおりに表示されないことがあります。 テクスチャを面へ貼り付ける場合は、usemtlだけでなく、テクスチャ座標を示すvt行と、頂点番号とテクスチャ座標番号を関連付けるf行も必要です。たとえば、次のような構成です。 v 0.000 0.000 0.000 v 1.000 0.000 0.000 v 1.000 1.000 0.000 vt 0.000 0.000 vt 1.000 0.000 vt 1.000 1.000 usemtl surface_01 f 1/1 2/2 3/3 mtllibだけを追加しても、vtや面とテクスチャ座標の対応が欠けていれば、画像は意図した位置に表示されません。色が出ない原因をmtllibだけに限定せず、材質を使うための関連記述がそろっているかを確認することが重要です。 usemtlの位置も見ておきます。一般的には、材質を適用したい面の前にusemtlを記述します。材質を切り替える場合は、新しい面群の直前で別のusemtlを指定します。書き出しや手作業による編集で位置が入れ替わると、意図しない面に材質が割り当てられることがあります。 材質名を修正する場合は、OBJとMTLの両方を同時に変更します。片方だけを直すと別の不整合を生むため、変更前後の名称を記録しながら作業すると安全です。
チェック4:MTLからテクスチャ画像までの参照がつながっているか
OBJからMTLへの参照が正常でも、MTLからテクスチャ画像への参照が切れていれば、画像は表示されません。この状態ではmtllibが正しく存在するため、OBJだけを調べても原因を発見できません。 一般的なMTLでは、newmtlで材質名を定義し、map_Kdで色として使用する画像を参照します。 newmtl surface_01 Kd 1.000 1.000 1.000 map_Kd surface_01.jpg この場合、「surface_01.jpg」という画像が、MTLから見て指定された場所に存在する必要があります。 OBJ、MTL、画像をすべて同じフォルダへ保存する構成であれば、参照は比較的分かりやすくなります。 survey_data/ sample.obj sample.mtl surface_01.jpg MTL内のmap_Kdが単純なファイル名であれば、同じ階層から画像を探す読み込み環境が多くなります。ただし、実際の探索方法はアップロード先によって異なるため、対応仕様の確認も必要です。 画像をtexturesというフォルダに分ける場合は、MTL内の記述も階層に合わせます。 map_Kd textures/surface_01.jpg アップロード時にtexturesフォルダを含めなければ、画像参照は失われます。画像だけをOBJと同じ場所に移動しても、MTLの記述がtexturesのままであれば読み込めません。 パス区切り文字にも注意します。作業環境固有の区切り方や絶対パスが書き込まれていると、別の環境へ移したときに参照できないことがあります。 次のように、作成した端末内の保存場所全体が記録されている場合は、他の環境では同じ場所が存在しません。 map_Kd C:/project/data/textures/surface_01.jpg 共有やアップロードを前提にするなら、OBJやMTLの保存場所を基準にした相対パスへ整理します。絶対パスは作成環境では動作しても、受け渡し後に切れる可能性が高いためです。 画像の実ファイル名についても、MTLの記述と一文字ずつ比較します。大文字と小文字、拡張子、連番、アンダースコアの有無を確認してください。「surface_01.jpg」と「surface_01.JPG」が別ファイルとして扱われる環境もあります。 画像形式がアップロード先で利用できるかも確認が必要です。MTLが画像を正しく参照していても、読み込み側がその画像形式や色表現を扱えなければ、テクスチャが表示されないことがあります。互換性を優先する場合は、一般的に扱われやすい画像形式と標準的な色設定を使用し、特殊な圧縮や追加情報への依存を避けます。 画像が破損していないかも確認します。ファイル名とパスが正しくても、画像の保存が途中で失敗していたり、容量がゼロに近かったりすれば読み込めません。画像単体を開き、全体が正常に表示されるかを調べます。 MTL内にはmap_Kd以外の画像参照が含まれる場合もあります。凹凸や透明度などに関係する画像が指定されていても、アップロード先がすべての記述に対応しているとは限りません。まずは基本となる色用画像が表示されるかを確認し、その後で追加の材質表現を検証すると切り分けやすくなります。 透明部分がある画像では、MTLの透明度設定と画像側の透明情報が組み合わされることがあります。読み込み環境によって解釈が違うため、透明部分だけが黒くなる、材質全体が薄くなる、裏側が不自然に見えるといった症状が出る場合があります。この問題はmtllibの記述漏れとは異なるため、材質自体が読み込まれているかと、透明度の表現が正しいかを分けて確認してください。 ファイル名に空白、日本語、括弧、記号が多く含まれている場合も、参照処理が不安定になる可能性があります。OBJ、MTL、画像を半角英数字とアンダースコア中心の名称へそろえると、アップロード先を変更した際の互換性を高めやすくなります。
チェック5:アップロード時のファイル構成が維持されているか
手元では正常に表示できるのに、点群 OBJ アップロード後だけ材質やテクスチャが失われる場合は、アップロード時のファイル構成を確認します。 OBJの材質表示は、一つのファイルだけで完結しないことがあります。一般的には、OBJ、MTL、テクスチャ画像を一組として扱います。OBJだけを選択してアップロードすると、mtllibが正しくても参照先のMTLが存在しないため、材質は読み込まれません。 まず、アップロード画面が複数ファイルの同時選択に対応しているかを確認します。OBJ、MTL、画像を個別に選択できる場合は、必要なファイルをすべて含めます。フォルダ単位や圧縮ファイルでの登録に対応している場合は、元の階層を維持できる方法を選びます。 ただし、圧縮ファイルを使えば必ず解決するわけではありません。アップロード先が圧縮形式を受け付けるか、展開後のフォルダ階層を維持するか、対応するファイルだけを抽出するかによって結果が変わります。事前に小規模なテストデータで確認すると安全です。 次のような階層があるとします。 survey_data/ model.obj materials/ model.mtl textures/ surface_01.jpg OBJ内が次の記述であれば、model.objから見てmaterialsフォルダ内のMTLを参照しています。 mtllib materials/model.mtl さらにMTLが次の記述なら、パスの基準をどこに置くかに注意が必要です。 map_Kd ../textures/surface_01.jpg 読み込み側がMTLのある場所を基準に画像を探す場合は、この相対パスでtexturesフォルダへ移動できます。しかし、アップロード処理が上位階層への移動を許可しなかったり、すべてのファイルを同一階層へ並べ替えたりすると、参照が切れる可能性があります。 互換性を優先するなら、OBJ、MTL、画像を同じ階層に置き、単純なファイル名だけで参照する方法が分かりやすくなります。 survey_data/ model.obj model.mtl surface_01.jpg OBJは次のように記述します。 mtllib model.mtl MTLは次のように記述します。 map_Kd surface_01.jpg この構成は階層の移動に依存しないため、アップロード時の参照トラブルを減らしやすくなります。ただし、画像数が多い案件ではファイル管理が煩雑になるため、使用するアップロード先の対応範囲を確認したうえで構成を決めます。 アップロード後にファイル名が変更されていないかも確認します。同名ファイルの重複を避けるために自動的な番号が追加される仕組みでは、OBJやMTL内の参照名と保存後の名称が一致しなくなる可能性があります。 たとえば、アップロード後に「model.mtl」が「model_1.mtl」へ変更された場合、OBJ内の「mtllib model.mtl」は古い名前を指したままです。画像についても同様です。アップロード後のファイル一覧や処理結果を確認できる場合は、名称が保持されているかを調べてください。 ファイル容量の上限や一度に登録できるファイル数も影響します。OBJは受理されても、MTLや画像だけが上限超過などで除外されると、形状だけが表示される状態になります。処理完了の表示だけで判断せず、必要なファイルがすべて登録されたかを確認することが大切です。 アップロードをやり直す際は、古いデータが残っていないかにも注意します。同じ名称で差し替えた場合、表示側の一時データや変換済みデータが残り、修正前の結果が表示されることがあります。別名でテストする、アップロード先の再変換を実行する、表示を更新するなど、修正内容が確実に反映された状態で確認します。
mtllib記述漏れと似た症状を切り分ける方法
材質や色が表示されないとき、原因が必ずmtllibにあるとは限りません。誤った箇所を修正しないためには、症状ごとに参照関係を切り分ける必要があります。 形状は表示されるが全体が白い場合は、OBJ自体の頂点や面は読み込めています。この場合、mtllibの欠落、MTLファイルの不足、usemtlとnewmtlの不一致、画像参照切れ、材質機能の非対応などが候補になります。 一部の面だけが白い場合は、mtllib全体の欠落よりも、特定のusemtlに対応するnewmtlがない、特定の画像だけが不足している、面の前に適切なusemtlが置かれていないといった原因を疑います。 画像は表示されるが位置がずれている場合は、mtllibよりもテクスチャ座標の問題である可能性が高くなります。vt行の値、f行に書かれたテクスチャ座標番号、画像の上下方向の解釈などを確認します。 点だけが単色で表示される場合は、そのOBJが頂点色を持つ点群なのか、MTLを使う面モデルなのかを確認します。頂点色に対応していないアップロード先では、mtllibを追加しても色が復元しないことがあります。 OBJを開けない、頂点数がゼロと表示される、形状自体が出ない場合は、mtllibより前にOBJの構文や座標値を調べます。v行の書式、区切り文字、数値表現、面番号、文字コードなどに問題がある可能性があります。材質参照は形状の読み込み後に関係する情報なので、形状すら認識されない場合は優先順位を下げます。 黒一色で表示される場合は、材質の基本色、照明条件、法線、画像の読み込み失敗など複数の原因が考えられます。MTLが読み込まれているものの、材質設定が読み込み側の想定と合っていない場合もあります。 透明になって見えない場合は、MTL内の透明度に関する値を確認します。透明度の解釈は読み込み環境によって差があるため、同じ値でも見え方が変わることがあります。検証時は一度不透明な設定にし、形状と基本色が表示されるかを確認すると原因を分離できます。 ファイル名やパスを修正しても変化がない場合は、アップロード後の変換処理が更新されているかを確認します。古い変換結果を見続けていると、正しい修正を行っていても効果がないように見えます。
記述漏れを安全に修正する実務手順
mtllibの記述漏れが疑われる場合でも、元ファイルへすぐに一行を追加するのではなく、OBJ、MTL、画像の関係を確認してから修正します。 最初に元データ一式を複製し、修正前の状態を保存します。OBJはテキスト編集が可能ですが、一文字の誤りで形状の読み込みに影響することがあります。問題が起きたときに戻せるよう、原本と修正版を分けて管理します。 次に、OBJと同時に出力されたMTLが存在するかを確認します。MTLが存在しない状態で、推測したファイル名をmtllibへ追加しても材質は復元しません。出力元に戻り、材質を含める設定で再出力する必要がある場合もあります。 MTLが存在する場合は、ファイルを開いてnewmtlが記述されていることを確認します。さらに、OBJ内のusemtlと同じ名前があるかを調べます。対応する材質定義が確認できたら、そのMTLの正確なファイル名をmtllibへ記述します。 OBJとMTLを同じフォルダに置く場合は、次のような単純な記述にします。 mtllib model.mtl mtllib行は、OBJの先頭付近に配置します。コメントがある場合は、その直後でも構いません。頂点や面の大量の記述に埋もれない位置へ置くことで、後から確認しやすくなります。 次に、MTL内の画像参照を確認します。画像も同じフォルダに置く場合は、map_Kdにファイル名だけを記述します。 map_Kd texture_01.jpg 名称を変更した場合は、OBJ、MTL、画像の参照を一括して更新します。修正箇所ごとに別の名前を使うと不整合が起きやすいため、基準となる名称を決めてから変更してください。 文字コードは、アップロード先が扱いやすい一般的な形式へ統一します。ファイル名や材質名に日本語や特殊記号が含まれていて問題が疑われる場合は、半角英数字とアンダースコアを中心とした名称へ置き換えます。 修正後は、いきなり大規模なデータをアップロードするのではなく、必要最小限の構成で検証します。OBJ、MTL、画像一枚だけで材質が表示されるかを確かめ、正常に読み込めたら残りの材質や画像を追加します。 複数の原因が混在しているときにすべてを一度に変更すると、どの修正が有効だったのか分からなくなります。mtllib、ファイル名、usemtlとnewmtl、画像パス、アップロード構成の順に、一段階ずつ確認する方法が有効です。 修正版をアップロードする際は、元データと区別できる名称を付けます。同名で上書きすると古い表示結果との判別が難しくなるため、確認用の識別子を付けた別データとして登録し、正常表示を確認してから正式版へ反映します。
mtllibの不具合を再発させない運用方法
mtllibの記述漏れは、書き出し時の設定、ファイル名の変更、フォルダ移動、アップロード方法の違いなどによって発生します。個別のファイルを直すだけでなく、作業手順を標準化することで再発を防ぎやすくなります。 まず、OBJを書き出す際の設定を統一します。材質やテクスチャが必要な案件では、OBJだけでなくMTLと画像も出力対象に含めます。点だけを利用する案件では、材質が不要であることを明確にし、色の保持方法が頂点色なのか、別の属性なのかを記録します。 書き出し後は、OBJ、MTL、画像を一つの成果単位として扱います。OBJだけを別フォルダへ移動したり、メールや共有領域へ単独で登録したりすると、参照ファイルが欠落します。受け渡しの際は、必要なファイルがそろっているかを確認します。 ファイル名のルールも決めておくと効果的です。半角英数字とアンダースコアを使用し、空白、全角文字、特殊記号を避けます。大文字と小文字を混在させず、拡張子も含めて一貫した形式にします。 フォルダ構成を複雑にしすぎないことも重要です。案件ごとに異なる深い階層を作ると、相対パスの誤りが起こりやすくなります。アップロード先の仕様が明確でない場合は、OBJ、MTL、画像を同じ階層へまとめた検証用構成を用意します。 成果データを提出する前には、OBJ内のmtllib、OBJ内のusemtl、MTL内のnewmtl、MTL内の画像参照を順番に照合します。単にファイルが存在するかを見るのではなく、参照名が完全に一致しているかを確認してください。 アップロード試験では、形状、材質、テクスチャ位置の三つを分けて確認します。形状が出たから正常と判断すると、材質の欠落を見逃します。反対に、色が違うという理由だけでOBJ全体を再出力すると、原因の切り分けに時間がかかります。 元データ、書き出し条件、出力日時、ファイル構成、アップロード結果を簡潔に記録しておくと、再発時の比較が容易になります。同じ設定で成功したデータと失敗したデータを比べれば、名称や階層の差を発見しやすくなります。 外部から受け取ったOBJでは、受領直後にファイル一式を確認します。MTLや画像が不足したままでは、OBJ側だけを調査しても完全な復元はできません。必要な関連ファイルがない場合は、作成元へ一式での再提供を依頼する判断も必要です。
まとめ
点群OBJで形状は表示されるのに材質やテクスチャが反映されない場合は、最初にOBJ内のmtllibを確認します。ただし、mtllibの有無だけで正常か異常かを判断することはできません。材質を使用しない点群OBJでは、mtllibが存在しない構成もあります。 確認の基本は、OBJ内に正しいmtllib行があるか、記述されたMTL名と実ファイル名が一致しているか、usemtlとnewmtlが対応しているか、MTLから画像への参照がつながっているか、アップロード後も元のファイル構成が維持されているかという五つです。 OBJからMTL、MTLから画像という順番で参照を追えば、情報が途切れている位置を特定しやすくなります。ファイル名の大文字と小文字、拡張子、空白、相対パスなど、見た目では分かりにくい違いも一文字ずつ確認することが大切です。 また、材質が表示されない症状は、頂点色の非対応、テクスチャ座標の不足、画像形式の違い、透明度設定、アップロード後の変換結果などでも発生します。mtllibを追加するだけで解決しない場合は、OBJの構成とアップロード先が扱える情報を分けて検証してください。 現場で取得した点群を安定して活用するには、計測だけでなく、書き出し形式、関連ファイル、名称、階層、アップロード後の確認までを一つの工程として管理する必要があります。点群取得からOBJデータの活用、共有までの流れをさらに効率化したい方は、次にLRTK Phoneの活用方法をご確認ください。