MARKER_TEXT_INTERP.md
Overview
3DSL Viewer における points.appearance.marker.text(以下 marker.text)の解釈仕様を固定する。
- 対象: viewer アプリ側(3DSD-viewer)
- 実装範囲:
- 正規化(domain):
runtime/renderer/labels/labelIndex.js,runtime/renderer/labels/labelSpec.js - 表示(renderer):
runtime/renderer/labels/labelRuntime.js,runtime/renderer/labels/textSprite.js
- 正規化(domain):
Data model
marker.text は次のフィールドを持つ(任意)。
content: string… 表示文字列size: number… ラベルの相対サイズ(unitless)align: string… アンカー位置plane: string… 表示平面font: string | { family: string, style?: string, weight?: string }… フォント指定
Interpretation rules
content
表示文字列は次の順で決める。
marker.text.contentが non-empty ならそれを採用- そうでなければ
signification.nameを言語設定に応じて 1 本の string に正規化して採用
両方が空なら「ラベル無し」として扱う。
size
sizeは world 空間での高さへ変換されるための相対値(unitless)。- 実際の world 高さは
labelConfig.worldと camera distance を元に renderer 側で決める。
align
"left" | "center" | "right"と"top" | "middle" | "baseline"を"&"で連結して指定する。- 例:
"left top","center middle","right baseline"
- 例:
- 不正値はデフォルトへフォールバックする。
plane
"xy" | "yz" | "zx" | "billboard"を受け付ける。- 不正値はデフォルトへフォールバックする。
Coordinate / orientation
Viewer の座標系は Z-up を前提とする。
固定平面の法線(正面方向)は次で定義する。
xy:+Zyz:+Xzx:+Y
billboard は常にカメラ正面へ向ける。
Backside mirroring fix
固定平面(xy/yz/zx)は、カメラが裏側に回り込んだ場合に 180° 回転して常に正面向きにし、
裏面表示による鏡像(左右反転)を避ける。
- 実装:
labelRuntime.jsが camera position を推定し、平面法線との符号で反転を決定 - 回転軸: ラベル平面の ローカル Y 軸(文字の上方向を保持)
font
fontが object の場合はfamily/style/weightを採用し、styleはnormal|italic|oblique、weightはnormal|bold|bolder|lighter|100..900を有効とする。fontが string の場合は CSS のfont-familyとして扱う(先頭にstyle/weightが付く場合は解釈する)。- 不正値はデフォルトへフォールバックする。
Defaults
Viewer 側デフォルト(labelSpec.js)
content:signification.name(フォールバック)size:8align:center middleplane:zxfont:helvetiker_regular相当(実装では system font へフォールバック)
Compatibility notes
- 既存サンプルの
marker.textを壊さずに、未設定値はフォールバックで救済する。 plane固定の裏面問題は viewer 実装側で吸収する(3DSS データへ追加要件を課さない)。