BabylonJs系列-1.入门

725 阅读3分钟

BabylonJs系列-1.入门

简介

最近公司开发了3D显示效果相关的项目,所以需要学习到BabylonJs/Threejs相关的知识。学到现在也了解了一些,所以打算开一个系列记录一下初学者使用Babylon的教程。这是这个系列的第一篇,我会先写一下demo给大家能很快的运行,之后文章再具体了解一下各个部分,最后再使用一个3D地球实例 本系列demo均为html文章,可直接打开文章预览

1. 准备工作

  1. 先准备需要使用到的运行类js,相关js可以在文末的github仓库中找到
<!-- 基础类库 -->
<script src="./js/babylon.js"></script>
  1. WebGL需要结束Canvas元素作为3D渲染的容器,所以我们插入一个canvas元素
<canvas id="WebGL" style="height: 500px; width: 500px;"/>
  1. 编写js代码,初始化实例 这部分为创建场景代码。至此3D场景创建完成,之后可以通过代码创造自己的3D世界了
    const canvas = document.getElementById('WebGL'); // 1. 获取canvas实例 用于传入Babylon作为渲染容器
    const engine = new BABYLON.Engine(canvas, true); // 2. 传入Babylon作为渲染容器 engine为渲染引擎,除非特殊用途,不然一般不会使用到
    const scene = new BABYLON.Scene(engine); // 3. 创建一个场景,可以简单理解为一个3D世界
    // 4. 创建一个摄像头,webGL中使用摄像头将画面投放到画布中,以此"观察"这个世界
    const camera = new BABYLON.ArcRotateCamera("Camera", Math.PI / 2, Math.PI / 2, 2, new BABYLON.Vector3(0, 0, 5), scene);
    camera.attachControl(canvas, false);// 让摄像头控制画布,实现摄像头移动效果
    scene.clearColor.set(0, 0, 0, 1); // 为了方便查看效果 修改场景背景颜色
    const light1 = new BABYLON.HemisphericLight("light1", new BABYLON.Vector3(1, 1, 0), scene);
    const light2 = new BABYLON.PointLight("light2", new BABYLON.Vector3(0, 1, -1), scene);
    // 渲染引擎启动定时循环,在定时循环中更新场景的每一帧
    engine.runRenderLoop(function () {
        scene.render(); 
    });
  1. 创建一个球看下效果
// 创建一个球
const sphere = BABYLON.MeshBuilder.CreateSphere("sphere", { diameter: 2 }, scene);

总结

这一篇文章先带大家了解了一下WebGL的初始化过程,大家可以自由看看最终效果,或自由删除一些代码,看一下场景的修改以便加深理解。下一章开始会和大家讲诉一下Babylon常用的一些类和一些基本概念


文末会带有demo的源代码链接,随着文章发布也会多一些测试demo。

大致知道scene、mesh、Material、texture、light、camera这些类的用图和含义 (场景、模型、材质、贴图纹理、灯光、镜头视角)

推荐学习素材:

大佬整理的Babylon入门案例