- BabylonJS 教程
- BabylonJS - 首頁
- BabylonJS - 簡介
- BabylonJS - 環境設定
- BabylonJS - 概述
- BabylonJS - 基本元素
- BabylonJS - 材質
- BabylonJS - 動畫
- BabylonJS - 相機
- BabylonJS - 光照
- BabylonJS - 引數化形狀
- BabylonJS - 網格
- 向量位置和旋轉
- BabylonJS - 貼花
- BabylonJS - 三維曲線
- BabylonJS - 動態紋理
- BabylonJS - 視差貼圖
- BabylonJS - 鏡頭光暈
- BabylonJS - 建立螢幕截圖
- BabylonJS - 反射探針
- 標準渲染管線
- BabylonJS - 著色器材質
- BabylonJS - 骨骼和骨架
- BabylonJS - 物理引擎
- BabylonJS - 播放聲音和音樂
- BabylonJS 有用資源
- BabylonJS - 快速指南
- BabylonJS - 有用資源
- BabylonJS - 討論
BabylonJS - 網格資源管理器
使用 assestsmanager 類,您可以載入場景中的網格、影像和二進位制檔案。
語法
var assetsManager = new BABYLON.AssetsManager(scene);
演示
<!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);
var assetsManager = new BABYLON.AssetsManager(scene);
var meshTask = assetsManager.addMeshTask("skull task", "", "scenes/", "skull.babylon");
meshTask.onSuccess = function (task) {
task.loadedMeshes[0].position = BABYLON.Vector3.Zero();
}
// Move the light with the camera
scene.registerBeforeRender(function () {
light.position = camera.position;
});
assetsManager.onFinish = function (tasks) {
engine.runRenderLoop(function () {
scene.render();
});
};
assetsManager.load();
return scene;
};
var scene = createScene();
engine.runRenderLoop(function() {
scene.render();
});
</script>
</body>
</html>
在上面的演示連結中,我們使用了 skull.babylon 網格。您可以從此處下載 skull.babylon 的 json 檔案:
將檔案儲存在 scenes 資料夾中以獲得如下所示的輸出。skull.babylon 是一個 json 檔案,其中包含要為網格繪製的所有位置的詳細資訊。
輸出
解釋
對於 assetsmanager,您需要做的第一件事是建立如上所示的相同物件。
現在,您可以按如下方式向 assetsmanager 物件新增任務:
var meshTask = assetsManager.addMeshTask("skull task", "", "scenes/", "skull.babylon");
上面建立的 themeshTask 提供了對名為 onSucess 和 onError 的兩個回撥的訪問。
語法
.以下是 onSuccess 回撥的語法:
meshTask.onSuccess = function (task) {
task.loadedMeshes[0].position = BABYLON.Vector3.Zero();
}
在上述情況下,網格的位置在成功回撥時更改為 0。
載入影像和 txt 檔案的演示
<!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);
var assetsManager = new BABYLON.AssetsManager(scene);
var imageTask = assetsManager.addImageTask("image_task", "images/balloon.png");
imageTask.onSuccess = function(task) {
console.log(task.image.width);
}
var textTask = assetsManager.addTextFileTask("text task", "mesh.txt");
textTask.onSuccess = function(task) {
console.log(task.text);
}
assetsManager.load();
return scene;
};
var scene = createScene();
engine.runRenderLoop(function() {
scene.render();
});
</script>
</body>
</html>
建立一個名為 mesh.txt 的檔案,並在其中新增文字“This is babylonjs test”。在瀏覽器中執行上述演示將在控制檯中顯示影像的寬度和 mesh.txt 中存在的文字。
附加 mesh.txt 內容 – mesh.txt:
This is babylonjs test
要顯示場景的載入指示器,請使用以下方法:
如果設定為 true,則會顯示載入指示器。將其設定為 false 可停用。
assetsManager.useDefaultLoadingScreen = true;
還有其他方法可以顯示載入指示器:
BABYLON.SceneLoader.ShowLoadingScreen = true; //false to disable it
要手動隱藏和顯示載入螢幕,請執行以下操作。
engine.displayLoadingUI(); engine.hideLoadingUI();
載入文字使用 loadingUIText 控制:engine.loadingUIText = "text"; 並使用 engine.loadingUIBackgroundColor = "red"; 控制背景。
babylonjs_mesh.htm
廣告