データ型:列挙型と構造体
LCC Unity SDK が公開する列挙型と構造体で、LCCManager と Renderer のメソッドで使用します。
列挙型
PlatformType
対象のランタイムプラットフォームです。SetPlatformType() で使用します。
public enum PlatformType { PC, Mac, Android, iOS, Pico, Quest, AVP, PicoSwan, OpenXR, PCVR }
ActiveRenderMode
グローバルレンダリングアーキテクチャモードです。SwitchRenderPass() で使用します。
public enum ActiveRenderMode { MultiRender, SingleRender }
| 値 | 説明 |
|---|---|
MultiRender | 共有 GPU バッファを使用し、最大 255 個の Renderer を同時にレンダリング可能 |
SingleRender | SDK がデータサイズに基づいてレンダリングパスを自動選択 |
PC / Mac プラットフォームにのみ適用されます。モバイル / VR プラットフォームは自動的に適応戦略を採用し、
SwitchRenderPass()の呼び出しは拒否されます。
SourceType
データソースタイプです。Renderer.GetSourceType() が返します。
public enum SourceType { LCC, PLY, SPLAT, TYY, None, SOG, SPZ, KSPLAT }
DataType
データフォーマットタイプです。Renderer.GetDataType() が返します。
public enum DataType { L1, L2, L2Pro, K1, K2, Drone, Drone_L2, PortalCam, None }
MipMode
Mip レンダリングモードです。SetMipMode() で使用します。
public enum MipMode { Mip, Non_Mip }
| 値 | 説明 |
|---|---|
Mip | ミップマップサンプリングを使用(デフォルト) |
Non_Mip | ミップマップを無効化。レンダリングの詳細は細かくなるが、性能オーバーヘッドが高い |
SnapType
スナップタイプです。HitResult.snapType と SnapPreviewState.snapType で使用します。
public enum SnapType { None, Edge, Corner }
SelectionMode
ノード選択戦略です。SetSelectionMode() で使用します。
public enum SelectionMode { Auto, Normal, Large }
| 値 | 説明 |
|---|---|
Auto | シーンの全体バウンディングボックスに基づいて自動決定(デフォルト) |
Normal | 中小規模のシーンに適する |
Large | 超大規模シーン(1000 メートル超)に適する |
RenderMode
点群 / 3DGS レンダリングモードです。SwitchRenderMode() で使用します。
public enum RenderMode { PointCloud, LCCGS }
| 値 | 説明 |
|---|---|
PointCloud | 点群レンダリング |
LCCGS | 3DGS レンダリング |
SelectMode
選択の採用/除外モードです。Data2D や Data3D などの選択データで使用します。
public enum SelectMode { normal, invert, clip }
OperationMode
複数ジオメトリのブール演算モードです。Data3D や DataMix などの選択データで使用します。
public enum OperationMode { normal = 0, erase = 1 }
| 値 | 説明 |
|---|---|
normal | 和 |
erase | 差 |
EditType
混合選択におけるエントリタイプです。DataMix と ToneMix で使用します。
public enum EditType { Edit2D, Edit3D }
ShapeType
3D クリップ / ハイライトのジオメトリタイプです。Data3D、DataMix、ToneMix で使用します。
public enum ShapeType { box, sphere }
構造体
HitResult
レイキャストのヒット結果です。Raycast()、RaycastMesh()、RaycastWithSnap() が返します。
public struct HitResult {
public bool isHit; // ヒットしたかどうか
public float distance; // 距離
public Vector3 hitPos; // ヒット点のワールド座標
public Vector3 normal; // ヒット法線
public float hitAlpha; // ヒットした楕円体のアルファ
public float dist2Origin; // レイ原点までの距離
public float scale; // 楕円体のスケール
public SnapType snapType; // スナップタイプ(None / Edge / Corner)
public Vector3 originalHitPos; // スナップ前の元のヒット点
}
ヒット点ワールド座標のフィールド名は
hitPosです。
SnapPreviewState
スナッププレビュー状態です。GetSnapPreviewState() が返します。
public struct SnapPreviewState {
public bool hasTarget; // スナップターゲットがあるかどうか
public SnapType snapType; // None / Edge / Corner
public Vector2 screenPos; // スナップターゲットのスクリーン座標
public float distanceToMouse; // マウス位置までのピクセル距離
}
screenPosはスクリーン座標(ピクセル)であり、ワールド座標ではありません。ワールド座標が必要な場合は、RaycastWithSnap() でHitResult.hitPosを取得します。
Data2D
2D テクスチャ投影選択です。2D テクスチャのクリッピング / ハイライトに使用します。
public struct Data2D {
public Texture2D texture; // R8 1024x1024 マスクテクスチャ
public Matrix4x4 mv; // ModelView 行列
public Matrix4x4 mvp; // ModelViewProjection 行列
public SelectMode mode; // normal / invert
}
Data3D
3D ジオメトリ選択です。3D ジオメトリのクリッピング / ハイライトに使用します。
public struct Data3D {
public ShapeType type; // box / sphere
public Matrix4x4 invMat; // ジオメトリの逆変換行列
public OperationMode operation; // normal=和、erase=差
public SelectMode mode; // normal / invert / clip
}
DataMix
2D + 3D 混合選択です。混合モードのクリッピング / ハイライトに使用します。
public struct DataMix {
public EditType editType; // Edit2D / Edit3D
public ShapeType type; // 3D ジオメトリタイプ
public Matrix4x4 invMat; // 3D 逆変換行列
public Texture2D texture; // 2D マスクテクスチャ
public Matrix4x4 mv; // 2D ModelView
public Matrix4x4 mvp; // 2D MVP
public OperationMode operation;
public SelectMode mode;
}
ToneMix
カラー調整選択です。DataMix にカラー調整パラメータを追加したものです。SetTone() で使用します。
public struct ToneMix {
public EditType editType; // Edit2D / Edit3D
public ShapeType type; // 3D ジオメトリタイプ
public Matrix4x4 invMat; // 3D 逆変換行列
public Texture2D texture; // 2D マスクテクスチャ
public Matrix4x4 mv; // 2D ModelView
public Matrix4x4 mvp; // 2D MVP
public OperationMode operation;
public SelectMode mode;
public float brightness; // 明るさ(デフォルト 1.0)
public float saturation; // 彩度(デフォルト 1.0)
public float contrast; // コントラスト(デフォルト 1.0)
public int lutid; // LUT フィルタインデックス(0 = 未使用)
}
PointLightData
カスタムポイントライト / スポットライトのデータです。SetLights() で使用します。
public struct PointLightData {
public float3 position; // ワールド座標
public int lightType; // 0=ポイントライト、1=スポットライト
public float3 color; // RGB カラー(アルファ成分なし)
public float intensity; // ライト強度
public float3 direction; // スポットライトの方向(ポイントライトでは無視)
public float range; // ライトの範囲
public float spotAngle; // スポットライトのコーン角度(度、ポイントライトでは無視)
public float3 pad; // アライメントパディング。代入不要
}
フィールドの型は
Unity.Mathematics.float3であり、Vector4ではありません。colorにはアルファ成分がありません。lightTypeが0のときはポイントライト(direction/spotAngleは無視)、1のときはスポットライトです。
DecalOcclusionSettings
デカールのオクルージョンカリング品質パラメータです。SetDecalOcclusionSettings() で使用します。
public struct DecalOcclusionSettings {
public float opacityCutoff; // [0,1] Splat が深度マップに参加するための最小不透明度。デフォルト 0(全参加)
public float depthBias; // 相対深度許容比率。デフォルト 0.05
public int footprintMaxPx; // 正方形フットプリント半径の上限(px)。0〜16、デフォルト 2
public int resolution; // 深度マップ解像度(px、2 のべき乗、256〜4096)。デフォルト 1024
public static DecalOcclusionSettings Default { get; } // cutoff=0, bias=0.05, footprint=2, resolution=1024
}
| フィールド | 説明 |
|---|---|
opacityCutoff | この値以上の不透明度を持つ Splat のみ深度マップに参加し、浮遊 / 霧状の Splat を除去できます。デフォルト 0(全参加)。 |
depthBias | 距離に比例して点群サーフェスの厚みを吸収する相対深度許容比率です。デフォルト 0.05。小さすぎると自己オクルージョンノイズが発生し、大きすぎるとオクルージョンが漏れます。 |
footprintMaxPx | 保守的な最大正方形フットプリント半径(ピクセル)で、近傍をカバーして貫通漏れを防ぐために使用します。0 は単一テクセル、範囲 0〜16、デフォルト 2。大きすぎると輪郭の拡大と過剰なオクルージョンが発生します。 |
resolution | 深度マップ解像度(ピクセル、2 のべき乗、256〜4096)。下げると疎な穴が埋まりますが、オクルージョン境界がわずかに粗くなります。デフォルト 1024。 |
SplatMeta
3DGS データのメタデータです。Renderer.GetMeta() が出力します。データソース(source)やデータフォーマット(dataType)などのメタデータを含み、データを完全に読み込まずに読み取れます。
LCCMeshBlockInfo
コリジョン Mesh ブロックのメタデータです。Renderer.GetMeshBlockInfos() が返します。
public struct LCCMeshBlockInfo {
public string id; // ノード ID。LCCMeshBlock.id に対応
public Bounds boundsWorld; // ワールド空間 AABB。ID の選択に使用
public Bounds boundsLocal; // ローカル空間 AABB
public int vertexCount; // 頂点数
public int faceCount; // 面数
}
| フィールド | 型 | 説明 |
|---|---|---|
id | string | ノード ID。LCCMeshBlock.id に対応 |
boundsWorld | Bounds | ワールド空間 AABB。ID の選択に使用 |
boundsLocal | Bounds | ローカル空間 AABB |
vertexCount | int | 頂点数 |
faceCount | int | 面数 |
LCCMeshBlock
コリジョン Mesh ブロックのジオメトリデータです。Renderer.GetMeshes() が返します。
public struct LCCMeshBlock {
public string id; // ノード ID
public Vector3[] vertices; // 頂点。ローカル座標系
public int[] triangles; // 三角形インデックス。1 グループあたり 3 個
public Bounds boundsLocal; // 頂点と同じ空間のバウンディングボックス
}
| フィールド | 型 | 説明 |
|---|---|---|
id | string | ノード ID |
vertices | Vector3[] | 頂点配列。オブジェクトローカル座標系 |
triangles | int[] | 三角形インデックス。1 グループあたり 3 個 |
boundsLocal | Bounds | 頂点と同じ空間のバウンディングボックス |
vertices/boundsLocalはどちらもオブジェクトのローカル座標系です。Mesh を保持する GameObject をRenderer.Transformの下に置くと自動的にアライメントされます。1 ブロックの頂点数は 65535 を超える場合があるため、Mesh 構築前にmesh.indexFormat = IndexFormat.UInt32を設定する必要があります。