开源跨平台三维模型轻量化软件osgGISPlugins-1、简介

下一篇文章:开源跨平台三维模型轻量化软件osgGISPlugins-2、如何编译

1、仓库地址

github地址:https://github.com/newpeople123/osgGISPlugins
gitee地址:https://gitee.com/wtyhz/osg-gis-plugins

2、项目简介

osg引擎的gis插件,能够读取、显示3dmax导出的具有PBR材质的fbx文件、导出gltf/glb/b3dm/i3dm文件、读取/导出ktx2格式图片、读取/导出webp格式图片。同时提供了如下子工具:

  • b3dm转gltf/glb
  • 3D模型转3dtiles
  • 3D模型简化
  • 多张纹理打包成一个纹理图集

3、主要特点

1)使得osg引擎可以读取带有pbr材质的fbx文件;
2)可以从osg引擎中导出具有KHR_materials_unlit、KHR_materials_pbrSpecularGlossiness、KHR_draco_mesh_compression、KHR_mesh_quantization、EXT_meshopt_compression、KHR_texture_basisu、KHR_texture_transform、EXT_texture_webp等扩展的gltf/glb/b3dm/i3dm;
3)能够将手工建模模型转换为3dtiles的免费、开源软件

4、插件简介

(1)osgdb_fbx

在osg的fbx的插件的基础上,参考了FBX2glTF项目,使得能够读取3dmax导出的带有PBR材质的FBX文件(原本的插件读取带有PBR材质的FBX文件时,材质会丢失,读到引擎里显示为白模),并能在osg引擎中正常渲染。

(2)osgdb_gltf

支持导出gltf/glb/b3dm/i3dm,暂不支持读取。

在osgEarth的gltf的插件基础上,增加了若干gltf扩展:

1、KHR_materials_unlit

2、KHR_materials_pbrSpecularGlossiness

3、KHR_draco_mesh_compression

4、KHR_mesh_quantization

5、EXT_meshopt_compression

6、KHR_texture_basisu

7、KHR_texture_transform

8、EXT_texture_webp

通过合并材质、合并几何图元等方式优化gltf性能,减少drawcall的调用次数。

(3)osgdb_webp

和osgEarth的webp插件一样。

(4)osgdb_ktx

在王锐大神的osgVerse的ktx插件基础上进行了小改动,支持导出ktx2格式的纹理图片,支持Mipmaps。

5、工具简介

(1)b3dm2gltf

将b3dm文件转换为gltf/glb文件。

用法说明

命令行格式

b3dm2gltf.exe -i <path> -o <path>

示例命令

b3dm2gltf.exe -i D:\test.b3dm -o D:\output.glb

(2)model23dtiles

1、将3D模型转换为3dtiles 1.0;
2、支持四叉树和八叉树结构的3dtiles;
3、支持webp/ktx2纹理压缩;
4、支持draco和meshoptimizer压缩及顶点量化;
5、支持纹理合并(减少drawcall次数);
6、导出的3dtiles会带有模型的用户属性;
7、导出的3dtiles是经过网格合并的;
8、支持纹理图集;

这里的3D模型指的是fbx、obj、3ds等osg能够读取的三维模型,但是不包括倾斜摄影模型,倾斜摄影模型目前建议使用fanvanzh/3dtiles。

支持格式:3dc、3ds、dae、dxf、fbx、ive、obj、osg、osgb、flt、stl等。

用法说明

命令行格式

model23dtiles -i <path> -tf <jpg/png/webp/ktx2> -vf <draco/meshopt/quantize/quantize_meshopt> -t <quad/oc> -ratio <Number> -o <DIR> -lat <Number> -lng <Number> -height <Number> -comporessLevel <low/medium/high> -translationX <Number> -translationY <Number> -translationZ <Number> -upAxis <X/Y/Z> -maxTextureWidth <Number> -maxTextureHeight <Number> -maxTextureAtlasWidth <Number> -maxTextureAtlasHeight <Number>

示例命令
model23dtiles.exe -i D:\test.fbx -o D:\output -lat 30 -lng 116 -height 100
# 输出使用ktx2进行纹理压缩和使用draco进行顶点压缩的3dtiles
model23dtiles.exe -i D:\test.fbx -tf ktx2 -vf draco -o D:\output -lat 30 -lng 116 -height 100
# 设置3dtiles的节点的简化比例为0.6
model23dtiles.exe -i D:\test.fbx -ratio 0.6 -o D:\output -lat 30 -lng 116 -height 100
# 设置3dtiles的树结构为四叉树
model23dtiles.exe -i D:\test.fbx -t quad -o D:\output -lat 30 -lng 116 -height 100
参数说明

-tf 纹理压缩格式,可选值有:png、jpg、webp、ktx2,默认值为:jpg。
-vf 顶点压缩格式,可选的值有:draco、meshopt、quantize、quantize_meshopt,无默认值,即不对顶点进行压缩。
-comporessLevel draco压缩级别/顶点量化级别,可选的值为:low、medium、high,默认值为:medium,仅当vf的值为quantize、quantize_meshopt和draco时生效。
-t 3dtiles的组织结构,可以为四叉树或八叉树,可选的值有:quad、oc,默认值为:quad。
-ratio 3dtiles中间节点的简化比例,默认值为:0.5。
-lat 纬度,默认30。
-lng 经度,默认116。
-height 高度,默认300。
-translationX 重设模型原点位置的x坐标,默认值为0。
-translationY 重设模型原点位置的y坐标,默认值为0。
-translationZ 重设模型原点位置的z坐标,默认值为0。
-upAxis 模型向上方向,可选的只有:X、Y、Z,需大写,默认值为:Y。
-maxTextureWidth 单个纹理的最大宽度,默认值为256,需为2的幂次。
-maxTextureHeight 单个纹理的最大高度,默认值为256,需为2的幂次。
-maxTextureAtlasWidth 纹理图集的最大宽度,默认值为2048,需为2的幂次,且值要大于maxTextureWidth的值,否则将不会构建纹理图集。
-maxTextureAtlasHeight 纹理图集的最大高度,默认值为2048,需为2的幂次,且值要大于maxTextureHeight的值,否则将不会构建纹理图集。

(3)simplifier

对3D模型进行网格简化操作,同时会删除简化后的空闲顶点。

用法说明

命令行格式

simplifier.exe -i <path> -o <path> -ratio <Number> -aggressive

示例命令

simplifier.exe -i C:\input\test.fbx -o C:\output\test_05.fbx -ratio 0.1

参数说明

-i 输入3D模型。

-o 简化后的3D模型。

-ratio 简化比例。

-aggressive 更激进的简化方式,不保留拓扑。

(4)texturepacker

将多张纹理图片打包成一个纹理图集,并输出一个json文件指示原始纹理图片在纹理图集中的位置。

用法说明

命令行格式

texturepacker.exe -i <path> -o <path> -width <Number> -height <Number>

示例命令

texturepacker.exe -i C:\input -o C:\output\atlas.png -width 2048 -height 2048

参数说明

-i 输入待打包纹理图片或其所在文件夹。

-o 输出纹理图集。

-width 纹理图集最大宽度。

-height 纹理图集最大高度。

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

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

相关文章

在线教育的未来:SpringBoot技术实现

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理微服务在线教育系统的相关信息成为必然。开…

Hadoop大数据入门——Hive-SQL语法大全

Hive SQL 语法大全 基于语法描述说明 CREATE DATABASE [IF NOT EXISTS] db_name [LOCATION] path; SELECT expr, ... FROM tbl ORDER BY col_name [ASC | DESC] (A | B | C)如上语法&#xff0c;在语法描述中出现&#xff1a; []&#xff0c;表示可选&#xff0c;如上[LOCATI…

基于深度学习的乳腺癌分类识别与诊断系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 乳腺癌是全球最常见的癌症之一&#xff0c;早期诊断对于治疗效果至关重要。近年来&#xff0c;深度学习技术在医学图像分析领域取得了显著进展&#xff0c;能够从大量的医学影像数据中自动学习和提…

【Android 14源码分析】WMS-窗口显示-第一步:addWindow

忽然有一天&#xff0c;我想要做一件事&#xff1a;去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

网络安全概述:从认知到实践

一、定义 网络安全&#xff0c;即致力于保护网络系统所涵盖的硬件、软件以及各类数据&#xff0c;切实保障其免遭破坏、泄露或者篡改等不良情形的发生。 二、重要性 个人层面&#xff1a;着重于守护个人隐私以及财产安全&#xff0c;为个人在网络世界中的各项活动提供坚实的保…

Redis篇(Redis原理 - 数据结构)(持续更新迭代)

目录 一、动态字符串 二、intset 三、Dict 1. 简介 2. Dict的扩容 3. Dict的rehash 4. 知识小结 四、ZipList 1. 简介 2. ZipListEntry 3. Encoding编码 五、ZipList的连锁更新问题 六、QuickList 七、SkipList 八、RedisObject 1. 什么是 redisObject 2. Redi…

使用JavaScript写一个网页端的四则运算器

目录 style(内联样式表部分) body部分 html script 总的代码 网页演示 style(内联样式表部分) <style>body {font-family: Arial, sans-serif;display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #f0f0f0;}.calculator {…

Python开发环境配置(mac M2)

1. 前言 作为一名程序员&#xff0c;工作中需要使用Python进行编程&#xff0c;甚至因为项目需要还得是不同版本的Python如何手动管理多个版本的Python&#xff0c;如何给Pycharm&#xff08;IDE&#xff09;配置对应的interpreter等&#xff0c;都成为一个 “不熟练工” 的难…

使用百度文心智能体创建多风格表情包设计助手

文章目录 一、智能定制&#xff0c;个性飞扬二、多元风格&#xff0c;创意无限 百度文心智能体平台为你开启。百度文心智能体平台&#xff0c;创建属于自己的智能体应用。百度文心智能体平台是百度旗下的智能AI平台&#xff0c;集成了先进的自然语言处理技术和人工智能技术&…

基于SpringBoot实现QQ邮箱发送短信功能 | 免费短信服务

开发学习过程中有个短信发送功能&#xff0c;阿里云腾讯云等等都要money&#xff0c;听说qq邮箱可以实现免费发送邮箱的功能&#xff08;短信发送的平替&#xff09;&#xff0c;就用这个来实现&#xff01;&#xff01;&#xff01;【找了好多好多方法才成功的啊啊啊啊&#x…

【Linux】进程第三弹(虚拟地址空间)

目录 现象 底层原因 数据不发生修改 数据修改 小总结 地址空间本质 为什么要有地址空间 现象 来看代码&#xff1a; #include <stdio.h> #include <unistd.h> #include <sys/types.h>int val 50;int main() {printf("father process is running…

标准正态分布的数据 tensorflow 实现正态分布图,python 编程,数据分析和人工智能

import tensorflow as tf import matplotlib.pyplot as plt # 设置随机种子以获得可重复的结果 tf.random.set_seed(42) # 生成正态分布的数据 # mean0 和 stddev1 表示生成标准正态分布的数据 # shape(1000,) 表示生成1000个数据点 data tf.random.normal(mean0, stddev1, …

【python】追加写入excel

输出文件运行前&#xff08;有两张表&#xff0c;“表1”和“Sheet1”&#xff09;&#xff1a; 目录 一&#xff1a;写入单表&#xff08;删除所有旧工作表&#xff0c;写入新表&#xff09;二&#xff1a;写入多表&#xff08;删除所有旧工作表&#xff0c;写入新表&#x…

HTML5实现唐朝服饰网站模板源码

文章目录 1.设计来源1.1 网站首页-界面效果1.2 唐装演变-界面效果1.3 唐装配色-界面效果1.4 唐装花纹-界面效果1.5 唐装文化-界面效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcL…

[C++][第三方库][Websocket]详细讲解

目录 1.Websocket 协议1.介绍2.原理简介 2.Websocketpp1.介绍2.安装 3.常用接口4.使用 1.Websocket 协议 1.介绍 WebSocket是从HTML5开始支持的一种网页端和服务端保持长连接的消息推送机制产生原因&#xff1a; 传统的web程序都是属于"一问一答"的形式 即客户端给…

Python 语言学习——应用1.2 数字图像处理(第二节,变换)

目录 1.基础知识 1.图像几何变换概念 2.图像几何变换方式 3.插值运算 4.几何变换步骤 2.各类变换 1.位置变换 2.形状变换 3.代数运算 3.实战演练 1.基础知识 1.图像几何变换概念 在图像处理过程中&#xff0c;为了观测需要&#xff0c;常常需要对 图像进行几何变换&am…

如何创建免费版本的ABP分离模块?

由于ABP最近官方大改革&#xff0c;我们打开ABP.IO 官方会发现通过Cli创建模板的时候不能创建Trered类型的了 就是创建一个分层的解决方案&#xff0c;其中Web和Http API层在物理上是分开的。如果不勾选&#xff0c;则创建一个分层的解决方案&#xff0c;它不那么复杂&#xf…

PasteForm最佳CRUD实践,实际案例PasteTemplate详解之3000问(三)

作为“贴代码”力推的一个CRUD实践项目PasteTemplate,在对现有的3个项目进行实战后效果非常舒服&#xff01;下面就针对PasteForm为啥我愿称为最佳CRUD做一些回答: 哪里可以下载这个PasteForm的项目案例 目前“贴代码”对外使用PasteForm的项目有"贴Builder(PasteSpide…

【Android 13源码分析】Activity生命周期之onCreate,onStart,onResume-2

忽然有一天&#xff0c;我想要做一件事&#xff1a;去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…