点群OBJの材質名重複で色が変わる理由
点群OBJをアップロードした後、作成時とは異なる色で表示されたり、本来は別の色だった範囲が同じ色になったりすることがあります。元の編集画面では正しく色分けされているのに、クラウドや別の閲覧環境へ移したときだけ色が変わる場合は、OBJファイルと一緒に保存された材質情報を確認する必要があります。
OBJ形式では、形状と材質が一つのファイルだけで完結しないことがあります。一般的には、頂点や面などの形状情報をOBJファイルに記録し、色や透明度、画像参照などの材質情報をMTLファイルに記録します。OBJファイルは、どの範囲にどの材質を割り当てるかを材質名によって指定し、対応するMTLファイルから同じ名前の定義を探します。
この仕組みでは、材質名が識別の重要な手掛かりになります。異なる色として扱いたい二つの材質に同じ名前が付いていると、読み込み側が両者を区別できないことがあります。先に記録された定義が使われる場合、後から記録された定義で置き換えられる場合、同名材質が一つへまとめられる場合などが考えられます。
どの定義が採用されるかは、書き出しに使用した環境やアップロード先の処理によって異なります。そのため、同じ材質名が重複しているときに、必ず先の色または後の色が使われるとは断定できません。重要なのは、異なる定義に同じ名前を付けた状態では、環境を変えた際の表示を安定させにくいということです。
たとえば、地表の灰色と構造物の灰色を別々に調整していても、両方の材質名が単に「gray」となっていることがあります。編集環境の内部では別の管理番号で識別されていたとしても、OBJとMTLへ書き出す段階で名前が同じになれば、アップロード先では一つの材質として解釈される可能性があります。
点群から生成したメッシュでは、地面、構造物、道路、設備、植生、不要範囲などを材質によって色分けすることがあります。色は見た目を整えるためだけではありません。確認対象を区別したり、施工前後の範囲を見分けたり、不要な点や面を判別したりするためにも使われます。そのため、材質名の重複による色変化を放置すると、確認作業や計測結果の判断にも影響するおそれがあります。
点群OBJアップロード後の色を安定させるには、画面上で色を塗り直すだけでは不十分です。材質名、OBJからMTLへの参照、同名定義の内容、オブジェクトと材質の命名、アップロード前後の確認方法を順番に整理する必要があります。
OBJとMTLに記録される材質情報の基本
材質名の重複を整理する前に、OBJファイルとMTLファイルの役割を切り分けて理解しておくことが大切です。役割を混同したまま名称を変更すると、材質が適用されなくなったり、意図しない範囲まで同じ色になったりすることがあります。
OBJファイルには、一般的に頂点座標、テクスチャー座標、法線、面を構成する頂点番号、オブジェクト名、グループ名などが記録されます。材質を使用する場合は、参照するMTLファイルの名称と、各範囲に割り当てる材質名も記録されます。
OBJ内でMTLファイルを指定する記述として、mtllibが使われます。たとえば、materials.mtlというファイルを参照する場合は、その名称がOBJ内に記録されます。ファイル名を後から変更したにもかかわらず、OBJ側の記述を更新しなければ、アップロード先はMTLを見つけられない可能性があります。
OBJ内で材質を割り当てる記述には、usemtlが使われます。usemtlの後ろに書かれた名前が、MTL内で定義されている材質名と対応します。OBJ側にusemtl ground_grayと書かれている場合は、MTL側にground_grayという材質定義が存在している必要があります。
MTLファイルでは、newmtlに続けて材質名を定義します。その後に、拡散反射色、環境光に関係する値、鏡面反射に関係する値、透明度、画像ファイルへの参照などが記録されることがあります。ただし、すべての項目が読み込み先で同じように使われるとは限りません。
単純な色分けでは、拡散反射色に相当する値が見た目へ大きく影響します。しかし、同じ色の数値であっても、照明、陰影、法線、透明度、背景色などの条件によって、画面上の印象が異なることがあります。そのため、見た目だけで材質の内容を判断せず、MTL内の数値や参照情報も確認することが重要です。
また、点群OBJという呼び方で扱われるデータには、点だけで構成されたものと、点群から作成した三角形メッシュを含むものがあります。面を持つメッシュであれば、usemtlによって面に材質を割り当てる構成を確認しやすくなります。一方、頂点だけの点群では、頂点座標の行に色情報を追加する拡張的な保存方法が使われることがあります。
頂点色の記述は、すべての読み込み環境で共通して扱われるとは限りません。元の環境では頂点色が表示されていても、アップロード先では頂点色を利用せず、MTLだけを参照する場合があります。反対に、MTLの材質より頂点色が優先される可能性もあります。
まずは対象データが、面材質を使ったメッシュなのか、頂点色を持つ点群なのか、それらを組み合わせたものなのかを確認します。ここを切り分けることで、材質名の重複を修正すべき問題なのか、色の保存方法や対応形式を確認すべき問題なのかを判断しやすくなります。
整理法1 材質名をデータ全体で一意にする
最初の整理法は、異なる材質に同じ名前を付けず、データ全体で一意の材質名を使用することです。アップロード先が材質名を識別キーとして扱っても、名称が重複していなければ、別の定義と衝突しにくくなります。
材質名に「material」「default」「gray」「color1」のような一般的で短い名前だけを使うと、重複が起こりやすくなります。一つのOBJ内では重複していなくても、別々に作成したOBJを統合した際に、同じ名前が現れることがあります。
たとえば、工区ごとに作成した複数のデータで、地面の材質がすべてgroundとなっているとします。すべて同じ色と設定を共有するなら、意図した共通材質として扱える場合があります。しかし、工区ごとに色や透明度が異なるにもかかわらず名前だけが同じであれば、統合後に衝突する可能性があります。
材質名には、色だけでなく対象や用途を含める方法が有効です。地表の灰色であればground_gray、構造物の灰色であればstructure_gray、既設設備を示す青であればexisting_equipment_blueのようにします。色名だけに依存せず、何を表す材質なのかが分かる名称にすることがポイントです。
複数の工区やデータをまとめる場合は、工区識別子やデータ識別子を加えます。area01_ground_grayとarea02_ground_grayのようにすれば、別々に作成された材質を区別できます。ただし、情報を詰め込みすぎると名称が長くなり、確認や修正が難しくなります。
実務では、工区、対象、状態、色などのうち、重複防止に必要な項目だけを一定の順序で並べると管理しやすくなります。たとえば、工区、対象、状態の順にそろえると、担当者が変わっても同じ基準で名称を付けられます。
材質名を変更する際は、MTL側のnewmtlだけを変更してはいけません。OBJ側のusemtlも、対応する名称へ変更する必要があります。片方だけを変更すると、OBJが存在しない材質を参照する状態になり、既定色で表示されたり、材質が適用されなかったりする可能性があります。
同じ名称がOBJ内の複数箇所で使われている場合は、どの範囲がどの材質に対応するかを確認してから変更します。単純な一括置換では、分ける必要のない範囲まで変更してしまうことがあります。
たとえば、同じgrayが地面と構造物の両方に使われている場合、MTL内のgrayを二つの名前へ分けるだけでは不十分です。OBJ内で地面に該当する面の前にはusemtl ground_gray、構造物に該当する面の前にはusemtl structure_grayを設定する必要があります。
材質名には、英数字とアンダースコアを中心とした表記を使うと、異なる環境間でも扱いやすい傾向があります。日本語、空白、特殊記号が必ず問題になるわけではありませんが、文字コードや名称の区切り方に関する不一致を避けるためには、簡潔な名称が適しています。
大文字と小文字の使い分けにも注意します。ある環境では同じ名前として扱われても、別の環境では異なる名前として扱われる可能性があります。Ground_Grayとground_grayを混在させず、すべて小文字にするなどの規則を決めておくと確認しやすくなります。
材質名を一意にする作業は、色が変わった後の応急処置だけではありません。書き出し前の標準設定として運用に組み込むことで、点群OBJを追加、統合、再アップロードするときのトラブルを減らせます。
整理法2 OBJとMTLの参照関係をそろえる
二つ目の整理法は、OBJとMTLの参照関係を明確にし、実際のファイル構成と記述内容を一致させることです。材質名を一意にしても、OBJが正しいMTLを参照できていなければ、意図した色は表示されません。
最初にOBJ内のmtllibを確認し、どのMTLファイルが指定されているかを調べます。実際のフォルダーに同名のMTLファイルが存在するか、拡張子や大文字と小文字を含めて一致しているかを確認します。
ファイルを整理するためにMTLの名称を変更した場合は、OBJ内のmtllibも同じ名称へ修正します。MTLだけを分かりやすい名称に変えても、OBJ内に旧名称が残っていれば参照できません。
複数のOBJやMTLを一つのフォルダーへ集める際は、同名ファイルの上書きにも注意が必要です。別々の工区で作成した材質ファイルがどちらもmaterials.mtlという名称だった場合、フォルダーへコピーする際に一方が上書きされる可能性があります。
上書き後もOBJ内のmtllibにはmaterials.mtlと書かれているため、参照自体は成立します。しかし、実際には別工区の材質定義を読み込んでしまい、色が変わることがあります。この状態はファイル不足のエラーにならないため、原因を見落としやすい問題です。
複数のMTLを使用する構成もあります。複数参照が直ちに誤りになるわけではありませんが、それぞれのMTL内に同じ材質名があると、読み込み結果が不安定になる可能性があります。各MTLのnewmtlを確認し、名称が重複していないかを調べます。
小規模または中規模のデータで管理上の支障がなければ、一つのOBJに対応する材質を一つのMTLへまとめる方法があります。定義の所在が明確になり、アップロード時の選択漏れも防ぎやすくなります。
ただし、材質数が非常に多い場合や、工区ごとに独立した更新が必要な場合は、無理に一つへ統合すると編集しにくくなります。MTLの数を一つにすること自体が目的ではありません。どのOBJがどのMTLを参照し、それぞれにどの材質が定義されているかを説明できる状態にすることが重要です。
画像を使用した材質では、MTLから画像ファイルへの参照も確認します。画像が見つからない場合、基本色や既定色で表示されることがあります。その結果、材質名の重複で色が変わったように見える場合があります。
画像の参照先に、元の編集端末内だけで有効な保存場所が記録されていると、別の環境では画像を見つけられません。アップロード用のデータでは、OBJ、MTL、画像ファイルを一つの管理単位としてまとめ、相対的な位置関係を維持します。
圧縮ファイルとしてアップロードする場合も、展開後のフォルダー構成を意識します。OBJとMTLが別の階層へ移動すると、参照先を見つけられない可能性があります。不要に深いフォルダー構成を避け、参照関係を単純にしておくと確認しやすくなります。
OBJとMTLの参照をそろえることで、材質名の衝突だけでなく、MTLの入れ忘れ、同名ファイルの上書き、古い材質定義の混入、画像参照切れなども発見しやすくなります。
整理法3 同名材質の定義内容を比較して統合する
三つ目の整理法は、同じ材質名を見つけたときに、名称だけで判断せず、定義内容と用途を比較することです。同名材質がすべて誤りとは限りません。
複数のMTLに、同じ名称、同じ色、同じ透明度、同じ用途の材質が重複しているだけであれば、一つの定義へ統合できる可能性があります。一方、同じ名前でも設定や用途が異なる場合は、別の名称へ分けなければなりません。
最初に確認するのは、拡散反射色に相当する値です。同じgrayという材質名でも、一方が明るい灰色、もう一方が濃い灰色として定義されていれば、異なる材質として扱う必要があります。
次に、透明度に関係する値を確認します。色の数値が同じでも、一方だけが半透明であれば、表示結果や用途は異なります。背景や背後の形状が透けることで、見た目の色が変わるためです。
画像参照も確認します。同じ色の値が記録されていても、一方には表面画像が割り当てられ、もう一方には画像が設定されていない場合があります。画像を読み込める環境と読み込めない環境では、見た目が大きく異なる可能性があります。
そのほか、鏡面反射に関係する値や光沢の設定などが含まれる場合もあります。アップロード先がすべての項目に対応しているとは限りませんが、定義が異なる材質を不用意に統合すると、元の意図が失われることがあります。
同名材質は、用途によって整理方法を変えます。名称も内容も用途も同じであれば、共通材質として一つへまとめます。名称は同じでも内容が異なる場合は、対象や状態を含む別名へ変更します。
内容が同じでも、今後別々に管理する必要がある場合は、最初から別名にしておく方法があります。たとえば、施工前と施工後が現時点では同じ色でも、将来的に表示を分ける予定があるなら、existing_groundとcompleted_groundのように名称を分けます。
材質を統合した後は、OBJ内のusemtlを確認します。削除した材質名を参照する記述が残っていないか、統合先の名称が正しく設定されているかを調べます。
MTL内に使用されていない材質定義が多数残っていると、次回の確認が難しくなります。不要な定義は整理したほうが管理しやすくなりますが、削除前には元データを複製して保存します。使用されていないと思った材質が、離れた箇所の面に割り当てられている可能性があるためです。
表示画面だけで定義の違いを判断しないことも大切です。同じ数値でも照明条件によって違って見え、異なる数値でも似て見える場合があります。MTL内の記述と、実際に割り当てられている範囲の両方を確認します。
材質の統合は、単に定義数を減らすことが目的ではありません。どの範囲に、どの材質が、どの理由で使われているかを追跡できる状態にすることが目的です。
整理法4 オブジェクト名と材質名を分けて管理する
四つ目の整理法は、オブジェクト名、グループ名、材質名を別の役割として管理することです。これらはOBJ内でそれぞれ異なる目的に使われますが、書き出し時に同じ名称が自動設定される場合があります。
オブジェクト名は、形状を大きな単位で識別するために使われます。グループ名は、OBJ内の頂点や面をまとまりとして区分するために使われます。材質名は、色、透明度、画像などの表示情報を割り当てるために使われます。
たとえば、地面を表す形状に対して、オブジェクト名、グループ名、材質名のすべてがgroundとなっている場合があります。この状態でも表示できることはありますが、材質名だけを変更したいときに、どのgroundを変更すべきか分かりにくくなります。
文字列の一括置換を行うと、材質名だけでなくオブジェクト名やグループ名まで変えてしまう可能性があります。別工程でオブジェクト名を管理番号として利用している場合、意図しない変更によってデータの対応関係が崩れることがあります。
名称から役割を判別できるように、一定の接頭辞を使う方法があります。オブジェクトにはobj、グループにはgrp、材質にはmatという区分を加えれば、obj_ground、grp_ground_surface、mat_ground_grayのように整理できます。
接頭辞を必ず採用する必要はありません。重要なのは、担当者が名称を見たときに、その名前が形状の識別なのか、面の分類なのか、表示材質なのかを判断できることです。
グループ名には形状や対象の意味を持たせ、材質名には表示や状態の意味を持たせると整理しやすくなります。たとえば、同じ地面グループに対して、施工前はmat_ground_existing、施工後はmat_ground_completedを割り当てる運用ができます。
反対に、複数のグループへ同じ材質を割り当てることも可能です。既設構造物と既設設備を共通の確認色で表示したい場合、それぞれのグループ名を維持しながら、一つの共通材質を使えます。
この場合、同じ材質名が複数箇所で使われていても、意図した共有であるため問題とは限りません。確認すべきなのは、同じ名前の材質定義が複数存在していることと、一つの材質定義を複数の範囲で共有していることの違いです。
材質名の重複を機械的に削除するのではなく、共有する設計なのか、偶然同名になった異なる材質なのかを見分けます。その判断をしやすくするためにも、オブジェクト、グループ、材質の役割を分けた命名が有効です。
点群OBJを複数人で編集する場合は、命名規則を文書化しておきます。担当者ごとに異なる規則を使うと、同じ対象に複数の名称が付いたり、異なる対象が同名になったりします。簡単な規則でも、全員が同じ順序と表記で名前を付けることで、統合時の確認負担を減らせます。
整理法5 アップロード前後の確認手順を標準化する
五つ目の整理法は、アップロード前後の確認手順を標準化することです。材質名や参照関係を正しく整えても、確認方法が担当者ごとに異なると、色の入れ替わりや欠落を見逃す可能性があります。
アップロード前には、元の編集画面だけでなく、書き出したOBJとMTLを改めて読み込みます。元の編集環境では、内部に保持された材質情報を使って正しく表示できていても、書き出したファイルに必要な情報が不足していることがあります。
書き出したOBJとMTLだけを新しい環境で開き、色分けを再現できるか確認します。ここで色が変わる場合は、アップロード処理より前に問題が発生している可能性があります。
確認用には、大規模な点群OBJ全体ではなく、一部を切り出した小さなデータを使う方法が有効です。地面、構造物、設備など、異なる材質を使う範囲を少量ずつ含めます。小規模データであれば、書き出しやアップロードを繰り返しやすく、テキスト内の該当箇所も確認しやすくなります。
アップロード前には、OBJ内のmtllibと実際のMTLファイル名が一致しているかを確認します。次に、OBJ内のすべてのusemtlに対応するnewmtlが、MTL内に存在するかを調べます。
MTL内では、同じnewmtlが意図せず複数回定義されていないかを確認します。複数のMTLを使用する場合は、ファイルをまたいだ重複も調べます。
アップロード後は、単に色が付いているかだけで判断しません。地面に地面用の材質が適用されているか、構造物に構造物用の材質が適用されているか、境界で意図した材質に切り替わっているかを確認します。
最初に割り当てられた材質と、最後に割り当てられた材質も確認します。ファイルの途中だけを確認すると、先頭や末尾の範囲で材質指定が欠けていても見落とす可能性があります。
似た色の材質は、入れ替わっていても気付きにくいことがあります。試験時だけ差の大きい確認色を割り当て、対象範囲が正しいことを確認してから本来の色へ戻す方法もあります。
アップロード後に色が変わった場合は、すべての設定を一度に修正しないようにします。材質を二つ程度に絞った最小構成のOBJとMTLを作り、単純な色と明確に異なる名称を設定します。
最小構成で正しく表示される場合は、元データに含まれる同名材質、複数MTL、透明度、画像参照などを順番に調べます。最小構成でも色が再現されない場合は、アップロード先が対象の材質記述や頂点色に対応しているかを確認する必要があります。
確認結果は、ファイル名、版番号、作成日、書き出し条件、材質数、アップロード結果と一緒に記録します。前回は表示できたという記憶だけでは、条件の差を特定できません。
再アップロード時には、以前のファイルと区別できる名称を使用します。同じ名称のまま上書きすると、どの版を確認しているのか分からなくなる可能性があります。版番号を付け、OBJとMTLの版をそろえることで、古い材質定義との取り違えを防ぎます。
アップロード前のテキスト確認、書き出し後の読み直し、小規模データでの試験、アップロード後の範囲確認を一連の手順にすれば、材質名重複による色変化を早い段階で発見しやすくなります。
材質名以外に色が変わる原因
点群OBJの色が変わったとき、材質名の重複は重要な確認項目ですが、それだけが原因とは限りません。同名材質を整理しても改善しない場合は、ほかの要因を順番に切り分けます。
まず確認したいのは、MTLファイルがアップロード対象に含まれているかです。OBJだけでも形状を読み込める場合がありますが、MTLがなければ材質情報を利用できず、白や灰色などの既定表示になる可能性があります。
MTLが存在していても、OBJ内のmtllibと実際のファイル名が一致していなければ参照できません。大文字と小文字、空白、拡張子、文字コードなども確認します。
画像を利用する材質では、画像ファイルの不足や参照切れも原因になります。元の編集環境では画像を読み込めていても、アップロード先へ画像を移していなければ表示を再現できません。
MTLに元の端末内の保存場所が記録されている場合、別環境ではその場所へアクセスできません。アップロード用データでは、OBJ、MTL、画像を一つのフォルダー内で管理し、相対的な参照で扱える状態にします。
透明度の設定も見た目を変えます。半透明の材質は、背景色や背後にある形状の色と重なって表示されるため、本来の色とは異なる印象になることがあります。
透明度に関する記述の解釈が環境によって異なる場合もあります。元の環境とアップロード先で透明度の扱いが違えば、色が薄くなったり、意図せず透けたりする可能性があります。
照明や陰影も確認が必要です。同じ材質であっても、光の方向、環境光、面の向きによって明るさが変わります。特に法線が不統一なメッシュでは、隣り合う面の明暗が大きく異なり、異なる色に見えることがあります。
裏向きの面や法線が反転した面では、陰影の計算結果が変わる可能性があります。色の数値だけでなく、面の向きや法線の状態も確認します。
頂点色とMTL材質の優先関係も原因になります。編集環境では頂点色を表示していたのに、アップロード先ではMTLの色を表示する場合、見た目が大きく変わります。
反対に、MTLで色分けしていたものの、頂点色を持つデータとして読み込まれ、頂点色が優先される場合も考えられます。点だけのOBJでは、面材質を想定した仕組みが期待どおりに利用できないこともあります。
材質の数が多いデータでは、アップロード時の変換処理で材質が整理または簡略化される可能性があります。対応する材質数や項目は環境ごとに異なるため、小規模データで事前確認することが大切です。
色の値の記述形式も確認します。手作業でMTLを編集した場合は、行の欠落、区切り文字の誤り、余分な文字の混入などに注意します。
原因を切り分けるときは、材質名、画像参照、透明度、頂点色、法線などを一度に変更しません。一つずつ条件を変え、どの修正で表示が変化したかを確認します。
複数の点群OBJを統合するときの注意点
複数の点群OBJを統合する作業では、材質名重複の可能性が高くなります。各OBJを単独で確認したときは問題がなくても、統合後に同名の材質が衝突することがあります。
工区ごと、計測日ごと、担当者ごとに別々のOBJを書き出した場合、それぞれのMTLでmaterial01やdefaultといった同じ名称が使われることがあります。単独では一つしか存在しないため問題になりませんが、統合すると異なる設定が同じ名前で並びます。
統合前には、各MTLのnewmtlを一覧化し、名称と定義内容を比較します。同じ名前があれば、共通材質として使用できるか、別名へ変更すべきかを判断します。
同じ用途で設定内容も同じなら、一つの材質へまとめる方法があります。用途または設定が異なる場合は、工区や対象を含む名称へ変更します。
OBJファイルを単純に連結する場合は、頂点番号や面の参照だけでなく、mtllibとusemtlの関係も確認する必要があります。形状を正しく統合できても、材質参照が古い名称のままでは、色が正しく適用されません。
複数のMTLを一つへまとめる場合は、同名のnewmtlをそのまま並べないようにします。どちらか一方を削除するだけでは、削除した定義を必要とする面が別の色になる可能性があります。
OBJ内のusemtlを確認し、変更後の材質名へ割り当て直します。形状の範囲と材質の対応を確認せずに一括置換すると、別の対象へ誤った材質を割り当てるおそれがあります。
統合前のファイルは必ず保存します。統合後に色の問題が発生した場合、元のOBJとMTLを比較することで、どの工程で名称や定義が変化したかを追跡できます。
ファイル名にも固有の識別情報を付けます。複数工区のMTLがすべてmaterials.mtlでは、コピー時の上書きや取り違えが起こりやすくなります。工区や管理番号を含め、OBJとMTLの対応が分かる名称にします。
統合後は、小規模な確認だけで完了とせず、すべての材質区分を一度ずつ確認します。大規模な点群OBJでは、画面の一部だけを見て正しく表示できたと判断すると、離れた箇所の材質不一致を見落とす可能性があります。
地面、構造物、設備、不要範囲など、材質を割り当てた代表箇所を決め、統合前後で比較します。確認箇所を固定しておけば、再書き出しや再アップロードのたびに同じ基準で確認できます。
材質トラブルを防ぐ実務上の運用方法
点群OBJの材質トラブルを継続的に防ぐには、ファイルを一度修正するだけでなく、計測、編集、書き出し、統合、アップロードの各工程に共通のルールを設ける必要があります。
最初に、材質名の命名規則を決めます。工区、対象、状態、表示区分など、名称に含める情報と順序を統一します。担当者ごとに異なる名前を付けると、同じ用途の材質が増え、異なる用途の材質が同名になる可能性があります。
命名規則は簡潔にします。すべての情報を名称へ詰め込むと、長くなりすぎて確認や修正が難しくなります。材質名には表示の識別に必要な情報を含め、詳細な計測条件や履歴は別の管理情報として保存します。
書き出し前には、使用していない材質を確認します。試験用に作成した材質や、複製時に増えた未使用材質が残っていると、MTLに不要な定義が多数記録されることがあります。不要な定義を減らせば、重複の確認もしやすくなります。
書き出し後は、OBJとMTLを一組として保存します。OBJだけを成果物として扱うと、後日再アップロードするときに材質を再現できない可能性があります。画像を使う場合は、必要な画像も同じ管理単位に含めます。
元データ、書き出し直後のデータ、アップロード用に整理したデータを分けて保存することも重要です。同じファイルを直接上書きすると、どの工程で材質名や色が変わったかを追跡できません。
版番号を使用するときは、OBJとMTLを同じ版にそろえます。OBJだけが新版で、MTLが旧版のままでは、参照名が一致していても意図しない設定が適用される可能性があります。
色の意味も担当者間で共有します。同じ赤色でも、エラー箇所、施工予定範囲、確認対象など、運用によって意味が異なります。材質名と色の対応だけでなく、その色が何を表すのかを決めます。
色だけに判断を依存しないことも大切です。表示環境や照明によって色の印象が変わるほか、似た色を識別しにくい場合もあります。グループ名、属性、ラベルなどと組み合わせて対象を確認できるようにします。
現地で点群を取得する段階では、どの範囲を一つのデータ単位として扱うかを整理します。工区、構造物、施工段階などの区分が明確であれば、後からOBJを分割または統合するときの基準を定めやすくなります。
編集時には、不要範囲を除去し、対象ごとのグループを整理してから材質を割り当てます。自動生成された名称をそのまま使用せず、アップロード後にも用途が分かる名称へ変更します。
書き出し時には、点だけを保存するのか、点群から作成した面を含めるのかを確認します。頂点色を使用する場合は、アップロード先がその色情報を利用できるかを小規模データで試します。面材質を使用する場合は、OBJ、MTL、画像の参照関係を確認します。
点群OBJアップロードを定期的に行う場合は、毎回異なる手順で処理せず、確認項目を固定します。材質名、MTL参照、画像ファイル、版番号、アップロード後の代表確認箇所を一定の順序で確認すれば、見落としを減らせます。
現場で取得した点群を継続して共有する場合は、計測データの管理番号とOBJのファイル名を関連付けます。どの計測結果を基に作成したOBJなのかが分かれば、色や形状に問題が発生した際も元データへ戻りやすくなります。
LRTK Phoneを活用して現場の点群を取得し、データを整理して後工程へ受け渡す場合も、取得時の名称、作成日、対象範囲、書き出し版をそろえることが重要です。計測からアップロードまでの管理方法を統一することで、材質名だけでなく、ファイルの取り違えや旧版の混入も防ぎやすくなります。
まとめ
点群OBJをアップロードした後に色が変わる場合は、OBJとMTLの材質名が重複していないかを確認します。異なる材質に同じ名前が付いていると、読み込み環境によって定義が統合されたり、どちらか一方の色が採用されたりする可能性があります。
最初に行うべき整理は、異なる材質へ一意の名称を付けることです。色だけでなく、対象、工区、状態などを名前に含めると、別データとの統合時にも衝突しにくくなります。
材質名を変更するときは、MTL内のnewmtlだけでなく、OBJ内のusemtlも同じ名称へ変更します。片方だけを変えると、OBJが存在しない材質を参照する状態になります。
次に、OBJ内のmtllibと実際のMTLファイル名を照合します。複数のMTLを使用している場合は、ファイルをまたいで同名材質が存在しないかを確認します。画像を使う材質では、画像ファイルの参照先も確認が必要です。
同名材質を見つけたときは、すべてを機械的に削除せず、色、透明度、画像参照、用途を比較します。内容も用途も同じなら統合し、異なる場合は別名へ分けます。
オブジェクト名、グループ名、材質名を分けて管理すれば、どの名称を変更すべきか判断しやすくなります。一つの材質を複数範囲で共有することと、異なる材質定義が同名になっていることを区別することが重要です。
アップロード前には、書き出したOBJとMTLを別環境で読み直し、小規模データで色の対応を確認します。アップロード後は、色が表示されたかだけでなく、対象範囲、境界、透明度、画像参照まで確認します。
材質名を整理しても改善しない場合は、MTLの不足、画像参照切れ、頂点色との優先関係、法線、陰影、透明度、アップロード先の対応状況を一項目ずつ切り分けます。
点群OBJの色分けを安定させるには、材質名の修正だけでなく、計測、編集、命名、書き出し、ファイル管理、アップロード後の確認までを一つの運用として整えることが大切です。現場での点群取得からデータ整理までを効率化する際は、LRTK Phoneを起点とした計測と管理の流れも検討するとよいでしょう。