@openheart/tavio-renderer 2.4.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,10 +15,25 @@ export declare class CameraPath {
15
15
  private positionSpline;
16
16
  private targetSpline;
17
17
  private visualizationObjects;
18
+ private times;
18
19
  /**
19
20
  * @constructor
20
21
  */
21
22
  constructor();
23
+ /**
24
+ * 各制御点に対応する時刻を設定する。制御点ごとに到達するタイミングを変えたい場合に使う
25
+ * (軌道の形は変わらず、各区間を通過する速さだけが変わる)。
26
+ * 2要素以上・有限値・単調非減少でない場合は無視して等間隔として扱う。
27
+ * @param times - 各制御点の時刻(0.0 ~ 1.0)。null で等間隔に戻す
28
+ */
29
+ setTimes(times: number[] | null): this;
30
+ /**
31
+ * 時刻 t(0.0 ~ 1.0)を、スプラインの等間隔パラメータに変換する。
32
+ * times が設定されていて制御点数と一致する場合のみ、t が属する区間を求めてその区間内の割合に変換する
33
+ * @param t - 時刻(0.0 ~ 1.0)
34
+ * @param pointCount - 対象スプラインの制御点数
35
+ */
36
+ private toSplineParameter;
22
37
  /**
23
38
  * カメラパスから指定された時刻の座標・注視点を返す
24
39
  * @param t - 時刻(0.0 ~ 1.0)
@@ -84,8 +99,25 @@ export declare class CameraPath {
84
99
  /**
85
100
  * シーンを指定して、補間後の曲線と制御点を可視化する
86
101
  * @param parent - ラインと点を追加する Object3D
87
- */
88
- insertObject(parent: Object3D): void;
102
+ * @param options.showPoints - 制御点(Points)も表示するか(デフォルト: true)。
103
+ * 本レンダラーでは Points の描画サイズが環境によって意図せず巨大な板状に見えることが
104
+ * あるため、曲線(Line)だけで十分な用途ではfalseを指定できるようにしている。
105
+ * @param options.lineWidth - 曲線の太さ(px)。指定すると太さを持つ線(Line2 + LineMaterial)で描画する
106
+ * (WebGLの通常の線は環境によって1pxに制限されるため)。省略時は通常の1pxの線
107
+ * @param options.resolution - 描画領域のサイズ(px)。lineWidth指定時に太さの計算に使う
108
+ * @param options.lineColor - 曲線の色(座標・注視点の両方)。省略時は座標がマゼンタ、注視点が緑
109
+ * @param options.showTargetLine - 注視点の曲線も表示するか(デフォルト: true)
110
+ */
111
+ insertObject(parent: Object3D, options?: {
112
+ showPoints?: boolean;
113
+ lineWidth?: number;
114
+ resolution?: {
115
+ x: number;
116
+ y: number;
117
+ };
118
+ lineColor?: number;
119
+ showTargetLine?: boolean;
120
+ }): void;
89
121
  /**
90
122
  * 可視化用に追加したオブジェクトを削除する
91
123
  * @param parent - オブジェクトを削除する親 Object3D
@@ -99,6 +131,7 @@ export declare class CameraPath {
99
131
  * @param segments - スプラインを何本の線の結合でジオメトリ生成するか
100
132
  * @param pointColor - 制御点の色
101
133
  * @param lineColor - ラインの色
134
+ * @param showPoints - 制御点(Points)も追加するか
102
135
  */
103
136
  private insert;
104
137
  }
@@ -114,7 +147,8 @@ interface iVectorLike {
114
147
  * カメラパスを生成するヘルパー関数
115
148
  * @param position - カメラの座標({x, y, z} のオブジェクト、または [x, y, z] の数値の配列)の配列
116
149
  * @param target - 注視点の座標({x, y, z} のオブジェクト、または [x, y, z] の数値の配列)の配列
150
+ * @param times - 各制御点に対応する時刻(0.0 ~ 1.0)。省略時は等間隔
117
151
  * @returns 生成された CameraPath
118
152
  */
119
- export declare function createCameraPath(position: iVectorLike[] | number[][], target: iVectorLike[] | number[][]): CameraPath;
153
+ export declare function createCameraPath(position: iVectorLike[] | number[][], target: iVectorLike[] | number[][], times?: number[] | null): CameraPath;
120
154
  export {};
@@ -0,0 +1,57 @@
1
+ import { PerspectiveCamera, Ray, Vector3 } from 'three';
2
+ import { Selector, iIntersection } from './selector';
3
+ export interface iCameraSelectorOption {
4
+ radius?: number;
5
+ color?: number;
6
+ lineWidth?: number;
7
+ aspectRatio?: number;
8
+ }
9
+ /**
10
+ * カメラの位置(position)を表す、カメラを模した四角錐(フラスタム)アイコンのセレクター。
11
+ * 底面はカメラのフレーム(画角)を模した長方形(aspectRatioで指定)にし、正方形の底面を持つ
12
+ * ConeGeometryではなくカスタムジオメトリで、頂点から底面各頂点への4本の稜線と底面の
13
+ * 輪郭(4辺)だけのシンプルな形状を作る(底面を閉じる面は作らない)。
14
+ * これをWireframeGeometry2 + LineMaterial(Fat Lines)で太さのある線として描画する。
15
+ * 底面は+Z方向を向く(Selector.lookAt()でtarget方向を向けたときに底面がtarget側になるため)。
16
+ * SphereSelectorと同じくTransformControlsをtranslateモードのみで使う想定(位置編集用の
17
+ * ポイントハンドルとしての利用が主目的)。
18
+ * containsPoint/intersectRayは、実際の四角錐形状ではなく底面・奥行きを包含できる
19
+ * 外接球で近似する(このセレクターは領域選択ではなく位置マーカーとしての利用が主目的のため)。
20
+ * @class
21
+ */
22
+ export declare class CameraSelector extends Selector {
23
+ private radius;
24
+ private boundingRadius;
25
+ private frustumGeometry;
26
+ private wireGeometry;
27
+ private material;
28
+ /**
29
+ * @param camera - TransformControls に設定するカメラ
30
+ * @param eventTarget - TransformControls に設定するイベント処理の対象要素
31
+ * @param option - セットアップオプション
32
+ */
33
+ constructor(camera: PerspectiveCamera, eventTarget: HTMLElement, option?: iCameraSelectorOption);
34
+ /**
35
+ * 設定されている半径(外接球の近似半径)を返す
36
+ */
37
+ getRadius(): number;
38
+ /**
39
+ * セットアップを行う
40
+ * @param option - セットアップオプション
41
+ */
42
+ setup(option?: iCameraSelectorOption): void;
43
+ /**
44
+ * 開放処理
45
+ */
46
+ dispose(): void;
47
+ /**
48
+ * 包含判定処理(外接球で近似)
49
+ * @param point - 任意の点(座標)
50
+ */
51
+ containsPoint(point: Vector3): boolean;
52
+ /**
53
+ * Ray オブジェクトの入射点と射出点までの距離を求める処理(外接球で近似)
54
+ * @param ray - 判定を行う Ray
55
+ */
56
+ intersectRay(ray: Ray): iIntersection;
57
+ }
@@ -1,5 +1,5 @@
1
1
  import { default as EventEmitter } from 'eventemitter3';
2
- import { Euler, Matrix4, Object3D, PerspectiveCamera, Quaternion, Ray, Vector3 } from 'three';
2
+ import { Euler, Matrix4, Object3D, PerspectiveCamera, Quaternion, Ray, Sphere, Vector3 } from 'three';
3
3
  import { TransformControls } from 'three/examples/jsm/controls/TransformControls.js';
4
4
  /**
5
5
  * Selector は選択範囲を管理・制御するための基底クラスで、継承される前提になっている。
@@ -43,6 +43,23 @@ export declare abstract class Selector extends EventEmitter {
43
43
  */
44
44
  set visible(visible: boolean);
45
45
  get visible(): boolean;
46
+ /**
47
+ * 操作用のギズモ(TransformControls)だけの表示・操作可否を切り替える。
48
+ * 本体(object)の表示はそのまま残すため、「全件表示しつつ、選択中の1件だけドラッグ可能にする」
49
+ * といった使い方ができる
50
+ * @param visible - ギズモを表示して操作可能にするか
51
+ */
52
+ setGizmoVisible(visible: boolean): void;
53
+ /**
54
+ * クリック判定(レイキャスト)用に、本体を包む球(ワールド座標)を返す。非表示の場合はnull。
55
+ * 形状ごとの厳密な判定ではなく、回転を含めた本体全体を包む境界球で近似する
56
+ */
57
+ getPickSphere(): Sphere | null;
58
+ /**
59
+ * 本体の色を変更する(material.color を持つマテリアルの場合のみ)
60
+ * @param color - 設定する色(例: 0xffffff)
61
+ */
62
+ setColor(color: number): void;
46
63
  /**
47
64
  * @constructor
48
65
  * @param camera - TransformControls に設定するカメラ
@@ -107,6 +124,13 @@ export declare abstract class Selector extends EventEmitter {
107
124
  * @param Euler - 設定する回転(オイラー角)
108
125
  */
109
126
  setEuler(euler: Euler): void;
127
+ /**
128
+ * 指定した位置の方を向くよう回転を設定する(現在位置からの相対方向)。
129
+ * カメラの位置マーカー(CameraSelector)を、対応する注視点(target)の方向へ
130
+ * 向けたい場合などに使う。
131
+ * @param target - 向く先の位置(ワールド座標)
132
+ */
133
+ lookAt(target: Vector3): void;
110
134
  /**
111
135
  * 平行移動モードを設定する
112
136
  * @param index - 対象となるインデックス(省略時はすべてのコントロールを対象とする)
@@ -4,6 +4,7 @@ export interface iSphereSelectorOption {
4
4
  radius?: number;
5
5
  segment?: number;
6
6
  color?: number;
7
+ fill?: boolean;
7
8
  }
8
9
  /**
9
10
  * スプラットを選択するための sphere インターフェースを提供する
@@ -7,6 +7,7 @@ import { iVectorLike, iViewerOption, iViewerMaterialOption, iLoadingOption, iHea
7
7
  import { iCollisionTarget } from '../worker/tavioWorker';
8
8
  import { iSphereSelectorOption } from '../editor/selector/sphereSelector';
9
9
  import { iBoxSelectorOption } from '../editor/selector/boxSelector';
10
+ import { iCameraSelectorOption } from '../editor/selector/cameraSelector';
10
11
  export declare class Core extends EventEmitter {
11
12
  private driver;
12
13
  static CHUNK_TARGET: {
@@ -145,9 +146,10 @@ export declare class Core extends EventEmitter {
145
146
  setControlsAttenuation(attenuation: number): void;
146
147
  selectCameraPath(name: string): void;
147
148
  updateCameraPath(time?: number): void;
148
- createCameraPath(position: number[][] | iVectorLike[], target: number[][] | iVectorLike[], debug?: boolean): CameraPath | void;
149
- addCameraPath(name: string, position: number[][] | iVectorLike[], target: number[][] | iVectorLike[], debug?: boolean): void;
149
+ createCameraPath(position: number[][] | iVectorLike[], target: number[][] | iVectorLike[], debug?: boolean, times?: number[] | null): CameraPath | void;
150
+ addCameraPath(name: string, position: number[][] | iVectorLike[], target: number[][] | iVectorLike[], debug?: boolean, times?: number[] | null): void;
150
151
  removeCameraPath(name: string): void;
152
+ setCameraPathDebugVisible(name: string, visible: boolean): void;
151
153
  getPathNames(): Promise<string[]> | string[];
152
154
  getActiveCameraPathName(): Promise<string | null> | string | null;
153
155
  getCameraPathByTime(name?: string, time?: number): Promise<{
@@ -226,8 +228,15 @@ export declare class Core extends EventEmitter {
226
228
  setSelectorModeRotate(name: string): void;
227
229
  setSelectorPosition(name: string, position: iVectorLike): void;
228
230
  setSelectorRotation(name: string, rotation: iVectorLike): void;
231
+ setSelectorLookAt(name: string, target: iVectorLike): void;
232
+ setSelectorGizmoVisible(name: string, visible: boolean): void;
233
+ setSelectorColor(name: string, color: number): void;
234
+ setGuideLine(name: string, from: iVectorLike, to: iVectorLike, color?: number): void;
235
+ removeGuideLine(name: string): void;
236
+ pickSelector(ndcX: number, ndcY: number): Promise<string | null> | string | null;
229
237
  setSelectorScale(name: string, scale: iVectorLike): void;
230
238
  deleteSelector(name: string): void;
231
239
  addSphereSelector(name: string, option?: iSphereSelectorOption): void;
232
240
  addBoxSelector(name: string, option?: iBoxSelectorOption): void;
241
+ addCameraSelector(name: string, option?: iCameraSelectorOption): void;
233
242
  }
@@ -1,6 +1,7 @@
1
1
  import { RawShaderMaterial, WebGLRenderTarget, WebGLRenderer, PMREMGenerator, MeshStandardMaterialParameters } from 'three';
2
2
  import { iSphereSelectorOption } from '../../editor/selector/sphereSelector';
3
3
  import { iBoxSelectorOption } from '../../editor/selector/boxSelector';
4
+ import { iCameraSelectorOption } from '../../editor/selector/cameraSelector';
4
5
  import { iSelectorInfo, tControlsType, tMaskSource, tSelectionMode, iVectorLike, iCameraPathOption, iCameraParameter, iViewerOption, iViewerMaterialOption, iLoadingOption, iHeaderInfo, iTransform, iPickingInfo, tUniformValue, tCustomDefines, tCustomUniforms } from '../types';
5
6
  import { iCollisionTarget } from '../../worker/tavioWorker';
6
7
  import { WorkerElementAdapter } from './workerElementAdapter';
@@ -84,6 +85,7 @@ export declare class CoreDriver extends EventEmitter implements iCoreDriver {
84
85
  private _frameIntervalMs;
85
86
  /** 直前にフレームを描画した時刻(Date.now()) */
86
87
  private _lastFrameTimestamp;
88
+ private _rafId;
87
89
  /**
88
90
  * 対応する Controls 種別
89
91
  */
@@ -434,6 +436,13 @@ export declare class CoreDriver extends EventEmitter implements iCoreDriver {
434
436
  * @param start - リサイズと同時に描画を開始するかどうか
435
437
  */
436
438
  resize(width?: number, height?: number, start?: boolean): void;
439
+ /**
440
+ * 予約中の描画を取り消し、その場で1フレーム描画する(以降は通常の描画ループに戻る)。
441
+ * canvas のサイズを変えると描画内容がクリアされるが、ResizeObserver の通知はブラウザの
442
+ * その回の描画処理(requestAnimationFrame)の後に来るため、次のフレームを待つと
443
+ * クリアされた空の状態が一瞬表示され、リサイズ中にちらついて見える。これを防ぐために使う
444
+ */
445
+ private _renderImmediately;
437
446
  /**
438
447
  * 描画を開始する
439
448
  * ※ pause() によって一時停止中の場合は何もしない(再開するには resume() を呼ぶ)
@@ -748,8 +757,9 @@ export declare class CoreDriver extends EventEmitter implements iCoreDriver {
748
757
  * @param position - カメラの座標({x, y, z} のオブジェクト、または [x, y, z] の数値の配列)の配列
749
758
  * @param target - 注視点の座標({x, y, z} のオブジェクト、または [x, y, z] の数値の配列)の配列
750
759
  * @param debug - デバッグモードをオンにすると、各点とその補間後の軌跡がシーンに追加される
760
+ * @param times - 各制御点に対応する時刻(0.0 ~ 1.0)。省略時は等間隔
751
761
  */
752
- createCameraPath(position: iVectorLike[] | number[][], target: iVectorLike[] | number[][], debug?: boolean): CameraPath;
762
+ createCameraPath(position: iVectorLike[] | number[][], target: iVectorLike[] | number[][], debug?: boolean, times?: number[] | null): CameraPath;
753
763
  /**
754
764
  * カメラパスが有効な場合、指定された時間を設定し更新する
755
765
  * @param time - 設定する時間(0.0 ~ 1.0)
@@ -761,13 +771,21 @@ export declare class CoreDriver extends EventEmitter implements iCoreDriver {
761
771
  * @param position - カメラ移動経路の座標配列
762
772
  * @param target - カメラ注視点経路の座標配列
763
773
  * @param debug - デバッグ用軌跡描画を行うかどうか
774
+ * @param times - 各制御点に対応する時刻(0.0 ~ 1.0)。省略時は等間隔
764
775
  */
765
- addCameraPath(name: string, position: iVectorLike[] | number[][], target: iVectorLike[] | number[][], debug?: boolean): void;
776
+ addCameraPath(name: string, position: iVectorLike[] | number[][], target: iVectorLike[] | number[][], debug?: boolean, times?: number[] | null): void;
766
777
  /**
767
778
  * カメラパスを名前で削除する
768
779
  * @param name - 削除するカメラパスの名前
769
780
  */
770
781
  removeCameraPath(name: string): void;
782
+ /**
783
+ * 名前を指定してカメラパスのデバッグ可視化(補間曲線と制御点)の表示/非表示を切り替える。
784
+ * removeObject→(必要なら)insertObjectの順で呼ぶため、繰り返し呼んでも多重に追加されない。
785
+ * @param name - 対象のカメラパスの名前
786
+ * @param visible - 表示するかどうか
787
+ */
788
+ setCameraPathDebugVisible(name: string, visible: boolean): void;
771
789
  /**
772
790
  * アクティブなカメラパスを選択する
773
791
  * @param name - 選択するカメラパスの名前
@@ -1258,6 +1276,7 @@ export declare class CoreDriver extends EventEmitter implements iCoreDriver {
1258
1276
  */
1259
1277
  setPointUniforms(uniforms: Record<string, tUniformValue>): void;
1260
1278
  private selectorMap;
1279
+ private guideLineMap;
1261
1280
  private reversedCollision;
1262
1281
  /**
1263
1282
  * セレクターによる衝突判定の反転フラグを設定する
@@ -1349,6 +1368,45 @@ export declare class CoreDriver extends EventEmitter implements iCoreDriver {
1349
1368
  * @param visible - 可視性
1350
1369
  */
1351
1370
  setSelectorVisible(name: string, visible: boolean): void;
1371
+ /**
1372
+ * 名前を指定して、セレクターの操作用ギズモだけの表示・操作可否を設定する(本体の表示はそのまま)
1373
+ * @param name - 対象セレクター名
1374
+ * @param visible - ギズモを表示して操作可能にするか
1375
+ */
1376
+ setSelectorGizmoVisible(name: string, visible: boolean): void;
1377
+ /**
1378
+ * 名前を指定してセレクター本体の色を設定する
1379
+ * @param name - 対象セレクター名
1380
+ * @param color - 設定する色(例: 0xffffff)
1381
+ */
1382
+ setSelectorColor(name: string, color: number): void;
1383
+ /**
1384
+ * 名前を指定して、2点を結ぶガイド線を追加・更新する(編集時の補助表示用。
1385
+ * 常に手前に描画し、スプラットに隠れないようにする)
1386
+ * @param name - ガイド線の識別名
1387
+ * @param from - 始点
1388
+ * @param to - 終点
1389
+ * @param color - 線の色(省略時は白)
1390
+ */
1391
+ setGuideLine(name: string, from: iVectorLike, to: iVectorLike, color?: number): void;
1392
+ /**
1393
+ * 名前を指定してガイド線を削除する
1394
+ * @param name - 削除するガイド線の識別名
1395
+ */
1396
+ removeGuideLine(name: string): void;
1397
+ /**
1398
+ * 画面上の位置(正規化デバイス座標)からレイを飛ばし、最初に当たる表示中のセレクターの名前を返す。
1399
+ * 各セレクターを包む境界球で判定し、遠くにある小さなセレクターでもクリックしやすいよう、
1400
+ * 画面上でPICK_TOLERANCE_PXぶんの大きさは最低限確保する
1401
+ * @param ndcX - 正規化デバイス座標のX(-1 ~ 1、左端が-1)
1402
+ * @param ndcY - 正規化デバイス座標のY(-1 ~ 1、下端が-1)
1403
+ */
1404
+ pickSelector(ndcX: number, ndcY: number): string | null;
1405
+ /**
1406
+ * 編集用の線(カメラパスの曲線・ガイド線)を、太さを持つ線で描画するための設定を返す
1407
+ * (LineMaterialは描画領域のサイズを基準に太さを計算するため、現在のサイズを渡す)
1408
+ */
1409
+ private getEditLineDrawOptions;
1352
1410
  /**
1353
1411
  * 名前を指定してセレクターを平行移動モードにする
1354
1412
  * @param name - 設定するセレクターの名前
@@ -1376,6 +1434,12 @@ export declare class CoreDriver extends EventEmitter implements iCoreDriver {
1376
1434
  * @param rotation - 設定する回転(Euler)
1377
1435
  */
1378
1436
  setSelectorRotation(name: string, rotation: iVectorLike): void;
1437
+ /**
1438
+ * 名前を指定してセレクターを、targetの方向へ向ける(現在位置からの相対方向)
1439
+ * @param name - 設定するセレクターの名前
1440
+ * @param target - 向く先の位置
1441
+ */
1442
+ setSelectorLookAt(name: string, target: iVectorLike): void;
1379
1443
  /**
1380
1444
  * 名前を指定してセレクターのスケールを設定する
1381
1445
  * @param name - 設定するセレクターの名前
@@ -1399,4 +1463,12 @@ export declare class CoreDriver extends EventEmitter implements iCoreDriver {
1399
1463
  * @param option - セレクターに対するオプション
1400
1464
  */
1401
1465
  addBoxSelector(name: string, option?: iBoxSelectorOption): void;
1466
+ /**
1467
+ * 名前を指定して、カメラを模した四角錐アイコンのセレクターを追加する
1468
+ * (既定の状態では visible が false である点に注意)。カメラのposition編集用の
1469
+ * ポイントハンドルとしての利用を主目的とする。
1470
+ * @param name - 追加するセレクターに付与する名前
1471
+ * @param option - セレクターに対するオプション
1472
+ */
1473
+ addCameraSelector(name: string, option?: iCameraSelectorOption): void;
1402
1474
  }
@@ -3,6 +3,7 @@ import { iViewerOption, iViewerMaterialOption, iLoadingOption, iHeaderInfo, iTra
3
3
  import { iCollisionTarget } from '../../worker/tavioWorker';
4
4
  import { iSphereSelectorOption } from '../../editor/selector/sphereSelector';
5
5
  import { iBoxSelectorOption } from '../../editor/selector/boxSelector';
6
+ import { iCameraSelectorOption } from '../../editor/selector/cameraSelector';
6
7
  import { MeshStandardMaterialParameters } from 'three';
7
8
  import { iLatitudeLongitude } from '../../camera/flightControls';
8
9
  import { WorkerElementAdapter } from './workerElementAdapter';
@@ -125,9 +126,12 @@ export interface iCoreDriver extends EventEmitter {
125
126
  setControlsAttenuation(attenuation: number): void;
126
127
  selectCameraPath(name: string): void;
127
128
  updateCameraPath(time?: number): void;
128
- createCameraPath(position: number[][] | iVectorLike[], target: number[][] | iVectorLike[], debug?: boolean): CameraPath | void;
129
- addCameraPath(name: string, position: number[][] | iVectorLike[], target: number[][] | iVectorLike[], debug?: boolean): void;
129
+ createCameraPath(position: number[][] | iVectorLike[], target: number[][] | iVectorLike[], debug?: boolean, times?: number[] | null): CameraPath | void;
130
+ /** times: 各制御点に対応する時刻(0.0 ~ 1.0)。省略時は等間隔 */
131
+ addCameraPath(name: string, position: number[][] | iVectorLike[], target: number[][] | iVectorLike[], debug?: boolean, times?: number[] | null): void;
130
132
  removeCameraPath(name: string): void;
133
+ /** 名前を指定してカメラパスのデバッグ可視化(補間曲線と制御点)の表示/非表示を切り替える */
134
+ setCameraPathDebugVisible(name: string, visible: boolean): void;
131
135
  getPathNames(): Promise<string[]> | string[];
132
136
  getActiveCameraPathName(): Promise<string | null> | string | null;
133
137
  getCameraPathByTime(name?: string, time?: number): Promise<{
@@ -199,8 +203,22 @@ export interface iCoreDriver extends EventEmitter {
199
203
  setSelectorModeRotate(name: string): void;
200
204
  setSelectorPosition(name: string, position: iVectorLike): void;
201
205
  setSelectorRotation(name: string, rotation: iVectorLike): void;
206
+ /** 指定したセレクターを、targetの方向へ向ける(現在位置からの相対方向) */
207
+ setSelectorLookAt(name: string, target: iVectorLike): void;
208
+ /** 指定したセレクターの操作用ギズモだけの表示・操作可否を設定する(本体の表示はそのまま) */
209
+ setSelectorGizmoVisible(name: string, visible: boolean): void;
210
+ /** 指定したセレクター本体の色を設定する */
211
+ setSelectorColor(name: string, color: number): void;
212
+ /** 2点を結ぶ編集用のガイド線を追加・更新する */
213
+ setGuideLine(name: string, from: iVectorLike, to: iVectorLike, color?: number): void;
214
+ /** 編集用のガイド線を削除する */
215
+ removeGuideLine(name: string): void;
216
+ /** 画面上の位置(正規化デバイス座標)にある、表示中のセレクターの名前を返す(無ければnull) */
217
+ pickSelector(ndcX: number, ndcY: number): Promise<string | null> | string | null;
202
218
  setSelectorScale(name: string, scale: iVectorLike): void;
203
219
  deleteSelector(name: string): void;
204
220
  addSphereSelector(name: string, option?: iSphereSelectorOption): void;
205
221
  addBoxSelector(name: string, option?: iBoxSelectorOption): void;
222
+ /** カメラを模した四角錐アイコンのセレクターを追加する(カメラのposition編集用ポイントハンドル) */
223
+ addCameraSelector(name: string, option?: iCameraSelectorOption): void;
206
224
  }
@@ -5,6 +5,7 @@ import { iCollisionTarget } from '../../worker/tavioWorker';
5
5
  import { iLatitudeLongitude } from '../../camera/flightControls';
6
6
  import { iSphereSelectorOption } from '../../editor/selector/sphereSelector';
7
7
  import { iBoxSelectorOption } from '../../editor/selector/boxSelector';
8
+ import { iCameraSelectorOption } from '../../editor/selector/cameraSelector';
8
9
  import { MeshStandardMaterialParameters } from 'three';
9
10
  import { WorkerElementAdapter } from './workerElementAdapter';
10
11
  /**
@@ -151,9 +152,10 @@ export declare class OffscreenDriver extends EventEmitter implements iCoreDriver
151
152
  setCameraColliderSelector(selectorNames?: string[]): void;
152
153
  setInteractiveMode(interactive: boolean): void;
153
154
  getInteractiveMode(): Promise<boolean>;
154
- createCameraPath(position: number[][] | iVectorLike[], target: number[][] | iVectorLike[], debug?: boolean): void;
155
- addCameraPath(name: string, position: number[][] | iVectorLike[], target: number[][] | iVectorLike[], debug?: boolean): void;
155
+ createCameraPath(position: number[][] | iVectorLike[], target: number[][] | iVectorLike[], debug?: boolean, times?: number[] | null): void;
156
+ addCameraPath(name: string, position: number[][] | iVectorLike[], target: number[][] | iVectorLike[], debug?: boolean, times?: number[] | null): void;
156
157
  removeCameraPath(name: string): void;
158
+ setCameraPathDebugVisible(name: string, visible: boolean): void;
157
159
  getPathNames(): Promise<string[]>;
158
160
  getActiveCameraPathName(): Promise<string | null>;
159
161
  getCameraPathByTime(name?: string, time?: number): Promise<{
@@ -215,8 +217,15 @@ export declare class OffscreenDriver extends EventEmitter implements iCoreDriver
215
217
  setSelectorModeRotate(name: string): void;
216
218
  setSelectorPosition(name: string, position: iVectorLike): void;
217
219
  setSelectorRotation(name: string, rotation: iVectorLike): void;
220
+ setSelectorLookAt(name: string, target: iVectorLike): void;
221
+ setSelectorGizmoVisible(name: string, visible: boolean): void;
222
+ setSelectorColor(name: string, color: number): void;
223
+ setGuideLine(name: string, from: iVectorLike, to: iVectorLike, color?: number): void;
224
+ removeGuideLine(name: string): void;
225
+ pickSelector(ndcX: number, ndcY: number): Promise<string | null>;
218
226
  setSelectorScale(name: string, scale: iVectorLike): void;
219
227
  deleteSelector(name: string): void;
220
228
  addSphereSelector(name: string, option?: iSphereSelectorOption): void;
221
229
  addBoxSelector(name: string, option?: iBoxSelectorOption): void;
230
+ addCameraSelector(name: string, option?: iCameraSelectorOption): void;
222
231
  }
@@ -1,4 +1,14 @@
1
1
  import { WasmFnMap, WasmWorkerInitOptions } from './wasm-worker';
2
+ /** wasmバイナリのURL(レンダリングWorkerへ渡すため、メインスレッドで求めた値を取り出す) */
3
+ export declare const getWasmBinaryUrls: () => {
4
+ thread?: string;
5
+ noThread?: string;
6
+ };
7
+ /** wasmバイナリのURLを差し替える(レンダリングWorkerで、メインスレッドから受け取った値を使う) */
8
+ export declare const setWasmBinaryUrls: (urls: {
9
+ thread?: string;
10
+ noThread?: string;
11
+ }) => void;
2
12
  export interface ResolvedGaussianEdits {
3
13
  pointCount: number;
4
14
  gaussianData: Uint8Array;
@@ -92,8 +92,8 @@ export interface InitOutput {
92
92
  readonly registerEventHandler: (a: number) => number;
93
93
  readonly resolveGaussianEdits: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
94
94
  readonly sort: (a: number, b: number, c: number) => number;
95
- readonly __wasm_bindgen_func_elem_2970: (a: number, b: number, c: number, d: number) => void;
96
95
  readonly __wasm_bindgen_func_elem_2972: (a: number, b: number, c: number, d: number) => void;
96
+ readonly __wasm_bindgen_func_elem_2974: (a: number, b: number, c: number, d: number) => void;
97
97
  readonly __wasm_bindgen_func_elem_1183: (a: number, b: number, c: number) => void;
98
98
  readonly __wbindgen_export: (a: number, b: number) => number;
99
99
  readonly __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;