f3d 3.5.0 → 4.0.0-RC1

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.
package/README.md CHANGED
@@ -1,16 +1,16 @@
1
1
  [![CI](https://img.shields.io/github/actions/workflow/status/f3d-app/f3d/ci.yml?label=CI&logo=github)](https://github.com/f3d-app/f3d/actions/workflows/ci.yml) [![Packaging](https://img.shields.io/github/actions/workflow/status/f3d-app/f3d-superbuild/nightly.yml?label=Packaging&logo=github)](https://github.com/f3d-app/f3d-superbuild) [![codecov](https://codecov.io/gh/f3d-app/f3d/branch/master/graph/badge.svg?token=siwG82IXK7)](https://codecov.io/gh/f3d-app/f3d) [![Downloads](https://img.shields.io/github/downloads/f3d-app/f3d/total.svg)](https://github.com/f3d-app/f3d/releases) [![Sponsors](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https://f3d.app/thanks) [![Discord](https://discordapp.com/api/guilds/1046005690809978911/widget.png?style=shield)](https://discord.f3d.app) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md)
2
2
 
3
- # F3D - Fast and minimalist 3D viewer
3
+ # F3D - fast and minimalist 3D viewer
4
4
 
5
5
  By the F3D-APP Foundation.
6
6
 
7
7
  <img src="https://raw.githubusercontent.com/f3d-app/f3d/master/resources/logo.svg" align="left" width="20px"/>
8
- F3D (pronounced `/fɛd/`) is a fast and minimalist 3D viewer desktop application. It supports many file formats, from digital content to scientific datasets (including glTF, USD, STL, STEP, PLY, OBJ, FBX, Alembic), can show animations and support thumbnails and many rendering and texturing options including real time physically based rendering and raytracing.
8
+ F3D (pronounced `/fɛd/`) is a fast and minimalist 3D viewer desktop application. It supports many file formats, from digital content to scientific datasets, including glTF, USD, STL, STEP, PLY, OBJ, FBX, and Alembic. It can show animations, generate thumbnails, and provide many rendering and texturing options including real-time physically based rendering and raytracing.
9
9
  <br clear="left"/>
10
10
 
11
- It is fully controllable from the command line and support configuration files. It can provide thumbnails, support interactive hotkeys, drag&drop and integration into file managers.
11
+ It is fully controllable from the command line and supports configuration files. It supports interactive hotkeys, drag and drop, and integration into file managers.
12
12
 
13
- F3D also contains the libf3d, a simple library to render meshes, with a C++17 API, C, Python, Java and Javascript Bindings.
13
+ F3D also contains libf3d, a simple library to render meshes, with a C++17 API and C, Python, Java, and JavaScript bindings.
14
14
 
15
15
  <img src="https://media.githubusercontent.com/media/f3d-app/f3d-website/refs/heads/main/static/images/typical.png" width="640" />
16
16
 
@@ -28,7 +28,11 @@ See the [gallery](https://f3d.app/gallery) for more images, take a look at the [
28
28
 
29
29
  You can even use F3D directly in your [browser](https://f3d.app/viewer)!
30
30
 
31
- If you need any help or want to discuss with other F3D users and developers, head over to our [discord](https://discord.f3d.app).
31
+ If you need any help or want to discuss with other F3D users and developers, head over to our [Discord](https://discord.f3d.app).
32
+
33
+ # Installation
34
+
35
+ Install F3D from the [download page](https://f3d.app/download), which lists the latest release packages and installation options for supported platforms. Once installed, the `f3d` command should be available from your terminal.
32
36
 
33
37
  # Quickstart
34
38
 
@@ -40,7 +44,7 @@ f3d /path/to/file.ext
40
44
 
41
45
  Optionally, append `--output=/path/to/img.png` to save the rendering into an image file.
42
46
 
43
- See the [Quickstart Guide](doc/user/01-QUICKSTART.md) for more information about getting started with F3D.
47
+ See the [quickstart guide](doc/user/01-QUICKSTART.md) for more information about getting started with F3D.
44
48
 
45
49
  # Documentation
46
50
 
@@ -54,18 +58,18 @@ See the [Quickstart Guide](doc/user/01-QUICKSTART.md) for more information about
54
58
  F3D needs your help!
55
59
 
56
60
  If you can, please consider sponsoring F3D. Even a small donation would help us offset the recurring maintenance costs.
57
- With enough sponsors we would be able to make F3D grow faster and stronger! Read more about it [here](https://f3d.app/thanks).
61
+ With enough sponsors, F3D can grow faster and stronger! Read the [sponsorship page](https://f3d.app/thanks).
58
62
 
59
63
  If you are an industry user of F3D and want to make sure it can keep growing and being maintained, [please reach out](https://f3d.app/thanks)!
60
64
 
61
- In any case, please star it on github and share the word about it!
65
+ In any case, please star it on GitHub and share the word about it!
62
66
 
63
67
  ## Sponsors
64
68
 
65
69
  Many thanks to our sponsors for supporting F3D
66
70
 
67
71
  <a href="https://nlnet.nl/project/F3D/" target="_blank"><img src="https://nlnet.nl/image/logos/NGI0Core_tag.svg" height="45"/></a>
68
- <a href="https://www.testmuai.com/?utm_medium=sponsor&utm_source=f3d-app" target="_blank"><img src="https://f3d.app/assets/images/testmu-ee484398e4f0ff464fd5c8a24ad92e89.png" height="45" /></a>
72
+ <a href="https://www.testmuai.com/?utm_medium=sponsor&utm_source=f3d-app" target="_blank"><img src="https://github.com/f3d-app/f3d-website/raw/refs/heads/main/static/sponsors/testmu.svg" height="32"/></a>
69
73
  <a href="https://www.opendronemap.org/" target="_blank"><img src="https://f3d.app/assets/images/opendronemap-95d4ad6e24c091a06ec00e1828e1eb38.png" height="45" /></a>
70
74
 
71
75
  # Vision
@@ -89,7 +93,7 @@ but there is no plan to:
89
93
 
90
94
  # Contributing
91
95
 
92
- F3D is a community-driven, inclusive and beginner-friendly project. We love to see how the project is growing thanks to the contributions from the community. We would love to see your face in the list below! If you want to contribute to F3D, you are very welcome to! Take a look at our [contribution documentation](CONTRIBUTING.md), [governance documentation](doc/dev/10-GOVERNANCE.md) and [code of conduct](CODE_OF_CONDUCT.md).
96
+ F3D is a community-driven, inclusive and beginner-friendly project. We love to see how the project is growing thanks to the contributions from the community. We would love to see your face in the list below! If you want to contribute to F3D, you are very welcome to! Take a look at our [contribution documentation](CONTRIBUTING.md), [governance documentation](doc/dev/11-GOVERNANCE.md) and [code of conduct](CODE_OF_CONDUCT.md).
93
97
 
94
98
  <a href="https://github.com/f3d-app/f3d/graphs/contributors">
95
99
  <img src="https://contrib.rocks/image?repo=f3d-app/f3d" />
@@ -102,5 +106,5 @@ F3D was initially created by [Kitware SAS](https://www.kitware.eu/), by Joachim
102
106
  # License
103
107
 
104
108
  F3D can be used and distributed under the 3-Clause BSD License, see the [license](LICENSE.md).
105
- F3D integrate the sources of other libraries and tools, all under permissive licenses, see the [third party licenses](THIRD_PARTY_LICENSES.md).
106
- F3D packages relies on other libraries and tools, all under permissive licenses, all listed in the respective packages.
109
+ F3D integrates the sources of other libraries and tools, all under permissive licenses, see the [third party licenses](THIRD_PARTY_LICENSES.md).
110
+ F3D packages rely on other libraries and tools, all under permissive licenses, all listed in the respective packages.
package/dist/f3d.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  // TypeScript bindings for emscripten-generated code. Automatically generated at compile time.
2
2
  declare namespace RuntimeExports {
3
+ function getExceptionMessage(ex: any): any;
4
+ function decrementExceptionRefcount(ex: any): void;
3
5
  namespace FS {
4
6
  export const root: any;
5
7
  export const mounts: any[];
@@ -12,7 +14,6 @@ declare namespace RuntimeExports {
12
14
  export const ignorePermissions: boolean;
13
15
  export const filesystems: any;
14
16
  export const syncFSRequests: number;
15
- export const readFiles: {};
16
17
  export { ErrnoError };
17
18
  export { FSStream };
18
19
  export { FSNode };
@@ -88,6 +89,7 @@ declare namespace RuntimeExports {
88
89
  export function mkdirTree(path: any, mode: any): void;
89
90
  export function mkdev(path: any, mode: any, dev: any): any;
90
91
  export function symlink(oldpath: any, newpath: any): any;
92
+ export function link(oldpath: any, newpath: any, flags: any): any;
91
93
  export function rename(old_path: any, new_path: any): void;
92
94
  export function rmdir(path: any): void;
93
95
  export function readdir(path: any): any;
@@ -107,7 +109,7 @@ declare namespace RuntimeExports {
107
109
  export function doTruncate(stream: any, node: any, len: any): void;
108
110
  export function truncate(path: any, len: any): void;
109
111
  export function ftruncate(fd: any, len: any): void;
110
- export function utime(path: any, atime: any, mtime: any): void;
112
+ export function utime(path: any, atime: any, mtime: any, dontFollow: any): void;
111
113
  export function open(path: any, flags: any, mode?: number): any;
112
114
  export function close(stream: any): void;
113
115
  export function isClosed(stream: any): boolean;
@@ -149,17 +151,17 @@ declare namespace RuntimeExports {
149
151
  }
150
152
  function FS_createPath(...args: any[]): any;
151
153
  function FS_createDataFile(...args: any[]): any;
152
- function FS_createPreloadedFile(parent: any, name: any, url: any, canRead: any, canWrite: any, onload: any, onerror: any, dontCreateFile: any, canOwn: any, preFinish: any): void;
154
+ function FS_preloadFile(parent: any, name: any, url: any, canRead: any, canWrite: any, dontCreateFile: any, canOwn: any, preFinish: any): Promise<void>;
153
155
  function FS_unlink(...args: any[]): any;
154
156
  function FS_createLazyFile(...args: any[]): any;
155
157
  function FS_createDevice(...args: any[]): any;
156
- const addRunDependency: any;
157
- const removeRunDependency: any;
158
+ function addRunDependency(id: any): void;
159
+ function removeRunDependency(id: any): void;
158
160
  }
159
- declare class ErrnoError {
161
+ declare class ErrnoError extends Error {
160
162
  constructor(errno: any);
161
- name: string;
162
163
  errno: any;
164
+ code: string;
163
165
  }
164
166
  declare class FSStream {
165
167
  shared: {};
@@ -196,6 +198,15 @@ declare class FSNode {
196
198
  get write(): boolean;
197
199
  get isFolder(): any;
198
200
  get isDevice(): any;
201
+ addListener(cb: any, exclusive?: boolean): {
202
+ listeners: any;
203
+ entry: {
204
+ cb: any;
205
+ exclusive: boolean;
206
+ };
207
+ };
208
+ notifyListeners(flags: any): void;
209
+ exclTurn: any;
199
210
  }
200
211
  interface WasmModule {
201
212
  _setDefaultExpandVTKCanvasToContainer(_0: number): void;
@@ -212,6 +223,45 @@ export interface ClassHandle {
212
223
  [Symbol.dispose](): void;
213
224
  clone(): this;
214
225
  }
226
+ export interface Color extends ClassHandle {
227
+ readonly r: number;
228
+ readonly g: number;
229
+ readonly b: number;
230
+ }
231
+
232
+ export interface LightTypeValue<T extends number> {
233
+ value: T;
234
+ }
235
+ export type LightType = LightTypeValue<1>|LightTypeValue<2>|LightTypeValue<3>;
236
+
237
+ export interface LightState extends ClassHandle {
238
+ type: LightType;
239
+ color: Color;
240
+ positionalLight: boolean;
241
+ switchState: boolean;
242
+ position: Point3;
243
+ direction: Vector3;
244
+ intensity: number;
245
+ }
246
+
247
+ export interface Mesh extends ClassHandle {
248
+ points: any;
249
+ normals: any;
250
+ textureCoordinates: any;
251
+ faceSides: any;
252
+ faceIndices: any;
253
+ }
254
+
255
+ export interface OptionsDomainStyleValue<T extends number> {
256
+ value: T;
257
+ }
258
+ export type OptionsDomainStyle = OptionsDomainStyleValue<1>|OptionsDomainStyleValue<2>|OptionsDomainStyleValue<3>;
259
+
260
+ export interface OptionTypeValue<T extends number> {
261
+ value: T;
262
+ }
263
+ export type OptionType = OptionTypeValue<0>|OptionTypeValue<1>|OptionTypeValue<2>|OptionTypeValue<3>|OptionTypeValue<4>|OptionTypeValue<5>|OptionTypeValue<6>|OptionTypeValue<7>|OptionTypeValue<8>|OptionTypeValue<9>|OptionTypeValue<10>|OptionTypeValue<11>;
264
+
215
265
  export interface Options extends ClassHandle {
216
266
  setAsString(_0: EmbindString, _1: EmbindString): Options;
217
267
  getAsString(_0: EmbindString): string;
@@ -220,24 +270,67 @@ export interface Options extends ClassHandle {
220
270
  hasValue(_0: EmbindString): boolean;
221
271
  copy(_0: Options, _1: EmbindString): Options;
222
272
  isOptional(_0: EmbindString): boolean;
273
+ getType(_0: EmbindString): OptionType;
223
274
  reset(_0: EmbindString): Options;
224
275
  removeValue(_0: EmbindString): Options;
276
+ hasDomain(_0: EmbindString): boolean;
277
+ getDomainStyle(_0: EmbindString): OptionsDomainStyle;
278
+ increase(_0: EmbindString): Options;
279
+ decrease(_0: EmbindString): Options;
280
+ cycle(_0: EmbindString): Options;
225
281
  get(_0: EmbindString): any;
226
282
  getNames(): any;
227
283
  getClosestOption(_0: EmbindString): any;
284
+ getRangeDomainAsNumber(_0: EmbindString): any;
285
+ getEnumDomainAsString(_0: EmbindString): any;
286
+ getIndexDomain(_0: EmbindString): any;
287
+ }
288
+
289
+ export interface AnimationDirectionValue<T extends number> {
290
+ value: T;
228
291
  }
292
+ export type AnimationDirection = AnimationDirectionValue<0>|AnimationDirectionValue<1>;
293
+
294
+ export interface Animation extends ClassHandle {
295
+ toggle(): Animation;
296
+ start(): Animation;
297
+ stop(): Animation;
298
+ getDirection(): AnimationDirection;
299
+ isPlaying(): boolean;
300
+ count(): number;
301
+ loadTime(_0: number): Animation;
302
+ getName(): string;
303
+ getName(_0: number): string;
304
+ getTimeRange(): any;
305
+ getKeyFrames(): any;
306
+ getNames(): any;
307
+ toggle(_0: any): Animation;
308
+ start(_0: any): Animation;
309
+ }
310
+
311
+ export interface FileAvailabilityValue<T extends number> {
312
+ value: T;
313
+ }
314
+ export type FileAvailability = FileAvailabilityValue<0>|FileAvailabilityValue<1>|FileAvailabilityValue<2>;
229
315
 
230
316
  export interface Scene extends ClassHandle {
317
+ addMesh(_0: Mesh): Scene;
231
318
  clear(): Scene;
232
- availableAnimations(): number;
233
- loadAnimationTime(_0: number): Scene;
234
- supports(_0: EmbindString): boolean;
235
- getAnimationName(_0: number): string;
319
+ removeAllLights(): Scene;
320
+ getAnimation(): Animation;
321
+ addLight(_0: LightState): number;
322
+ getLightCount(): number;
323
+ getLight(_0: number): LightState;
324
+ updateLight(_0: number, _1: LightState): Scene;
325
+ removeLight(_0: number): Scene;
326
+ setNodeVisibility(_0: number, _1: boolean): Scene;
327
+ supports(_0: EmbindString): FileAvailability;
236
328
  add(_0: any): Scene;
329
+ addMeshView(_0: any): Scene;
237
330
  addBuffer(_0: any): Scene;
238
- animationTimeRange(): any;
239
- getAnimationKeyFrames(): any;
240
- getAnimationNames(): any;
331
+ getAddedFiles(): any;
332
+ getSceneHierarchy(): any;
333
+ getSceneInfo(): any;
241
334
  }
242
335
 
243
336
  export interface ImageSaveFormatValue<T extends number> {
@@ -269,11 +362,19 @@ export interface Image extends ClassHandle {
269
362
  allMetadata(): any;
270
363
  }
271
364
 
365
+ export interface CameraState extends ClassHandle {
366
+ position: Point3;
367
+ focalPoint: Point3;
368
+ viewUp: Vector3;
369
+ viewAngle: number;
370
+ }
371
+
272
372
  export interface Camera extends ClassHandle {
373
+ state: CameraState;
374
+ position: Point3;
375
+ focalPoint: Point3;
376
+ viewUp: Vector3;
273
377
  viewAngle: number;
274
- position: any;
275
- focalPoint: any;
276
- viewUp: any;
277
378
  setCurrentAsDefault(): Camera;
278
379
  resetToDefault(): Camera;
279
380
  dolly(_0: number): Camera;
@@ -290,37 +391,132 @@ export interface Camera extends ClassHandle {
290
391
  export interface Window extends ClassHandle {
291
392
  readonly width: number;
292
393
  readonly height: number;
394
+ size: any;
293
395
  getCamera(): Camera;
396
+ getVideoFrame(): VideoFrame | null;
294
397
  render(): boolean;
295
398
  renderToImage(_0: boolean): Image;
399
+ setUseHDRICache(_0: boolean): Window;
296
400
  setSize(_0: number, _1: number): Window;
401
+ getDPIScale(): number;
297
402
  getWorldFromDisplay(_0: any): any;
298
403
  getDisplayFromWorld(_0: any): any;
299
404
  }
300
405
 
301
- export interface InteractorAnimationDirectionValue<T extends number> {
406
+ export interface VideoFrame extends ClassHandle {
407
+ setTimestamp(_0: bigint): VideoFrame;
408
+ }
409
+
410
+ export interface VideoPacket extends ClassHandle {
411
+ isKeyFrame(): boolean;
412
+ getTimestamp(): bigint;
413
+ getPacketData(): any;
414
+ }
415
+
416
+ export interface VideoEncoderCodecValue<T extends number> {
417
+ value: T;
418
+ }
419
+ export type VideoEncoderCodec = VideoEncoderCodecValue<0>|VideoEncoderCodecValue<1>|VideoEncoderCodecValue<2>|VideoEncoderCodecValue<3>|VideoEncoderCodecValue<4>|VideoEncoderCodecValue<5>;
420
+
421
+ export interface VideoEncoder extends ClassHandle {
422
+ readonly width: number;
423
+ readonly height: number;
424
+ flush(): VideoEncoder;
425
+ submit(_0: VideoFrame | null): boolean;
426
+ listen(_0: any): VideoEncoder;
427
+ }
428
+
429
+ export interface InteractionBindModifierKeysValue<T extends number> {
430
+ value: T;
431
+ }
432
+ export type InteractionBindModifierKeys = InteractionBindModifierKeysValue<128>|InteractionBindModifierKeysValue<0>|InteractionBindModifierKeysValue<1>|InteractionBindModifierKeysValue<2>|InteractionBindModifierKeysValue<3>;
433
+
434
+ export interface InteractionBind extends ClassHandle {
435
+ mod: InteractionBindModifierKeys;
436
+ get inter(): string;
437
+ set inter(value: EmbindString);
438
+ }
439
+
440
+ export interface InteractorBindingTypeValue<T extends number> {
302
441
  value: T;
303
442
  }
304
- export type InteractorAnimationDirection = InteractorAnimationDirectionValue<0>|InteractorAnimationDirectionValue<1>;
443
+ export type InteractorBindingType = InteractorBindingTypeValue<0>|InteractorBindingTypeValue<1>|InteractorBindingTypeValue<2>|InteractorBindingTypeValue<3>;
444
+
445
+ export interface InteractorMouseButtonValue<T extends number> {
446
+ value: T;
447
+ }
448
+ export type InteractorMouseButton = InteractorMouseButtonValue<0>|InteractorMouseButtonValue<1>|InteractorMouseButtonValue<2>;
449
+
450
+ export interface InteractorWheelDirectionValue<T extends number> {
451
+ value: T;
452
+ }
453
+ export type InteractorWheelDirection = InteractorWheelDirectionValue<0>|InteractorWheelDirectionValue<1>|InteractorWheelDirectionValue<2>|InteractorWheelDirectionValue<3>;
454
+
455
+ export interface InteractorInputActionValue<T extends number> {
456
+ value: T;
457
+ }
458
+ export type InteractorInputAction = InteractorInputActionValue<0>|InteractorInputActionValue<1>;
459
+
460
+ export interface InteractorInputModifierValue<T extends number> {
461
+ value: T;
462
+ }
463
+ export type InteractorInputModifier = InteractorInputModifierValue<0>|InteractorInputModifierValue<1>|InteractorInputModifierValue<2>|InteractorInputModifierValue<3>;
464
+
465
+ export interface InteractorState extends ClassHandle {
466
+ animationTime: number;
467
+ }
468
+
469
+ export interface InteractorBindCommands extends ClassHandle, Iterable<string> {
470
+ size(): number;
471
+ get(_0: number): string | undefined;
472
+ push_back(_0: EmbindString): void;
473
+ resize(_0: number, _1: EmbindString): void;
474
+ set(_0: number, _1: EmbindString): boolean;
475
+ }
476
+
477
+ export interface InteractorBindingParam extends ClassHandle {
478
+ bind: InteractionBind;
479
+ commands: InteractorBindCommands;
480
+ type: InteractorBindingType;
481
+ notify: boolean;
482
+ repeat: boolean;
483
+ get group(): string;
484
+ set group(value: EmbindString);
485
+ setDocCallback(_0: any): void;
486
+ getDocCallback(): any;
487
+ }
305
488
 
306
489
  export interface Interactor extends ClassHandle {
307
490
  initCommands(): Interactor;
308
- stopAnimation(): Interactor;
309
- getAnimationDirection(): InteractorAnimationDirection;
491
+ initBindings(): Interactor;
492
+ addBinding(_0: InteractorBindingParam): Interactor;
493
+ removeBinding(_0: InteractionBind): Interactor;
494
+ getBindingType(_0: InteractionBind): InteractorBindingType;
310
495
  enableCameraMovement(): Interactor;
311
496
  disableCameraMovement(): Interactor;
497
+ triggerModUpdate(_0: InteractorInputModifier): Interactor;
498
+ triggerMouseButton(_0: InteractorInputAction, _1: InteractorMouseButton): Interactor;
499
+ triggerMouseWheel(_0: InteractorWheelDirection): Interactor;
312
500
  start(): Interactor;
313
501
  stop(): Interactor;
314
502
  requestRender(): Interactor;
315
503
  requestStop(): Interactor;
316
- isPlayingAnimation(): boolean;
504
+ triggerTextCharacter(_0: number): Interactor;
505
+ triggerMousePosition(_0: number, _1: number): Interactor;
506
+ triggerEventLoop(_0: number): Interactor;
317
507
  removeCommand(_0: EmbindString): Interactor;
318
508
  triggerCommand(_0: EmbindString, _1: boolean): boolean;
319
- triggerNotification(_0: EmbindString, _1: EmbindString, _2: number): void;
509
+ triggerKeyboardKey(_0: InteractorInputAction, _1: EmbindString): Interactor;
510
+ triggerNotification(_0: EmbindString, _1: EmbindString, _2: number): Interactor;
511
+ playInteraction(_0: EmbindString, _1: number): boolean;
512
+ recordInteraction(_0: EmbindString): boolean;
320
513
  addCommand(_0: EmbindString, _1: any): Interactor;
321
514
  getCommandActions(): any;
322
- toggleAnimation(_0: any): Interactor;
323
- startAnimation(_0: any): Interactor;
515
+ getBindGroups(): any;
516
+ getBinds(): any;
517
+ getBindingDocumentation(_0: InteractionBind): any;
518
+ setNotificationCallback(_0: any): void;
519
+ setEventLoopUserCallback(_0: any): Interactor;
324
520
  }
325
521
 
326
522
  export interface EngineLibInformation extends ClassHandle {
@@ -355,13 +551,21 @@ export interface EngineReaderInformation extends ClassHandle {
355
551
  readonly mimeTypes: any;
356
552
  }
357
553
 
554
+ export interface EngineState extends ClassHandle {
555
+ toString(): string;
556
+ toFile(_0: EmbindString): void;
557
+ }
558
+
358
559
  export interface Engine extends ClassHandle {
560
+ get cachePath(): string;
561
+ set cachePath(value: EmbindString);
359
562
  setOptions(_0: Options): Engine;
360
563
  getOptions(): Options;
361
564
  getWindow(): Window;
362
565
  getScene(): Scene;
566
+ dump(): EngineState;
567
+ load(_0: EngineState): Engine;
363
568
  getInteractor(): Interactor;
364
- setCachePath(_0: EmbindString): Engine;
365
569
  }
366
570
 
367
571
  export interface LogVerboseLevelValue<T extends number> {
@@ -372,11 +576,39 @@ export type LogVerboseLevel = LogVerboseLevelValue<0>|LogVerboseLevelValue<1>|Lo
372
576
  export interface Log extends ClassHandle {
373
577
  }
374
578
 
579
+ export type Point3 = [ number, number, number ];
580
+
581
+ export type Vector3 = [ number, number, number ];
582
+
583
+ export type VideoEncoderParams = {
584
+ codec: VideoEncoderCodec,
585
+ width: number,
586
+ height: number,
587
+ frameRate: number,
588
+ bitrate: number,
589
+ lowLatency: boolean
590
+ };
591
+
375
592
  interface EmbindModule {
593
+ Color: {
594
+ new(_0: number, _1: number, _2: number): Color;
595
+ };
596
+ LightType: {HEADLIGHT: LightTypeValue<1>, CAMERA_LIGHT: LightTypeValue<2>, SCENE_LIGHT: LightTypeValue<3>};
597
+ LightState: {
598
+ new(): LightState;
599
+ };
600
+ Mesh: {
601
+ new(): Mesh;
602
+ };
603
+ OptionsDomainStyle: {RANGE: OptionsDomainStyleValue<1>, ENUM: OptionsDomainStyleValue<2>, INDEX: OptionsDomainStyleValue<3>};
604
+ OptionType: {BOOL: OptionTypeValue<0>, INT: OptionTypeValue<1>, DOUBLE: OptionTypeValue<2>, RATIO: OptionTypeValue<3>, STRING: OptionTypeValue<4>, PATH: OptionTypeValue<5>, COLOR: OptionTypeValue<6>, DIRECTION: OptionTypeValue<7>, COLORMAP: OptionTypeValue<8>, TRANSFORM2D: OptionTypeValue<9>, DOUBLE_VECTOR: OptionTypeValue<10>, INT_VECTOR: OptionTypeValue<11>};
376
605
  Options: {
377
606
  new(): Options;
378
607
  getAllNames(): any;
379
608
  };
609
+ AnimationDirection: {FORWARD: AnimationDirectionValue<0>, BACKWARD: AnimationDirectionValue<1>};
610
+ Animation: {};
611
+ FileAvailability: {SUPPORTED: FileAvailabilityValue<0>, UNSUPPORTED_EXTENSION: FileAvailabilityValue<1>, UNSUPPORTED_CONTENT: FileAvailabilityValue<2>};
380
612
  Scene: {};
381
613
  ImageSaveFormat: {PNG: ImageSaveFormatValue<0>, JPG: ImageSaveFormatValue<1>, TIF: ImageSaveFormatValue<2>, BMP: ImageSaveFormatValue<3>};
382
614
  ImageChannelType: {BYTE: ImageChannelTypeValue<0>, SHORT: ImageChannelTypeValue<1>, FLOAT: ImageChannelTypeValue<2>};
@@ -384,18 +616,49 @@ interface EmbindModule {
384
616
  new(): Image;
385
617
  new(_0: number, _1: number, _2: number, _3: ImageChannelType): Image;
386
618
  new(_0: EmbindString): Image;
619
+ createFromBuffer(_0: any): Image;
387
620
  getSupportedFormats(): any;
388
621
  };
622
+ CameraState: {
623
+ new(): CameraState;
624
+ };
389
625
  Camera: {};
390
626
  Window: {};
391
- InteractorAnimationDirection: {FORWARD: InteractorAnimationDirectionValue<0>, BACKWARD: InteractorAnimationDirectionValue<1>};
627
+ VideoFrame: {};
628
+ VideoPacket: {};
629
+ VideoEncoderCodec: {H264: VideoEncoderCodecValue<0>, HEVC: VideoEncoderCodecValue<1>, VP8: VideoEncoderCodecValue<2>, VP9: VideoEncoderCodecValue<3>, AV1: VideoEncoderCodecValue<4>, EXPLICIT: VideoEncoderCodecValue<5>};
630
+ VideoEncoder: {
631
+ create(_0: VideoEncoderParams): VideoEncoder | null;
632
+ getAvailableEncoders(): any;
633
+ };
634
+ InteractionBindModifierKeys: {ANY: InteractionBindModifierKeysValue<128>, NONE: InteractionBindModifierKeysValue<0>, CTRL: InteractionBindModifierKeysValue<1>, SHIFT: InteractionBindModifierKeysValue<2>, CTRL_SHIFT: InteractionBindModifierKeysValue<3>};
635
+ InteractionBind: {
636
+ new(): InteractionBind;
637
+ };
638
+ InteractorBindingType: {CYCLIC: InteractorBindingTypeValue<0>, NUMERICAL: InteractorBindingTypeValue<1>, TOGGLE: InteractorBindingTypeValue<2>, OTHER: InteractorBindingTypeValue<3>};
639
+ InteractorMouseButton: {LEFT: InteractorMouseButtonValue<0>, RIGHT: InteractorMouseButtonValue<1>, MIDDLE: InteractorMouseButtonValue<2>};
640
+ InteractorWheelDirection: {FORWARD: InteractorWheelDirectionValue<0>, BACKWARD: InteractorWheelDirectionValue<1>, LEFT: InteractorWheelDirectionValue<2>, RIGHT: InteractorWheelDirectionValue<3>};
641
+ InteractorInputAction: {PRESS: InteractorInputActionValue<0>, RELEASE: InteractorInputActionValue<1>};
642
+ InteractorInputModifier: {NONE: InteractorInputModifierValue<0>, CTRL: InteractorInputModifierValue<1>, SHIFT: InteractorInputModifierValue<2>, CTRL_SHIFT: InteractorInputModifierValue<3>};
643
+ InteractorState: {};
644
+ InteractorBindCommands: {
645
+ new(): InteractorBindCommands;
646
+ };
647
+ InteractorBindingParam: {
648
+ new(): InteractorBindingParam;
649
+ };
392
650
  Interactor: {};
393
651
  EngineLibInformation: {};
394
652
  EngineReaderInformation: {};
653
+ EngineState: {
654
+ fromString(_0: EmbindString): EngineState;
655
+ fromFile(_0: EmbindString): EngineState;
656
+ };
395
657
  Engine: {
396
658
  create(): Engine;
397
659
  getLibInfo(): EngineLibInformation;
398
660
  autoloadPlugins(): void;
661
+ create(_0: EmbindString): Engine;
399
662
  setReaderOption(_0: EmbindString, _1: EmbindString): void;
400
663
  getAllReaderOptionNames(): any;
401
664
  getReadersInfo(): any;