BabylonJS - Linseneffekte
Wenn Licht gestreut wird und auf das Bild fällt, sehen Sie ein anderes Bild in Bezug auf das Aussehen und die Farbe ändert sich ebenfalls. Wenn Sie ein Spiel entwickeln, das ein realistisches Auftreten des Lichteffekts zeigt, wird Lens Flare verwendet. Betrachten Sie Sonnenstrahlen, die auf den Spiegel fallen, und der Effekt, den man davon sieht, wird meistens als Lens Flare bezeichnet.
Syntax
Im Folgenden finden Sie die Syntax zum Erstellen von Linseneffekten:
var lensFlareSystem = new BABYLON.LensFlareSystem("lensFlareSystem", light0, scene);
Parameter
Berücksichtigen Sie die folgenden Parameter, um einen Linseneffekt zu erzeugen:
Name - Name des Linsenfackelsystems.
Light - Dies kann eine Lichtquelle oder eine Kamera sein.
Scene - Szene, zu der der Linseneffekt hinzugefügt wird.
Führen Sie den folgenden Befehl aus, um der Szene Fackeln hinzuzufügen:
var flare1 = new BABYLON.LensFlare(0.5, 0.15, new BABYLON.Color3(1, 1, 1), "images/sun1.png", lensFlareSystem);
Size - Gleitender Wert zwischen 0 und 1.
Position - Die Quelle (der Emitter) der Linseneffekte (es kann sich um eine Kamera, ein Licht oder ein Netz handeln).
Lensflaresystem - Objekt, das mit der Lensflaresystem-Klasse erstellt wurde.
Demo
<!doctype html>
<html>
<head>
<meta charset = "utf-8">
<title>BabylonJs - Basic Element-Creating Scene</title>
<script src = "babylon.js"></script>
<style>
canvas {width: 100%; height: 100%;}
</style>
</head>
<body>
<canvas id = "renderCanvas"></canvas>
<script type = "text/javascript">
var canvas = document.getElementById("renderCanvas");
var engine = new BABYLON.Engine(canvas, true);
var createScene = function() {
var scene = new BABYLON.Scene(engine);
scene.clearColor = BABYLON.Color3.Gray();
var camera = new BABYLON.ArcRotateCamera(
"Camera", -Math.PI / 2, 1.5, 15, BABYLON.Vector3.Zero(), scene);
camera.attachControl(canvas, false);
var light1 = new BABYLON.HemisphericLight("light1", new BABYLON.Vector3(0, -1, 0), scene);
light1.groundColor = new BABYLON.Color3(0.2, 0.2, 0.2);
light1.intensity = 0.5;
var bigdiamond = BABYLON.Mesh.CreateSphere("sphere", 32,6, scene);
bigdiamond.visibility = 0.6;
var dmat = new BABYLON.StandardMaterial("dmat", scene);
dmat.diffuseColor = BABYLON.Color3.Blue();
var texture = new BABYLON.Texture("images/earth.jpg", scene);
dmat.diffuseTexture = texture;
dmat.specularColor = BABYLON.Color3.White();
bigdiamond.material = dmat;
var lensflare1 = new BABYLON.LensFlareSystem("lensFlareSystem", camera, scene);
var flare1 = new BABYLON.LensFlare(
Math.random(), 0.15, new BABYLON.Color3(1, 1, 1), "images/sun1.png", lensflare1);
var lensflare2 = new BABYLON.LensFlareSystem("lensFlareSystem", camera, scene);
var flare2 = new BABYLON.LensFlare(
Math.random()/2, 0.1, new BABYLON.Color3(1, 0, 0), "images/sun1.png", lensflare2);
var lensflare3 = new BABYLON.LensFlareSystem("lensFlareSystem", camera, scene);
var flare3 = new BABYLON.LensFlare(
Math.random()/8, 0.1, new BABYLON.Color3(1, 0, 1), "images/sun1.png", lensflare3);
var lensflare4 = new BABYLON.LensFlareSystem("lensFlareSystem", camera, scene);
var flare4 = new BABYLON.LensFlare(
Math.random()/12, 0.1, new BABYLON.Color3(0, 1, 0), "images/sun1.png", lensflare4);
scene.registerBeforeRender(function() {
scene.getCameraByID("Camera").alpha += 0.01;
});
return scene;
};
var scene = createScene();
engine.runRenderLoop(function() {
scene.render();
});
</script>
</body>
</html>
Ausgabe
Die obige Codezeile generiert die folgende Ausgabe: