LRTKレフィクシア株式会社

点群OBJアップロード後に線や点が消える原因と5つの確認

点群OBJで線や点が消えるのはなぜか

点群OBJをアップロードしたところ、面は表示されるのに測量点が消えた、線形だけ見えない、頂点情報は残っているはずなのに画面が空になる、といった問題が起こることがあります。元の編集環境では正常に表示できていた場合、データそのものが消失したと考えがちですが、実際にはファイル内の要素構成、アップロード先の対応範囲、表示設定などによって見えなくなっている場合があります。

OBJは、頂点座標、テクスチャ座標、法線、点、線、面などをテキスト形式で記録できるデータ形式です。仕様上、点は「p」、線は「l」、面は「f」で表されます。ただし、OBJを読み込むすべてのシステムが、これらの要素を同じように扱うわけではありません。ポリゴン面の表示を前提とした仕組みでは、点や線の情報がファイル内に存在していても、未対応要素として読み飛ばされることがあります。

また、「点群OBJ」はOBJの正式な分類名ではなく、頂点主体のOBJや、点群から生成した面を含むOBJを実務上まとめて呼んでいる場合があります。頂点座標だけが連続して記録されているもの、点要素として定義されているもの、線分で点同士を結んでいるもの、点群から生成した三角形面を含むものなど、内部構造は一様ではありません。拡張子が同じOBJであっても、内部の要素と読み込み側の実装によって表示結果は変わります。

線や点が消えたように見える場合は、すぐに再計測や再作成を始めるのではなく、ファイル内の要素、アップロード先の仕様、座標と単位、表示条件、データ整合性の順に確認することが重要です。原因を段階的に切り分ければ、元データを変更せず、表示設定や入力形式の変更だけで解決できる場合があります。

この記事では、「点群 OBJ アップロード」で情報を探している実務担当者に向けて、線や点が表示されなくなる代表的な原因と、優先して確認したい5つの項目を解説します。

OBJに記録される頂点・線・面の違い

点群OBJの表示不具合を調べる前に、OBJ内の頂点、点、線、面がそれぞれ別の要素であることを理解しておく必要があります。

OBJでは、頂点座標が「v」で始まる頂点レコードとして記録されます。頂点レコードは、三次元空間内の位置を示す基礎情報です。ただし、頂点座標が記録されているだけでは、その頂点を点として描画するのか、線や面の構成要素として使用するのかは確定しません。

点として明示する場合は、頂点番号を参照する「p」要素を使用します。線として明示する場合は、複数の頂点番号を並べた「l」要素を使用します。面を表示させる場合は、通常、3個以上の頂点番号を参照する「f」要素を使用します。

つまり、OBJ内に頂点座標が多数記録されていても、読み込み側が頂点だけを点として自動描画せず、かつ「p」「l」「f」などの描画対象となる要素がなければ、画面に何も表示されない可能性があります。一方、読み込み側が頂点レコードを独自に点群として表示する仕様であれば、点要素が明示されていなくても点群として見えることがあります。

この実装差が、作成環境では表示できるのにアップロード先では表示できないという現象の主な要因です。作成環境が登録済みの頂点を自動的に点として描画していても、アップロード先が同じ処理を行うとは限りません。

線についても同様です。「l」要素を解釈できるシステムであれば測線や境界線が表示されますが、ポリゴン面だけを対象とするシステムでは線要素が読み飛ばされることがあります。読み込み処理が正常終了していても、未対応の要素が除外されている可能性があるため、アップロード成功という表示だけでは判断できません。

さらに、頂点行の座標値の後ろにRGB値を追加する頂点色の表現も広く使われていますが、これは基本的なOBJ仕様の中で一律に扱われる機能ではなく、実装差があります。頂点座標は読み込まれても色が失われ、既定色や背景色との組み合わせによって見えにくくなることがあります。

点群OBJを扱う際は、拡張子だけを見るのではなく、内部にどの要素が記録されているかまで確認することが重要です。

確認1:点要素と線要素がファイル内に定義されているか

最初に確認したいのは、アップロードしたOBJ内に点要素や線要素が実際に記録されているかです。

OBJは通常、行単位のテキスト形式で記録されるため、容量が極端に大きくなければテキストを確認できる環境で内容を開けます。大容量の場合は、全文を一般的なテキストエディターで開くのではなく、先頭部分の確認、行頭文字列の検索、専用の検査ツールなどを利用します。

頂点座標を示す「v」の行が大量に存在していても、それだけで点群として表示されるとは限りません。点要素が必要なアップロード先では、「p」で頂点番号を参照する記述がなければ表示されない可能性があります。線についても、「l」の記述が存在しなければ、頂点同士を結ぶ線要素は定義されていません。

特に注意したいのが、作成元では頂点だけのデータを点群表示できていたケースです。作成元の表示機能が、登録されたすべての頂点を自動的に点として描画している場合、書き出されたOBJには頂点座標だけが含まれることがあります。このデータを面表示中心の環境へアップロードすると、頂点数は認識されても描画対象がないと判断される可能性があります。

反対に、点要素や線要素が記録される設定であっても、書き出し範囲によって一部だけが対象になる場合があります。表示中のレイヤーだけを書き出した、選択中の要素だけを書き出した、非表示要素を除外した、補助線を出力対象外にしたといった設定があると、必要な点や線がOBJに含まれません。

元データを確認するときは、頂点数だけでなく、点要素、線要素、面要素の有無と件数を分けて確認します。作成元の画面に表示される総頂点数と、書き出したOBJ内の頂点数が大きく異なる場合は、エクスポート範囲やフィルター設定を見直す必要があります。

線形データでは、一本の連続したポリラインとして保存されているのか、短い線分の集合として保存されているのかも確認します。アップロード先に要素数や一行の長さなどの実装上限がある場合、複雑な線要素が正しく処理されないことがあります。ただし、この上限はOBJ仕様そのものではなく、利用するサービスや変換ライブラリごとの条件です。

点や線がファイル内に存在しない場合、アップロード先の表示設定を変更しても復元できません。まず元のOBJに必要な情報が含まれていることを確定させることで、その後の調査を効率化できます。

確認2:アップロード先が点と線の表示に対応しているか

OBJ内に点要素や線要素が存在していることを確認できたら、次にアップロード先の対応範囲を調べます。

OBJに対応していると案内されていても、必ずしも点、線、面、材質、テクスチャのすべてに対応しているとは限りません。多くの三次元表示環境では、OBJをポリゴンモデルの交換形式として扱います。そのため、面要素は表示できても、点要素や線要素は変換処理の対象外になる場合があります。

アップロード時にサーバー側で別の内部形式へ変換される仕組みでは、この違いが特に重要です。変換工程が面だけを対象としている場合、面を構成しない頂点や線は変換結果に含まれないことがあります。この場合、アップロード処理自体は成功していても、変換後の表示データには点や線が残りません。

対応状況を判断するときは、「OBJを読み込めるか」だけでなく、「p要素を描画できるか」「l要素を描画できるか」「面を持たない頂点を保持または表示できるか」を確認します。点群表示機能が別に用意されている環境では、OBJではなく、サービスが指定する点群向け形式や専用の入力方法が必要な場合もあります。

また、同じアップロード先でも、表示モードによって結果が変わることがあります。面表示、ワイヤーフレーム表示、頂点表示、点群表示などが切り替えられる場合、初期状態では面だけが有効になっている可能性があります。

点群として認識されていても、点表示の切り替えが無効であれば画面には現れません。線についても、補助線、境界線、ワイヤー、計測線などの表示項目が別々に管理されている場合があります。

アップロード後の処理ログや解析結果が確認できる場合は、頂点数、線数、面数の表示を確認します。元のOBJには線があるのに、変換結果の線数がゼロになっている場合は、線要素が未対応、除外、または読み込みエラーになっている可能性があります。

小さな検証用OBJを作る方法も有効です。少数の頂点、一つの点要素、一本の線、一枚の面だけを含むデータをアップロードすれば、どの要素が表示対象になっているかを短時間で確認できます。大容量の現場データを何度も変換するより、原因を明確に切り分けられます。

アップロード先が点や線に対応していない場合は、表示設定だけでは解決できません。別の入力形式を使うか、点や線を表示可能な形状へ変換する必要があります。

確認3:座標値・単位・原点からの距離に問題がないか

点や線が読み込まれているにもかかわらず画面に見えない場合は、座標値、単位、原点からの距離を確認します。

測量や土木分野の点群では、現場座標や公共座標など、大きな数値の座標を使用することがあります。OBJ形式自体は大きな座標値を記録できますが、表示環境が内部で単精度浮動小数点などを使用している場合、原点から遠い位置で描画精度が低下することがあります。

OBJ内の形状が正常でも、表示カメラが原点付近を向いていると、遠方にある点群は画面外になります。全体表示を実行しても、極端に離れた外れ点が含まれていると、表示範囲が広がり、本体の点群が数画素程度まで小さくなることがあります。その結果、線や点が消えたように見えます。

まず、頂点座標の最小値と最大値を確認します。通常の現場範囲から大きく外れた値が混在していないか、特定の軸だけ桁数が異なっていないかを調べます。一つの誤った頂点が遠方に配置されているだけでも、全体表示に影響する場合があります。

単位の違いも重要です。元データがミリメートル単位で、アップロード先がメートル相当として扱うと、形状が想定より千倍大きく表示されます。反対に、メートル単位のデータをミリメートル相当として扱うと、形状が千分の一になり、点群が非常に小さな範囲に集約されます。

OBJには、座標値の単位を機械的に統一して伝える必須の単位フィールドがありません。そのため、書き出し側と読み込み側で同じ単位を想定しているかを別途確認する必要があります。コメントに単位が書かれている場合でも、読み込み側がそのコメントを自動解釈するとは限りません。

座標軸の違いによって、点群が横倒しになったり、想定と異なる方向へ配置されたりすることもあります。上方向として扱う軸が作成元とアップロード先で異なる場合、平面図方向から見ると線が重なり、見えにくくなることがあります。

奥行き方向にほぼ一直線となった線は、正面から見ると点のように見えます。多数の点が同じ画面位置に重なると、一部しか表示されていないように感じることもあります。正面、側面、上面など複数の方向から確認し、形状の向きが正しいかを調べます。

表示カメラには、手前側と奥側の描画範囲が設定されることがあります。点群がカメラに近すぎる、または遠すぎる場合、クリッピング範囲から外れて消える可能性があります。拡大したときだけ消える、回転すると一部が現れるといった症状は、描画範囲や座標精度の影響を疑う手掛かりになります。

大きな現場座標を利用している場合は、元の座標情報を別途保持したうえで、表示用データだけ現場付近を一時的な原点へ移動する方法があります。ただし、座標を移動するときは、移動量と軸変換の内容を正確に記録しなければなりません。元の測量座標へ戻せなくなると、他の図面や測定結果との整合が取れなくなります。

確認4:点サイズ・線幅・色・透明度が適切か

データが読み込まれ、座標位置も正しい場合は、表示上の大きさと色を確認します。

OBJの基本仕様には、画面上の点サイズや線幅を統一的に指定する項目がありません。点や線を何画素の大きさで描画するかは、主に表示環境側の設定や実装に依存します。点サイズが1画素程度で、背景と近い色になっていると、高解像度の画面ではほとんど見えないことがあります。

点群の密度が低い場合も、点サイズが小さいと欠落しているように見えます。逆に、点サイズを大きくしすぎると隣接点が重なり、細部がつぶれます。まず一時的に点サイズを大きくして表示の有無を確認し、その後、点間隔や確認目的に合わせて調整します。

線幅にも同様の問題があります。線要素が読み込まれていても、最小幅で描画されると背景や面の陰影に埋もれることがあります。特に細い線を斜め方向から見た場合や、画面を縮小した場合は、画素の計算によって途切れて見えることがあります。

線幅を変更できる環境では、一時的に太くして確認します。線幅を変更できない場合は、表示倍率を上げる、背景色を変える、面表示を一時的に無効にするといった方法で見え方を切り分けます。

色の扱いにも注意が必要です。OBJの頂点行に色情報を追加していても、アップロード先がその拡張表現を解釈しなければ、既定色で描画されます。既定色が白で背景も白に近い場合、点や線は存在していても見えません。

MTLファイルが関連付けられている場合は、OBJ内の「mtllib」で指定されたファイル名、MTL内の材質名、OBJ内の「usemtl」による参照が一致しているかを確認します。ファイル名の大文字と小文字を区別する環境では、表記差だけで関連付けに失敗することがあります。

透明度では、MTLの「d」と「Tr」の違いに注意が必要です。一般的に「d」は1が不透明、0が透明を表し、「Tr」はその逆として扱われます。ただし、読み込み側によって「Tr」の対応状況や解釈に差があるため、作成元とアップロード先で見え方が変わることがあります。確認時は「d 1.0」など、意図が明確な値を使った検証用材質で比較すると切り分けやすくなります。

点や線への材質適用は、読み込み環境によって対応差があります。材質が面には反映されても、点や線には既定色が使われる場合があるため、材質ファイルが正しいことだけで表示を保証できません。

面の内部や背後にある線は、深度判定によって隠れることがあります。例えば、地表面と同じ位置に境界線を配置していると、線と面のどちらを前面に表示するかが不安定になり、線が一部だけ見えたり、視点を動かすとちらついたりすることがあります。

確認時は、面を一時的に非表示にし、点と線だけで表示します。それでも見えなければ、点サイズ、線幅、色、透明度を順番に変更します。面を消すと線が現れる場合は、データ欠損ではなく、重なりや深度判定が原因と判断できます。

確認5:インデックスや関連ファイルが壊れていないか

最後に確認したいのが、OBJ内の頂点参照と関連ファイルの整合性です。

OBJの点、線、面は、頂点番号を参照して形状を構成します。正の頂点番号は1から始まり、最初の頂点が1です。また、仕様上は負の番号を使って直前に定義された頂点から相対参照する書き方もあります。そのため、負の番号があるだけで破損とは判断できませんが、読み込み側が相対参照に対応しているかは確認が必要です。

線要素が存在していても、参照している頂点番号が定義済みの範囲外である場合は、正しく描画できません。読み込み環境によっては、該当する線だけを除外する場合もあれば、ファイル全体の読み込みを中止する場合もあります。

複数のOBJを結合したときには、頂点番号のずれが起こりやすくなります。後から追加した線要素が、結合前の頂点番号をそのまま参照していると、別の位置へ線が飛んだり、無効な要素として除外されたりします。

編集途中で頂点を削除した場合も注意が必要です。頂点行だけを削除し、点、線、面の参照番号を更新していなければ、後半の要素が誤った頂点を参照します。テキストとして手作業で修正したOBJでは、特に発生しやすい問題です。

線を構成する頂点が同じ座標に重なっている場合は、線の長さがゼロとなり、通常は画面上で確認できません。点についても、同じ位置に多数の頂点が重複していれば、元の点数より少なく見えます。アップロード時の最適化処理に重複頂点の統合が含まれる場合は、変換後の頂点数が減ることがあります。

OBJ内の行が途中で切れている、数値の区切りが崩れている、頂点番号の前後に不要な文字が入っているといった構文上の問題も確認します。一部の読み込み環境は問題のある行を読み飛ばして処理を継続するため、エラーが表示されなくても線や点だけが欠落する場合があります。

文字コードや改行形式は、多くの一般的なOBJでは直接の問題になりにくいものの、変換処理や転送処理を挟んだ後に内容が変化していないかは確認する必要があります。アップロード前後でファイル容量やハッシュ値が異なる場合、転送や展開の工程も調べます。

MTLファイルやテクスチャを利用している場合は、OBJと一緒に必要なファイルがアップロードされているかを確認します。関連ファイルがなくても形状自体が表示される場合はありますが、意図した色や透明度は再現されません。

ファイル名には、利用環境の制約に抵触しない名称を使用します。OBJ内の「mtllib」に記録されたファイル名と、実際にアップロードしたMTLファイル名が一致していることも確認します。

データ整合性を調べる際は、元ファイルの複製を作成し、少数の点や線だけを残した検証用ファイルを用意すると効果的です。検証用ファイルが表示される場合は、元データの規模、特定の不正要素、読み込み側の上限などに原因を絞れます。

原因を効率よく切り分ける確認手順

点群OBJで線や点が消えた場合、思いついた設定を無作為に変更すると、原因が分からないまま表示結果だけが変わってしまいます。復旧後に同じ問題が再発する可能性もあるため、確認順序を固定しておくことが重要です。

最初に、元のOBJを変更せず保管します。調査中に上書きすると、どの操作で状態が変わったか分からなくなります。検証には複製したファイルを使用し、ファイル名に作成日時や変更内容を含めて管理します。

次に、OBJ内の頂点、点、線、面の有無を確認します。点と線が記録されていなければ、書き出し設定や元データの構造を確認します。記録されている場合は、アップロード先の対応範囲を確認します。

その後、少数要素だけを含む検証用OBJをアップロードします。点一つ、線一本、面一枚を別々に確認すると、対応していない要素を判別できます。点も線も表示されず、面だけが表示される場合は、アップロード先がポリゴン面を中心に処理している可能性があります。

要素の対応に問題がなければ、座標範囲を確認します。原点から離れすぎていないか、単位が合っているか、外れ点がないかを調べます。表示用の複製データを原点付近へ移動し、適切な大きさへ調整して結果を比較する方法も有効です。

座標が正常であれば、点サイズ、線幅、背景色、透明度、表示モードを変更します。面を非表示にして点や線が現れるかも確認します。

最後に、頂点参照、重複点、長さゼロの線、不正な行、関連ファイルの不足を調べます。読み込みログがある場合は、警告、除外件数、変換後の要素数を確認します。

この順序で確認すれば、「ファイルに入っていない」「読み込み対象外」「位置や尺度が不正」「表示されているが見えない」「参照や構文が壊れている」という原因を段階的に分けられます。

点群OBJをアップロードする前の予防策

線や点の消失を防ぐには、書き出し前の確認と検証用アップロードを運用に組み込むことが効果的です。

まず、点群の用途を明確にします。点そのものを確認したいのか、測線を共有したいのか、地表面として表示したいのかによって、適切なデータ構造は異なります。

点群をそのまま表示したい場合は、アップロード先が面を持たない頂点や「p」要素を保持・表示できるか確認します。線形や境界線を共有したい場合は、「l」要素の読み込みに対応しているかを確認します。面表示が必要な場合は、点群から面を生成する処理が必要になることがあります。

書き出し前には、頂点数、点要素数、線要素数、面要素数を記録しておきます。アップロード後の解析結果と比較できれば、どの段階で要素が減ったかを判断できます。

座標範囲も記録します。各軸の最小値と最大値、使用単位、座標原点、軸方向を残しておけば、別の担当者がアップロードするときにも条件を再現できます。

不要な外れ点や孤立点は、元データを残したうえで表示用データから除外します。現場本体から遠く離れた点が一つあるだけで、全体表示が崩れることがあります。

ファイル名や関連ファイル名は、管理しやすい規則に統一します。OBJとMTLファイルを別々に送る場合は、組み合わせが分からなくならないようにします。

大容量データを本番環境へアップロードする前に、同じ書き出し条件で小規模な検証データを作成します。点、線、面、色、透明度が正しく反映されることを確認してから本体を処理すれば、変換待ちや再アップロードの負担を減らせます。

また、書き出し元の設定画面や条件を記録しておくことも重要です。同じ名称の設定でも、ソフトウェアの更新や環境変更によって初期値が変わることがあります。担当者ごとに異なる設定で書き出すと、同じ現場のOBJでも内部構造が変わります。

点群OBJの作成条件を標準化し、検証結果とともに管理することで、アップロード後の表示不具合を未然に防ぎやすくなります。

点や線を面へ変換するときの注意点

アップロード先が点要素や線要素を表示できない場合、点や線を小さな面へ変換する方法があります。ただし、単純に変換すればよいわけではありません。

点を面として表示する場合は、各点の位置に小さな三角形や四角形などを配置します。この方法では面表示に対応した環境でも点の位置を確認できますが、点数に応じて頂点数と面数が大幅に増加します。

例えば、一つの点を四角形として表現すると、構成方法によっては複数の頂点と面が必要です。点群が数十万点、数百万点ある場合、データ容量や描画負荷が大きくなります。

各点を常に画面方向へ向けるビルボード表現は、通常の固定形状とは異なる描画処理です。OBJに書き出した固定面では、見る方向によって細く見えたり、裏面非表示の設定によって見えなくなったりする可能性があります。

線を面へ変換する場合は、線に幅を持たせた帯状の形状や細い柱状の形状を作ります。この方法も面表示環境との互換性を高められますが、線の接続部、曲線部分、交差部の形状に注意が必要です。

線幅を太くしすぎると、測量上の中心位置と見た目の境界がずれます。表示用の幅であることを明確にし、中心線の座標がどこにあるかを管理する必要があります。

点や線を面へ変換すると、元の要素としての意味が失われる場合があります。見た目は似ていても、点番号の取得、線長の計算、頂点の編集といった操作ができなくなる可能性があります。

そのため、変換後のデータは閲覧用として扱い、元の点群や線形データを別に保管することが重要です。座標検証や再編集には、変換前のデータを使用します。

全面的に変換する前に、一部の点や線だけを変換した検証用OBJを作成し、表示品質と処理負荷を確認します。必要以上に細かい形状を作らず、閲覧目的に合った大きさと分割数に抑えることが大切です。

点群OBJに関するよくある疑問

点群OBJをアップロードした際、頂点数が表示されているのに画面が空になることがあります。この場合、頂点座標は読み込まれているものの、点や面として描画する要素が存在しない、または表示モードが無効になっている可能性があります。頂点数の認識と画面への描画は別の処理です。

元の環境で見えていた線が消えた場合は、その線がOBJの「l」要素ではなく、作成環境内だけの補助表示だった可能性があります。ガイド線、選択枠、座標軸、計測結果などは、OBJへ書き出されないことがあります。

線の一部だけが消える場合は、無効な頂点参照、長さゼロの線、重複線、面との重なり、描画範囲外への移動などを確認します。視点を変えると見える場合は、線と面の重なりや表示方向の影響が考えられます。

点が少なく見える場合は、重複頂点の統合や間引き処理が行われている可能性があります。アップロード先に最適化や簡略化の設定がある場合は、その有効・無効と変換後の件数を確認します。

色だけが消えた場合は、頂点色やMTLの互換性を確認します。OBJの頂点座標は読み込めても、頂点行に追加された色情報が読み込まれないことがあります。色が失われた結果、背景と同化している可能性もあります。

ファイル容量が大きい場合は、まずサービスが公開しているファイル容量、頂点数、面数、処理時間などの上限を確認します。明示された上限を超えた場合に、アップロード拒否、変換失敗、簡略化のどれが行われるかはサービスごとに異なります。根拠なく「上限を超えた部分だけが自動的に省略される」と判断せず、ログと変換後の要素数で確認することが重要です。

アップロードし直すと表示結果が変わる場合は、元ファイルの内容、アップロード時の設定、変換処理の状態が同じかを確認します。同じファイル名で上書きした場合、以前の表示データやブラウザキャッシュが影響する仕組みもあるため、検証時は別名で登録し、サービスの更新手順に従うと切り分けやすくなります。

点群OBJが正しく表示されないときは、OBJという拡張子だけで互換性を判断しないことが重要です。ファイル内部の要素と、アップロード先が実際に処理する要素を対応させて考える必要があります。

まとめ

点群OBJをアップロードした後に線や点が消える場合、元データが完全に失われたとは限りません。OBJ内に頂点が存在していても、点要素や線要素が定義されていない場合や、アップロード先が面だけを処理する場合は、画面に表示されないことがあります。

最初に確認するのは、OBJ内に「p」の点要素と「l」の線要素が記録されているかです。次に、アップロード先が点、線、面のどこまで対応しているかを確認します。その後、座標値、単位、原点からの距離、点サイズ、線幅、色、透明度を調べ、最後に頂点参照や関連ファイルの整合性を確認します。

原因を調べるときは、元の大容量データを繰り返し変更するのではなく、点一つ、線一本、面一枚を含む小さな検証用OBJを使うと効率的です。どの要素が読み込まれるかを先に把握すれば、再書き出しや変換の方針を決めやすくなります。

アップロード前には、頂点数、点要素数、線要素数、面要素数、座標範囲、単位、原点、関連ファイルを記録しておくことが大切です。表示用に座標移動や面変換を行う場合も、測量座標を保持した元データは別に保管します。

現場で取得した点群を後工程まで安定して活用するには、取得時点から座標、点密度、不要点、表示方法を確認できる運用が有効です。点群の取得、絶対座標の付与、クラウド上での座標・距離・面積・体積の確認までを一連の作業として進める方法として、LRTK Phoneの活用も選択肢になります。

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

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