@openheart/tavio-renderer 2.6.6 → 2.6.8

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.
@@ -100,6 +100,16 @@ export declare class Core extends EventEmitter {
100
100
  * @param quality - 画質(0〜1)。"image/jpeg" や "image/webp" のときのみ有効
101
101
  */
102
102
  captureImage(type?: string, quality?: number): Promise<Blob>;
103
+ /**
104
+ * 現在の描画内容を ImageBitmap として取得する(動画の書き出しなど、フレーム単位で連続して取得する用途)。
105
+ * OffscreenCanvas(Worker)で描画している場合も取得できる。
106
+ * 使い終わった ImageBitmap は呼び出し側で close() すること
107
+ * @param options.cameraPathProgress - 指定すると、描画の前にカメラパス上のこの位置(0.0 ~ 1.0)へ
108
+ * イージングなしでカメラを移動する(カメラパスのコントロールが有効なときのみ反映される)
109
+ */
110
+ captureFrame(options?: {
111
+ cameraPathProgress?: number;
112
+ }): Promise<ImageBitmap>;
103
113
  addTavioMesh(name: string): void;
104
114
  removeTavioMesh(name: string, renderViewName?: string | Symbol): void;
105
115
  removeTavioMeshAllRenderView(name: string): void;
@@ -334,6 +334,48 @@ export declare class CoreDriver extends EventEmitter implements iCoreDriver {
334
334
  * @param format - ファイル形式
335
335
  */
336
336
  exportMeshWasm(name: string, format: Parameters<typeof TavioMesh.prototype.exportMeshWasm>[0]): Promise<Uint8Array>;
337
+ /**
338
+ * 描画内容の取得(captureImage / captureFrame)のために、その場で1フレーム描画する
339
+ * 一時停止中でも取得できるよう、この1フレームだけ描画してから一時停止状態に戻す
340
+ * @private
341
+ */
342
+ private _renderOnceForCapture;
343
+ /**
344
+ * いずれかのレンダービューで、スプラットのソート(深度の焼き込みを含む)が進行中かどうか
345
+ * @private
346
+ */
347
+ private _isAnySortInProgress;
348
+ /**
349
+ * 進行中のスプラットのソートがすべて終わるまで待つ。進行中でなければすぐに返る。
350
+ * ソートの完了は TavioMesh の "sort" イベントで検知する(イベントの直後にソート中フラグが下りる)。
351
+ * worker の異常などで完了しない場合に備えて、timeoutMs を過ぎたら待つのをやめる
352
+ * @param timeoutMs - 待ち時間の上限(ms)
353
+ * @private
354
+ */
355
+ private _waitForSortSettled;
356
+ /**
357
+ * 直前に発行した GPU コマンドが完了するまで待つ(GPU フェンスをポーリングする)。
358
+ * WebGL2 でない環境やフェンスが無い場合はすぐに返る。timeoutMs を過ぎたら待つのをやめる
359
+ * @param timeoutMs - 待ち時間の上限(ms)
360
+ * @private
361
+ */
362
+ private _waitForGpuIdle;
363
+ /**
364
+ * 現在の描画内容を ImageBitmap として取得する(動画の書き出しなど、フレーム単位で連続して取得する用途)
365
+ * 描画の途中経過ではなく確定した内容を返すために、取得の前に次の順で描画を落ち着かせる
366
+ * 1. カメラを移動し、1フレーム描画する(カメラの行列を更新し、視野が変わっていれば深度の焼き込みとソートが始まる)
367
+ * 2. 進行中のソートを待つ。描画でソートが始まらなかった(視野の変化が小さい)場合は、現在のカメラで強制的にソートして待つ
368
+ * 3. ソート結果を反映して1フレーム描画し、GPU の処理完了を待つ
369
+ * 4. 同じタスク内で canvas の内容を複製する(createImageBitmap は canvas を元にする場合、呼び出し時点の内容を複製する)
370
+ * OffscreenCanvas(Worker)では OffscreenDriver から RPC で呼び出され、ImageBitmap は transfer で返る
371
+ * @param options.cameraPathProgress - 指定すると、描画の前にカメラパス上のこの位置(0.0 ~ 1.0)へ
372
+ * イージングなしでカメラを移動する(カメラパスのコントロールが有効なときのみ反映される)。
373
+ * 数値でない値・NaN は無視する。animatePath 等のアニメーション中に呼ぶとアニメーション側の
374
+ * 更新で上書きされるため、呼び出し側でアニメーションを止めてから使うこと
375
+ */
376
+ captureFrame(options?: {
377
+ cameraPathProgress?: number;
378
+ }): Promise<ImageBitmap>;
337
379
  /**
338
380
  * 現在の描画内容を画像として取得する
339
381
  * preserveDrawingBuffer が無効でも取得できるよう、その場で1フレーム描画し、同じタスク内で
@@ -828,6 +870,15 @@ export declare class CoreDriver extends EventEmitter implements iCoreDriver {
828
870
  * @param force - イージング(補間)を行わず即座にカメラへ反映するかどうか [default: false]
829
871
  */
830
872
  updateCameraPath(time: number, force?: boolean): void;
873
+ /**
874
+ * カメラパスが有効な場合、指定された時間の位置と姿勢を TransferControls(force 時はカメラ本体にも)へ設定する。
875
+ * 描画の再開(start)は行わないため、その場で描画する captureFrame のように呼び出し側で描画を制御したい場合に使う
876
+ * @param time - 設定する時間(0.0 ~ 1.0)
877
+ * @param force - イージング(補間)を行わず即座にカメラへ反映するかどうか
878
+ * @returns カメラパスが有効で値を設定できた場合は true
879
+ * @private
880
+ */
881
+ private _applyCameraPath;
831
882
  /**
832
883
  * カメラパスを名前と座標データで追加登録する
833
884
  * @param name - カメラパスの識別名
@@ -66,6 +66,14 @@ export interface iCoreDriver extends EventEmitter {
66
66
  * @param quality - 画質(0〜1)。"image/jpeg" や "image/webp" のときのみ有効
67
67
  */
68
68
  captureImage(type?: string, quality?: number): Promise<Blob>;
69
+ /**
70
+ * 現在の描画内容を ImageBitmap として取得する(動画の書き出しなど、フレーム単位で連続して取得する用途)
71
+ * @param options.cameraPathProgress - 指定すると、描画の前にカメラパス上のこの位置(0.0 ~ 1.0)へ
72
+ * イージングなしでカメラを移動する(カメラパスのコントロールが有効なときのみ反映される)
73
+ */
74
+ captureFrame(options?: {
75
+ cameraPathProgress?: number;
76
+ }): Promise<ImageBitmap>;
69
77
  addTavioMesh(name: string): void;
70
78
  removeTavioMesh(name: string, renderViewName?: string | Symbol): void;
71
79
  removeTavioMeshAllRenderView(name: string): void;
@@ -153,6 +153,13 @@ export declare class OffscreenDriver extends EventEmitter implements iCoreDriver
153
153
  * (Blob は構造化複製で Worker からメインスレッドへ返る)
154
154
  */
155
155
  captureImage(type?: string, quality?: number): Promise<Blob>;
156
+ /**
157
+ * Worker 内の OffscreenCanvas で描画した内容を ImageBitmap として取得する
158
+ * (ImageBitmap は Worker からメインスレッドへ transfer で返るため複製は発生しない)
159
+ */
160
+ captureFrame(options?: {
161
+ cameraPathProgress?: number;
162
+ }): Promise<ImageBitmap>;
156
163
  addTavioMesh(name: string): void;
157
164
  getFirstMeshName(): Promise<string | null>;
158
165
  createRenderView(name: string | Symbol): void;
@@ -275,6 +275,11 @@ export declare class TavioMesh extends EventEmitter {
275
275
  * 点描画用の Points インスタンスを返す
276
276
  */
277
277
  getPoints(): Points | null;
278
+ /**
279
+ * 指定のレンダービュー向けのソート(深度の焼き込みから並び順の反映まで)が進行中かどうかを返す
280
+ * @param renderViewName - レンダービューの名前
281
+ */
282
+ isSorting(renderViewName: string | Symbol): boolean;
278
283
  /**
279
284
  * メッシュのインスタンスを返す
280
285
  */
@@ -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_2979: (a: number, b: number, c: number, d: number) => void;
96
- readonly __wasm_bindgen_func_elem_2981: (a: number, b: number, c: number, d: number) => void;
95
+ readonly __wasm_bindgen_func_elem_2978: (a: number, b: number, c: number, d: number) => void;
96
+ readonly __wasm_bindgen_func_elem_2980: (a: number, b: number, c: number, d: number) => void;
97
97
  readonly __wasm_bindgen_func_elem_1190: (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;
@@ -618,7 +618,7 @@ function __wbg_get_imports() {
618
618
  const a = state0.a;
619
619
  state0.a = 0;
620
620
  try {
621
- return __wasm_bindgen_func_elem_2981(a, state0.b, arg0, arg1);
621
+ return __wasm_bindgen_func_elem_2980(a, state0.b, arg0, arg1);
622
622
  } finally {
623
623
  state0.a = a;
624
624
  }
@@ -762,7 +762,7 @@ function __wbg_get_imports() {
762
762
  },
763
763
  __wbindgen_generic_0000000000000002: function(arg0, arg1) {
764
764
  // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 632, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
765
- const ret = makeMutClosure(arg0, arg1, __wasm_bindgen_func_elem_2979);
765
+ const ret = makeMutClosure(arg0, arg1, __wasm_bindgen_func_elem_2978);
766
766
  return addHeapObject(ret);
767
767
  },
768
768
  __wbindgen_generic_0000000000000003: function(arg0) {
@@ -831,14 +831,14 @@ function __wasm_bindgen_func_elem_1190(arg0, arg1, arg2) {
831
831
  wasm.__wasm_bindgen_func_elem_1190(arg0, arg1, addHeapObject(arg2));
832
832
  }
833
833
 
834
- function __wasm_bindgen_func_elem_2981(arg0, arg1, arg2, arg3) {
835
- wasm.__wasm_bindgen_func_elem_2981(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
834
+ function __wasm_bindgen_func_elem_2980(arg0, arg1, arg2, arg3) {
835
+ wasm.__wasm_bindgen_func_elem_2980(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
836
836
  }
837
837
 
838
- function __wasm_bindgen_func_elem_2979(arg0, arg1, arg2) {
838
+ function __wasm_bindgen_func_elem_2978(arg0, arg1, arg2) {
839
839
  try {
840
840
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
841
- wasm.__wasm_bindgen_func_elem_2979(retptr, arg0, arg1, addHeapObject(arg2));
841
+ wasm.__wasm_bindgen_func_elem_2978(retptr, arg0, arg1, addHeapObject(arg2));
842
842
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
843
843
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
844
844
  if (r1) {
@@ -27,8 +27,8 @@ export const main: () => void;
27
27
  export const registerEventHandler: (a: number) => number;
28
28
  export const resolveGaussianEdits: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
29
29
  export const sort: (a: number, b: number, c: number) => number;
30
- export const __wasm_bindgen_func_elem_2979: (a: number, b: number, c: number, d: number) => void;
31
- export const __wasm_bindgen_func_elem_2981: (a: number, b: number, c: number, d: number) => void;
30
+ export const __wasm_bindgen_func_elem_2978: (a: number, b: number, c: number, d: number) => void;
31
+ export const __wasm_bindgen_func_elem_2980: (a: number, b: number, c: number, d: number) => void;
32
32
  export const __wasm_bindgen_func_elem_1190: (a: number, b: number, c: number) => void;
33
33
  export const __wbindgen_export: (a: number, b: number) => number;
34
34
  export const __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
@@ -110,10 +110,10 @@ export interface InitOutput {
110
110
  readonly wbg_rayon_poolbuilder_numThreads: (a: number) => number;
111
111
  readonly wbg_rayon_poolbuilder_receiver: (a: number) => number;
112
112
  readonly wbg_rayon_start_worker: (a: number) => void;
113
- readonly __wasm_bindgen_func_elem_3151: (a: number, b: number, c: number, d: number) => void;
114
- readonly __wasm_bindgen_func_elem_3154: (a: number, b: number, c: number, d: number) => void;
113
+ readonly __wasm_bindgen_func_elem_3149: (a: number, b: number, c: number, d: number) => void;
114
+ readonly __wasm_bindgen_func_elem_3152: (a: number, b: number, c: number, d: number) => void;
115
115
  readonly __wasm_bindgen_func_elem_1228: (a: number, b: number, c: number) => void;
116
- readonly __wasm_bindgen_func_elem_3153: (a: number, b: number, c: number) => void;
116
+ readonly __wasm_bindgen_func_elem_3151: (a: number, b: number, c: number) => void;
117
117
  readonly memory: WebAssembly.Memory;
118
118
  readonly __wbindgen_export: (a: number, b: number) => number;
119
119
  readonly __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
@@ -690,7 +690,7 @@ function __wbg_get_imports(memory) {
690
690
  const a = state0.a;
691
691
  state0.a = 0;
692
692
  try {
693
- return __wasm_bindgen_func_elem_3154(a, state0.b, arg0, arg1);
693
+ return __wasm_bindgen_func_elem_3152(a, state0.b, arg0, arg1);
694
694
  } finally {
695
695
  state0.a = a;
696
696
  }
@@ -728,7 +728,7 @@ function __wbg_get_imports(memory) {
728
728
  const a = state0.a;
729
729
  state0.a = 0;
730
730
  try {
731
- return __wasm_bindgen_func_elem_3154(a, state0.b, arg0, arg1);
731
+ return __wasm_bindgen_func_elem_3152(a, state0.b, arg0, arg1);
732
732
  } finally {
733
733
  state0.a = a;
734
734
  }
@@ -906,12 +906,12 @@ function __wbg_get_imports(memory) {
906
906
  },
907
907
  __wbindgen_generic_0000000000000002: function(arg0, arg1) {
908
908
  // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 640, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
909
- const ret = makeMutClosure(arg0, arg1, __wasm_bindgen_func_elem_3151);
909
+ const ret = makeMutClosure(arg0, arg1, __wasm_bindgen_func_elem_3149);
910
910
  return addHeapObject(ret);
911
911
  },
912
912
  __wbindgen_generic_0000000000000003: function(arg0, arg1) {
913
913
  // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 659, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.
914
- const ret = makeMutClosure(arg0, arg1, __wasm_bindgen_func_elem_3153);
914
+ const ret = makeMutClosure(arg0, arg1, __wasm_bindgen_func_elem_3151);
915
915
  return addHeapObject(ret);
916
916
  },
917
917
  __wbindgen_generic_0000000000000004: function(arg0) {
@@ -995,18 +995,18 @@ function __wasm_bindgen_func_elem_1228(arg0, arg1, arg2) {
995
995
  wasm.__wasm_bindgen_func_elem_1228(arg0, arg1, addHeapObject(arg2));
996
996
  }
997
997
 
998
- function __wasm_bindgen_func_elem_3153(arg0, arg1, arg2) {
999
- wasm.__wasm_bindgen_func_elem_3153(arg0, arg1, addHeapObject(arg2));
998
+ function __wasm_bindgen_func_elem_3151(arg0, arg1, arg2) {
999
+ wasm.__wasm_bindgen_func_elem_3151(arg0, arg1, addHeapObject(arg2));
1000
1000
  }
1001
1001
 
1002
- function __wasm_bindgen_func_elem_3154(arg0, arg1, arg2, arg3) {
1003
- wasm.__wasm_bindgen_func_elem_3154(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
1002
+ function __wasm_bindgen_func_elem_3152(arg0, arg1, arg2, arg3) {
1003
+ wasm.__wasm_bindgen_func_elem_3152(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
1004
1004
  }
1005
1005
 
1006
- function __wasm_bindgen_func_elem_3151(arg0, arg1, arg2) {
1006
+ function __wasm_bindgen_func_elem_3149(arg0, arg1, arg2) {
1007
1007
  try {
1008
1008
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1009
- wasm.__wasm_bindgen_func_elem_3151(retptr, arg0, arg1, addHeapObject(arg2));
1009
+ wasm.__wasm_bindgen_func_elem_3149(retptr, arg0, arg1, addHeapObject(arg2));
1010
1010
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1011
1011
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1012
1012
  if (r1) {
@@ -32,10 +32,10 @@ export const wbg_rayon_poolbuilder_build: (a: number) => void;
32
32
  export const wbg_rayon_poolbuilder_numThreads: (a: number) => number;
33
33
  export const wbg_rayon_poolbuilder_receiver: (a: number) => number;
34
34
  export const wbg_rayon_start_worker: (a: number) => void;
35
- export const __wasm_bindgen_func_elem_3151: (a: number, b: number, c: number, d: number) => void;
36
- export const __wasm_bindgen_func_elem_3154: (a: number, b: number, c: number, d: number) => void;
35
+ export const __wasm_bindgen_func_elem_3149: (a: number, b: number, c: number, d: number) => void;
36
+ export const __wasm_bindgen_func_elem_3152: (a: number, b: number, c: number, d: number) => void;
37
37
  export const __wasm_bindgen_func_elem_1228: (a: number, b: number, c: number) => void;
38
- export const __wasm_bindgen_func_elem_3153: (a: number, b: number, c: number) => void;
38
+ export const __wasm_bindgen_func_elem_3151: (a: number, b: number, c: number) => void;
39
39
  export const memory: WebAssembly.Memory;
40
40
  export const __wbindgen_export: (a: number, b: number) => number;
41
41
  export const __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openheart/tavio-renderer",
3
- "version": "2.6.6",
3
+ "version": "2.6.8",
4
4
  "author": "OpenHeart Inc.",
5
5
  "license": "UNLICENSED",
6
6
  "description": "Rendering Engine for Tavio Format 3D data",