lythreeframe 1.0.45 → 1.0.47

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.
@@ -1108,7 +1108,7 @@ class AssetManager {
1108
1108
  }
1109
1109
  }
1110
1110
  pointer = new MaterialAssetPointer(asset, textureMap, referenceCount);
1111
- this.geometryAssets.set(asset.uuid, pointer);
1111
+ this.materialAssets.set(asset.uuid, pointer);
1112
1112
  }
1113
1113
  else {
1114
1114
  pointer.addRef(referenceCount);
@@ -1452,7 +1452,7 @@ class Viewport {
1452
1452
  }
1453
1453
  return this._app;
1454
1454
  }
1455
- constructor(app, elementId, rendererParam = { antialias: true }, postProcessParam = {}) {
1455
+ constructor(app, viewportParam, rendererParam = { antialias: true }, postProcessParam = {}) {
1456
1456
  this._renderer = null;
1457
1457
  this.labelRenderer = null;
1458
1458
  this._app = null;
@@ -1475,31 +1475,44 @@ class Viewport {
1475
1475
  this.outlineObjects = [];
1476
1476
  this.postProcessParam = postProcessParam;
1477
1477
  this._app = app;
1478
- let element = document.getElementById(elementId);
1479
- if (!element) {
1480
- throw Error(`Can not find domElement which id is ${elementId}`);
1478
+ let element = null;
1479
+ if (viewportParam.elementId) {
1480
+ element = document.getElementById(viewportParam.elementId);
1481
+ if (!element) {
1482
+ throw Error(`Can not find domElement which id is ${viewportParam.elementId}`);
1483
+ }
1481
1484
  }
1485
+ let width = element ? element.clientWidth : 512;
1486
+ let height = element ? element.clientHeight : 512;
1482
1487
  this._renderer = new webgpu.WebGPURenderer(rendererParam);
1483
1488
  this._renderer.setPixelRatio(window.devicePixelRatio);
1484
- this._renderer.setSize(element.clientWidth, element.clientHeight);
1489
+ this._renderer.setSize(width, height);
1485
1490
  this._renderer.shadowMap.enabled = true;
1486
- this.labelRenderer = new Addons_js.CSS2DRenderer();
1487
- this.labelRenderer.setSize(element.clientWidth, element.clientHeight);
1488
- this.labelRenderer.domElement.style.pointerEvents = 'none';
1489
- this.labelRenderer.domElement.style.position = 'absolute';
1490
- this.labelRenderer.domElement.style.top = '0px';
1491
- this.labelRenderer.domElement.className = 'scene-labelRenderer';
1492
- element.appendChild(this.labelRenderer.domElement);
1493
- element.appendChild(this._renderer.domElement);
1494
- this._canvas = element;
1495
- this.resizeObserver = new ResizeObserver((entries) => {
1496
- for (let entry of entries) {
1497
- if (entry.contentBoxSize) {
1498
- this.onWindowResize();
1499
- }
1491
+ if (viewportParam.isLabelRendererNeeded) {
1492
+ this.labelRenderer = new Addons_js.CSS2DRenderer();
1493
+ this.labelRenderer.setSize(width, height);
1494
+ this.labelRenderer.domElement.style.pointerEvents = 'none';
1495
+ this.labelRenderer.domElement.style.position = 'absolute';
1496
+ this.labelRenderer.domElement.style.top = '0px';
1497
+ this.labelRenderer.domElement.className = 'scene-labelRenderer';
1498
+ if (element) {
1499
+ element.appendChild(this.labelRenderer.domElement);
1500
1500
  }
1501
- });
1502
- this.resizeObserver.observe(this._canvas);
1501
+ }
1502
+ if (element) {
1503
+ element.appendChild(this._renderer.domElement);
1504
+ this._canvas = element;
1505
+ }
1506
+ if (this._canvas) {
1507
+ this.resizeObserver = new ResizeObserver((entries) => {
1508
+ for (let entry of entries) {
1509
+ if (entry.contentBoxSize) {
1510
+ this.onWindowResize();
1511
+ }
1512
+ }
1513
+ });
1514
+ this.resizeObserver.observe(this._canvas);
1515
+ }
1503
1516
  this.app.onCameraChangedDelegate.add(() => {
1504
1517
  this.setupPostProcess();
1505
1518
  });
@@ -2205,6 +2218,11 @@ const DefaultCameraParam = {
2205
2218
  }
2206
2219
  };
2207
2220
 
2221
+ const DefaultViewportParam = {
2222
+ elementId: null,
2223
+ isLabelRendererNeeded: false
2224
+ };
2225
+
2208
2226
  const DefaultRenderParam = {
2209
2227
  antialias: true,
2210
2228
  };
@@ -2212,6 +2230,7 @@ const DefaultAppParam = {
2212
2230
  renderParam: DefaultRenderParam,
2213
2231
  cameraParam: DefaultCameraParam,
2214
2232
  postProcessParam: DefaultPostProcessParam,
2233
+ viewportParam: DefaultViewportParam,
2215
2234
  classes: {
2216
2235
  assetManagerClass: AssetManager,
2217
2236
  controllerClass: Controller,
@@ -2245,12 +2264,13 @@ class ThreeJsApp {
2245
2264
  get onCameraChangedDelegate() {
2246
2265
  return this._onCameraChangedDelegate;
2247
2266
  }
2248
- constructor(elementId, appParam = DefaultAppParam) {
2249
- this._appParam = {};
2267
+ constructor(appParam = DefaultAppParam) {
2268
+ this._appParam = { viewportParam: DefaultViewportParam };
2250
2269
  this._onCameraChangedDelegate = new Delegate();
2251
2270
  this._appParam.cameraParam = appParam.cameraParam ? appParam.cameraParam : DefaultCameraParam;
2252
2271
  this._appParam.renderParam = appParam.renderParam ? appParam.renderParam : DefaultRenderParam;
2253
2272
  this._appParam.postProcessParam = appParam.postProcessParam ? appParam.postProcessParam : DefaultPostProcessParam;
2273
+ this._appParam.viewportParam = appParam.viewportParam ? appParam.viewportParam : DefaultViewportParam;
2254
2274
  this._appParam.classes = appParam.classes ? appParam.classes : {
2255
2275
  assetManagerClass: AssetManager,
2256
2276
  controllerClass: Controller,
@@ -2260,7 +2280,7 @@ class ThreeJsApp {
2260
2280
  this._clock = new webgpu.Clock();
2261
2281
  this._camera = CameraFactory.createCamera(this._appParam.cameraParam);
2262
2282
  this._world = new this._appParam.classes.worldClass(this);
2263
- this._viewport = new this._appParam.classes.viewportClass(this, elementId, this._appParam.renderParam, this._appParam.postProcessParam);
2283
+ this._viewport = new this._appParam.classes.viewportClass(this, this._appParam.viewportParam, this._appParam.renderParam, this._appParam.postProcessParam);
2264
2284
  this._controller = new this._appParam.classes.controllerClass(this);
2265
2285
  this._assetManager = new this._appParam.classes.assetManagerClass(this);
2266
2286
  this.viewport.renderer.setAnimationLoop(() => {
@@ -3156,6 +3176,7 @@ exports.DefaultRenderParam = DefaultRenderParam;
3156
3176
  exports.DefaultSSRParam = DefaultSSRParam;
3157
3177
  exports.DefaultSkyParam = DefaultSkyParam;
3158
3178
  exports.DefaultToneMappingParams = DefaultToneMappingParams;
3179
+ exports.DefaultViewportParam = DefaultViewportParam;
3159
3180
  exports.Delegate = Delegate;
3160
3181
  exports.DirectionalLightActor = DirectionalLightActor;
3161
3182
  exports.DirectionalLightComponent = DirectionalLightComponent;
@@ -1106,7 +1106,7 @@ class AssetManager {
1106
1106
  }
1107
1107
  }
1108
1108
  pointer = new MaterialAssetPointer(asset, textureMap, referenceCount);
1109
- this.geometryAssets.set(asset.uuid, pointer);
1109
+ this.materialAssets.set(asset.uuid, pointer);
1110
1110
  }
1111
1111
  else {
1112
1112
  pointer.addRef(referenceCount);
@@ -1450,7 +1450,7 @@ class Viewport {
1450
1450
  }
1451
1451
  return this._app;
1452
1452
  }
1453
- constructor(app, elementId, rendererParam = { antialias: true }, postProcessParam = {}) {
1453
+ constructor(app, viewportParam, rendererParam = { antialias: true }, postProcessParam = {}) {
1454
1454
  this._renderer = null;
1455
1455
  this.labelRenderer = null;
1456
1456
  this._app = null;
@@ -1473,31 +1473,44 @@ class Viewport {
1473
1473
  this.outlineObjects = [];
1474
1474
  this.postProcessParam = postProcessParam;
1475
1475
  this._app = app;
1476
- let element = document.getElementById(elementId);
1477
- if (!element) {
1478
- throw Error(`Can not find domElement which id is ${elementId}`);
1476
+ let element = null;
1477
+ if (viewportParam.elementId) {
1478
+ element = document.getElementById(viewportParam.elementId);
1479
+ if (!element) {
1480
+ throw Error(`Can not find domElement which id is ${viewportParam.elementId}`);
1481
+ }
1479
1482
  }
1483
+ let width = element ? element.clientWidth : 512;
1484
+ let height = element ? element.clientHeight : 512;
1480
1485
  this._renderer = new WebGPURenderer(rendererParam);
1481
1486
  this._renderer.setPixelRatio(window.devicePixelRatio);
1482
- this._renderer.setSize(element.clientWidth, element.clientHeight);
1487
+ this._renderer.setSize(width, height);
1483
1488
  this._renderer.shadowMap.enabled = true;
1484
- this.labelRenderer = new CSS2DRenderer();
1485
- this.labelRenderer.setSize(element.clientWidth, element.clientHeight);
1486
- this.labelRenderer.domElement.style.pointerEvents = 'none';
1487
- this.labelRenderer.domElement.style.position = 'absolute';
1488
- this.labelRenderer.domElement.style.top = '0px';
1489
- this.labelRenderer.domElement.className = 'scene-labelRenderer';
1490
- element.appendChild(this.labelRenderer.domElement);
1491
- element.appendChild(this._renderer.domElement);
1492
- this._canvas = element;
1493
- this.resizeObserver = new ResizeObserver((entries) => {
1494
- for (let entry of entries) {
1495
- if (entry.contentBoxSize) {
1496
- this.onWindowResize();
1497
- }
1489
+ if (viewportParam.isLabelRendererNeeded) {
1490
+ this.labelRenderer = new CSS2DRenderer();
1491
+ this.labelRenderer.setSize(width, height);
1492
+ this.labelRenderer.domElement.style.pointerEvents = 'none';
1493
+ this.labelRenderer.domElement.style.position = 'absolute';
1494
+ this.labelRenderer.domElement.style.top = '0px';
1495
+ this.labelRenderer.domElement.className = 'scene-labelRenderer';
1496
+ if (element) {
1497
+ element.appendChild(this.labelRenderer.domElement);
1498
1498
  }
1499
- });
1500
- this.resizeObserver.observe(this._canvas);
1499
+ }
1500
+ if (element) {
1501
+ element.appendChild(this._renderer.domElement);
1502
+ this._canvas = element;
1503
+ }
1504
+ if (this._canvas) {
1505
+ this.resizeObserver = new ResizeObserver((entries) => {
1506
+ for (let entry of entries) {
1507
+ if (entry.contentBoxSize) {
1508
+ this.onWindowResize();
1509
+ }
1510
+ }
1511
+ });
1512
+ this.resizeObserver.observe(this._canvas);
1513
+ }
1501
1514
  this.app.onCameraChangedDelegate.add(() => {
1502
1515
  this.setupPostProcess();
1503
1516
  });
@@ -2203,6 +2216,11 @@ const DefaultCameraParam = {
2203
2216
  }
2204
2217
  };
2205
2218
 
2219
+ const DefaultViewportParam = {
2220
+ elementId: null,
2221
+ isLabelRendererNeeded: false
2222
+ };
2223
+
2206
2224
  const DefaultRenderParam = {
2207
2225
  antialias: true,
2208
2226
  };
@@ -2210,6 +2228,7 @@ const DefaultAppParam = {
2210
2228
  renderParam: DefaultRenderParam,
2211
2229
  cameraParam: DefaultCameraParam,
2212
2230
  postProcessParam: DefaultPostProcessParam,
2231
+ viewportParam: DefaultViewportParam,
2213
2232
  classes: {
2214
2233
  assetManagerClass: AssetManager,
2215
2234
  controllerClass: Controller,
@@ -2243,12 +2262,13 @@ class ThreeJsApp {
2243
2262
  get onCameraChangedDelegate() {
2244
2263
  return this._onCameraChangedDelegate;
2245
2264
  }
2246
- constructor(elementId, appParam = DefaultAppParam) {
2247
- this._appParam = {};
2265
+ constructor(appParam = DefaultAppParam) {
2266
+ this._appParam = { viewportParam: DefaultViewportParam };
2248
2267
  this._onCameraChangedDelegate = new Delegate();
2249
2268
  this._appParam.cameraParam = appParam.cameraParam ? appParam.cameraParam : DefaultCameraParam;
2250
2269
  this._appParam.renderParam = appParam.renderParam ? appParam.renderParam : DefaultRenderParam;
2251
2270
  this._appParam.postProcessParam = appParam.postProcessParam ? appParam.postProcessParam : DefaultPostProcessParam;
2271
+ this._appParam.viewportParam = appParam.viewportParam ? appParam.viewportParam : DefaultViewportParam;
2252
2272
  this._appParam.classes = appParam.classes ? appParam.classes : {
2253
2273
  assetManagerClass: AssetManager,
2254
2274
  controllerClass: Controller,
@@ -2258,7 +2278,7 @@ class ThreeJsApp {
2258
2278
  this._clock = new Clock();
2259
2279
  this._camera = CameraFactory.createCamera(this._appParam.cameraParam);
2260
2280
  this._world = new this._appParam.classes.worldClass(this);
2261
- this._viewport = new this._appParam.classes.viewportClass(this, elementId, this._appParam.renderParam, this._appParam.postProcessParam);
2281
+ this._viewport = new this._appParam.classes.viewportClass(this, this._appParam.viewportParam, this._appParam.renderParam, this._appParam.postProcessParam);
2262
2282
  this._controller = new this._appParam.classes.controllerClass(this);
2263
2283
  this._assetManager = new this._appParam.classes.assetManagerClass(this);
2264
2284
  this.viewport.renderer.setAnimationLoop(() => {
@@ -3137,4 +3157,4 @@ class TransformGizmo extends Pawn {
3137
3157
  }
3138
3158
  }
3139
3159
 
3140
- export { Actor, AssetManager, AttachmentRules, BoxActor, BoxComponent, Controller, DefaultAppParam, DefaultBloomParam, DefaultCameraParam, DefaultDOFParam, DefaultDenoiseParam, DefaultGTAOParam, DefaultOutlineParams, DefaultPostProcessParam, DefaultRenderParam, DefaultSSRParam, DefaultSkyParam, DefaultToneMappingParams, Delegate, DirectionalLightActor, DirectionalLightComponent, FirstPerson, GeometryAssetPointer, LabelComponent, MaterialAssetPointer, MeshComponent, Orbital, PlaneActor, PlaneComponent, SceneComponent, SkyActor, SkyComponent, SphereComponent, TAssetPointer, TSmartPointer, TextureAssetPointer, ThreeJsApp, ThreeObjectLibrary, ToneMappingOptions, TransformGizmo, Viewport, WebGPUPostProcessFactory, World };
3160
+ export { Actor, AssetManager, AttachmentRules, BoxActor, BoxComponent, Controller, DefaultAppParam, DefaultBloomParam, DefaultCameraParam, DefaultDOFParam, DefaultDenoiseParam, DefaultGTAOParam, DefaultOutlineParams, DefaultPostProcessParam, DefaultRenderParam, DefaultSSRParam, DefaultSkyParam, DefaultToneMappingParams, DefaultViewportParam, Delegate, DirectionalLightActor, DirectionalLightComponent, FirstPerson, GeometryAssetPointer, LabelComponent, MaterialAssetPointer, MeshComponent, Orbital, PlaneActor, PlaneComponent, SceneComponent, SkyActor, SkyComponent, SphereComponent, TAssetPointer, TSmartPointer, TextureAssetPointer, ThreeJsApp, ThreeObjectLibrary, ToneMappingOptions, TransformGizmo, Viewport, WebGPUPostProcessFactory, World };
package/dist/index.d.ts CHANGED
@@ -14,6 +14,8 @@ export type { CameraParam } from './lythreeframe/Frame/Parameters/CameraParamete
14
14
  export { DefaultCameraParam } from './lythreeframe/Frame/Parameters/CameraParameter';
15
15
  export type { AppParam, AppClass } from "./lythreeframe/Frame/Parameters/AppParameter";
16
16
  export { DefaultRenderParam, DefaultAppParam } from "./lythreeframe/Frame/Parameters/AppParameter";
17
+ export type { ViewportParam } from './lythreeframe/Frame/Parameters/ViewportParameters';
18
+ export { DefaultViewportParam } from './lythreeframe/Frame/Parameters/ViewportParameters';
17
19
  export { Actor } from "./lythreeframe/Object/Actor";
18
20
  export { DirectionalLightActor } from "./lythreeframe/Object/Actors/Light/DirectionalLightActor";
19
21
  export { BoxActor } from "./lythreeframe/Object/Actors/Shape/BoxActor";
@@ -6,6 +6,7 @@ import { AssetManager } from "@/lythreeframe/AssetManagement/AssetManager";
6
6
  import { Controller } from "../Controller";
7
7
  import { World } from "../World";
8
8
  import { Viewport } from "../Viewport";
9
+ import { ViewportParam } from "./ViewportParameters";
9
10
  export interface AppClass {
10
11
  assetManagerClass: typeof AssetManager;
11
12
  controllerClass: typeof Controller;
@@ -17,6 +18,7 @@ export interface AppParam {
17
18
  cameraParam?: CameraParam;
18
19
  postProcessParam?: PostProcessParam;
19
20
  worldParam?: WorldParam;
21
+ viewportParam: ViewportParam;
20
22
  classes?: AppClass;
21
23
  }
22
24
  export declare const DefaultRenderParam: WebGPURendererParameters;
@@ -0,0 +1,5 @@
1
+ export interface ViewportParam {
2
+ elementId: string | null;
3
+ isLabelRendererNeeded: boolean;
4
+ }
5
+ export declare const DefaultViewportParam: ViewportParam;
@@ -9,6 +9,7 @@ import { SSRParam } from "../PostProcess/Param/SSR";
9
9
  import { OutlineParams } from '../PostProcess/Param/Outline';
10
10
  import { Object3D } from 'three/src/Three.WebGPU.Nodes.js';
11
11
  import { DOFParam } from '../PostProcess/Param/DOF';
12
+ import { ViewportParam } from './Parameters/ViewportParameters';
12
13
  export declare class Viewport {
13
14
  get canvas(): HTMLElement;
14
15
  get renderer(): WebGPURenderer;
@@ -31,7 +32,7 @@ export declare class Viewport {
31
32
  private fxaaPass;
32
33
  private smaaPass;
33
34
  private outlineObjects;
34
- constructor(app: ThreeJsApp, elementId: string, rendererParam?: WebGPURendererParameters, postProcessParam?: PostProcessParam);
35
+ constructor(app: ThreeJsApp, viewportParam: ViewportParam, rendererParam?: WebGPURendererParameters, postProcessParam?: PostProcessParam);
35
36
  init(): void;
36
37
  setupPostProcess(): void;
37
38
  updateToneMappingParam(params: ToneMappingParams): void;
@@ -23,7 +23,7 @@ export declare class ThreeJsApp {
23
23
  protected _appParam: AppParam;
24
24
  get onCameraChangedDelegate(): Delegate<[void]>;
25
25
  protected _onCameraChangedDelegate: Delegate<[void]>;
26
- constructor(elementId: string, appParam?: AppParam);
26
+ constructor(appParam?: AppParam);
27
27
  init(): void;
28
28
  tick(): void;
29
29
  destroy(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lythreeframe",
3
- "version": "1.0.45",
3
+ "version": "1.0.47",
4
4
  "description": "Three.js 封装",
5
5
  "main": "dist/bundle.cjs.js",
6
6
  "module": "dist/bundle.esm.js",