Exploding Meshes
How To Use MeshExploder
MeshExploder
takes an array of meshes and increases/decreases distance to a center Mesh
.
javascript
const newExplosion = new BABYLON.MeshExploder(meshes, centerMesh);
newExplosion.explode(); //Explodes meshes away from center. Default 1.0.
variable | description |
---|---|
variable meshes | description The array of meshes to explode/implode. |
variable centerMesh (optional) | description The mesh to be the center of explosion. Defaults to mesh closest to center of all meshes. |
MeshExploder
explode function takes a number parameter to multiply the distance of explosion. Negative numbers implode. Zero resets meshes to original positions.
javascript
newExplosion.explode(-2); //ImplodesnewExplosion.explode(0); //Resets
Example Usage
javascript
const toExplodeArray = [];const sphere1 = BABYLON.MeshBuilder.CreateSphere("sphere1", { segments: 12, diameter: 2 }, scene);sphere1.position.y += 2;toExplodeArray.push(sphere1);
for (let alpha = 0; alpha < Math.PI * 2; alpha += Math.PI / 10) { const sphere0 = BABYLON.MeshBuilder.CreateSphere("sphere0", { segments: 8, diameter: 0.5 }, scene); sphere0.position.y = 2; sphere0.position.z = Math.cos(alpha) * 1.25; sphere0.position.x = Math.sin(alpha) * 1.25; toExplodeArray.push(sphere0);}
const newExplosion = new BABYLON.MeshExploder(toExplodeArray);
newExplosion.explode(2);
javascript
const assetsManager = new BABYLON.AssetsManager(scene);const meshTask = assetsManager.addMeshTask("model", "", "./", "model.gltf");
let meshes;
meshTask.onSuccess = function(task) { meshes = task.loadedMeshes;}assetsManager.load();const newExplosion;scene.executeWhenReady(function() { newExplosion = new BABYLON.MeshExploder(meshes); newExplosion.explode(2);});
Example Using the Babylon.js Viewer
javascript
BabylonViewer.viewerManager.getViewerPromiseById("babylon-viewer").then(function (viewer) { viewerObservables(viewer);});let newExplosion;function viewerObservables(viewer) { viewer.onModelLoadedObservable.add(function (model) { model.rootMesh.getScene().executeWhenReady(function () { newExplosion = new BABYLON.MeshExploder(model.meshes, model.meshes[0]); newExplosion.explode(2); }); });}