Babylon.js 开发:基本环境配置
和之前 Svelte 下的 three.js 开发:基础框架 一样仍然使用 Svelte 作为项目脚手架,从而获得现代化的构建工具。
Svelte 项目初始化
大体步骤和 three.js 一样:
1 | npx degit sveltejs/template my-svelte-babylon |
Babylon.js 安装
1 | yarn add babylonjs |
Babylon.js 内置了 TypeScript 类型定义,不需要 引入类似 @types/babylonjs
的依赖。
babylonjs
只是 Babylon.js 的核心,还有一些额外的模块,可以根据需要另外引入:
babylonjs-materials
:Babylon 支持的高级材质babylonjs-loaders
:加载器 (OBJ, STL, glTF)babylonjs-post-process
:后期处理babylonjs-procedural-textures
:官方支持的程序化纹理(procedural textures)babylonjs-serializers
:Scene / mesh 序列化器babylonjs-gui
:GUI 模块babylonjs-viewer
:独立的查看器
App.svelte
1 | <script lang="ts"> |
Babaylon.js 可以理解为一个游戏引擎,Engine
就是引擎,负责处理渲染、游戏循环、音频等。目前 WebGPU 已经开始慢慢被接受,所以使用 EngineFactory
可以自动选择底层渲染机制。WebGPU 的初始化是异步的,因此这里需要使用 async
。
1 | async function createEngine(domElem) { |
目前 Babylon.js 中的 WebGPU 并不是能直接替换传统 WebGL 的,因此有一些功能是有冲突或者不支持的。Babylon.js 可以直接指定需要的渲染机制:
1 | const engine = new BABYLON.WebGPUEngine(canvas); |
也可以使用 WebGL:
1 | const engine = new BABYLON.Engine(canvas); |
Babylon.js 从 3.0 开始,就支持 WebGL 1.0 和 WebGL 2.0 上下文渲染。默认情况下,会首先尝试 WebGL 2.0 上下文。如果浏览器不支持,会尝试使用 WebGL 1.0。
小结
Babylon.js 是完整的 JavaScript 框架,更倾向于进行游戏开发和碰撞检测,而 Three.js 则更专注于 GPU 增强和动画。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小谷的编程随笔空间!
评论