BabylonJS - Xương và Bộ xương
Babylonjs cung cấp các API để tạo bộ xương và xương.
Cú pháp
Bây giờ chúng ta hãy xem cú pháp cho các hàm khác nhau.
Đối với Skeleton
BABYLON.Skeleton = function (name, id, scene)
Đối với xương
BABYLON.Bone = function (name, skeleton, parentBone, matrix)
Skeletons and Bones có thể được tạo bằng cách sử dụng máy xay sinh tố và có thể xuất dữ liệu tương tự bằng .babylonjs.
Bản giới thiệu
<!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);
//Adding a light
var light = new BABYLON.PointLight("Omni", new BABYLON.Vector3(20, 20, 100), scene);
//Adding an Arc Rotate Camera
var camera = new BABYLON.ArcRotateCamera("Camera", 0, 0.8, 100, BABYLON.Vector3.Zero(), scene);
camera.attachControl(canvas, false);
BABYLON.SceneLoader.ImportMesh(
"him", "scenes/Dude/", "Dude.babylon", scene, function (newMeshes, particleSystems, skeletons) {
var dude = newMeshes[0];
console.log(dude);
dude.rotation.y = Math.PI;
dude.position = new BABYLON.Vector3(0, 0, -80);
scene.beginAnimation(skeletons[0], 0, 100, true, 1.0);
})
return scene;
};
var scene = createScene();
engine.runRenderLoop(function() {
scene.render();
});
</script>
</body>
</html>
Trong liên kết demo ở trên, chúng tôi đã sử dụng lưới Dude.babylon. Bạn có thể tải xuống tệp json cho Dude.babylon từ đây -
Dude.babylon
Lưu tệp trong các cảnh để có kết quả như hình dưới đây.
Đầu ra
Dòng mã trên tạo ra kết quả sau:
Giải trình
Đối với lưới nhập khẩu, chúng tôi đã sử dụng lưới dude babylonjs.
Lưới cho chúng ta những bộ xương. Ví dụ, khung xương = bộ xương [0];
Để lấy xương từ các bộ xương, hãy thực hiện lệnh sau:
skeleton.bones; //it gives a array.
Trong bản demo trên, chúng tôi đã tạo 2 quả cầu và chuyển cho lưới. Đối với điều này, chúng tôi đã thực hiện các lệnh sau:
sphere.attachToBone(skeleton.bones[30], dude);
Và,
sphere1.attachToBone(skeleton.bones[40], dude);
attachToBone là một chức năng trong đó, bạn có thể cung cấp bất kỳ lưới nào cho xương.
Skeleton.bones[30] và skeleton.bones[40] đề cập đến bàn tay của bộ xương.