当前位置: 首页 > news >正文

Cesium 实战 - 使用 gltf-vscode 查看、预览以及编辑 glTF 和 GLB 模型

Cesium 实战 - 使用 gltf-vscode 查看、预览以及编辑 glTF 和 GLB 模型

    • VScode(Visual Studio Code) 安装模型必要插件
    • VScode 预览自定义关节(articulations)动作
    • VScode 导入 GLB 格式模型
    • VScode 导出 GLB 格式模型

模型渲染作为 Cesium 一个非常重要的功能,目前只支持 glTF 和 GLB 两种格式,其实是一种格式,GLB 是 glTF 的二进制形式。

在实际项目中,由于对模型的操作,可能会需要查看模型的属性。之前一直使用 blender 来查看、调整以及转换等操作。模型转换详见:Cesium 三维模型使用 blender 调整位置、坐标轴、比例等。

近期有需求,需要给模型增加 自定义关节(articulations)动作,然后发现 blender 对于 Cesium 开发人员不太友好,尤其是查看 glTF 的 json 数据属性。

后来发现一个开源项目,可以直接查看和操作 glTF 模型:gltf-vscode

gltf-vscode 是由 AGI(一家美国工程仿真领域的企业) 开发和维护的,功能非常强大,比较适合 Cesium 开发人员。

gltf-vscode 可以查看编辑模型、导入 GLB 模型、GLB 与 glTF 转换等功能。

本文包含 VScode 安装模型必要插件、预览自定义关节动作、导入 GLB 格式模型、导出 GLB 格式模型 四部分。


VScode(Visual Studio Code) 安装模型必要插件

Visual Studio Code 下载于安装比较简单,也不需要破解,不过多介绍。

使用 VScode 打开 gltf-vscode 项目。

VScode 应该会自动提示安装所需插件:

在这里插入图片描述
在这里插入图片描述
复制 glTF 模型到项目中,这里作者新建 public/model 文件夹来存放模型。

预览 glTF 模型,可以查看 glTF 文件数据以及预览模型:

注意:需要打开 glTF 模型文件之后,在文件内右键操作

在这里插入图片描述

默认为 Babylon 渲染模型,这里也可以切换其他模型预览引擎:

在这里插入图片描述

以下为 Cesium 官方火箭推进器的模型(cesium.vip 镜像源):

launchvehicle.gltf

launchvehicle.glb


VScode 预览自定义关节(articulations)动作

预览切换为 Cesium 引擎时,可以查看模型自定义的关节(articulations)动作:

在这里插入图片描述
这里选择了 SRB 固体助推器模块组件,并且调整 Separate、Drop 和 Rotate 关节(articulations)参数来查看效果:
在这里插入图片描述


VScode 导入 GLB 格式模型

GLB 模型为二进制文件,VScode 不能直接打开,这里演示导入 GLB 格式模型:

在这里插入图片描述

将 GLB 文件拷贝到项目中:

在这里插入图片描述

由于 GLB 模型转为 glTF 格式,会生成一系列相关文件,这里创建文件夹用于存放这些文件:

在这里插入图片描述

选中 GLB 模型,右键 - 导入 GLB 模型(glTF: Import from GLB):

在这里插入图片描述

选择创建好的文件夹,这里不建议修改名字,保存:

在这里插入图片描述

以下是生成的 glTF 模型以及相关文件(所有文件均不可删除,否则会出问题):

在这里插入图片描述

点击 glTF 文件,查看内容以及预览模型:

在这里插入图片描述


VScode 导出 GLB 格式模型

glTF 格式模型更方便编辑,但是松散的 glTF 模型(包含 .bin、.jpg 等)不容易移动使用,可以导出为 GLB 格式:

在这里插入图片描述

导出之后,在 Cesium 中加载使用:

在这里插入图片描述


参考博客:

[1]: glTF Tools Extension for Visual Studio Code

[2]: VSCode查看gltf文件(glTF Tools插件)

[3]: 图形化开发(六)03-Three.js之导入模型——glTF格式文件导入,3D模型的使用 & vs code之glTF Tools插件的使用方法

[4]: 3D性能优化 | 说一说glTF文件压缩

http://www.lryc.cn/news/94106.html

相关文章:

  • Python自动化测试框架:Pytest和Unittest的区别
  • 考研算法29天:希尔排序 【希尔排序】
  • RN 学习小记之使用 Expo 创建项目
  • python爬虫从入门到精通
  • 从0到1精通自动化,接口自动化测试——数据驱动DDT实战
  • 【微服务】springboot整合swagger多种模式使用详解
  • AI 绘画(1):生成一个图片的标准流程
  • CPU、内存、缓存的关系
  • AI黑客松近期比赛清单;36氪AI淘宝店盈利复盘;GitHub Copilot官方最佳实践;AI在HR领域的应用探索 | ShowMeAI日报
  • 想要让视频素材格式快速调整转换的方法分享
  • 面向对象分析与设计 UML2.0 学习笔记
  • [数据库系统] 五、数据增删改
  • docker私有注册表创建和使用
  • 用OpenCV进行OCR字符分割
  • MyCat Docker 搭建与测试
  • 车载通讯USB开发,增强车内娱乐体验
  • js的一些小技巧
  • Springboot Mybatis 自定义顺序排序查询,指定某个字段
  • 期刊会议审稿意见
  • Java类加载机制:从字节码到对象的奇妙之旅
  • 代码随想录第一天|二分法、双指针
  • Flink中KeyedStateStore实现--怎么做到一个Key对应一个State
  • flex: 0 0 100%;
  • IMX6ULL系统移植篇-镜像烧写方法
  • 【Android】实现雷达扫描效果,使用自定义View来绘制雷达扫描动画
  • 小程序 - 文件预览
  • 将String类型的证书转换为X509Certificate类型对象,读取证书链文件内容,完成证书链校验
  • v-model实现原理(一根绳上的蚂蚱)
  • 第三章 仅支持追加的单表内存数据库
  • 抖音seo矩阵系统源码解析