diff --git a/packages/viewer-sandbox/assets/1.png b/packages/viewer-sandbox/assets/1.png new file mode 100644 index 000000000..5928ab33b Binary files /dev/null and b/packages/viewer-sandbox/assets/1.png differ diff --git a/packages/viewer-sandbox/assets/2.png b/packages/viewer-sandbox/assets/2.png new file mode 100644 index 000000000..03fa2e730 Binary files /dev/null and b/packages/viewer-sandbox/assets/2.png differ diff --git a/packages/viewer-sandbox/assets/3.png b/packages/viewer-sandbox/assets/3.png new file mode 100644 index 000000000..fe5c4ad24 Binary files /dev/null and b/packages/viewer-sandbox/assets/3.png differ diff --git a/packages/viewer-sandbox/assets/4.png b/packages/viewer-sandbox/assets/4.png new file mode 100644 index 000000000..21c5358e2 Binary files /dev/null and b/packages/viewer-sandbox/assets/4.png differ diff --git a/packages/viewer-sandbox/assets/5.png b/packages/viewer-sandbox/assets/5.png new file mode 100644 index 000000000..0bae00833 Binary files /dev/null and b/packages/viewer-sandbox/assets/5.png differ diff --git a/packages/viewer-sandbox/assets/6.png b/packages/viewer-sandbox/assets/6.png new file mode 100644 index 000000000..caa01ef15 Binary files /dev/null and b/packages/viewer-sandbox/assets/6.png differ diff --git a/packages/viewer-sandbox/assets/sample-hdri.png b/packages/viewer-sandbox/assets/sample-hdri.png new file mode 100755 index 000000000..5fdde5995 Binary files /dev/null and b/packages/viewer-sandbox/assets/sample-hdri.png differ diff --git a/packages/viewer-sandbox/src/Sandbox.ts b/packages/viewer-sandbox/src/Sandbox.ts index fb9ed0ec0..e29837996 100644 --- a/packages/viewer-sandbox/src/Sandbox.ts +++ b/packages/viewer-sandbox/src/Sandbox.ts @@ -25,7 +25,14 @@ import { FilteringExtension } from '@speckle/viewer' import { MeasurementsExtension } from '@speckle/viewer' import { CameraController } from '@speckle/viewer' import { UpdateFlags } from '@speckle/viewer' -import { Viewer } from '@speckle/viewer' +import { Viewer, AssetType, Assets } from '@speckle/viewer' +import hdri0 from '../assets/sample-hdri.png' +import hdri1 from '../assets/1.png' +import hdri2 from '../assets/2.png' +import hdri3 from '../assets/3.png' +import hdri4 from '../assets/4.png' +import hdri5 from '../assets/5.png' +import hdri6 from '../assets/6.png' import { Euler, Vector3 } from 'three' @@ -839,6 +846,33 @@ export default class Sandbox { title: 'Indirect', expanded: true }) + const hdriParams = { + id: 1 + } + indirectLightsFolder + .addInput(hdriParams, 'id', { + label: 'HDRI', + options: { + 0: hdri0, + 1: hdri1, + 2: hdri2, + 3: hdri3, + 4: hdri4, + 5: hdri5, + 6: hdri6 + } + }) + .on('change', async (value) => { + this.viewer.getRenderer().indirectIBL = await Assets.getEnvironment( + { + id: hdriParams.id, + src: value.value, + type: AssetType.TEXTURE_EXR + }, + this.viewer.getRenderer().renderer + ) + this.viewer.requestRender() + }) indirectLightsFolder .addInput(this.lightParams, 'indirectLightIntensity', { diff --git a/packages/viewer-sandbox/src/main.ts b/packages/viewer-sandbox/src/main.ts index 263e233b4..a529d6a15 100644 --- a/packages/viewer-sandbox/src/main.ts +++ b/packages/viewer-sandbox/src/main.ts @@ -119,7 +119,7 @@ const getStream = () => { // prettier-ignore // 'https://speckle.xyz/streams/da9e320dad/commits/5388ef24b8?c=%5B-7.66134,10.82932,6.41935,-0.07739,-13.88552,1.8697,0,1%5D' // Revit sample house (good for bim-like stuff with many display meshes) - // 'https://speckle.xyz/streams/da9e320dad/commits/5388ef24b8' + 'https://speckle.xyz/streams/da9e320dad/commits/5388ef24b8' // 'https://latest.speckle.dev/streams/58b5648c4d/commits/60371ecb2d' // 'Super' heavy revit shit // 'https://speckle.xyz/streams/e6f9156405/commits/0694d53bb5' @@ -248,7 +248,7 @@ const getStream = () => { // 'https://latest.speckle.dev/streams/f92e060177/commits/038a587267' // 'https://latest.speckle.dev/streams/3f895e614f/commits/8a3e424997' // 'https://latest.speckle.dev/streams/f92e060177/commits/f51ee777d5' - 'https://latest.speckle.dev/streams/f92e060177/commits/bbd821e3a1' + // 'https://latest.speckle.dev/streams/f92e060177/commits/bbd821e3a1' // Big curves // 'https://latest.speckle.dev/streams/c1faab5c62/commits/49dad07ae2' // 'https://speckle.xyz/streams/7ce9010d71/commits/afda4ffdf8' diff --git a/packages/viewer/src/index.ts b/packages/viewer/src/index.ts index 1088142ca..f41ec857c 100644 --- a/packages/viewer/src/index.ts +++ b/packages/viewer/src/index.ts @@ -1,5 +1,6 @@ import { Viewer } from './modules/Viewer' import { + AssetType, DefaultLightConfiguration, DefaultViewerParams, IViewer, @@ -66,6 +67,7 @@ import SpeckleStandardMaterial from './modules/materials/SpeckleStandardMaterial import SpeckleTextMaterial from './modules/materials/SpeckleTextMaterial' import { SpeckleText } from './modules/objects/SpeckleText' import { NodeRenderView } from './modules/tree/NodeRenderView' +import { Assets } from './modules/Assets' export { Viewer, @@ -105,7 +107,9 @@ export { SpeckleStandardMaterial, SpeckleTextMaterial, SpeckleText, - NodeRenderView + NodeRenderView, + Assets, + AssetType } export type { diff --git a/packages/viewer/src/modules/SpeckleRenderer.ts b/packages/viewer/src/modules/SpeckleRenderer.ts index f9a95a52a..dba930e8f 100644 --- a/packages/viewer/src/modules/SpeckleRenderer.ts +++ b/packages/viewer/src/modules/SpeckleRenderer.ts @@ -197,6 +197,7 @@ export default class SpeckleRenderer { public set indirectIBL(texture: Texture) { this._scene.environment = texture + this._scene.background = texture } public set indirectIBLIntensity(value: number) { diff --git a/packages/viewer/src/modules/Viewer.ts b/packages/viewer/src/modules/Viewer.ts index f0254221a..2cbcbb529 100644 --- a/packages/viewer/src/modules/Viewer.ts +++ b/packages/viewer/src/modules/Viewer.ts @@ -41,7 +41,7 @@ export class Viewer extends EventEmitter implements IViewer { /** Viewer components */ protected tree: WorldTree = new WorldTree() protected world: World = new World() - public static Assets: Assets + public static readonly theAssets: Assets = new Assets() public speckleRenderer: SpeckleRenderer protected propertyManager: PropertyManager @@ -143,7 +143,6 @@ export class Viewer extends EventEmitter implements IViewer { this.speckleRenderer.create(this.container) window.addEventListener('resize', this.resize.bind(this), false) - new Assets() this.propertyManager = new PropertyManager() this.frame()