lythreeframe 1.0.46 → 1.0.48

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.
@@ -1435,9 +1435,6 @@ const DefaultOutlineParams = {
1435
1435
 
1436
1436
  class Viewport {
1437
1437
  get canvas() {
1438
- if (!this._canvas) {
1439
- throw Error("Canvas is not initialized");
1440
- }
1441
1438
  return this._canvas;
1442
1439
  }
1443
1440
  get renderer() {
@@ -1452,7 +1449,7 @@ class Viewport {
1452
1449
  }
1453
1450
  return this._app;
1454
1451
  }
1455
- constructor(app, elementId, rendererParam = { antialias: true }, postProcessParam = {}) {
1452
+ constructor(app, viewportParam, rendererParam = { antialias: true }, postProcessParam = {}) {
1456
1453
  this._renderer = null;
1457
1454
  this.labelRenderer = null;
1458
1455
  this._app = null;
@@ -1475,31 +1472,44 @@ class Viewport {
1475
1472
  this.outlineObjects = [];
1476
1473
  this.postProcessParam = postProcessParam;
1477
1474
  this._app = app;
1478
- let element = document.getElementById(elementId);
1479
- if (!element) {
1480
- throw Error(`Can not find domElement which id is ${elementId}`);
1475
+ let element = null;
1476
+ if (viewportParam.elementId) {
1477
+ element = document.getElementById(viewportParam.elementId);
1478
+ if (!element) {
1479
+ throw Error(`Can not find domElement which id is ${viewportParam.elementId}`);
1480
+ }
1481
1481
  }
1482
+ let width = element ? element.clientWidth : 512;
1483
+ let height = element ? element.clientHeight : 512;
1482
1484
  this._renderer = new webgpu.WebGPURenderer(rendererParam);
1483
1485
  this._renderer.setPixelRatio(window.devicePixelRatio);
1484
- this._renderer.setSize(element.clientWidth, element.clientHeight);
1486
+ this._renderer.setSize(width, height);
1485
1487
  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
- }
1488
+ if (viewportParam.isLabelRendererNeeded) {
1489
+ this.labelRenderer = new Addons_js.CSS2DRenderer();
1490
+ this.labelRenderer.setSize(width, height);
1491
+ this.labelRenderer.domElement.style.pointerEvents = 'none';
1492
+ this.labelRenderer.domElement.style.position = 'absolute';
1493
+ this.labelRenderer.domElement.style.top = '0px';
1494
+ this.labelRenderer.domElement.className = 'scene-labelRenderer';
1495
+ if (element) {
1496
+ element.appendChild(this.labelRenderer.domElement);
1500
1497
  }
1501
- });
1502
- this.resizeObserver.observe(this._canvas);
1498
+ }
1499
+ if (element) {
1500
+ element.appendChild(this._renderer.domElement);
1501
+ this._canvas = element;
1502
+ }
1503
+ if (this._canvas) {
1504
+ this.resizeObserver = new ResizeObserver((entries) => {
1505
+ for (let entry of entries) {
1506
+ if (entry.contentBoxSize) {
1507
+ this.onWindowResize();
1508
+ }
1509
+ }
1510
+ });
1511
+ this.resizeObserver.observe(this._canvas);
1512
+ }
1503
1513
  this.app.onCameraChangedDelegate.add(() => {
1504
1514
  this.setupPostProcess();
1505
1515
  });
@@ -2205,6 +2215,11 @@ const DefaultCameraParam = {
2205
2215
  }
2206
2216
  };
2207
2217
 
2218
+ const DefaultViewportParam = {
2219
+ elementId: null,
2220
+ isLabelRendererNeeded: false
2221
+ };
2222
+
2208
2223
  const DefaultRenderParam = {
2209
2224
  antialias: true,
2210
2225
  };
@@ -2212,6 +2227,7 @@ const DefaultAppParam = {
2212
2227
  renderParam: DefaultRenderParam,
2213
2228
  cameraParam: DefaultCameraParam,
2214
2229
  postProcessParam: DefaultPostProcessParam,
2230
+ viewportParam: DefaultViewportParam,
2215
2231
  classes: {
2216
2232
  assetManagerClass: AssetManager,
2217
2233
  controllerClass: Controller,
@@ -2245,12 +2261,13 @@ class ThreeJsApp {
2245
2261
  get onCameraChangedDelegate() {
2246
2262
  return this._onCameraChangedDelegate;
2247
2263
  }
2248
- constructor(elementId, appParam = DefaultAppParam) {
2249
- this._appParam = {};
2264
+ constructor(appParam = DefaultAppParam) {
2265
+ this._appParam = { viewportParam: DefaultViewportParam };
2250
2266
  this._onCameraChangedDelegate = new Delegate();
2251
2267
  this._appParam.cameraParam = appParam.cameraParam ? appParam.cameraParam : DefaultCameraParam;
2252
2268
  this._appParam.renderParam = appParam.renderParam ? appParam.renderParam : DefaultRenderParam;
2253
2269
  this._appParam.postProcessParam = appParam.postProcessParam ? appParam.postProcessParam : DefaultPostProcessParam;
2270
+ this._appParam.viewportParam = appParam.viewportParam ? appParam.viewportParam : DefaultViewportParam;
2254
2271
  this._appParam.classes = appParam.classes ? appParam.classes : {
2255
2272
  assetManagerClass: AssetManager,
2256
2273
  controllerClass: Controller,
@@ -2260,7 +2277,7 @@ class ThreeJsApp {
2260
2277
  this._clock = new webgpu.Clock();
2261
2278
  this._camera = CameraFactory.createCamera(this._appParam.cameraParam);
2262
2279
  this._world = new this._appParam.classes.worldClass(this);
2263
- this._viewport = new this._appParam.classes.viewportClass(this, elementId, this._appParam.renderParam, this._appParam.postProcessParam);
2280
+ this._viewport = new this._appParam.classes.viewportClass(this, this._appParam.viewportParam, this._appParam.renderParam, this._appParam.postProcessParam);
2264
2281
  this._controller = new this._appParam.classes.controllerClass(this);
2265
2282
  this._assetManager = new this._appParam.classes.assetManagerClass(this);
2266
2283
  this.viewport.renderer.setAnimationLoop(() => {
@@ -3156,6 +3173,7 @@ exports.DefaultRenderParam = DefaultRenderParam;
3156
3173
  exports.DefaultSSRParam = DefaultSSRParam;
3157
3174
  exports.DefaultSkyParam = DefaultSkyParam;
3158
3175
  exports.DefaultToneMappingParams = DefaultToneMappingParams;
3176
+ exports.DefaultViewportParam = DefaultViewportParam;
3159
3177
  exports.Delegate = Delegate;
3160
3178
  exports.DirectionalLightActor = DirectionalLightActor;
3161
3179
  exports.DirectionalLightComponent = DirectionalLightComponent;
@@ -1433,9 +1433,6 @@ const DefaultOutlineParams = {
1433
1433
 
1434
1434
  class Viewport {
1435
1435
  get canvas() {
1436
- if (!this._canvas) {
1437
- throw Error("Canvas is not initialized");
1438
- }
1439
1436
  return this._canvas;
1440
1437
  }
1441
1438
  get renderer() {
@@ -1450,7 +1447,7 @@ class Viewport {
1450
1447
  }
1451
1448
  return this._app;
1452
1449
  }
1453
- constructor(app, elementId, rendererParam = { antialias: true }, postProcessParam = {}) {
1450
+ constructor(app, viewportParam, rendererParam = { antialias: true }, postProcessParam = {}) {
1454
1451
  this._renderer = null;
1455
1452
  this.labelRenderer = null;
1456
1453
  this._app = null;
@@ -1473,31 +1470,44 @@ class Viewport {
1473
1470
  this.outlineObjects = [];
1474
1471
  this.postProcessParam = postProcessParam;
1475
1472
  this._app = app;
1476
- let element = document.getElementById(elementId);
1477
- if (!element) {
1478
- throw Error(`Can not find domElement which id is ${elementId}`);
1473
+ let element = null;
1474
+ if (viewportParam.elementId) {
1475
+ element = document.getElementById(viewportParam.elementId);
1476
+ if (!element) {
1477
+ throw Error(`Can not find domElement which id is ${viewportParam.elementId}`);
1478
+ }
1479
1479
  }
1480
+ let width = element ? element.clientWidth : 512;
1481
+ let height = element ? element.clientHeight : 512;
1480
1482
  this._renderer = new WebGPURenderer(rendererParam);
1481
1483
  this._renderer.setPixelRatio(window.devicePixelRatio);
1482
- this._renderer.setSize(element.clientWidth, element.clientHeight);
1484
+ this._renderer.setSize(width, height);
1483
1485
  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
- }
1486
+ if (viewportParam.isLabelRendererNeeded) {
1487
+ this.labelRenderer = new CSS2DRenderer();
1488
+ this.labelRenderer.setSize(width, height);
1489
+ this.labelRenderer.domElement.style.pointerEvents = 'none';
1490
+ this.labelRenderer.domElement.style.position = 'absolute';
1491
+ this.labelRenderer.domElement.style.top = '0px';
1492
+ this.labelRenderer.domElement.className = 'scene-labelRenderer';
1493
+ if (element) {
1494
+ element.appendChild(this.labelRenderer.domElement);
1498
1495
  }
1499
- });
1500
- this.resizeObserver.observe(this._canvas);
1496
+ }
1497
+ if (element) {
1498
+ element.appendChild(this._renderer.domElement);
1499
+ this._canvas = element;
1500
+ }
1501
+ if (this._canvas) {
1502
+ this.resizeObserver = new ResizeObserver((entries) => {
1503
+ for (let entry of entries) {
1504
+ if (entry.contentBoxSize) {
1505
+ this.onWindowResize();
1506
+ }
1507
+ }
1508
+ });
1509
+ this.resizeObserver.observe(this._canvas);
1510
+ }
1501
1511
  this.app.onCameraChangedDelegate.add(() => {
1502
1512
  this.setupPostProcess();
1503
1513
  });
@@ -2203,6 +2213,11 @@ const DefaultCameraParam = {
2203
2213
  }
2204
2214
  };
2205
2215
 
2216
+ const DefaultViewportParam = {
2217
+ elementId: null,
2218
+ isLabelRendererNeeded: false
2219
+ };
2220
+
2206
2221
  const DefaultRenderParam = {
2207
2222
  antialias: true,
2208
2223
  };
@@ -2210,6 +2225,7 @@ const DefaultAppParam = {
2210
2225
  renderParam: DefaultRenderParam,
2211
2226
  cameraParam: DefaultCameraParam,
2212
2227
  postProcessParam: DefaultPostProcessParam,
2228
+ viewportParam: DefaultViewportParam,
2213
2229
  classes: {
2214
2230
  assetManagerClass: AssetManager,
2215
2231
  controllerClass: Controller,
@@ -2243,12 +2259,13 @@ class ThreeJsApp {
2243
2259
  get onCameraChangedDelegate() {
2244
2260
  return this._onCameraChangedDelegate;
2245
2261
  }
2246
- constructor(elementId, appParam = DefaultAppParam) {
2247
- this._appParam = {};
2262
+ constructor(appParam = DefaultAppParam) {
2263
+ this._appParam = { viewportParam: DefaultViewportParam };
2248
2264
  this._onCameraChangedDelegate = new Delegate();
2249
2265
  this._appParam.cameraParam = appParam.cameraParam ? appParam.cameraParam : DefaultCameraParam;
2250
2266
  this._appParam.renderParam = appParam.renderParam ? appParam.renderParam : DefaultRenderParam;
2251
2267
  this._appParam.postProcessParam = appParam.postProcessParam ? appParam.postProcessParam : DefaultPostProcessParam;
2268
+ this._appParam.viewportParam = appParam.viewportParam ? appParam.viewportParam : DefaultViewportParam;
2252
2269
  this._appParam.classes = appParam.classes ? appParam.classes : {
2253
2270
  assetManagerClass: AssetManager,
2254
2271
  controllerClass: Controller,
@@ -2258,7 +2275,7 @@ class ThreeJsApp {
2258
2275
  this._clock = new Clock();
2259
2276
  this._camera = CameraFactory.createCamera(this._appParam.cameraParam);
2260
2277
  this._world = new this._appParam.classes.worldClass(this);
2261
- this._viewport = new this._appParam.classes.viewportClass(this, elementId, this._appParam.renderParam, this._appParam.postProcessParam);
2278
+ this._viewport = new this._appParam.classes.viewportClass(this, this._appParam.viewportParam, this._appParam.renderParam, this._appParam.postProcessParam);
2262
2279
  this._controller = new this._appParam.classes.controllerClass(this);
2263
2280
  this._assetManager = new this._appParam.classes.assetManagerClass(this);
2264
2281
  this.viewport.renderer.setAnimationLoop(() => {
@@ -3137,4 +3154,4 @@ class TransformGizmo extends Pawn {
3137
3154
  }
3138
3155
  }
3139
3156
 
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 };
3157
+ 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,8 +9,9 @@ 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
- get canvas(): HTMLElement;
14
+ get canvas(): HTMLElement | null;
14
15
  get renderer(): WebGPURenderer;
15
16
  get app(): ThreeJsApp;
16
17
  private _renderer;
@@ -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.46",
3
+ "version": "1.0.48",
4
4
  "description": "Three.js 封装",
5
5
  "main": "dist/bundle.cjs.js",
6
6
  "module": "dist/bundle.esm.js",