BabylonJS - Lens Flares
เมื่อแสงกระจัดกระจายและตกบนภาพคุณจะเห็นภาพที่แตกต่างกันในแง่ของรูปลักษณ์และสีก็เปลี่ยนไปด้วย เมื่อคุณพัฒนาเกมเพื่อแสดงเอฟเฟกต์แสงที่เกิดขึ้นจริงจะใช้เลนส์แฟลร์ พิจารณารังสีดวงอาทิตย์ตกกระทบกระจกและผลกระทบที่เห็นส่วนใหญ่เรียกว่า Lens Flare
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ในการสร้างเลนส์แฟลร์ -
var lensFlareSystem = new BABYLON.LensFlareSystem("lensFlareSystem", light0, scene);
พารามิเตอร์
พิจารณาพารามิเตอร์ต่อไปนี้เพื่อสร้างแสงแฟลร์ของเลนส์ -
Name - ตั้งชื่อให้กับระบบเลนส์
Light - อาจเป็นแหล่งกำเนิดแสงหรือกล้องถ่ายรูป
Scene - ฉากที่จะเพิ่มแสงแฟลร์ของเลนส์
ในการเพิ่มพลุให้กับฉากให้ดำเนินการคำสั่งต่อไปนี้ -
var flare1 = new BABYLON.LensFlare(0.5, 0.15, new BABYLON.Color3(1, 1, 1), "images/sun1.png", lensFlareSystem);
Size - ค่าลอยตัวระหว่าง 0 ถึง 1
Position - แหล่งที่มา (ตัวปล่อย) ของเลนส์ลุกเป็นไฟ (อาจเป็นกล้องแสงหรือตาข่ายก็ได้)
Lensflaresystem - วัตถุที่สร้างขึ้นโดยใช้คลาส lensflaresystem
การสาธิต
<!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>
เอาต์พุต
บรรทัดโค้ดด้านบนสร้างผลลัพธ์ต่อไปนี้ -