f3d 3.3.0-RC6 → 3.3.0-nightly.20251111

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/LICENSE.md CHANGED
@@ -2,6 +2,7 @@ BSD 3-Clause License
2
2
 
3
3
  - Copyright 2019-2021 Kitware SAS
4
4
  - Copyright 2021-2025 Michael Migliore, Mathieu Westphal
5
+ - Copyright 2025 F3D-APP Foundation
5
6
 
6
7
  All rights reserved.
7
8
 
package/README.md CHANGED
@@ -1,8 +1,8 @@
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://github.com/sponsors/f3d-app) [![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)
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
3
  # F3D - Fast and minimalist 3D viewer
4
4
 
5
- By Michael Migliore and Mathieu Westphal.
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
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.
@@ -10,9 +10,9 @@ F3D (pronounced `/fɛd/`) is a fast and minimalist 3D viewer desktop application
10
10
 
11
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.
12
12
 
13
- F3D also contains the libf3d, a simple library to render meshes, with a C++17 API, Python Bindings, and experimental Java and Javascript bindings.
13
+ F3D also contains the libf3d, a simple library to render meshes, with a C++17 API, Python and Javascript Bindings, and experimental Java bindings.
14
14
 
15
- <img src="https://media.githubusercontent.com/media/f3d-app/f3d-media/95b76c22d927bb24759bbe0246b6260121f2933b/media/typical.png" width="640" />
15
+ <img src="https://media.githubusercontent.com/media/f3d-app/f3d-website/refs/heads/main/static/images/typical.png" width="640" />
16
16
 
17
17
  _A typical render by F3D_
18
18
 
@@ -20,7 +20,7 @@ _A typical render by F3D_
20
20
 
21
21
  _Animation of a glTF file within F3D_
22
22
 
23
- <img src="https://user-images.githubusercontent.com/3129530/194735272-5bcd3e7c-a333-41f5-8066-9b0bec9885e8.png" width="640" />
23
+ <img src="https://media.githubusercontent.com/media/f3d-app/f3d-website/refs/heads/main/static/images/directScalars.png" width="640" />
24
24
 
25
25
  _A direct scalars render by F3D_
26
26
 
@@ -97,7 +97,7 @@ F3D as a community-driven, inclusive and beginner-friendly project. We love to s
97
97
 
98
98
  # Acknowledgments
99
99
 
100
- F3D was initially created by [Kitware SAS](https://www.kitware.eu/) and is relying on many awesome open source projects, including [VTK](https://vtk.org/), [OCCT](https://dev.opencascade.org/), [Assimp](https://www.assimp.org/), [Alembic](http://www.alembic.io/), [Draco](https://google.github.io/draco/), [OpenUSD](https://openusd.org/release/index.html), [OpenVDB](https://www.openvdb.org/), [OSPRay](https://www.ospray.org/) and [ImGui](https://github.com/ocornut/imgui/).
100
+ F3D was initially created by [Kitware SAS](https://www.kitware.eu/), by Joachim Pouderoux, Michael Migliore and Mathieu Westphal, and is relying on many awesome open source projects, including [VTK](https://vtk.org/), [OCCT](https://dev.opencascade.org/), [Assimp](https://www.assimp.org/), [Alembic](http://www.alembic.io/), [Draco](https://google.github.io/draco/), [OpenUSD](https://openusd.org/release/index.html), [OpenVDB](https://www.openvdb.org/), [OSPRay](https://www.ospray.org/) and [ImGui](https://github.com/ocornut/imgui/).
101
101
 
102
102
  # License
103
103
 
package/dist/f3d.d.ts ADDED
@@ -0,0 +1,401 @@
1
+ // TypeScript bindings for emscripten-generated code. Automatically generated at compile time.
2
+ declare namespace RuntimeExports {
3
+ namespace FS {
4
+ export const root: any;
5
+ export const mounts: any[];
6
+ export const devices: {};
7
+ export const streams: any[];
8
+ export const nextInode: number;
9
+ export const nameTable: any;
10
+ export const currentPath: string;
11
+ export const initialized: boolean;
12
+ export const ignorePermissions: boolean;
13
+ export const filesystems: any;
14
+ export const syncFSRequests: number;
15
+ export const readFiles: {};
16
+ export { ErrnoError };
17
+ export { FSStream };
18
+ export { FSNode };
19
+ export function lookupPath(path: any, opts?: {}): {
20
+ path: string;
21
+ node?: undefined;
22
+ } | {
23
+ path: string;
24
+ node: any;
25
+ };
26
+ export function getPath(node: any): any;
27
+ export function hashName(parentid: any, name: any): number;
28
+ export function hashAddNode(node: any): void;
29
+ export function hashRemoveNode(node: any): void;
30
+ export function lookupNode(parent: any, name: any): any;
31
+ export function createNode(parent: any, name: any, mode: any, rdev: any): any;
32
+ export function destroyNode(node: any): void;
33
+ export function isRoot(node: any): boolean;
34
+ export function isMountpoint(node: any): boolean;
35
+ export function isFile(mode: any): boolean;
36
+ export function isDir(mode: any): boolean;
37
+ export function isLink(mode: any): boolean;
38
+ export function isChrdev(mode: any): boolean;
39
+ export function isBlkdev(mode: any): boolean;
40
+ export function isFIFO(mode: any): boolean;
41
+ export function isSocket(mode: any): boolean;
42
+ export function flagsToPermissionString(flag: any): string;
43
+ export function nodePermissions(node: any, perms: any): 0 | 2;
44
+ export function mayLookup(dir: any): any;
45
+ export function mayCreate(dir: any, name: any): any;
46
+ export function mayDelete(dir: any, name: any, isdir: any): any;
47
+ export function mayOpen(node: any, flags: any): any;
48
+ export function checkOpExists(op: any, err: any): any;
49
+ export const MAX_OPEN_FDS: number;
50
+ export function nextfd(): number;
51
+ export function getStreamChecked(fd: any): any;
52
+ export function getStream(fd: any): any;
53
+ export function createStream(stream: any, fd?: number): any;
54
+ export function closeStream(fd: any): void;
55
+ export function dupStream(origStream: any, fd?: number): any;
56
+ export function doSetAttr(stream: any, node: any, attr: any): void;
57
+ export namespace chrdev_stream_ops {
58
+ function open(stream: any): void;
59
+ function llseek(): never;
60
+ }
61
+ export function major(dev: any): number;
62
+ export function minor(dev: any): number;
63
+ export function makedev(ma: any, mi: any): number;
64
+ export function registerDevice(dev: any, ops: any): void;
65
+ export function getDevice(dev: any): any;
66
+ export function getMounts(mount: any): any[];
67
+ export function syncfs(populate: any, callback: any): void;
68
+ export function mount(type: any, opts: any, mountpoint: any): any;
69
+ export function unmount(mountpoint: any): void;
70
+ export function lookup(parent: any, name: any): any;
71
+ export function mknod(path: any, mode: any, dev: any): any;
72
+ export function statfs(path: any): any;
73
+ export function statfsStream(stream: any): any;
74
+ export function statfsNode(node: any): {
75
+ bsize: number;
76
+ frsize: number;
77
+ blocks: number;
78
+ bfree: number;
79
+ bavail: number;
80
+ files: any;
81
+ ffree: number;
82
+ fsid: number;
83
+ flags: number;
84
+ namelen: number;
85
+ };
86
+ export function create(path: any, mode?: number): any;
87
+ export function mkdir(path: any, mode?: number): any;
88
+ export function mkdirTree(path: any, mode: any): void;
89
+ export function mkdev(path: any, mode: any, dev: any): any;
90
+ export function symlink(oldpath: any, newpath: any): any;
91
+ export function rename(old_path: any, new_path: any): void;
92
+ export function rmdir(path: any): void;
93
+ export function readdir(path: any): any;
94
+ export function unlink(path: any): void;
95
+ export function readlink(path: any): any;
96
+ export function stat(path: any, dontFollow: any): any;
97
+ export function fstat(fd: any): any;
98
+ export function lstat(path: any): any;
99
+ export function doChmod(stream: any, node: any, mode: any, dontFollow: any): void;
100
+ export function chmod(path: any, mode: any, dontFollow: any): void;
101
+ export function lchmod(path: any, mode: any): void;
102
+ export function fchmod(fd: any, mode: any): void;
103
+ export function doChown(stream: any, node: any, dontFollow: any): void;
104
+ export function chown(path: any, uid: any, gid: any, dontFollow: any): void;
105
+ export function lchown(path: any, uid: any, gid: any): void;
106
+ export function fchown(fd: any, uid: any, gid: any): void;
107
+ export function doTruncate(stream: any, node: any, len: any): void;
108
+ export function truncate(path: any, len: any): void;
109
+ export function ftruncate(fd: any, len: any): void;
110
+ export function utime(path: any, atime: any, mtime: any): void;
111
+ export function open(path: any, flags: any, mode?: number): any;
112
+ export function close(stream: any): void;
113
+ export function isClosed(stream: any): boolean;
114
+ export function llseek(stream: any, offset: any, whence: any): any;
115
+ export function read(stream: any, buffer: any, offset: any, length: any, position: any): any;
116
+ export function write(stream: any, buffer: any, offset: any, length: any, position: any, canOwn: any): any;
117
+ export function mmap(stream: any, length: any, position: any, prot: any, flags: any): any;
118
+ export function msync(stream: any, buffer: any, offset: any, length: any, mmapFlags: any): any;
119
+ export function ioctl(stream: any, cmd: any, arg: any): any;
120
+ export function readFile(path: any, opts?: {}): Uint8Array;
121
+ export function writeFile(path: any, data: any, opts?: {}): void;
122
+ export function cwd(): any;
123
+ export function chdir(path: any): void;
124
+ export function createDefaultDirectories(): void;
125
+ export function createDefaultDevices(): void;
126
+ export function createSpecialDirectories(): void;
127
+ export function createStandardStreams(input: any, output: any, error: any): void;
128
+ export function staticInit(): void;
129
+ export function init(input: any, output: any, error: any): void;
130
+ export function quit(): void;
131
+ export function findObject(path: any, dontResolveLastLink: any): any;
132
+ export function analyzePath(path: any, dontResolveLastLink: any): {
133
+ isRoot: boolean;
134
+ exists: boolean;
135
+ error: number;
136
+ name: any;
137
+ path: any;
138
+ object: any;
139
+ parentExists: boolean;
140
+ parentPath: any;
141
+ parentObject: any;
142
+ };
143
+ export function createPath(parent: any, path: any, canRead: any, canWrite: any): any;
144
+ export function createFile(parent: any, name: any, properties: any, canRead: any, canWrite: any): any;
145
+ export function createDataFile(parent: any, name: any, data: any, canRead: any, canWrite: any, canOwn: any): void;
146
+ export function createDevice(parent: any, name: any, input: any, output: any): any;
147
+ export function forceLoadFile(obj: any): boolean;
148
+ export function createLazyFile(parent: any, name: any, url: any, canRead: any, canWrite: any): any;
149
+ }
150
+ function FS_createPath(...args: any[]): any;
151
+ 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;
153
+ function FS_unlink(...args: any[]): any;
154
+ function FS_createLazyFile(...args: any[]): any;
155
+ function FS_createDevice(...args: any[]): any;
156
+ const addRunDependency: any;
157
+ const removeRunDependency: any;
158
+ }
159
+ declare class ErrnoError {
160
+ constructor(errno: any);
161
+ name: string;
162
+ errno: any;
163
+ }
164
+ declare class FSStream {
165
+ shared: {};
166
+ set object(arg: any);
167
+ get object(): any;
168
+ node: any;
169
+ get isRead(): boolean;
170
+ get isWrite(): boolean;
171
+ get isAppend(): number;
172
+ set flags(arg: any);
173
+ get flags(): any;
174
+ set position(arg: any);
175
+ get position(): any;
176
+ }
177
+ declare class FSNode {
178
+ constructor(parent: any, name: any, mode: any, rdev: any);
179
+ node_ops: {};
180
+ stream_ops: {};
181
+ readMode: number;
182
+ writeMode: number;
183
+ mounted: any;
184
+ parent: any;
185
+ mount: any;
186
+ id: number;
187
+ name: any;
188
+ mode: any;
189
+ rdev: any;
190
+ atime: number;
191
+ mtime: number;
192
+ ctime: number;
193
+ set read(arg: boolean);
194
+ get read(): boolean;
195
+ set write(arg: boolean);
196
+ get write(): boolean;
197
+ get isFolder(): any;
198
+ get isDevice(): any;
199
+ }
200
+ interface WasmModule {
201
+ _setDefaultExpandVTKCanvasToContainer(_0: number): void;
202
+ _setDefaultInstallHTMLResizeObserver(_0: number): void;
203
+ }
204
+
205
+ type EmbindString = ArrayBuffer|Uint8Array|Uint8ClampedArray|Int8Array|string;
206
+ export interface ClassHandle {
207
+ isAliasOf(other: ClassHandle): boolean;
208
+ delete(): void;
209
+ deleteLater(): this;
210
+ isDeleted(): boolean;
211
+ // @ts-ignore - If targeting lower than ESNext, this symbol might not exist.
212
+ [Symbol.dispose](): void;
213
+ clone(): this;
214
+ }
215
+ export interface Options extends ClassHandle {
216
+ setAsString(_0: EmbindString, _1: EmbindString): Options;
217
+ getAsString(_0: EmbindString): string;
218
+ toggle(_0: EmbindString): Options;
219
+ isSame(_0: Options, _1: EmbindString): boolean;
220
+ hasValue(_0: EmbindString): boolean;
221
+ copy(_0: Options, _1: EmbindString): Options;
222
+ isOptional(_0: EmbindString): boolean;
223
+ reset(_0: EmbindString): Options;
224
+ removeValue(_0: EmbindString): Options;
225
+ get(_0: EmbindString): any;
226
+ getNames(): any;
227
+ getClosestOption(_0: EmbindString): any;
228
+ }
229
+
230
+ export interface Scene extends ClassHandle {
231
+ clear(): Scene;
232
+ availableAnimations(): number;
233
+ loadAnimationTime(_0: number): Scene;
234
+ supports(_0: EmbindString): boolean;
235
+ add(_0: any): Scene;
236
+ animationTimeRange(): any;
237
+ }
238
+
239
+ export interface ImageSaveFormatValue<T extends number> {
240
+ value: T;
241
+ }
242
+ export type ImageSaveFormat = ImageSaveFormatValue<0>|ImageSaveFormatValue<1>|ImageSaveFormatValue<2>|ImageSaveFormatValue<3>;
243
+
244
+ export interface ImageChannelTypeValue<T extends number> {
245
+ value: T;
246
+ }
247
+ export type ImageChannelType = ImageChannelTypeValue<0>|ImageChannelTypeValue<1>|ImageChannelTypeValue<2>;
248
+
249
+ export interface Image extends ClassHandle {
250
+ readonly channelType: ImageChannelType;
251
+ readonly width: number;
252
+ readonly height: number;
253
+ readonly channelCount: number;
254
+ readonly channelTypeSize: number;
255
+ equals(_0: Image): boolean;
256
+ compare(_0: Image): number;
257
+ save(_0: EmbindString, _1: ImageSaveFormat): Image;
258
+ toTerminalText(): string;
259
+ setMetadata(_0: EmbindString, _1: EmbindString): Image;
260
+ getMetadata(_0: EmbindString): string;
261
+ getNormalizedPixel(_0: number, _1: number): any;
262
+ setContent(_0: any): Image;
263
+ getContent(): any;
264
+ saveBuffer(_0: ImageSaveFormat): any;
265
+ allMetadata(): any;
266
+ }
267
+
268
+ export interface Camera extends ClassHandle {
269
+ viewAngle: number;
270
+ position: any;
271
+ focalPoint: any;
272
+ viewUp: any;
273
+ setCurrentAsDefault(): Camera;
274
+ resetToDefault(): Camera;
275
+ dolly(_0: number): Camera;
276
+ pan(_0: number, _1: number, _2: number): Camera;
277
+ zoom(_0: number): Camera;
278
+ roll(_0: number): Camera;
279
+ azimuth(_0: number): Camera;
280
+ yaw(_0: number): Camera;
281
+ elevation(_0: number): Camera;
282
+ pitch(_0: number): Camera;
283
+ resetToBounds(_0: number): Camera;
284
+ }
285
+
286
+ export interface Window extends ClassHandle {
287
+ readonly width: number;
288
+ readonly height: number;
289
+ getCamera(): Camera;
290
+ render(): boolean;
291
+ renderToImage(_0: boolean): Image;
292
+ setSize(_0: number, _1: number): Window;
293
+ getWorldFromDisplay(_0: any): any;
294
+ getDisplayFromWorld(_0: any): any;
295
+ }
296
+
297
+ export interface Interactor extends ClassHandle {
298
+ initCommands(): Interactor;
299
+ toggleAnimation(): Interactor;
300
+ startAnimation(): Interactor;
301
+ stopAnimation(): Interactor;
302
+ enableCameraMovement(): Interactor;
303
+ disableCameraMovement(): Interactor;
304
+ start(): Interactor;
305
+ stop(): Interactor;
306
+ requestRender(): Interactor;
307
+ isPlayingAnimation(): boolean;
308
+ removeCommand(_0: EmbindString): Interactor;
309
+ triggerCommand(_0: EmbindString, _1: boolean): boolean;
310
+ addCommand(_0: EmbindString, _1: any): Interactor;
311
+ getCommandActions(): any;
312
+ }
313
+
314
+ export interface EngineLibInformation extends ClassHandle {
315
+ get version(): string;
316
+ set version(value: EmbindString);
317
+ get versionFull(): string;
318
+ set versionFull(value: EmbindString);
319
+ get buildDate(): string;
320
+ set buildDate(value: EmbindString);
321
+ get buildSystem(): string;
322
+ set buildSystem(value: EmbindString);
323
+ get compiler(): string;
324
+ set compiler(value: EmbindString);
325
+ get vtkVersion(): string;
326
+ set vtkVersion(value: EmbindString);
327
+ get license(): string;
328
+ set license(value: EmbindString);
329
+ readonly modules: any;
330
+ readonly copyrights: any;
331
+ }
332
+
333
+ export interface EngineReaderInformation extends ClassHandle {
334
+ hasSceneReader: boolean;
335
+ hasGeometryReader: boolean;
336
+ get name(): string;
337
+ set name(value: EmbindString);
338
+ get description(): string;
339
+ set description(value: EmbindString);
340
+ get pluginName(): string;
341
+ set pluginName(value: EmbindString);
342
+ readonly extensions: any;
343
+ readonly mimeTypes: any;
344
+ }
345
+
346
+ export interface Engine extends ClassHandle {
347
+ setOptions(_0: Options): Engine;
348
+ getOptions(): Options;
349
+ getWindow(): Window;
350
+ getScene(): Scene;
351
+ getInteractor(): Interactor;
352
+ setCachePath(_0: EmbindString): Engine;
353
+ }
354
+
355
+ export interface LogVerboseLevelValue<T extends number> {
356
+ value: T;
357
+ }
358
+ export type LogVerboseLevel = LogVerboseLevelValue<0>|LogVerboseLevelValue<1>|LogVerboseLevelValue<2>|LogVerboseLevelValue<3>|LogVerboseLevelValue<4>;
359
+
360
+ export interface Log extends ClassHandle {
361
+ }
362
+
363
+ interface EmbindModule {
364
+ Options: {
365
+ new(): Options;
366
+ getAllNames(): any;
367
+ };
368
+ Scene: {};
369
+ ImageSaveFormat: {PNG: ImageSaveFormatValue<0>, JPG: ImageSaveFormatValue<1>, TIF: ImageSaveFormatValue<2>, BMP: ImageSaveFormatValue<3>};
370
+ ImageChannelType: {BYTE: ImageChannelTypeValue<0>, SHORT: ImageChannelTypeValue<1>, FLOAT: ImageChannelTypeValue<2>};
371
+ Image: {
372
+ new(): Image;
373
+ new(_0: number, _1: number, _2: number, _3: ImageChannelType): Image;
374
+ new(_0: EmbindString): Image;
375
+ getSupportedFormats(): any;
376
+ };
377
+ Camera: {};
378
+ Window: {};
379
+ Interactor: {};
380
+ EngineLibInformation: {};
381
+ EngineReaderInformation: {};
382
+ Engine: {
383
+ create(): Engine;
384
+ getLibInfo(): EngineLibInformation;
385
+ autoloadPlugins(): void;
386
+ setReaderOption(_0: EmbindString, _1: EmbindString): void;
387
+ getAllReaderOptionNames(): any;
388
+ getReadersInfo(): any;
389
+ };
390
+ LogVerboseLevel: {DEBUG: LogVerboseLevelValue<0>, INFO: LogVerboseLevelValue<1>, WARN: LogVerboseLevelValue<2>, ERROR: LogVerboseLevelValue<3>, QUIET: LogVerboseLevelValue<4>};
391
+ Log: {
392
+ getVerboseLevel(): LogVerboseLevel;
393
+ setVerboseLevel(_0: LogVerboseLevel, _1: boolean): void;
394
+ setUseColoring(_0: boolean): void;
395
+ print(_0: LogVerboseLevel, _1: EmbindString): void;
396
+ forward(_0: any): void;
397
+ };
398
+ }
399
+
400
+ export type MainModule = WasmModule & typeof RuntimeExports & EmbindModule;
401
+ export default function MainModuleFactory (options?: unknown): Promise<MainModule>;