LRTKレフィクシア株式会社

点群OBJの小数精度を保つ書き出し設定6項目

点群OBJで小数精度を保つ必要がある理由

点群データをOBJ形式で書き出して業務システムへアップロードすると、元の編集画面では正しく見えていた形状がわずかにずれたり、別の測量データと重ならなくなったりすることがあります。境界部分が階段状に見える、平らな面が波打つ、設計データとの間に小さな隙間が生じるといった現象も、座標値の小数精度が関係している可能性があります。

OBJは、三次元形状を構成する頂点座標などをテキストで記録できる形式です。頂点の位置は、通常、X、Y、Zの三つの数値で表されます。数値を文字として保存できるため、小数点以下を十分に長く出力すれば精度を維持できるように思えます。しかし、実際の精度はOBJファイルに書かれた文字数だけでは決まりません。

書き出し元で使われている数値型、出力時に指定した小数桁数、座標値の大きさ、単位変換の有無、アップロード先が内部で使用する数値精度などによって、実際に保持される位置の細かさは変わります。ファイル内に多くの数字が並んでいても、その下位桁に測定上の意味があるとは限りません。反対に、元データが十分な精度を持っていても、書き出し設定が粗ければ、必要な情報が失われます。

点群 OBJ アップロードの実務では、目で見てほぼ同じだから問題ないとは限りません。概略表示では気付かない程度の差でも、断面比較、距離計測、出来形確認、複数時期の差分表示、設計モデルとの重ね合わせでは誤差として現れることがあります。点群から面を生成している場合には、小さな頂点位置の変化が法線や陰影にも影響し、表面が不自然に見えることもあります。

小数精度を保つ目的は、単純に小数点以下の桁数を増やすことではありません。元データが持つ精度を、書き出し、保存、アップロード、変換、表示、計測という一連の工程で必要な範囲まで維持することです。そのためには、用途に応じた許容誤差を決めたうえで、座標桁数、原点、単位、変換、属性、文字表現を総合的に設定する必要があります。

たとえば、メートル単位で管理される点群に対して、ミリメートル程度の位置差を残したいのであれば、小数点以下3桁より細かな表現が必要です。ただし、書き出し後に回転や単位変換が加わる場合は、ちょうど3桁だけでは丸めの余裕が不足する可能性があります。必要精度より数桁多く保持し、最終結果が許容差内に収まるかを確認する考え方が大切です。

また、点群の取得精度とOBJの数値精度は別のものです。書き出す桁数を増やしても、計測時に存在しなかった情報が増えるわけではありません。測定誤差を含む座標を細かな桁で保存すると、見かけ上は高精度でも、実際には意味のない下位桁が並ぶ場合があります。必要以上の桁数はファイル容量を増やし、処理時間を長くすることもあるため、目的に合った設定が必要です。

小数精度が失われる主なタイミング

小数精度は、OBJを書き出す瞬間だけで失われるわけではありません。点群を取得してからアップロード後に利用するまでの複数の工程で、座標値が丸められたり再計算されたりする可能性があります。原因を正しく特定するには、どの段階で座標が変化したかを切り分ける必要があります。

最初のタイミングは、元データを生成または保存した段階です。取得直後の点群に十分な精度があっても、中間保存時に小数桁数が制限されていれば、その時点で下位桁が失われます。一度丸められた座標を、後から小数点以下の長い形式で書き出しても、元の値は復元できません。OBJ出力の設定を確認する前に、書き出し元のデータがどの程度の精度を持っているかを確認することが重要です。

次に、点群を編集する際の座標変換が影響します。位置合わせのための移動、回転、拡大縮小、軸の入れ替え、座標系変換などでは、各頂点に対して数値計算が行われます。任意角度の回転や複数の変換を繰り返すと、単純な座標値でも長い小数になります。その結果を少ない桁数で保存すると、形状全体に微小な変化が生じる場合があります。

OBJの書き出し時には、出力用の文字列へ座標値を変換します。このとき、小数点以下の桁数や有効桁数が制限されていると、下位桁が丸められます。四捨五入される場合もあれば、一定桁より後ろが切り捨てられる場合もあります。書き出し設定に桁数の指定項目が見当たらなくても、内部的に固定値が使われていることがあるため、実際のOBJを確認する必要があります。

アップロード後に行われる内部変換も確認対象です。アップロードされたOBJがそのまま表示されるとは限らず、表示や配信を軽くするために別の内部形式へ変換される場合があります。頂点数の削減、座標の量子化、データの分割、ローカル座標への変換などが行われると、元のOBJとは異なる精度で表示される可能性があります。

ただし、表示が粗く見えるからといって、保存された元データまで変化しているとは限りません。画面表示だけに軽量化が適用され、計測には元に近いデータが使われる仕組みも考えられます。反対に、アップロード時にデータ自体が変換される場合もあります。ローカルでOBJを再読み込みした結果と、アップロード後の結果を比較し、どちらの段階で差が生じたかを確認することが大切です。

もう一つ見落としやすいのが、座標値の大きさです。同じ小数点以下6桁であっても、原点付近の小さな座標と、整数部が非常に長い座標では、読み込み後に保持できる下位桁が異なる場合があります。整数部を含む全体の有効桁数には限界があるため、巨大座標では小数部分の細かな差を区別できなくなることがあります。

小数精度の問題を防ぐためには、OBJ内の数字を見るだけでは不十分です。元データ、書き出したOBJ、再読み込みしたデータ、アップロード後のデータという複数の状態を比較し、座標差が発生した工程を特定する必要があります。

設定1 頂点座標の小数桁数を適切に指定する

一つ目の設定は、OBJの頂点座標へ出力する小数桁数です。点群の位置を構成するX、Y、Zが必要な精度で保存されるように、用途と単位に合わせて指定します。

メートル単位で管理している点群の場合、小数点以下1桁は約10センチメートル、2桁は約1センチメートル、3桁は約1ミリメートルに相当する表現になります。ただし、これは各桁が表す数値上の間隔であり、実際の測定精度を保証するものではありません。小数点以下3桁で出力したからといって、点群が必ずミリメートル精度になるわけではありません。

必要な小数桁数は、点群を何に使うかによって決めます。景観や現場全体を確認するだけなら、過度に細かな桁は不要な場合があります。一方、設計データとの位置比較、断面の差分確認、構造物の変位確認などでは、小さな座標差を保持する必要があります。

書き出し後に単位変換や回転を行う場合は、最終的に必要な桁数より少し余裕を持たせます。たとえば、最終成果でミリメートル単位の比較を行うとしても、出力段階で小数点以下3桁に限定すると、変換後の丸め誤差がそのまま成果へ影響する可能性があります。元データの品質と後工程の計算内容を考慮し、必要な範囲で追加の桁を保持します。

ここで重要なのが、小数桁数と有効桁数の違いです。小数桁数は、小数点の後ろへ何桁出力するかを示します。有効桁数は、整数部も含め、意味のある数字を全体で何桁扱えるかという考え方です。座標の整数部が長い場合、小数点以下を多く出力しても、読み込み先の内部計算では下位桁が区別されないことがあります。

たとえば、原点付近の座標と、大きな測量座標を直接持つデータでは、同じ小数点以下6桁でも実用上の安定性が異なる可能性があります。大きな座標を扱う場合は、桁数を増やすだけでなく、後述する原点移動を組み合わせることが効果的です。

出力桁数を決めた後は、OBJファイルをテキストとして確認します。先頭付近の頂点だけでなく、現場中央、端部、高さの異なる位置にある頂点も調べます。X、Y、Zのそれぞれに想定した桁数が出力されているか、特定の軸だけ短くなっていないかを確認します。

元データとOBJ内の座標を比較するときは、三次元距離だけでなく軸ごとの差を確認します。三次元距離だけでは、X方向のずれなのか、Z方向の丸めなのかが分かりにくいためです。代表点の元座標と出力座標を並べ、各成分の差が許容値に収まっているかを確認します。

同じ案件内では、出力桁数を統一します。担当者ごとに設定が異なると、同じ現場の点群でも座標の丸め方が変わり、複数ファイルを重ねた際に境界が一致しない場合があります。単位、桁数、原点、許容差を案件の共通条件として記録しておくと、再出力時にも品質をそろえやすくなります。

設定2 巨大座標を原点付近へ移動して書き出す

二つ目の設定は、大きな座標値をそのまま使わず、現場内の基準点を原点としてローカル座標へ変換することです。測量成果などでは、XやYの整数部が長い座標を使用することがあります。OBJは大きな値を文字として記録できますが、アップロード後の表示処理や計算処理が同じ精度で行われるとは限りません。

三次元表示では、頂点座標を内部の数値型へ読み込み、カメラ位置や投影条件に応じて繰り返し計算します。原点から非常に遠い位置に点群があると、小さな座標差を安定して表現しにくくなることがあります。その結果、点が細かく揺れる、重なった面がちらつく、直線が不自然に見える、境界部分がずれるといった現象が起こる場合があります。

対策として、案件内の分かりやすい基準点をローカル原点に設定し、全頂点から共通のオフセット値を差し引きます。これにより、OBJへ記録される座標を原点付近へ収められます。整数部が短くなれば、同じ数値精度でも小数部分の細かな差を扱いやすくなる可能性があります。

ただし、ローカル原点を使う場合は、元座標へ戻すための情報を必ず管理します。差し引いたX、Y、Zのオフセット、座標の単位、基準点の名称、適用した座標の考え方を記録します。OBJのファイル名だけでは情報を復元できないため、案件台帳や書き出し記録へ残すことが重要です。

原点はファイルごとに変えず、案件単位で固定します。各点群の最小座標や中心を自動的に原点にすると、一つずつ表示する場合は扱いやすくても、複数時期の点群を重ねる際に位置関係を復元しにくくなります。着工前、施工中、完成後などの点群を比較する場合は、全て同じオフセットを使います。

平面方向だけでなく、高さ方向のオフセットも検討します。XとYだけを原点付近へ移し、Zは標高のまま保持する方法もあります。標高値を直接確認しやすい利点がありますが、Zの値も大きい場合には三軸とも移動した方が安定することがあります。どちらを選ぶ場合でも、Zオフセットの有無を明記します。

オフセットを適用する順序も統一します。単位変換後にオフセットを引くのか、元の単位でオフセットを引いてからスケールを変更するのかによって、管理する値が変わります。担当者によって処理順が異なると、元座標へ戻す計算を誤りやすくなります。案件内では、単位、オフセット、回転、軸変換の順序を固定します。

書き出し後には、ローカル座標の代表点へオフセットを加え、元の座標へ正しく戻ることを確認します。X、Y、Zを別々に計算し、基準点だけでなく現場端部でも一致するかを調べます。基準点だけが合い、遠方で差が大きくなる場合は、倍率や回転が同時に変わっている可能性があります。

LRTK Phoneで取得した点群を、他の測量成果や設計データと重ねて利用する場合にも、共通のローカル原点を決めておくと管理しやすくなります。表示の安定性だけでなく、元座標との関係を確実に追跡できる運用を整えることが重要です。

設定3 単位とスケール変換を統一する

三つ目の設定は、点群の長さを表す単位と、書き出し時に適用するスケールです。OBJに記録される座標値は数字ですが、その数字がメートル、センチメートル、ミリメートルなどのどの単位を意味するかは、ファイルだけでは明確にならないことがあります。

書き出し元がメートルとして扱っている座標を、アップロード先がミリメートルとして読み込めば、形状は本来の千分の一になります。反対に、ミリメートルの値をメートルとして解釈すると、千倍になります。このような大きな違いは比較的発見しやすいものの、途中で自動変換が複数回行われると、見た目の寸法が合っていても精度が失われている場合があります。

たとえば、書き出し時にメートルからミリメートルへ変換し、アップロード時に再び千倍する設定が適用されれば、二重変換になります。反対に、書き出し時に変換したにもかかわらず、読み込み側が変換前の単位として扱えば、寸法が一致しません。どの工程で単位変換を行うかを一つに決める必要があります。

小数精度の観点では、単位を細かくすれば有利とは限りません。メートル単位の小数をミリメートル単位の整数へ変換すれば、小数点以下を短くできます。しかし、その分だけ整数部が大きくなります。巨大座標と組み合わさると、全体の有効桁数が増え、読み込み後に下位桁を保持しにくくなる可能性があります。

単位は、書き出し元の編集環境、OBJ出力、アップロード先、計測画面の全てで確認します。書き出し設定に単位を選ぶ項目がない場合は、座標値がそのまま出力される可能性があります。その場合は、既知寸法を持つ小さなテストデータを出力し、読み込み後の長さを測って判断します。

検証には、一辺の長さが分かっている形状や、位置が確定している二つの基準点を使います。平面距離だけでなく、高さ差と斜距離も確認すると、特定の軸にだけ異なる倍率が設定されている問題を発見しやすくなります。

拡大縮小を行う場合は、X、Y、Zへ同じ倍率が適用されているかも確認します。三軸で異なる倍率を使うと、全体の大きさだけでなく形状比率が変化します。編集画面で見た目を合わせるために行った調整が、実測値を変えていないか注意が必要です。

単位とスケールの設定は案件ごとに記録します。「メートルで管理する」「書き出し倍率は1とする」「アップロード時の追加変換は行わない」といった形で基準を明確にすると、担当者が変わっても同じ結果を再現しやすくなります。

設定4 回転や移動などの変換を事前に確定する

四つ目の設定は、回転、移動、拡大縮小、軸変換などをOBJ書き出し前に確定し、再計算の回数を減らすことです。三次元データの編集では、画面上で移動や回転を行っても、頂点座標そのものは変わらず、別の変換情報として保持されている場合があります。

この状態でOBJを書き出すと、書き出し処理が変換を頂点へ反映します。処理自体は一般的ですが、複数の変換が重なっている場合には、どの順序で計算されるかによって最終座標が変わる可能性があります。また、書き出すたびに変換結果が再計算されると、丸めのタイミングが増えます。

本番出力前に必要な移動や回転を決め、最終的な頂点座標へ一度だけ反映する運用にすると、処理を追跡しやすくなります。特に、点群を現場方向へ回転した場合、設計モデルへ位置合わせした場合、上下軸を変更した場合は、書き出し前に変換状態を確認します。

ただし、変換を確定する前には元データを別に保存します。変換後の座標から元の状態へ戻すには逆変換が必要となり、再び数値計算が発生します。編集用の元データと、位置合わせ済みの書き出し用データを分けて管理すると安全です。

軸方向の設定も小数精度と関係します。上下方向に使う軸や正面方向が異なる環境へOBJを渡す場合、書き出し時に軸の入れ替えや符号反転が行われることがあります。90度単位の回転であっても、処理方法によっては行列計算として扱われます。任意角度の回転では、変換後の座標に長い小数が発生します。

この変換後の座標を少ない桁数で保存すると、直線や平面がわずかに乱れる可能性があります。回転前の座標が短い小数だったとしても、回転後には別の桁数が必要になります。設定1で決めた精度が、変換後の値にも十分かを確認します。

複数の点群を一つのOBJへ統合する場合は、各データの変換状態をそろえます。一部の点群だけ変換が未確定だと、編集画面では正しく重なっていても、OBJへ出力した際に位置が変わることがあります。統合前後で基準点、境界線、高さを確認し、期待する座標になっているかを調べます。

OBJを何度も読み込み、修正して再保存する運用も避けた方が安全です。各世代で桁数制限や変換が適用されると、わずかな差が蓄積する可能性があります。修正が必要になった場合は、可能な限り元データへ戻り、同じ確定済み設定で新しいOBJを書き出します。

設定5 頂点・UV・法線の出力精度を分けて管理する

五つ目の設定は、OBJに含まれる全ての数値を同じものとして扱わず、頂点座標、UV座標、法線ベクトルを分けて管理することです。点群として頂点だけを使用する場合は位置座標が中心ですが、面やテクスチャを含むOBJでは、他の属性も表示結果へ影響します。

頂点座標は、点や面の実空間上の位置を表します。距離、面積、体積、断面、設計データとの重ね合わせに関係するため、業務上必要な位置精度を保つ必要があります。

UV座標は、画像のどの部分を面へ貼り付けるかを指定する値です。位置座標とは異なる範囲の小数で表されることが多く、桁数が粗いと画像の貼り付け位置がずれる可能性があります。外形は正しくても、模様や色の境界がずれる場合は、頂点座標ではなくUV精度を確認します。

法線ベクトルは、頂点や面が向いている方向を表します。照明計算や陰影の表現に使われるため、法線の精度が低いと、滑らかな表面に段差のような陰影が現れることがあります。ただし、アップロード先で法線を再計算する場合は、OBJ内の法線がそのまま使われないこともあります。

書き出し設定で属性ごとに精度を指定できる場合は、用途に応じて値を決めます。位置計測が中心でテクスチャを使わないなら、頂点座標の精度を優先し、不要なUVを出力しない方法があります。陰影を正確に見せる必要がなければ、法線を読み込み側で再生成する運用も考えられます。

一方で、必要な属性を削除すると、アップロード後の見え方が変わります。面の向きが不安定になったり、テクスチャが表示されなくなったりする場合があります。容量を減らすために属性を省く場合は、本当に利用しない情報かを確認します。

OBJでは、頂点、UV、法線がそれぞれ別の番号で管理されることがあります。面の境界やUVの切れ目では、一つの位置に複数の属性が割り当てられ、書き出し時に頂点が分割される場合があります。その結果、見た目は同じでもファイル内の頂点数が増えることがあります。

頂点数の増加は、小数精度そのものを下げるわけではありませんが、ファイル容量とアップロード負荷に影響します。精度設定を変更した後に容量が大きく増えた場合は、数字の桁数だけでなく、頂点や属性の数が変わっていないかを確認します。

点だけを含むOBJを作る場合は、アップロード先が面のないOBJを表示できるかも事前に確認します。OBJをメッシュ専用として扱う環境では、頂点行が正しくても点が表示されない可能性があります。この場合は小数精度の問題ではなく、アップロード先の対応形式の問題です。

点が欠ける、面が表示されない、テクスチャだけがずれるといった症状を全て座標桁数の問題として扱うと、不要な再出力を繰り返すことになります。位置、UV、法線、面参照を分けて調べることで、原因を効率的に特定できます。

設定6 文字表現を統一して再読み込みを検証する

六つ目の設定は、OBJ内の数値表現を統一し、書き出したファイルそのものを再読み込みして確認することです。OBJはテキスト形式であるため、小数点、区切り、指数表記、改行などの書き方が読み込み結果へ影響する場合があります。

座標値の小数点には、互換性の高い表現を使用します。利用する環境の地域設定によって数値表示の形式が変わっていても、OBJ内では読み込み先が正しく解釈できる形式になっているかを確認します。座標の途中へ桁区切りの記号が入ると、数値や列の区切りとして誤認される可能性があります。

非常に大きい値や小さい値が指数表記になることもあります。指数表記を解釈できる環境は多いものの、全てのアップロード先で同じように処理されるとは限りません。互換性を優先する場合は、通常の小数表記で出力できる設定を選びます。

ただし、指数表記を通常の小数へ変換したことで、末尾の桁が省略されては意味がありません。実際のOBJを確認し、元の座標を表現するために必要な桁が残っているかを見ます。

頂点行では、各成分が適切な空白で区切られている必要があります。全角の空白、見えない制御文字、数値ではない文字が混ざると、一部の行だけ読み込まれない場合があります。ファイル全体を目視することは難しいため、先頭、中央、末尾の複数箇所を確認します。

最も重要な検証は、書き出したOBJを新しい状態で再読み込みすることです。書き出し元の画面に元データが残ったままでは、OBJではなく内部データを見ている可能性があります。新しい作業状態を用意し、書き出したOBJだけを読み込みます。

再読み込み後は、頂点数、座標の最小値と最大値、基準点の位置、既知距離、全体の向き、形状の大きさを確認します。元データと頂点が一対一で対応している場合は、各軸の差を計算します。頂点順が変わる場合は、位置が分かっている基準点や近傍距離を使って比較します。

代表点だけでなく、原点から遠い位置も確認することが大切です。原点付近では差が小さく、現場端部で差が大きい場合は、回転、倍率、巨大座標の影響が考えられます。全ての点が同じ量だけずれている場合は、オフセットの問題が疑われます。

ローカルで正しく再読み込みできたら、実際のアップロード先でも同様に確認します。アップロード後の基準点位置、既知距離、座標範囲、他データとの重なりを調べます。ローカルでは正しく、アップロード後だけ問題が出る場合は、アップロード時の内部変換や表示処理を切り分けて考えます。

点群OBJアップロード前に行う確認手順

点群 OBJ アップロード前の確認は、設定画面を眺めるだけで終わらせず、小さなテストから本番データまで段階的に行います。まず、OBJを何に使用するかを明確にします。表示確認、施工記録、設計照合、断面計測、体積比較など、目的によって必要な精度が異なるためです。

次に、元データの状態を確認します。単位、座標範囲、点数、取得精度、編集履歴、適用済みの変換を把握します。座標の最小値と最大値をX、Y、Zごとに確認すると、巨大座標の有無や高さ方向の範囲を判断できます。

その後、アップロードする属性を決めます。頂点だけでよいのか、面が必要なのか、UVや法線を含めるのかを整理します。必要のない属性を含めると容量が増えますが、必要な情報を省くと正しく表示できない場合があります。

本番データをいきなり全て書き出すのではなく、代表的な範囲を切り出したテストOBJを作ります。テスト範囲には、原点付近、現場端部、高低差のある部分、細かな形状、既知距離を含めます。これにより、巨大座標、桁数、スケール、軸方向の問題を少ない処理時間で確認できます。

テストOBJは、新しい作業状態へ再読み込みします。元データと基準点、距離、座標範囲を比較し、許容差内に収まっているかを確認します。問題がある場合は、小数桁数だけを変更するのではなく、原点、単位、変換、文字表現を順番に調べます。

テストが問題なければ、同じ設定で全体を書き出します。本番OBJでは、ファイル容量、頂点数、座標範囲、先頭と末尾の頂点行を確認します。関連する材質情報や画像がある場合は、参照関係が維持されているかも確認します。

アップロード後は、全体が表示されたことだけで完了としません。基準点、既知距離、設計データとの重なり、高さ、端部形状を確認します。表示密度が自動的に変わる環境では、拡大率を変えながら点の欠落や形状の変化を調べます。

検証結果は案件ごとに記録します。使用した単位、小数桁数、原点オフセット、軸方向、変換内容、元データの識別情報、作成日時、再読み込み結果、アップロード後の確認結果を残します。再出力が必要になった場合にも、同じ条件を再現しやすくなります。

ファイル名にも、用途や版を識別できる情報を含めます。精度を保った保管用データと、軽量化した閲覧用データがある場合は、誤って入れ替えないように明確に区別します。閲覧用データを計測や再編集の元として使うと、精度低下が次の成果物へ引き継がれる可能性があります。

症状から精度低下の原因を切り分ける方法

点群OBJの精度問題は、症状によって確認すべき設定が異なります。全体の形状は正しいものの、他の点群や設計データに対して一定量だけずれている場合は、原点オフセットや平行移動を確認します。全ての点が同じ方向へ同じ距離だけずれているなら、小数桁数より基準点の違いが原因である可能性が高くなります。

形状が全体的に大きい、または小さい場合は、単位とスケールを調べます。既知距離を測り、元データとの倍率を比較します。十倍、百倍、千倍など一定の倍率になっている場合は、単位の解釈違いや二重変換が考えられます。

X方向の長さは合っているのに、高さだけ違う場合は、軸ごとに異なる倍率や単位が使われていないかを確認します。上下軸の入れ替えや符号反転によって、想定と異なる向きになっている可能性もあります。

現場の中心付近は正しく見えるものの、端部へ行くほどずれが大きくなる場合は、回転角度やスケール係数の違いが疑われます。平行移動だけであれば、位置に関係なくずれ量はほぼ一定です。距離に応じて差が増える場合は、回転、倍率、座標変換を優先して調べます。

原点から遠い場所だけ点が震える、面がちらつく、細かな形状が崩れる場合は、巨大座標と内部精度の組み合わせが考えられます。同じ範囲をローカル原点へ移したテストOBJと比較し、改善するかを確認します。

平らな面が細かく波打つ、点が一定間隔の格子へ吸着したように見える場合は、小数桁数不足が疑われます。OBJ内の座標を確認し、多くの点が同じ下位桁へそろっていないかを見ます。桁数を増やしたテストと比較し、差が減るかを確認します。

外形は正しいのに、明暗だけが不自然な場合は法線を調べます。法線が省略されている、粗く丸められている、読み込み時に意図しない方法で再計算されている可能性があります。頂点座標の桁数を増やしても改善しない場合は、法線設定へ切り替えて確認します。

画像や色の位置だけがずれる場合は、UV座標、画像の寸法、材質参照を調べます。位置座標が正しくても、UVの小数精度が不足していれば、画像の境界や細かな模様がずれることがあります。

一部の点や面だけが欠ける場合は、小数精度以外の問題も考えられます。数値として解釈できない行、極端に大きな値、欠損値、面の参照番号、未対応の記述が含まれていないかを確認します。欠けた部分に対応するOBJ行を探し、正常な部分との違いを比較します。

小数精度とファイル容量を両立させる考え方

小数点以下の桁数を増やすと、一つの頂点行に含まれる文字数が増えます。数千点程度のデータでは影響が小さくても、数百万点を含むOBJでは、数桁の違いが全体容量へ大きく影響することがあります。

頂点だけでなく、UVや法線にも長い小数を出力すると、さらに容量が増えます。ファイルが大きくなれば、保存、転送、アップロード、変換、表示に必要な時間やメモリも増えます。したがって、最も長い桁数を無条件に選ぶのではなく、必要精度を満たす範囲で設定する必要があります。

容量を減らしたい場合でも、必要な座標桁数を最初に削るのは避けた方が安全です。先に、不要な属性、重複点、利用しない面、過剰な点密度、参照されていない情報を整理します。位置精度を保ったままデータ構成を軽くできれば、計測品質への影響を抑えられます。

点密度と小数精度は別の要素です。点数が多くても、一点ごとの座標が粗く丸められていれば、細かな形状は正しく残りません。反対に、座標の桁数が十分でも、点の間隔が広ければ、表面の細部を表現できません。

データ品質を考えるときは、取得精度、座標の数値精度、点密度、ノイズ、面生成条件を分けて確認します。点数を減らす処理と、座標を丸める処理では結果が異なります。点数削減は形状のサンプリング間隔を変え、座標丸めは各点の位置そのものを変えます。

適切な設定を決めるには、代表データを異なる桁数で書き出して比較する方法が有効です。ファイル容量、書き出し時間、再読み込み時間、アップロード時間、基準点の座標差、既知距離、表示品質を確認します。

必要な精度を満たし、運用上許容できる容量となる設定を標準にします。業務によって必要精度が異なる場合は、用途別に設定を分けます。ただし、設定名だけでなく、具体的な桁数、単位、原点、検証基準を記録する必要があります。

保管用と閲覧用のOBJを分ける方法もあります。保管用は必要な小数精度と属性を維持し、日常的な閲覧や共有には点数や属性を整理した軽量版を使います。この場合、どちらが正式な成果物であるかを明確にします。

軽量版を再編集し、次の正式成果物を作ると、削減済みの精度が引き継がれます。修正や再出力は、原則として精度を保持した元データから行います。ファイル容量だけでなく、データの世代管理まで含めて運用することが重要です。

複数時期の点群を比較するときの注意点

施工前後や定期計測など、複数時期の点群OBJを比較する場合は、一つのファイルだけを扱うときより厳密な設定管理が必要です。各OBJの見た目が個別に正しくても、書き出し条件が異なると、重ね合わせた際に差が生じます。

最初に統一すべきなのは、原点オフセットです。時期ごとに異なるローカル原点を使うと、アップロード後に位置関係を復元するための処理が増えます。全時期で共通の基準点とオフセットを使用すると、座標を直接比較しやすくなります。

単位とスケールも統一します。一部のOBJがメートル、別のOBJがミリメートルでは、読み込み時の設定に依存して大きさが変わります。自動判定で偶然正しく表示されたとしても、再アップロード時に同じ結果になるとは限りません。

小数桁数は、最も厳しい比較用途に合わせます。一つの時期だけ桁数が少ない場合、他の点群が高精度でも、比較結果は粗いデータの影響を受けます。時期ごとに異なる桁数で保存すると、差分画面に段階的な模様が現れることもあります。

回転や位置合わせの方法も共通化します。各時期の点群を目視で個別に合わせると、わずかな回転差が現場端部で大きな位置差になります。共通の基準点や変換条件を使い、同じ手順で座標を確定します。

差分を評価する前に、変化していない基準部分を確認します。本来動いていない地物や基準点に差が出ている場合は、現場の変化ではなく、書き出しや位置合わせの違いが含まれている可能性があります。

比較結果に細かな凹凸が広範囲に現れた場合は、実際の変化と即断せず、座標桁数、点密度、ノイズ、面生成条件を確認します。異なる密度や異なる丸め条件の点群を比較すると、実際には変化していない場所にも差が出ることがあります。

書き出し設定は、時期ごとの記録ではなく、案件全体の共通仕様として管理します。設定を変更した場合は、変更日と理由を残し、変更前後のデータを直接比較してよいかを明確にします。

LRTK Phoneで同じ現場を継続的に取得し、OBJとして管理する場合も、取得時期だけでなく、書き出し設定と検証条件をそろえることが重要です。共通条件を維持することで、点群 OBJ アップロード後の比較結果を判断しやすくなります。

まとめ

点群OBJの小数精度を保つためには、小数点以下の桁数だけでなく、座標値全体の有効桁数、原点からの距離、単位、スケール、回転や移動、UV、法線、数値表現まで含めて設定する必要があります。

まず、点群を何に使うのかを明確にし、業務上必要な許容誤差を決めます。次に、元データの取得精度、単位、座標範囲、編集履歴を確認し、必要な小数桁数を設定します。元データ以上の細かな数字を並べても測定精度が向上するわけではありませんが、桁数が不足すれば保持できたはずの位置情報を失います。

巨大座標を含む場合は、案件共通の基準点を使ってローカル原点へ移動する方法が有効です。ただし、元座標へ戻すためのオフセットを必ず記録し、ファイルごとに異なる原点を使わないようにします。

単位とスケールは、書き出し元、OBJ、アップロード先、計測画面で統一します。単位変換を複数の工程で重ねず、どこで変換するかを固定することが重要です。回転、移動、軸変換も書き出し前に確定し、OBJの再保存を繰り返さない運用にします。

面やテクスチャを含む場合は、頂点座標だけでなくUVと法線も確認します。位置が合っているのに画像や陰影が崩れる場合は、座標の桁数以外に原因がある可能性があります。

書き出し後は、OBJを新しい状態で再読み込みし、基準点、既知距離、座標範囲、向き、頂点数を確認します。ローカルで正しいことを確認したうえで、実際のアップロード先でも同じ項目を検証します。これにより、書き出し時の問題とアップロード後の変換や表示の問題を切り分けられます。

点群 OBJ アップロードを安定させる鍵は、小数桁数を必要以上に増やすことではなく、必要な精度を再現可能な設定と確認手順で維持することです。書き出し条件、原点、単位、許容差、検証結果を案件単位で管理すれば、再出力や複数時期の比較でも位置ずれを抑えやすくなります。現場での点群取得から共有、計測、比較までを一貫した条件で進める際は、LRTK Phoneを活用した運用も検討するとよいでしょう。

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

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