Code Monkey home page Code Monkey logo

3dtiles's Introduction

English | 简体中文

Introduction

glTF status Action status

Tools for 3D-Tiles convertion.

This is a RUST language project with cpp lib to handle osgb data.

Tools provided are as follow:

  • Osgb(OpenSceneGraph Binary) to 3D-Tiles: convert huge of osgb file to 3D-Tiles.

  • Esri Shapefile to 3D-Tiles: convert shapefile to 3D-Tiles.

  • Fbx to 3D-Tiles: convert fbx file to 3D-Tiles, include auto_lod\texture convertion etc.

You may intereted in:

Usage

① Command Line

3dtile.exe [FLAGS] [OPTIONS] --format <FORMAT> --input <PATH> --output <DIR>

② Examples

# from osgb dataset
3dtile.exe -f osgb -i E:\osgb_path -o E:\out_path
3dtile.exe -f osgb -i E:\osgb_path -o E:\out_path -c "{\"offset\": 0}"
# use pbr-texture
3dtile.exe -f osgb -i E:\osgb_path -o E:\out_path -c "{\"pbr\": true}"

# from single shp file
3dtile.exe -f shape -i E:\Data\aa.shp -o E:\Data\aa --height height

# from single osgb file to glb file
3dtile.exe -f gltf -i E:\Data\TT\001.osgb -o E:\Data\TT\001.glb

# from single obj file to glb file
3dtile.exe -f gltf -i E:\Data\TT\001.obj -o E:\Data\TT\001.glb

# convert single b3dm file to glb file
3dtile.exe -f b3dm -i E:\Data\aa.b3dm -o E:\Data\aa.glb

③ Paramters

To Translate.

Data Requirements & Announcement

To Translate.


English | 简体中文

简介

3D-Tile 转换工具集,高效快速的 3D-Tiles 生产工具,极度节省你的处理时间。

这是一个混合了 c 和 c++ 库(主要是 osgb)的 Rust 项目。

提供了如下的子工具:

  • Osgb(OpenSceneGraph Binary)3D-Tiles

  • Esri Shapefile3D-Tiles

  • Fbx3D-Tiles

  • ...

用法说明

① 命令行格式

3dtile.exe [FLAGS] [OPTIONS] --format <FORMAT> --input <PATH> --output <DIR>

② 示例命令

# from osgb dataset
3dtile.exe -f osgb -i E:\osgb_path -o E:\out_path
3dtile.exe -f osgb -i E:\osgb_path -o E:\out_path -c "{\"offset\": 0}"
# use pbr-texture
3dtile.exe -f osgb -i E:\osgb_path -o E:\out_path -c "{\"pbr\": true}"

# from single shp file
3dtile.exe -f shape -i E:\Data\aa.shp -o E:\Data\aa --height height

# from single osgb file to glb file
3dtile.exe -f gltf -i E:\Data\TT\001.osgb -o E:\Data\TT\001.glb

# from single obj file to glb file
3dtile.exe -f gltf -i E:\Data\TT\001.obj -o E:\Data\TT\001.glb

# convert single b3dm file to glb file
3dtile.exe -f b3dm -i E:\Data\aa.b3dm -o E:\Data\aa.glb

③ 参数说明

  • -c, --config <JSON> 在命令行传入 json 配置的字符串,json 内容为选配,可部分实现

    json 示例:

    {
      "x": 120,
      "y": 30,
      "offset": 0 , // 模型最低面地面距离
      "max_lvl" : 20 // 处理切片模型到20级停止
    }
  • -f, --format <FORMAT> 输入数据格式。

    FORMAT 可选:osgb, shape, gltf, b3dm

    osgb 为倾斜摄影格式数据, shape 为 Shapefile 面数据, gltf 为单一通用模型转gltf, b3dm 为单个3dtile二进制数据转gltf

  • -i, --input <PATH> 输入数据的目录,osgb数据截止到 <DIR>/Data 目录的上一级,其他格式具体到文件名。

  • -o, --output <DIR> 输出目录。输出的数据文件位于 <DIR>/Data 目录。

  • --height 高度字段。指定shapefile中的高度属性字段,此项为转换 shp 时的必须参数。

数据要求及说明

① 倾斜摄影数据

倾斜摄影数据仅支持 smart3d 格式的 osgb 组织方式:

  • 数据目录必须有一个 “Data” 目录的总入口;
  • “Data” 目录同级放置一个 metadata.xml 文件用来记录模型的位置信息;
  • 每个瓦片目录下,必须有个和目录名同名的 osgb 文件,否则无法识别根节点;

正确的目录结构示意:

- Your-data-folder
  ├ metadata.xml
  └ Data\Tile_000_000\Tile_000_000.osgb

② Shapefile

目前仅支持 Shapefile 的面数据,可用于建筑物轮廓批量生成 3D-Tiles.

Shapefile 中需要有字段来表示高度信息。

③ 通用模型转 glTF:

支持 osg、osgb、obj、fbx、3ds 等单一通用模型数据转为 gltf、glb 格式。

转出格式为 2.0 的gltf,可在以下网址验证查看: https://pissang.github.io/clay-viewer/editor/

④ B3dm 单文件转 glb

支持将 b3dm 单个文件转成 glb 格式,便于调试程序和测试数据


Who use / Who star

  • NASA JPL (gkjohnson)

  • AnalyticalGraphicsInc (kring)

  • NVIDIA (Vinjn Zhang)

  • Ubisoft (Cmdu76)

  • Baidu (hinikai)

  • Esri (suny323)

  • Geostar (hekaikai\shitao1988)

  • MapTalks (brucin\fuzhenn\axmand)

  • Alibaba (luxueyan)

  • Tencent (NichoZhang)

  • Data Cloud Co- Ltd (liujin834)

  • Tsinghua University (DeZhao-Zhang)

  • Peking University (CHRIS-WiNG\Weizhen-Fang)

  • Wuhan University (chenguanzhou)

  • Guangzhou University (LreeLenn)

  • Hopkins University (AndrewAnnex)

  • **铁道科学设计研究院

  • 上海华东设计研究院

  • 江苏省测绘研究所

  • 宁波市测绘设计研究院

  • 合肥火星科技有限公司 (muyao1987)

  • 北京西部数据科技 (vtxf\elfc2000)

About author

作者不是专业搞三维GIS的,因偶尔有个需求要展示 3D-Tiles,一时找不到工具,就写了个轮子,代码多有纰漏,仅供参考。

3dtiles's People

Contributors

fanvanzh avatar fanzhenhua0401 avatar gitgaoxing avatar ikangxu avatar longhuan2018 avatar nicos-fan avatar onsummer avatar pka avatar steelwall2014 avatar super2013 avatar wblong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

3dtiles's Issues

停止工作

你好:
当使用3dtiles.exe,osgb->3dtitles,,exe会停止工作
2018-03-12_135044
麻烦你帮我分析下,谢谢!

怎么用vs调试?

你好:
十分感谢您能提供代码,我看您代码既有c++又有rust,rust这一块没用过,我看你提供的编译方式是通过命令行,是否可以用vs编译整个项目进行调试?
因为之前用工具处理大量的模型时遇到无法转换的问题,想跟代码调试一下,能方便告诉一下这个流程怎么做吗?
谢谢!

问下transfrom矩阵和4*4矩阵的区别

我自己研究了矩阵旋转和缩放的原理,自己写了个可视化工具,缩放的完成了,但是旋转一直不得要领,网上找了些矩阵旋转的资料,自己也翻了翻线代的书,旋转达到了,但是每次都会翘起来一部分,不知道是什么导致的,能不能贴一个旋转的公式?我完成工具后上传上来,之后的人也都方便了。如图,顺时针旋转的需求达到了,但是翘起来了。
image
下面是我自己的公式
image
真心求教,33的很好弄,但是44的矩阵,而且不确定transfrom的排列方式。就真的对我来说很难。希望能贴一个公式

CESIUM1.50无法加载

用最新的预编译exe转换osgb为3Dtiles,CESIUM1.45正常加载,1.50加载失败,crash;6月下载的exe转换的没有问题,请教这会是什么原因?谢谢!

fbx

hi, how do I convert fbx format to 3dtiles?

thanks!
ph

预编译版本的-c参数不能使用

预编译版本的-c参数不能使用

下面是我手动输入-c参数 带不带转义都没成功
1.
-c {"x": 120,"y": 30,"offset": 0 , "ma
x_lvl" : 20 }
所在位置 行:1 字符: 57

  • .\3dtile.exe -f osgb -i ..\dayanta -o ..\test\02 -c {"x": 120,"y": 30 ...
  •                                                     ~
    

表达式或语句中包含意外的标记“:”。
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken

2.-c "{"x": 120,"y": 30,"offset": 0 , "m
ax_lvl" : 20 }"
error: Found argument 'x: 120,y: 30,offset: 0 , max_lvl : 20 }' which wasn't expected, or isn't valid in this context

3.-c "{"x": 120,"y": 30,"offset":
0 , "max_lvl" : 20 }"
error: Found argument 'x: 120,\y: 30,\offset: 0 , \max_lvl\ : 20 }' which wasn't expected, or isn't valid in this context

  1. -c "{"offset": 0}"
    error: Found argument 'offset: 0}' which wasn't expected, or isn't valid in this context

请问transform与box间有什么关系,如何计算tileset.json坐标?

你好,请问transform与box间有什么关系,如何计算tileset.json坐标?

我在https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification#tile-transform中找到transform叶子节点与根结点计算公式:
transform

tileset.json内容:
{"asset": {"version": "1.0"},
"geometricError": 1319.96566351801,
"root": {
"boundingVolume": {
"box": [
1.04773789644241e-9, -0.504322739783674, -0.616247923113406,
5641.31597575976, 0, 0, 0,
6311.33777747117, 0, 0, 0, 25.8459681412205]
},
"children": [
{
"boundingVolume": {
"box": [
2797.89169446776, -3133.07355675142, 12.5403080463512,
2843.42428129305, 0, 0,
0, 3180.84259900837, 0,
0, 0, 15.1854221645246 ]},
"content": {"url": "tileset_1_1_0.json"},
"geometricError": 164.995707939751,
"refine": "REPLACE"
}]
"geometricError": 329.991415879503,
"refine": "REPLACE",
"transform": [
-0.895897517499185, -0.444260777177997, 0, 0,
0.283927872032897, -0.572569735547873, 0.769122136866122, 0,
-0.341690798268945, 0.689054613072027, 0.639101821764334, 0,
-2176357.29229105, 4388848.16197401, 4070680.03399528, 1
]
}
}

tileset_1_1_0.json为:
{"asset": {"version": "1.0"},
"root": {
"boundingVolume": {
"box": [
2.3283064365387e-10, -0.113443724578246, 3.57330994307995,
2843.42474428168, 0, 0,
0, 3179.80389127671, 0,
0, 0, 15.5025072079152]
},
"children": [],
"content": {"url": "1/1/0.b3dm"},
"geometricError": 164.995707939751,
"refine": "REPLACE",
"transform": [
0.999999837172188, 0.00036471139259886, -0.000438909100338114, 0,
-0.000364495423816037, 0.999999812521052, 0.000492037546955482, 0,
0.000439088469750899, -0.000491877486479553, 0.999999782628903, 0,
2796.72426339705, -3132.95792494155, 8.96653714217246, 1]
}
}
请问,tileset_1_1_0.json中的box,是如何计算为tileset.json中children里的box的?

转出的3dtiles模型发黑

我用您的这个工具把osgb转成3dtiles格式之后,用cesium打开发现模型整体都发暗发黑,请问这个有没有办法解决?

shape

shape数据可以转化吗?目前测试来看,有包围盒,但是模型不能显示出来,这是为什么呢 ?

Cesium加载osbg转换后的文件坐标丢失问题

您好!我使用工具将OSGB格式的倾斜数据转换成了3d-tiles并成功在Cesium中加载,但是加载的3d-tiles每次都会在坐标经纬度 (0,0)生成。原始OSGB倾斜数据我使用LocaSpaceViewer查看过,坐标没有问题,坐标系是EPSG:32648。请问是我原始的倾斜数据与Cesium不匹配还是转换过程中导致的坐标丢失?

运行报错

您好,vs2015运行报错,请问您是什么环境,能否出个工程

image

Build Error

build的时候,总是不成功,这是什么原因?
image

想问下 必须是有data目录才能转换么

我现在的问题是:我这边一个区域由好几个osgb文件组成,我通过修改s3c文件将几个osgb放到了一起,但是每个data文件都换成了 data1, data2,data3 有好几个文件夹组成,这样的数据能够转换么 或者每部分转换完了能放到一起发成一个服务么

显示有问题

有时候很多破洞,有些地方还会闪烁,比较严重的问题就是我切换相机角度 不显示模型了

vs2015编译问题

大神,我用git clone download 的代码,用您说的vs 调试指南,出现:
om rl7o_k7 mo2wxu i_ u
如果我用网页版的下载,用vs调试指南的步骤,出现:
qq 20181116121432

再次求问:转换出来b3dm的放大问题,跪谢~

这个自带的matrix.xlsx很好用,可以在里面调整位置和高度,但是对应的长度和宽度,我试着调整了,发现在调整这两个属性之后并没有什么变化,
第一个问题问下这两个属性是做什么用的?
第二个问题,如果我想放大模型应该怎么做?是在osgb转换到b3dm的过程中入手 还是在转换完成之后再做调整?如果是转换完成了之后,我应该怎么做? 大大之前说cesium上的矩阵缩放,我试着在网上找了,没有看到对应的实例,不知道如何操作。真心求问模型如何放大。提前拜谢~
image

关于geometricError的问题

成功转换后,geometricError并不是按层级递减,请问这是正常情况吗?用cesium显示也会在某个级别模型显示异常。
tileset
image

贴图纹理

请问支持超图导出的osgb数据吗,尝试了以下转换后没有贴图呢。
image

执行的时候直接弹出错误框 能看下么

问题签名:
问题事件名称: APPCRASH
应用程序名: 3dtile.exe
应用程序版本: 0.0.0.0
应用程序时间戳: 5b36edea
故障模块名称: osg130-osg.dll
故障模块版本: 3.4.0.130
故障模块时间戳: 5a2b8569
异常代码: c0000005
异常偏移: 0000000000099b49
OS 版本: 6.1.7601.2.1.0.274.10
区域设置 ID: 2052
其他信息 1: 7bc5
其他信息 2: 7bc563e6e8d4a0ed169efefcbb9eb870
其他信息 3: d976
其他信息 4: d97655671236aa81456aa559c949ce78

转换错误

使用windows预编译版本,1.5G时,数据转换正常,cesium显示正常,换个数据,数据量60G,数据转换出现错误,请问这是什么原因?
img20180531101737

fbx-->3dtiles

请问这个工程是不包含从fbx转3dtiles的代码嘛?

转换成功但是不能显示在cesium中

1、是处理完了只有一个总的tileset.json的json文件吗?
2、现有的可加载的文件用smart3d工程导出的的结构如下:

图1:

image

图2:

image

图3:

image

使用你的工具结构如下:

图1:

8 3dt68 8 ziil j3gwg

图:2:

z xv3f sfer2 1 k8g9 vo

图3:

4j 1 a kmrhitxudp_5gi


不知道是不是结构上的差异,我的本意是将原有的osgb文件整体高度值向下偏移。求指导

osgb转换成3dtiles之后,加载失败

今天拿到一份osgb数据,转换成3dtiles之后,加载失败
image
文件内部结构为(名称和之前正常的有些区别,不过内在json的结构组成对比了下都一样)
image
image
这个和名称有关系吗?
正常的如下
image
想问下,这个是原osgb数据问题还是名称问题?

如何编译

你好:
我想做个osgbTo3DTiles工具,对你的这个项目非常感兴趣,但我不知道如何编译成3dtile.exe,希望你能告知,谢谢!

convert osgb problem on Ubuntu

Hi,
I successfully build 3dtiles on Ubuntu, see #29 .

But when convert osgb files, it shows a lot of lines as below:

InputStream::readImage(): Unable to find a plugin for jpg
InputStream::readImage(): Unable to find a plugin for jpg
InputStream::readImage(): Unable to find a plugin for jpg
...

When the converted tiles files are put into cesium, all are black.

怎么用osg3.6编译该工程

我用vs2017编译的osg3.6替换osg3.4,并用vs2017的building tools加入编译,出现这个错误:
image
要怎么解决啊,求助~~

转换shp失败

用这个工具转换shp到3dtiles格式失败,报错,是怎么回事?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.