Exploding Meshes
How To Use MeshExploder
MeshExploder
takes an array of meshes and increases/decreases distance to a center Mesh
.
var 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.
newExplosion.explode(-2); //ImplodesnewExplosion.explode(0); //Resets
Example Usage
var toExplodeArray = [];var sphere1 = BABYLON.MeshBuilder.CreateSphere('sphere1', { segments:12, diameter:2 }, scene);sphere1.position.y += 2;toExplodeArray.push(sphere1);for (var alpha = 0; alpha < Math.PI*2; alpha+=Math.PI/10) {var sphere0 = BABYLON.MeshBuilder.CreateSphere('sphere0', { segments:8, diameter:.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);}var newExplosion = new BABYLON.MeshExploder(toExplodeArray);newExplosion.explode(2);
var assetsManager = new BABYLON.AssetsManager(scene);var meshTask = assetsManager.addMeshTask("model", "", "./", "model.gltf");var meshes;meshTask.onSuccess = function(task) {meshes = task.loadedMeshes;}assetsManager.load();var newExplosion;scene.executeWhenReady(function() {newExplosion = new BABYLON.MeshExploder(meshes);newExplosion.explode(2);});
Example Using the Babylon.js Viewer
BabylonViewer.viewerManager.getViewerPromiseById('babylon-viewer').then(function (viewer) {viewerObservables(viewer);});var 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);});});}