Surface
説明
Surfaceデータ型は、3次元空間の点群を表します。 表示される点群は、厳密に定義された方法で構成されています。 点のX座標値は等差数列を作り、同様にY座標値も同様です。 したがって、全体のSurfaceオブジェクトは、点群の表現に多くのメモリを節約することができるグリッド構造を持っています。 これにより、Surfaceオブジェクトの関心領域を定義することも可能です。
![]() サンプルSurfaceオブジェクト。 |
![]() 同じSurfaceオブジェクトを上から見たもの。グリッド構造が明確に見えます。 |
メモリ表現
前述のグリッド構造は、X軸とY軸のオフセットとスケールの4つの値によって表されます。これらは、XOffset、XScale、YOffset、YScaleと呼ばれます。 これらの値は、グリッドの最初の行の点のY座標がYOffsetに等しいことを示し、2番目の行のY座標が次のようになります: YOffset + YScale、3番目の行ではYOffset + 2 * YScaleとなります。 同様に、グリッドの連続する列の点のX座標はXOffset、XOffset + XScale、XOffset + 2 * XScaleなどとなります。
Z座標値は、Imageオブジェクト内の値と同じ方法で格納されます。 同様に、Surface値は1つの6つの可能なプリミティブタイプのいずれかで表されます: sint8、uint8、sint16、uint16、sint32、およびreal。 Z座標の結果値を得るには、格納された値にZScaleを乗算し、ZOffsetを追加する必要があります。 ただし、点群のすべての点において、存在しない可能性があります。 この場合、点が存在しないことを示す特別なZ値が格納されます。
無効な点
一部のサーフェス生成および変換フィルタは、Z座標で無限の値を持つ無効な点、つまり点を導入する場合があります。 そのようなフィルタの例としては、ArrangePoint3DArrayが挙げられます。 このフィルタは、入力配列内の近くに点がない場所のすべての場所に無効な点を挿入します。
無効な点は、SurfaceValidPointsRegionを使用して特定できるか、フィルターReplaceInvalidSurfacePointsを使用して定数値で置き換えることができます。
備考
- 単一のSurfaceオブジェクトは、2GBを超えるメモリを割り当てることはできません。
- 最大Surface単一次元は65535を超えてはなりません(パフォーマンス上の理由で領域が16ビット整数を使用します)。