private void Scene17() { this.scene = new BABYLON.Scene(engine); var camera = new BABYLON.ArcRotateCamera("Camera", 0, 0, 10, BABYLON.Vector3.Zero(), scene); camera.setPosition(new BABYLON.Vector3(-5, 5, 0)); camera.lowerBetaLimit = 0.1; camera.upperBetaLimit = (Math.PI / 2) * 0.99; camera.lowerRadiusLimit = 5; // Mirror var mirror = BABYLON.Mesh.CreateBox("Mirror", 1.0, scene); mirror.scaling = new BABYLON.Vector3(100.0, 0.01, 100.0); var material = new BABYLON.StandardMaterial("mirror", scene); material.diffuseColor = new BABYLON.Color3(0.4, 0.4, 0.4); material.specularColor = new BABYLON.Color3(0, 0, 0); var reflectionTexture0 = new BABYLON.MirrorTexture("mirror", new BABYLON.Size { width = 512, height = 512 }, scene, true); reflectionTexture0.mirrorPlane = new BABYLON.Plane(0, -1.0, 0, 0.0); reflectionTexture0.level = 0.2; material.reflectionTexture = reflectionTexture0; mirror.material = material; mirror.position = new BABYLON.Vector3(0, 0.0, 0); // Emitters var emitter0 = BABYLON.Mesh.CreateBox("emitter0", 0.1, scene); emitter0.isVisible = false; var emitter1 = BABYLON.Mesh.CreateBox("emitter1", 0.1, scene); emitter1.isVisible = false; //mirror.material.reflectionTexture.renderList.push(emitter0); //mirror.material.reflectionTexture.renderList.push(emitter1); // Particles var particleSystem = new BABYLON.ParticleSystem("particles", 4000, scene); particleSystem.particleTexture = new BABYLON.Texture("Flare.png", scene); particleSystem.minAngularSpeed = -0.5; particleSystem.maxAngularSpeed = 0.5; particleSystem.minSize = 0.1; particleSystem.maxSize = 0.5; particleSystem.minLifeTime = 0.5; particleSystem.maxLifeTime = 2.0; particleSystem.minEmitPower = 0.5; particleSystem.maxEmitPower = 4.0; particleSystem.emitter = emitter0; particleSystem.emitRate = 400; particleSystem.blendMode = BABYLON.ParticleSystem.BLENDMODE_ONEONE; particleSystem.minEmitBox = new BABYLON.Vector3(-0.5, 0, -0.5); particleSystem.maxEmitBox = new BABYLON.Vector3(0.5, 0, 0.5); particleSystem.direction1 = new BABYLON.Vector3(-1, 1, -1); particleSystem.direction2 = new BABYLON.Vector3(1, 1, 1); particleSystem.color1 = new BABYLON.Color4(1, 0, 0, 1); particleSystem.color2 = new BABYLON.Color4(0, 1, 1, 1); particleSystem.gravity = new BABYLON.Vector3(0, -2.0, 0); particleSystem.start(); var particleSystem2 = new BABYLON.ParticleSystem("particles", 4000, scene); particleSystem2.particleTexture = new BABYLON.Texture("Flare.png", scene); particleSystem2.minSize = 0.1; particleSystem2.maxSize = 0.3; particleSystem2.minEmitPower = 1.0; particleSystem2.maxEmitPower = 2.0; particleSystem2.minLifeTime = 0.5; particleSystem2.maxLifeTime = 1.0; particleSystem2.emitter = emitter1; particleSystem2.emitRate = 500; particleSystem2.blendMode = BABYLON.ParticleSystem.BLENDMODE_ONEONE; particleSystem2.minEmitBox = new BABYLON.Vector3(0, 0, 0); particleSystem2.maxEmitBox = new BABYLON.Vector3(0, 0, 0); particleSystem2.gravity = new BABYLON.Vector3(0, -0.5, 0); particleSystem2.direction1 = new BABYLON.Vector3(0, 0, 0); particleSystem2.direction2 = new BABYLON.Vector3(0, 0, 0); particleSystem2.start(); var alpha = 0.0; scene.registerBeforeRender(() => { emitter1.position.x = 3.0 * Math.Cos(alpha); emitter1.position.y = 1.0; emitter1.position.z = 3.0 * Math.Sin(alpha); alpha += 0.05 * scene.getAnimationRatio(); }); this.scene.activeCamera.attachControl(this.canvas); }