diff --git a/src/mol-canvas3d/canvas3d.ts b/src/mol-canvas3d/canvas3d.ts index 8e2016f1201826b191aa685b34b060bfb12666f4..e815b7f3f907e939b830fd8361a8974a049eaf00 100644 --- a/src/mol-canvas3d/canvas3d.ts +++ b/src/mol-canvas3d/canvas3d.ts @@ -295,7 +295,6 @@ namespace Canvas3D { if (oldRO) { SetUtils.difference(newRO, oldRO).forEach(o => scene.add(o)) SetUtils.difference(oldRO, newRO).forEach(o => scene.remove(o)) - scene.update() } else { repr.renderObjects.forEach(o => scene.add(o)) } diff --git a/src/mol-gl/scene.ts b/src/mol-gl/scene.ts index 575bc56cb4480d4accc860212aca9d04cca9b57f..f64bc162fefd7ec95c7370451aa4094f9534f8d6 100644 --- a/src/mol-gl/scene.ts +++ b/src/mol-gl/scene.ts @@ -38,12 +38,12 @@ function calculateBoundingSphere(renderableMap: Map<RenderObject, Renderable<Ren boundaryHelper.reset(0.1); renderableMap.forEach(r => { - if (!r.state.visible || !r.boundingSphere.radius) return; + if (!r.boundingSphere.radius) return; boundaryHelper.boundaryStep(r.boundingSphere.center, r.boundingSphere.radius); }); boundaryHelper.finishBoundaryStep(); renderableMap.forEach(r => { - if (!r.state.visible || !r.boundingSphere.radius) return; + if (!r.boundingSphere.radius) return; boundaryHelper.extendStep(r.boundingSphere.center, r.boundingSphere.radius); }); diff --git a/src/mol-repr/structure/units-visual.ts b/src/mol-repr/structure/units-visual.ts index 87e06e3fc2c08ae18d72f3a08d10a970cd5d7d0b..d915e952184e32d04aeafdc976de840570a9e04c 100644 --- a/src/mol-repr/structure/units-visual.ts +++ b/src/mol-repr/structure/units-visual.ts @@ -161,12 +161,15 @@ export function UnitsVisual<P extends UnitsParams>(builder: UnitsVisualGeometryB // console.log('update geometry') if (newGeometry) { ValueCell.update(renderObject.values.drawCount, Geometry.getDrawCount(newGeometry)) - updateBoundingSphere(renderObject.values, newGeometry) } else { throw new Error('expected geometry to be given') } } + if (updateState.updateTransform || updateState.createGeometry) { + updateBoundingSphere(renderObject.values, newGeometry || geometry) + } + if (updateState.updateSize) { // not all geometries have size data, so check here if ('uSize' in renderObject.values) {