@xviewer.js/core 1.0.4-alpha.1 → 1.0.4-alpha.10

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xviewer.js/core",
3
- "version": "1.0.4-alpha.1",
3
+ "version": "1.0.4-alpha.10",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -28,7 +28,6 @@ export declare class Component<T extends Object3D = Object3D> extends ObjectInst
28
28
  onEnableCalled?: boolean;
29
29
  startCalled?: boolean;
30
30
  deActivating?: boolean;
31
- isStartCalled?: boolean;
32
31
  };
33
32
  get enabled(): boolean;
34
33
  set enabled(v: boolean);
@@ -7,6 +7,15 @@ export interface InputTarget {
7
7
  removeEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8
8
  addEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9
9
  }
10
+ export interface InputOption {
11
+ source: HTMLElement | Document;
12
+ normalizeWheel?: (e: WheelEvent) => {
13
+ spinX: number;
14
+ spinY: number;
15
+ pixelX: number;
16
+ pixelY: number;
17
+ };
18
+ }
10
19
  export declare class DeviceInput extends Component {
11
20
  static readonly CLICK = "click";
12
21
  static readonly MOUSE_WHEEL = "mousewheel";
@@ -22,14 +31,18 @@ export declare class DeviceInput extends Component {
22
31
  static readonly KEYPRESS = "keypress";
23
32
  static readonly KEYUP = "keyup";
24
33
  private _target;
34
+ private _normalizeWheel;
25
35
  private _listeners;
26
36
  private _touches;
27
37
  private _touchCount;
38
+ private _touchStart;
39
+ private _touchMoving;
28
40
  private _pointer;
29
41
  private _pointerPixel;
30
42
  private _pointerButton;
31
43
  private _prePointer;
32
44
  private _prePointerPixel;
45
+ private _preTouches;
33
46
  private _mouseWheel;
34
47
  private _keys;
35
48
  private _pressability;
@@ -38,7 +51,13 @@ export declare class DeviceInput extends Component {
38
51
  get pointerButton(): number;
39
52
  get prePointer(): Vector2;
40
53
  get prePointerPixel(): Vector2;
54
+ get preTouches(): {
55
+ id: number;
56
+ position: Vector2;
57
+ }[];
41
58
  get mouseWheel(): number;
59
+ get touchStart(): boolean;
60
+ get touchMoving(): boolean;
42
61
  get touchCount(): number;
43
62
  get touches(): {
44
63
  id: number;
@@ -47,7 +66,7 @@ export declare class DeviceInput extends Component {
47
66
  get keys(): {
48
67
  [k: string]: boolean;
49
68
  };
50
- constructor(target: HTMLElement | Document);
69
+ constructor(option: InputOption);
51
70
  onEnable(): void;
52
71
  onDisable(): void;
53
72
  lastUpdate(dt: number): void;
package/types/Viewer.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { BufferGeometry, Camera, Color, ColorRepresentation, ColorSpace, DataTexture, LoadingManager, Material, Mesh, Object3D, OrthographicCamera, PerspectiveCamera, Scene, ShaderMaterial, ShadowMapType, Texture, TextureDataType, ToneMapping, Vector3, WebGLCubeRenderTarget, WebGLRenderer, WebGLRendererParameters, WebGLRenderTarget } from "three";
2
2
  import { EventEmitter } from "./base";
3
3
  import { ComponentManager } from "./ComponentManager";
4
- import { DeviceInput } from "./DeviceInput";
4
+ import { DeviceInput, InputOption } from "./DeviceInput";
5
5
  import { Orientation, ResizeMode } from "./enums";
6
6
  import { AssetProperties, LoaderConstructor } from "./asset/ResourceManager";
7
7
  import { __C, __P, __Properties } from "./types";
@@ -66,13 +66,13 @@ export declare class Viewer extends EventEmitter {
66
66
  get scene(): Scene;
67
67
  get camera(): Camera;
68
68
  get renderer(): WebGLRenderer;
69
- constructor({ root, canvas, input, shadows, sortObjects, resize, orthographic, camera, targetFrameRate, fixedFrameTime, colorSpace, toneMapping, toneMappingExposure, maxDPR, path, resourcePath, dracoPath, orientation, loader, tasker, ...webglOpts }?: {
69
+ constructor({ root, canvas, input, shadows, sortObjects, resize, orthographic, camera, targetFrameRate, fixedFrameTime, colorSpace, toneMapping, toneMappingExposure, maxDPR, path, resourcePath, dracoPath, transcoderPath, orientation, loader, tasker, ...webglOpts }?: {
70
70
  /** 根节点,用于屏幕旋转 */
71
71
  root?: HTMLElement;
72
72
  /** 渲染用的 canvas 元素,如果不提供,默认获取 id 为 "canvas" 的元素 */
73
73
  canvas?: HTMLCanvasElement;
74
74
  /** 设备输入容器,默认使用canvas */
75
- input?: HTMLElement | Document;
75
+ input?: InputOption;
76
76
  /** 是否开启阴影或阴影类型,true/false 表示默认 PCFSoftShadowMap */
77
77
  shadows?: boolean | ShadowMapType;
78
78
  /** 渲染是否开启排序,默认 True */
@@ -97,6 +97,8 @@ export declare class Viewer extends EventEmitter {
97
97
  resourcePath?: string;
98
98
  /** Draco 压缩解码器路径,默认 Google CDN 地址 */
99
99
  dracoPath?: string;
100
+ /** The WASM transcoder and JS wrapper are available from the examples/jsm/libs/basis directory. */
101
+ transcoderPath?: string;
100
102
  /** 页面方向,AUTO: 自动,LANDSCAPE: 横屏,PORTRAIT: 竖屏 */
101
103
  orientation?: Orientation;
102
104
  /** Creates an orthographic camera */
@@ -141,6 +143,7 @@ export declare class Viewer extends EventEmitter {
141
143
  blit(renderTarget: WebGLRenderTarget, material: Material, lod?: number, face?: number): void;
142
144
  copy(src: WebGLRenderTarget | Texture, dest: WebGLRenderTarget): void;
143
145
  clearColor(renderTarget: WebGLRenderTarget, color: ColorRepresentation, alpha?: number): void;
146
+ stash(renderTarget: WebGLRenderTarget | null, callback: (renderer: WebGLRenderer) => void, clearColor?: ColorRepresentation, clearAlpha?: number): void;
144
147
  blur(blurLevel: number, shadingScale: number, inputBuffer: WebGLRenderTarget, tempBuffer: WebGLRenderTarget, outputBuffer?: WebGLRenderTarget, fixedOutput?: boolean): void;
145
148
  render(renderTarget: WebGLRenderTarget | null, node: Object3D, camera: Camera, clearColor?: ColorRepresentation, clearAlpha?: number): void;
146
149
  compile(target?: Object3D | Scene | Material | Texture): void;
@@ -159,7 +162,7 @@ export declare class Viewer extends EventEmitter {
159
162
  static Copy(renderer: WebGLRenderer, src: WebGLRenderTarget | Texture, dest: WebGLRenderTarget): void;
160
163
  static ClearColor(renderer: WebGLRenderer, renderTarget: WebGLRenderTarget | null, clearColor: ColorRepresentation, clearAlpha?: number): void;
161
164
  static Render(renderer: WebGLRenderer, renderTarget: WebGLRenderTarget | null, node: Object3D, camera: Camera, clearColor?: ColorRepresentation, clearAlpha?: number): void;
162
- static Stash(renderer: WebGLRenderer, renderTarget: WebGLRenderTarget | null, callback: () => void, clearColor?: ColorRepresentation, clearAlpha?: number): void;
165
+ static Stash(renderer: WebGLRenderer, renderTarget: WebGLRenderTarget | null, callback: (renderer: WebGLRenderer) => void, clearColor?: ColorRepresentation, clearAlpha?: number): void;
163
166
  static CreateFullscreenTriangle(): BufferGeometry<import("three").NormalBufferAttributes, import("three").BufferGeometryEventMap>;
164
167
  }
165
168
  export {};
@@ -8,6 +8,7 @@ export interface LoadProperties {
8
8
  path?: string;
9
9
  resourcePath?: string;
10
10
  dracoPath?: string;
11
+ transcoderPath?: string;
11
12
  manager?: LoadingManager;
12
13
  onLoad: (asset: any) => void;
13
14
  onProgress?: (event: ProgressEvent) => void;
@@ -10,6 +10,7 @@ export interface AssetProperties extends TextureSettings {
10
10
  path?: string;
11
11
  resourcePath?: string;
12
12
  dracoPath?: string;
13
+ transcoderPath?: string;
13
14
  manager?: LoadingManager;
14
15
  onProgress?: (event: ProgressEvent) => void;
15
16
  }
@@ -27,5 +28,5 @@ export declare class ResourceManager {
27
28
  destroy(): void;
28
29
  getLoader(ext: string): Loader;
29
30
  addLoader(Loader: LoaderConstructor): Loader;
30
- loadAsset<T = any>({ url, buffer, ext, path, resourcePath, dracoPath, manager, onProgress, ...props }: AssetProperties): Promise<T>;
31
+ loadAsset<T = any>({ url, ext, onProgress, ...props }: AssetProperties): Promise<T>;
31
32
  }
@@ -0,0 +1,44 @@
1
+ import { Color, ShaderMaterial, ShaderMaterialParameters, Texture, Vector2 } from "three";
2
+ import { BMFontInfo, BMFontTextLayout, LayoutSetting } from "./BMFontTextLayout";
3
+ export declare class BMFontAtlas {
4
+ info: BMFontInfo;
5
+ material: ShaderMaterial;
6
+ uniforms: {
7
+ u_color: {
8
+ value: Color;
9
+ };
10
+ u_opacity: {
11
+ value: number;
12
+ };
13
+ u_weight: {
14
+ value: number;
15
+ };
16
+ u_strokeColor: {
17
+ value: Color;
18
+ };
19
+ u_strokeWidth: {
20
+ value: number;
21
+ };
22
+ u_shadowColor: {
23
+ value: Color;
24
+ };
25
+ u_shadowBlur: {
26
+ value: number;
27
+ };
28
+ u_shadowOffset: {
29
+ value: Vector2;
30
+ };
31
+ u_fontTexture: {
32
+ value: any;
33
+ };
34
+ };
35
+ constructor({ info, texture, uniforms, ...props }: {
36
+ info: BMFontInfo;
37
+ texture: Texture;
38
+ } & ShaderMaterialParameters);
39
+ build(layout: BMFontTextLayout, setting: LayoutSetting): {
40
+ position: Float32Array<ArrayBuffer>;
41
+ uv: Float32Array<ArrayBuffer>;
42
+ indice: Uint16Array<ArrayBuffer>;
43
+ };
44
+ }
@@ -0,0 +1,9 @@
1
+ import { BufferGeometry } from "three";
2
+ import { BMFontAtlas } from "./BMFontAtlas";
3
+ import { LayoutSetting, BMFontTextLayout } from "./BMFontTextLayout";
4
+ export declare class BMFontTextGeometry extends BufferGeometry {
5
+ layout: BMFontTextLayout;
6
+ update(fontAtlas: BMFontAtlas, text: string, setting: LayoutSetting): void;
7
+ computeBoundingSphere(): void;
8
+ computeBoundingBox(): void;
9
+ }
@@ -0,0 +1,93 @@
1
+ export interface Glyph {
2
+ id: number;
3
+ char: string;
4
+ x: number;
5
+ y: number;
6
+ width: number;
7
+ height: number;
8
+ xoffset: number;
9
+ yoffset: number;
10
+ xadvance: number;
11
+ page: number;
12
+ chnl: number;
13
+ }
14
+ export interface BMFontInfo {
15
+ pages: string[];
16
+ chars: Glyph[];
17
+ info: {
18
+ face: string;
19
+ size: number;
20
+ bold: number;
21
+ italic: number;
22
+ charset: string[];
23
+ unicode: number;
24
+ stretchH: number;
25
+ smooth: number;
26
+ aa: number;
27
+ padding: number[];
28
+ spacing: number[];
29
+ outline: number;
30
+ };
31
+ common: {
32
+ lineHeight: number;
33
+ base: number;
34
+ scaleW: number;
35
+ scaleH: number;
36
+ pages: number;
37
+ packed: number;
38
+ };
39
+ distanceField: {
40
+ fieldType: string;
41
+ distanceRange: number;
42
+ };
43
+ kernings: {
44
+ first: number;
45
+ second: number;
46
+ amount: number;
47
+ }[];
48
+ }
49
+ export interface LayoutSetting {
50
+ tabSize?: number;
51
+ width?: number;
52
+ anchor?: number[];
53
+ letterSpacing?: number;
54
+ lineHeight?: number;
55
+ mode?: "nowrap" | "pre" | "greedy";
56
+ align?: "center" | "right" | "left";
57
+ flipY?: boolean;
58
+ }
59
+ export interface LayoutGlyph {
60
+ position: number[];
61
+ data: Glyph;
62
+ index: number;
63
+ line: number;
64
+ }
65
+ export declare class BMFontTextLayout {
66
+ private _width;
67
+ private _height;
68
+ private _descender;
69
+ private _ascender;
70
+ private _xHeight;
71
+ private _baseline;
72
+ private _capHeight;
73
+ private _lineHeight;
74
+ private _linesTotal;
75
+ private _glyphs;
76
+ private _fallbackSpaceGlyph;
77
+ private _fallbackTabGlyph;
78
+ private _font;
79
+ get width(): number;
80
+ get height(): number;
81
+ get descender(): number;
82
+ get ascender(): number;
83
+ get xHeight(): number;
84
+ get baseline(): number;
85
+ get capHeight(): number;
86
+ get lineHeight(): number;
87
+ get glyphs(): LayoutGlyph[];
88
+ get linesTotal(): number;
89
+ update(font: BMFontInfo, text: string, setting: LayoutSetting): void;
90
+ private _setupSpaceGlyphs;
91
+ private _getGlyph;
92
+ private _computeMetrics;
93
+ }
@@ -0,0 +1,3 @@
1
+ export { BMFontAtlas } from "./BMFontAtlas";
2
+ export { BMFontTextGeometry } from "./BMFontTextGeometry";
3
+ export { BMFontTextLayout } from "./BMFontTextLayout";
@@ -0,0 +1,2 @@
1
+ export declare function computeBox(positions: any, output: any): void;
2
+ export declare function computeSphere(positions: any, output: any): void;
@@ -0,0 +1,8 @@
1
+ export declare function wordwrap(text: string, opt?: {
2
+ width?: number;
3
+ mode?: "nowrap" | "pre" | "greedy";
4
+ start?: number;
5
+ end?: number;
6
+ measure?: Function;
7
+ letterSpacing?: number;
8
+ }): any[];
@@ -0,0 +1,26 @@
1
+ import { Material, Mesh } from "three";
2
+ import { BMFontAtlas } from "../bmfont/BMFontAtlas";
3
+ import { BMFontTextGeometry } from "../bmfont/BMFontTextGeometry";
4
+ import { LayoutSetting } from "../bmfont/BMFontTextLayout";
5
+ import { Component } from "../Component";
6
+ export interface LabelSetting extends LayoutSetting {
7
+ text?: string;
8
+ material?: Material;
9
+ font: BMFontAtlas;
10
+ }
11
+ export declare class Label extends Component<Mesh<BMFontTextGeometry>> {
12
+ needsUpdate: boolean;
13
+ private _text;
14
+ private _font;
15
+ private _setting;
16
+ get text(): string;
17
+ set text(v: string);
18
+ get font(): BMFontAtlas;
19
+ set font(v: BMFontAtlas);
20
+ get setting(): LayoutSetting;
21
+ set setting(v: LayoutSetting);
22
+ get layout(): import("../bmfont/BMFontTextLayout").BMFontTextLayout;
23
+ constructor({ text, font, material, ...setting }: LabelSetting);
24
+ forceUpdate(): void;
25
+ update(dt: number): void;
26
+ }
@@ -10,3 +10,4 @@ export { Environment } from "./Environment";
10
10
  export { BoxProjection } from "./BoxProjection";
11
11
  export { PerformanceMonitor } from "./PerformanceMonitor";
12
12
  export { DropFile } from "./DropFile";
13
+ export { Label } from "./Label";
package/types/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export * from "./components";
7
7
  export * from "./materials";
8
8
  export * from "./Utils";
9
9
  export * from "./enums";
10
+ export * from "./bmfont";
10
11
  export { Viewer } from "./Viewer";
11
12
  export { Task } from "./Task";
12
13
  export { Component } from "./Component";
@@ -1,6 +1,6 @@
1
1
  import { Loader, LoadProperties } from "../asset/Loader";
2
2
  export declare class KTX2Loader extends Loader {
3
3
  extension: string[];
4
- load({ url, path, resourcePath, manager, texSettings, onLoad, onProgress, onError }: LoadProperties): void;
4
+ load({ url, path, resourcePath, transcoderPath, manager, texSettings, onLoad, onProgress, onError }: LoadProperties): void;
5
5
  private _loader;
6
6
  }
@@ -0,0 +1,20 @@
1
+ import { Color, ShaderMaterial, Texture, Vector2 } from "three";
2
+ export declare class MSDFMaterial extends ShaderMaterial {
3
+ constructor();
4
+ get weight(): number;
5
+ set weight(v: number);
6
+ get color(): Color;
7
+ set color(v: Color);
8
+ get strokeColor(): Color;
9
+ set strokeColor(v: Color);
10
+ get strokeWidth(): number;
11
+ set strokeWidth(v: number);
12
+ get shadowColor(): Color;
13
+ set shadowColor(v: Color);
14
+ get shadowBlur(): number;
15
+ set shadowBlur(v: number);
16
+ get shadowOffset(): Vector2;
17
+ set shadowOffset(v: Vector2);
18
+ get fontTexture(): Texture;
19
+ set fontTexture(v: Texture);
20
+ }
@@ -1,4 +1,4 @@
1
- import { Color, IUniform, ShaderMaterial, Texture, WebGLProgramParametersWithUniforms } from "three";
1
+ import { Color, IUniform, ShaderMaterial, Texture, Vector4, WebGLProgramParametersWithUniforms } from "three";
2
2
  import { Reflector } from "../components";
3
3
  export declare class ReflectorMaterial extends ShaderMaterial {
4
4
  vertexShader: string;
@@ -17,8 +17,12 @@ export declare class ReflectorMaterial extends ShaderMaterial {
17
17
  reflectIntensity?: number;
18
18
  transparent?: boolean;
19
19
  depthWrite?: boolean;
20
- roughness?: number;
21
20
  metalness?: number;
21
+ roughness?: number;
22
+ roughnessMap?: Texture;
23
+ normalMap?: Texture;
24
+ normalScaleBias?: Vector4;
25
+ roughnessScaleBias?: Vector4;
22
26
  });
23
27
  onBeforeCompile(shader: WebGLProgramParametersWithUniforms): void;
24
28
  get color(): Color;
@@ -31,8 +35,12 @@ export declare class ReflectorMaterial extends ShaderMaterial {
31
35
  set map(v: Texture);
32
36
  get roughnessMap(): Texture;
33
37
  set roughnessMap(v: Texture);
38
+ get roughnessScaleBias(): Vector4;
39
+ set roughnessScaleBias(v: Vector4);
34
40
  get normalMap(): Texture;
35
41
  set normalMap(v: Texture);
42
+ get normalScaleBias(): Vector4;
43
+ set normalScaleBias(v: Vector4);
36
44
  get aoMap(): Texture;
37
45
  set aoMap(v: Texture);
38
46
  get lightMap(): Texture;