Implemented moving streams (as a whole) in the sandbox from the UI. As in change their 3D position in real time

This commit is contained in:
AlexandruPopovici
2022-08-03 19:03:43 +03:00
parent af342b3e3e
commit ed8d577bc5
8 changed files with 25 additions and 8 deletions
+14 -1
View File
@@ -59,6 +59,17 @@ export default class Sandbox {
title: 'URL',
disabled: true
})
const position = { value: { x: 0, y: 0, z: 0 } }
const positionInput = this.steamsFolder
.addInput(position, 'value', { label: 'Position' })
.on('change', () => {
this.viewer.speckleRenderer
.subtree(url)
.position.set(position.value.x, position.value.y, position.value.z)
this.viewer.speckleRenderer.updateDirectLights(0.47, 0)
this.viewer.speckleRenderer.updateHelpers()
})
const button = this.steamsFolder
.addButton({
title: 'Unload'
@@ -67,13 +78,14 @@ export default class Sandbox {
this.removeStreamControls(url)
})
this.streams[url] = []
this.streams[url].push(label, button)
this.streams[url].push(label, positionInput, button)
}
private removeStreamControls(url: string) {
this.viewer.unloadObject(url)
;(this.streams[url][0] as { dispose: () => void }).dispose()
;(this.streams[url][1] as { dispose: () => void }).dispose()
delete this.streams[url]
}
public makeGenericUI() {
@@ -102,6 +114,7 @@ export default class Sandbox {
expanded: true
})
this.tabs.pages[0].addSeparator()
this.tabs.pages[0].addSeparator()
const toggleSectionBox = this.tabs.pages[0].addButton({
@@ -57,6 +57,10 @@ export default class SpeckleRenderer {
return this.scene.getObjectByName('ContentGroup')
}
public subtree(subtreeId: string) {
return this.scene.getObjectByName(subtreeId)
}
public get sceneBox() {
return new Box3().setFromObject(this.allObjects)
}
@@ -296,7 +300,7 @@ export default class SpeckleRenderer {
this.renderer.shadowMap.needsUpdate = true
}
private updateHelpers() {
public updateHelpers() {
if (this.SHOW_HELPERS) {
;(this.scene.getObjectByName('CamHelper') as CameraHelper).update()
;(this.scene.getObjectByName('SceneBoxHelper') as Box3Helper).box.copy(
@@ -71,7 +71,7 @@ class SpeckleBasicMaterial extends MeshBasicMaterial {
SpeckleBasicMaterial.matBuff.elements[12] = 0
SpeckleBasicMaterial.matBuff.elements[13] = 0
SpeckleBasicMaterial.matBuff.elements[14] = 0
// SpeckleBasicMaterial.matBuff.multiply(object.matrixWorld)
SpeckleBasicMaterial.matBuff.multiply(object.matrixWorld)
object.modelViewMatrix.copy(SpeckleBasicMaterial.matBuff)
SpeckleBasicMaterial.vecBuff0.set(
@@ -71,7 +71,7 @@ class SpeckleLambertMaterial extends MeshLambertMaterial {
SpeckleLambertMaterial.matBuff.elements[12] = 0
SpeckleLambertMaterial.matBuff.elements[13] = 0
SpeckleLambertMaterial.matBuff.elements[14] = 0
// SpeckleLambertMaterial.matBuff.multiply(object.matrixWorld)
SpeckleLambertMaterial.matBuff.multiply(object.matrixWorld)
object.modelViewMatrix.copy(SpeckleLambertMaterial.matBuff)
SpeckleLambertMaterial.vecBuff0.set(
@@ -69,7 +69,7 @@ class SpeckleLineBasicMaterial extends LineBasicMaterial {
SpeckleLineBasicMaterial.matBuff.elements[12] = 0
SpeckleLineBasicMaterial.matBuff.elements[13] = 0
SpeckleLineBasicMaterial.matBuff.elements[14] = 0
// SpeckleLineBasicMaterial.matBuff.multiply(object.matrixWorld)
SpeckleLineBasicMaterial.matBuff.multiply(object.matrixWorld)
object.modelViewMatrix.copy(SpeckleLineBasicMaterial.matBuff)
SpeckleLineBasicMaterial.vecBuff0.set(
@@ -84,7 +84,7 @@ class SpeckleLineMaterial extends LineMaterial {
SpeckleLineMaterial.matBuff.elements[12] = 0
SpeckleLineMaterial.matBuff.elements[13] = 0
SpeckleLineMaterial.matBuff.elements[14] = 0
// SpeckleLineMaterial.matBuff.multiply(object.matrixWorld)
SpeckleLineMaterial.matBuff.multiply(object.matrixWorld)
object.modelViewMatrix.copy(SpeckleLineMaterial.matBuff)
SpeckleLineMaterial.vecBuff0.set(
@@ -93,7 +93,7 @@ class SpeckleStandardColoredMaterial extends MeshStandardMaterial {
SpeckleStandardColoredMaterial.matBuff.elements[12] = 0
SpeckleStandardColoredMaterial.matBuff.elements[13] = 0
SpeckleStandardColoredMaterial.matBuff.elements[14] = 0
// SpeckleStandardColoredMaterial.matBuff.multiply(object.matrixWorld)
SpeckleStandardColoredMaterial.matBuff.multiply(object.matrixWorld)
object.modelViewMatrix.copy(SpeckleStandardColoredMaterial.matBuff)
SpeckleStandardColoredMaterial.vecBuff0.set(
@@ -71,7 +71,7 @@ class SpeckleStandardMaterial extends MeshStandardMaterial {
SpeckleStandardMaterial.matBuff.elements[12] = 0
SpeckleStandardMaterial.matBuff.elements[13] = 0
SpeckleStandardMaterial.matBuff.elements[14] = 0
// SpeckleStandardMaterial.matBuff.multiply(object.matrixWorld)
SpeckleStandardMaterial.matBuff.multiply(object.matrixWorld)
object.modelViewMatrix.copy(SpeckleStandardMaterial.matBuff)
SpeckleStandardMaterial.vecBuff0.set(