通过babylon.js使用blender导出的模型创建web3d应用

本文涉及的产品
模型训练 PAI-DLC,100CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 通过babylon.js使用blender导出的模型创建web3d应用

通过babylon.js使用blender导出的模型创建web3d应用

什么是babylon.js?

Babylon.js,是由微软使用TypeScript开发的一款开源的web端3d游戏引擎,与three.js一样都支持webgpu。但相比于three.js来说,babylon.js更强大。现在在github上18.8K的star:

babylon.js的github仓库链接: BabylonJS/Babylon.js: Babylon.js is a powerful, beautiful, simple, and open game and rendering engine packed into a friendly JavaScript framework. (github.com)

而它的竞品three.js在github上有87k的star:mrdoob/three.js: JavaScript 3D Library. (github.com)

为什么是babylon.js?

虽然说这两引擎在github上的star相差很多,但我认为这是由于时机的关系。three.js在2009年发布,而babylon.js在2013年发布。

其次,three.js是由社区推动,并且使用javascript开发。而babylon.js有个有钱的爹——微软,使用TypeScript开发,这意味着当你进行开发时,你能够得到更好的类型提示,如果不熟悉TypeScript的朋友,可以看我的专栏:TS入门小记 - 跟我一起秃秃秃的专栏 - 掘金 (juejin.cn)

babylon.js的官方社区也在快速的发展:Babylon.js (babylonjs.com),如果你在官方论坛中提问的话,大概率半小时内能得到答复。

而且,非常重要的一点。babylon.js的定位是web3d游戏引擎,而three.js的定位为一个web3d库。

综上,我选择babylon.js,下面将先进行对模型的处理。

一、导出模型

本篇文章导出模型的建模软件为blender。

如果模型设置了修改器,请先全部应用(a全选后右键点击,选择转换到网格,勾选保留原有)。建议ctrl+j合并。

随后导出glb文件(建议勾选压缩)。

二、压缩材质图片

大多数时候我们导出的文件很大是因为材质图片太大。

gltf-pipeline提供了一个工具来对glb/gltf文件拆解和合成,我们先对这个工具进行下载,请确保你的操作系统上安装了node.js:

npm install -g gltf-pipeline

或者使用pnpm

pnpm add -g gltf-pipeline

使用:gltf-pipeline -i model.gltf -t 命令模板,将纹理材质图片单独输出

随后,你可以通过ps,将图片都保存为web格式,选择图片的品质,可以尝试选择,大多数时候图片的品质并没有什么影响。但是空间却只有原来的最多1/10。

然后使用:gltf-pipeline -i model.gltf -o model.glb 命令模板,将分离的模型文件和纹理材质文件统一打包转为单体glb文件。

本篇文章使用github存储模型文件,我们可以使用任何允许跨域的网站来导入我们的模型文件。

三、在playground中使用模型

babylon也有editor,这是一个很有潜力的项目。不过这个软件不太好用,而且是由社区开发的。所以我建议入门选手使用playground来编写程序和使用模型:

Babylon.js Playground (babylonjs-playground.com)

我们选择语言为TypeScript,如果没有合适的模型的朋友,可以使用我github仓库中的两个模型来进行学习:qian357891/MeshesLibrary: A assets library for glb file (github.com)

我们在playground中输入以下代码,关于各个变量和函数的作用,可以看我的注释:

class Playground {
  public static CreateScene(
    engine: BABYLON.Engine,
    canvas: HTMLCanvasElement
  ): BABYLON.Scene {
    const scene = new BABYLON.Scene(engine);// 创建一个场景,这是一个必须的常量/变量,参数为Playground类中CreateScene静态方法的engine属性

    // 创建一个相机,这也是一个必须的常量/变量。这个相机是BABYLON.ArcRotateCamera类的一个实例,这个相机能够让我们使用鼠标和触摸对模型进行观看。
    const camera = new BABYLON.ArcRotateCamera(
      "camera",
      0,
      Math.PI / 2,
      10,
      BABYLON.Vector3.Zero(),
      scene
    );

    // 导入模型
    BABYLON.SceneLoader.ImportMesh(
      "",
      "https://cdn.jsdelivr.net/gh/qian357891/MeshesLibrary@b393a2d7702579e657ceb3c5a150ba650f13b68a/",
      "temple_single_s.glb",
      scene,
      function (meshes) {
        scene.createDefaultCameraOrLight(true, true, true);
        scene.createDefaultEnvironment();
      }
    );

    // 该静态方法返回的是我们定义的scene场景
    return scene;
  }
}

关于在playground中导入外部资源,也可以看看官方的文档,在本篇文章中,我们使用的是jsdelivr.com。

随后我们点击抬头栏目中的下载按钮,便可以得到一个打包好的压缩文件。

image-20221123191055055

下载好压缩文件后,打开压缩文件中的index.html。发现依赖包已经通过cdn引入了依赖包,你可以直接打开html文件进行预览:
代码片段

相关文章
|
10天前
|
Web App开发 编解码 vr&ar
使用Web浏览器访问UE应用的最佳实践
在3D/XR应用开发中,尤其是基于UE(虚幻引擎)开发的高精度场景,传统终端因硬件局限难以流畅运行高帧率、复杂效果的三维应用。实时云渲染技术,将渲染任务转移至云端服务器,降低终端硬件要求,确保用户获得流畅体验。具备弹性扩展、优化传输协议、跨平台支持和安全性等优势,适用于多种终端和场景,特别集成像素流送技术,帮助UE开发者实现低代码上云操作,简化部署流程,保留UE引擎的强大开发能力,确保画面精美且终端轻量化。
使用Web浏览器访问UE应用的最佳实践
|
2月前
|
监控 JavaScript 算法
如何使用内存监控工具来定位和解决Node.js应用中的性能问题?
总之,利用内存监控工具结合代码分析和业务理解,能够逐步定位和解决 Node.js 应用中的性能问题,提高应用的运行效率和稳定性。需要耐心和细致地进行排查和优化,不断提升应用的性能表现。
205 77
|
1天前
|
缓存 NoSQL JavaScript
Vue.js应用结合Redis数据库:实践与优化
将Vue.js应用与Redis结合,可以实现高效的数据管理和快速响应的用户体验。通过合理的实践步骤和优化策略,可以充分发挥两者的优势,提高应用的性能和可靠性。希望本文能为您在实际开发中提供有价值的参考。
21 11
|
17天前
|
敏捷开发 人工智能 JavaScript
Figma-Low-Code:快速将Figma设计转换为Vue.js应用,支持低代码渲染、数据绑定
Figma-Low-Code 是一个开源项目,能够直接将 Figma 设计转换为 Vue.js 应用程序,减少设计师与开发者之间的交接时间,支持低代码渲染和数据绑定。
58 3
Figma-Low-Code:快速将Figma设计转换为Vue.js应用,支持低代码渲染、数据绑定
|
11天前
|
JavaScript 前端开发
【Vue.js】监听器功能(EventListener)的实际应用【合集】
而此次问题的核心就在于,Vue实例化的时机过早,在其所依赖的DOM结构尚未完整构建完成时就已启动挂载流程,从而导致无法找到对应的DOM元素,最终致使计算器功能出现异常,输出框错误地显示“{{current}}”,并且按钮的交互功能也完全丧失响应。为了让代码结构更为清晰,便于后续的维护与管理工作,我打算把HTML文件中标签内的JavaScript代码迁移到外部的JS文件里,随后在HTML文件中对其进行引用。
35 8
|
1月前
|
弹性计算 Java 关系型数据库
Web应用上云经典架构实践教学
Web应用上云经典架构实践教学
Web应用上云经典架构实践教学
|
1月前
|
Kubernetes 安全 Devops
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
72 10
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
|
2月前
|
存储 缓存 监控
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
82 31
|
1月前
|
弹性计算 Java 数据库
Web应用上云经典架构实战
本课程详细介绍了Web应用上云的经典架构实战,涵盖前期准备、配置ALB、创建服务器组和监听、验证ECS公网能力、环境配置(JDK、Maven、Node、Git)、下载并运行若依框架、操作第二台ECS以及验证高可用性。通过具体步骤和命令,帮助学员快速掌握云上部署的全流程。
|
2月前
|
JavaScript 前端开发 API
Vue.js 3:深入探索组合式API的实践与应用
Vue.js 3:深入探索组合式API的实践与应用

热门文章

最新文章