【obj To 3DTiles 格式转换】 可以自定义经纬高、属性表等参数。

目录

  • 0 引言
  • 1 3DTiles数据
  • 2 objTo3DTiles
    • 2.1 工具的安装
      • 2.1.1 拓展:Node.js 和 npm
    • 2.2 工具的使用
      • 2.2.1 输出成瓦片数据
      • 2.2.2 输出带有坐标参数的瓦片数据
  • 3 查看3DTiles数据

请添加图片描述

  • 🙋‍♂️ 作者:海码007
  • 📜 专栏:CesiumforUnreal专栏
  • 💥 标题:【obj To 3DTiles 格式转换】 可以自定义经纬高、属性表等参数。
  • ❣️ 寄语:书到用时方恨少,事非经过不知难!
  • 🎈 最后:文章作者技术和水平有限,如果文中出现错误,希望大家能指正,同时有问题的话,欢迎大家留言讨论。

0 引言

其实我之前也写过两篇博客,分别是介绍 3DTiles格式数据、objTo3DTiles 的文章。但是之前储备的知识还不够,所以今天就重新起稿一份。

  • 最近使用Cesium插件需要加载很多三维模型数据,如果直接将传统的三维模型格式导入的话,模型还需要制作LOD,通知需要地理配准等一系列工作。
  • 然后最近发现3DTiles格式就是为了解决这些问题被创造出来的。所以研究了一下如何将obj格式数据转换成3DTiles格式。

本文将分为三个部分开始讲解:

  • 3DTiles数据格式介绍
  • 格式转换
  • 转换后查看3DTiles格式数据

1 3DTiles数据

3DTiles格式数据是 OGC 组织进行规范的,显然他们的官网就有对这个数据格式的介绍。只不过是全英的,比较磨人,当然国内也有很多大佬进行翻译总结,这里我就不再赘述,直接上网址:

  • 3DTiles官方文档:https://docs.ogc.org/cs/22-025r4/22-025r4.html#toc5
  • 国内翻译链接:https://blog.csdn.net/weixin_45782925/article/details/124360642?spm=1001.2014.3001.5506
  • 我的文章:https://blog.csdn.net/hhw_hhw/article/details/135103914?spm=1001.2014.3001.5502

2 objTo3DTiles

我试了很多工具,发现还是GitHub上的大佬做的好用,这里就直接放出链接:objTo3d-tiles工具链接。

在这里插入图片描述

2.1 工具的安装

  • 其实我之前使用GitHub的频率很少,而且也不知道怎么部署GitHub上面的工具,所以还是自己摸索了一阵。今天我就手把手教学。
  • 然后这个工具的作者也做了一个中文版的文档,我们直接看:

在这里插入图片描述

  • 文档中写了,开始使用前,确保安装了Node.js。然后运行命令:
npm install -g obj23dtiles

Node.js直接去官网下载即可,然后下载完成后打开 Windows 操作系统的 命令行解释器 也就是 cmd 。然后输入刚才的命令,然后再点击回车,就开始安装了。

  • -g 参数的意思是将工具安装到系统的全局目录,也就是说不管在哪里启动 cmd 命令都可以访问 obj23dtiles 工具。
    在这里插入图片描述

2.1.1 拓展:Node.js 和 npm

Node.js 和 npm(Node Package Manager)是两个紧密相关的工具,通常一起使用,但它们有不同的作用。

  1. Node.js:

    • Node.js 是一个基于Chrome V8引擎的 JavaScript 运行时环境,使 JavaScript 具备了在服务器端运行的能力。
    • 它允许开发者使用 JavaScript 来编写服务器端应用程序,而不仅仅是在浏览器中运行的前端脚本语言。
    • Node.js 提供了一种事件驱动的、非阻塞的 I/O 模型,使其非常适合处理大量并发连接的应用程序。
  2. npm(Node Package Manager):

    • npm 是 Node.js 的包管理工具,用于安装、分享和管理 Node.js 模块。
    • Node.js 模块是可重用的代码单元,可以通过 npm 进行安装,以便在应用程序中使用。
    • npm 还允许开发者将自己的模块发布到 npm 的仓库中,供其他开发者使用。

关系:

  • Node.js 本身提供了一个运行 JavaScript 代码的环境,但它并没有涉及到模块的管理。
  • npm 则是用于管理 Node.js 模块的工具,通过 npm 可以方便地安装、升级、卸载模块,并管理项目所依赖的模块。
  • 当你安装 Node.js 时,npm 通常也会随之安装,因此在大多数情况下,你可以直接使用 npm。

总的来说,Node.js 是提供 JavaScript 运行时环境的工具,而 npm 是用于管理 Node.js 模块的工具,二者一同构成了 Node.js 生态系统的基础。


总结:GitHub 上很多开源的工具,会将工具上传到 npm 上,然后我们可以下载 npm 工具,然后直接安装别人上传的工具。也就是说 npm 相当于一个中间站。然后在安装 Node.js 的时候会帮我们安装 npm 工具。

2.2 工具的使用

2.2.1 输出成瓦片数据

我们直接看如何将 .obj 转换为 .b3dm 格式的瓦片数据。

obj23dtiles -i ./bin/barrel/barrel.obj --tileset
// 在模型目录导出 Batchedbarrel 文件夹

这是官方给的示例

  • obj23dtiles 表示调用的工具名称
  • -i 表示接下来的参数是输入的数据
  • ./bin/barrel/barrel.obj表示是输入数据的路径和文件名
  • –tileset表示输出的是瓦片数据格式

输出的瓦片数据格式如下:是带有 tileset.json 的数据。这是3DTiles数据加载的入口,定义了数据的一下基本信息,包括数据的坐标信息。
在这里插入图片描述

2.2.2 输出带有坐标参数的瓦片数据

源码中给出了一个 customTilesetOptions.json 数据,定义了瓦片的一些信息。

{
    "longitude":      -1.31968,     // 瓦片原点(模型原点 (0,0,0)) 经度的弧度值。
    "latitude":       0.698874,     // 瓦片原点维度的弧度值。
    "transHeight":    0.0,          // 瓦片原点所在高度,单位为米。
    "region":         true,         // 使用 region 作为外包体。
    "box":            false,        // 使用 box 作为外包体。
    "sphere":         false         // 使用 sphere 作为外包体。
}

3DTiles瓦片数据使用的是 WGS84 坐标系 。
可以在输出瓦片数据的同时,将 customTilesetOptions.json 数据作为瓦片的参数一起输入。

obj23dtiles -i ./bin/barrel/barrel.obj --tileset -p ./bin/barrel/customTilesetOptions.json

输出结果如下:还是这两个文件,不过现在的瓦片数据已经是带有经纬高信息的数据了。(那么我们如何验证数据的坐标是否正确呢,那就要看本文的第三部分,查看3DTiles瓦片数据)
在这里插入图片描述

3 查看3DTiles数据

查看3DTiles数据的方式有很多,我使用的是Cesium官方的Cesium ion工具。
网址:https://cesium.com/platform/cesium-ion/

在这里插入图片描述

  1. 登入后,进入 My Asset ,然后添加数据
    在这里插入图片描述
    在这里插入图片描述
  2. 选择 Add files。选择两个文件。
    在这里插入图片描述
    在这里插入图片描述
  3. 选择 3D Tiles 数据类型。然后点击左下角的 Upload 进行数据的上传。
    在这里插入图片描述
  4. 然后回到 My Assets 界面,点击刚才新添加的数据,即可在右侧窗口进行数据的查看。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/288942.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

探索 Vue 实例方法的魅力:提升 Vue 开发技能(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

苹果小绿灯电路。

苹果充电器上的小绿灯。是5脚供电。一开始的时候,5脚电压是没有的。所以,比较器的3端电压没有,而1端电压呢?受到ACIN DETECTION电路控制,如图所示。当检测到适配器供电的时候,发出高电平SMC_BC_ACOK&#x…

yolo v7支持的设备

将一个深度学习模型(在这里是YOLOv7,一个目标检测模型)从PyTorch导出到不同的格式,以便在不同平台上进行推理(inference)。列出的方法包括: PyTorch 转 CoreML(适用于 macOS/iOS&am…

Unity中Shader的Reversed-Z(DirectX平台)

文章目录 前言一、在对裁剪坐标归一化设置NDC时,DirectX平台Z的特殊二、在图形计算器中,看一下Z值反转前后变化1、在图形计算器创建两个变量 n 和 f 分别 控制近裁剪面 和 远裁剪面2、带入公式得到齐次裁剪空间下Z值3、进行透视除法4、用 1 - Z 得出Z值反…

docker小白第十一天

docker小白第十一天 dockerfile分析 Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。即构建新镜像时会用到。 构建三步骤:编写dockerfile文件-docker build命令构建镜像-docker run镜像 运行容器实例。即一…

TB-C/C++

1.main函数之前之后执行的代码 设置栈指针初始化静态变量和全局变量(.data段内容,已初始化且不为0)赋初值(.bss段内容,未初始化的全局变量和静态变量)传参(argc,argv)atexit() 在…

C++-类和对象(2)

1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下 6 个默认成员 函数。 默认成员函数:用户没有显式实现,编译…

13个干货议题!拓数派携众多大咖共话国产数据库未来趋势

1月6日下午,由拓数派、PolarDB 开源社区、PostgreSQL 中文社区共同主办的《国产数据库共话未来趋势》技术沙龙将在上海举行。 本次沙龙现场大咖云集,来自拓数派、阿里云、平安科技等公司的众多行业技术大咖将与大家面对面交流,与广大技术爱好…

MySQL中的六种日志你都懂么?不懂!那就必须看看

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

【Linux】深度解剖环境变量

> 作者简介:დ旧言~,目前大二,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:熟悉并掌握Linux的环境变量。 > 毒鸡汤&#x…

基于SSM的滁艺咖啡在线销售系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

基于果蝇算法优化的Elman神经网络数据预测 - 附代码

基于果蝇算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于果蝇算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于果蝇优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要:针…

CSS 中间位置翻转动画

<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ rotate-hor-center: isAnimating }"><!-- 元素内容 -->…

Unity之ShaderGraph如何实现瓶装水效果

前言 有一个场景在做效果时,有一个水瓶放到桌子上的设定,但是模型只做了个水瓶,里面是空的,所以我就想办法,如何做出来瓶中液体的效果,最好是能跟随瓶子有液体流动的效果。 如下图所示: 水面实现 水面效果 液体颜色设置 因为液体有边缘颜色和内里面颜色,所以要分开…

【vue】Easy Player实现视频播放:

文章目录 一、效果&#xff1a;二、文档&#xff1a;三、实现&#xff1a;【1】安装插件&#xff1a;【2】引入js文件&#xff1a;【3】使用&#xff1a; 四、方法&#xff1a; 一、效果&#xff1a; 二、文档&#xff1a; GitCode - EasyPlayer.js npm-easydarwin/easyplayer…

FairGuard游戏加固产品常见问题解答

针对日常对接中&#xff0c;各位用户对FairGuard游戏加固方案在安全性、稳定性、易用性、接入流程等方面的关注&#xff0c;我们梳理了相关问题与解答&#xff0c;希望可以让您对产品有一个初步的认知与认可。 Q1:FairGuard游戏加固产品都有哪些功能? A&#xff1a;FairGuar…

贝叶斯推断:细谈贝叶斯变分和贝叶斯网络

1. 贝叶斯推断 统计推断这件事大家并不陌生&#xff0c;如果有一些采样数据&#xff0c;我们就可以去建立模型&#xff0c;建立模型之后&#xff0c;我们通过对这个模型的分析会得到一些结论&#xff0c;不管我们得到的结论是什么样的结论&#xff0c;我们都可以称之为是某种推…

Linux 485驱动通信异常

背景 前段时间接到一个项目&#xff0c;要求用主控用485和MCU通信。将代码调试好之后&#xff0c;验证没问题就发给测试了。测试测的也没问题。 但是&#xff0c;到设备量产时&#xff0c;发现有几台设备功能异常。将设备拿回来排查&#xff0c;发现是485通信有问题&#xff…

电脑提示找不到msvcp140.dll的修复方法,亲测有效的两种方法

msvcp140.dll是Microsoft Visual C 2015 Redistributable的一个组件&#xff0c;它包含了许多C运行时库文件。这些库文件为运行基于C编写的应用程序提供了必要的支持。当系统中缺少某个或某些库文件时&#xff0c;就可能出现msvcp140.dll丢失的错误。 一、以下是msvcp140.dll文…

qt .pro工程转vs工程

1. 新建vs空项目或者Qt Console Application&#xff1b; 2. 扩展 -》Qt VS Tools -》Open Qt Project (.pro) 打开对应的pro文件即可将.pro工程转成vs工程&#xff1b; 注意&#xff1a; &#xff08;1&#xff09;转成的vs工程在pro文件同级目录下&#xff0c;双击打开vcx…