共通
共通
たとえば、タグをボタンに置き換える場合は以下のように書く
// toButtonでボタンに変更する
"タグ名": (replaceTag) => replaceTag.toButton?.create({
// ボタンの初期化情報
})
.onClick((ctx) => { // クリックされたイベント通知
// クリックを受け取ったタイミングで実行する関数
})
// 他にイベントがあれば後ろにつなげる
初期化情報
以下のパラメータは共通情報として、どの物体でも適用できる。
| 変数名 | 備考 |
|---|---|
| position | 表示位置。タグからの相対位置で表す |
| angle | 表示角度。degreeで表す |
| scale | 表示倍率 |
| isBillboard | ビルボード(カメラの角度に関わらず、ずっと同じ方向を向く物体)にする |
物体によっては、これ以外の固有の情報を取る
イベント
対象が発行するイベントを、onでサブスクライブする
※同じ関数を複数回呼び出した場合は、上書きではなく、それぞれの関数が呼ばれる
イベント一覧
| 関数名 | 実行タイミング |
|---|---|
| onLoad | リソースの読み込みが完了した |
| onUpdateState | タグのリアルタイム状態が更新された |
| onUpdateValue | タグに紐づいたデータが更新された |
| onUpdateCameraAngle | カメラのアングルが更新された |
| onTick | レンダリングを実行した(1/60秒ごとに1回実行される) |
| onEffect | effectDependsOnで参照したオブジェクトが更新された |
| onVisible | 表示状態が表示中に更新された |
| onHide | 表示状態が非表示に更新された |
| onClick | (クリック可能なオブジェクトのみ)対象がクリックされた |
イベントコンテキスト
イベント関数は以下の属性を持った引数を受け取る。直接参照するか、分割代入で取り出す
.onLoad((context) => {
const { self, tagName } = context;
});
| 変数名 | 必須 | 備考 |
|---|---|---|
| self | ◯ | 置き換えたあとのタグオブジェクト |
| tagName | ◯ | タグ名 |
| breadcrumb | ◯ | Groupで階層があるとき、階層を含んだタグ名 |
| rootScene | ◯ | Three.jsのSceneオブジェクト。useStoreでレンダラやライトを参照できる |
| state | onUpdateStateで通知された状態 | |
| values | onUpdateValueで通知されたIoTデータ | |
| cameraState | カメラの状態 | |
| matrix | カメラの角度 |
イベントによっては、これ以外の変数を持つこともある