【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 界面,点击刚才新添加的数据,即可在右侧窗口进行数据的查看。
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌DeepMind最新研究:对抗性攻击对人类也有效,人类和AI都会把花瓶认成猫!

人类的神经网络(大脑)和人工神经网络(ANN)的关系是什么? 有位老师曾经这样比喻:就像是老鼠和米老鼠的关系。 现实中的神经网络功能强大,但与人类的感知、学习和理解方式完全不同。 比如ANN表…

上海亚商投顾:创业板指再创调整新低 全市场超4700只个股下跌

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 三大指数1月5日集体调整,沪指午后跌超1%,创业板指一度跌逾2%,尾盘跌幅有所…

.net 开源混淆器 ConfuserEx

官网:ConfuserEx 下载地址:Releases yck1509/ConfuserEx GitHub 使用参考:https://www.cnblogs.com/zhangzhi19861216/p/3937434.html

Windows10安全中心图标的关闭方法

在Windows10​​​​​​​电脑中,用户可以选择关闭不必要的应用图标。现在,用户想要关掉安全中心图标,但不知道有什么方法能够成功关掉安全中心图标?下面小编给用户们带来Windows10系统安全中心图标的关闭方法步骤,帮…

c语言-库函数qsort()初识

目录 前言一、qsort()的介绍及使用1.1 qsort()的介绍1.2 qsort()的使用1.2.1 使用qsort|()对整型数组按照升序排序1.2.2 使用qsort()对整型数组按照降序排序1.2.3 使用qsort()对结构体数组数据进行排序 二、利用冒泡排序模拟实现对任何数据进行排序2.1 冒泡排序2.2 模仿qsort()…

【REST2SQL】04 REST2SQL第一版Oracle版实现

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 REST2SQL的第一个版本,只支持Oracle数据库,以后会逐步加入其它数据看的支持。 项目文件组织如下: 1 REST2SQL为项目主目录 …

leetcode动态规划问题总结 Python

目录 一、基础理论 二、例题 1. 青蛙跳台阶 2. 解密数字 3. 最长不含重复字符的子字符串 4. 连续子数组的最大和 5. 最长递增子序列 6. 最长回文字符串 7. 机器人路径条数 8. 礼物的最大价值 一、基础理论 动态规划其实是一种空间换时间的基于历史数据的递推算法&…

linux常见操作,and一些练习题加线上练习网站,无须配置linux.持续更新中。。。。

文章目录 cd命令相对路径特殊的路径表达符和cd一起使用pwdmore 查看文件内容支持翻页小技巧clear用户,用户权限 and 用户的切换如何创建用户 ls和通配符的使用利用通配符 *grep 过滤管道符 |如何学习Linux在线练习网站 https://www.lanqiao.cn/courses/1 cd命令 cd…

Basal前端梳理

Basalt前端逻辑梳理 TBB安装参考 https://zhuanlan.zhihu.com/p/480823197 代码注释参考 https://blog.csdn.net/qq_39266065/article/details/106175701#t7 光流追踪参考 https://blog.csdn.net/weixin_41738773/article/details/130282527 VI Odometry KLT tracking 原理 …

第九届中西部外语翻译大赛初赛阶段已经圆满结束

2023年第九届中西部外语翻译大赛(以下简称竞赛),于2023年12月30日至31日举行。历届中西部外语翻译大赛均由中西部翻译协会共同体指导发起,各省市译协共建学术指导委员会,获奖证书盖章单位由四川省翻译协会、广西翻译协…

c# 学习笔记 - 集合(List)

文章目录 1.概论1.1 List 特性1.2 .NET API 2. 基本使用2.1 样例 3. 添加类操作3.1 Insert() 4. 删除类操作4.1 Remove()4.2 RemoveAt() 5. 查找类操作6. 排序类操作6.1 Sort(Comparsion<T>) 7. 其他类操作 1.概论 1.1 List 特性 可通过索引访问的强类型列表&#xff0c…

STM32学习笔记二十二:WS2812制作像素游戏屏-飞行射击游戏(12)总结

至此&#xff0c;飞行射击游戏已经基本实现该有的功能&#xff0c;已经比较接近早期的商业游戏了。 如果采用脚本&#xff0c;可以完成关卡游戏&#xff0c;如果不用&#xff0c;也可以做成无限挑战游戏。 我们汇总一下制作的过程&#xff1a; 1、建模UML 2、主循环处理过程…

设计模式篇章(1)——理论基础

设计模式&#xff1a;在软件开发中会面临许多不断重复发生的问题&#xff0c;这些问题可能是代码冗余、反复修改旧代码、重写以前的代码、在旧代码上不断堆新的代码&#xff08;俗称屎山&#xff09;等难以扩展、不好维护的问题。因此1990年有四位大佬&#xff08;GoF组合&…

3的幂00

题目链接 3的幂 题目描述 注意点 无 解答思路 不断除以3直到除数或余数为0为止&#xff0c;判断除完后的数字是否为1 代码 class Solution {public boolean isPowerOfThree(int n) {while (n / 3 ! 0) {if (n % 3 ! 0) {return false;}n n / 3;}return n 1;} }关键点 …

对称加密技术有哪些类型

对称加密是一种加密方式&#xff0c;其加密和解密所使用的密钥是相同的。这种方式的特点是速度快&#xff0c;效率高&#xff0c;适合用于大量数据的加密和解密。对称加密算法有很多种&#xff0c;常见的有AES、DES、3DES等。 对称加密的应用场景非常广泛&#xff0c;下面是一些…

Linux下配置静态ip地址

问题&#xff1a;虚拟机重启后ip地址动态更新&#xff0c;导致连shell十分麻烦 解决&#xff1a; 1. 进入配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33 2.1 修改配置 BOOTPROTOstatic ONBOOTyes2.2 新增配置 #ip地址(自定义) IPADDR192.168.149.131 #子网掩码 …

2023年12月 C/C++(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:移动路线 桌子上有一个m行n列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为(1,1),则右上角方格的坐标为(m,n)。 小明是个调皮的孩子,一天他捉来一只蚂蚁,不小心把蚂蚁…

一款开源的MES系统

随着工业4.0的快速发展&#xff0c;制造执行系统&#xff08;MES&#xff09;成为了智能制造的核心。今天&#xff0c;将为大家推荐一款开源的MES系统——iMES工厂管家。 什么是iMES工厂管家 iMES工厂管家是一款专为中小型制造企业打造的开源MES系统。它具备高度的可定制性和灵…

[论文笔记] Qwen-7B tokenizer

https://github.com/QwenLM/Qwen/blob/main/tokenization_note_zh.md#%E6%99%AE%E9%80%9Atoken https://huggingface.co/Qwen/Qwen-7B 一、Qwen-7B 介绍 Qwen-7B采用UTF-8字节级别的BPE tokenization方式,并依赖tiktoken这一高效的软件包执行分词。 Qwen-7B中有两类token,即…

Selenium教程:级联选择+日期框+弹框,组件的示例练习

1.Cascader级联选择&#xff0c;通常指的是在多个层级或类别中进行选择&#xff0c;每个层级或类别的选择依赖于前一个层级或类别的选择结果。常用于省市区、公司级层、事务分类等。 网页元素结构 实现代码 # Author : 小红牛 # 微信公众号&#xff1a;WdPython from time i…