Coder Social home page Coder Social logo

gaia3d / mago-3d-tiler Goto Github PK

View Code? Open in Web Editor NEW
138.0 16.0 13.0 255.38 MB

This is the official repository of mago-3d-tiler.

Home Page: https://seoul.gaia3d.com:10903/

License: Mozilla Public License 2.0

Java 100.00%
3d-tiles 3dtiles assimp citygml4j geospatial geotools gis gltf joml lwjgl3

mago-3d-tiler's People

Contributors

endofcap avatar sdson avatar tykim-gaia3d avatar yhjeong-gaia3d avatar znkim avatar znkim-home 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

mago-3d-tiler's Issues

Cannot read field "R" because "rgbRecord" is null

Hi,
I have laz files with no RGB, only Intensity and Classification attribute. When I try to process the files I get this error:

Exception in thread "main" java.lang.NullPointerException: Cannot read field "R" because "rgbRecord" is null

Command that I am using is:

java -jar mago-3d-tiler-1.3.0-natives-linux.jar --input /in/RH_W15_fixed -it laz -c 3765 --output /out/RH_W15_fixed/mago_test

Thank you.

issue in creation of b3dm 3d tiles from las data

Hello,
I am trying to generate b3dm 3d tiles for las data using mago-3d-tiler for that I am using following command: -

root@NTPL-PC-083:/home/rajnish/Desktop/Sanskardham/mago_3d# java -jar mago-3d-tiler-1.6.4-natives-linux.jar -i las/pcmc_building.las -it las -o las/output/ -ot b3dm

It is not generating 3d tiles in b3dm format, along with json.
What modifications can be done in above command or is there any dependency issue, if there is any dependency issue then how to solve the issue.

Thanks in advance.

출력물 타일파일의 크기 및 용량

우선 흥미로운 프로젝트를 공개해 주셔서 감사합니다.

테스트 과정중에서 생성되는 타일의 용량이 400Mb 가까이 생성되고 있어서 실행 옵션등의 설정이 따로 있나 문의 드립니다.

source : OBJ 273Mb

실행 옵션
-aa
-mt
-nl 0
-xl 6
--crs 5186
--inputType OBJ

┌┬┐┌─┐┌─┐┌─┐ ┌┬┐┬┬ ┌─┐┬─┐
│││├─┤│ ┬│ │───│ ││ ├┤ ├┬┘
┴ ┴┴ ┴└─┘└─┘ ┴ ┴┴─┘└─┘┴└─
3d-tiler(1.3.0) by Gaia3d, Inc.
JAVA Version : 17 (Oracle Corporation)

meaning of the parameters of LOD

Hello,

i saw the lines bellow in LevelOfDetial.java

public enum LevelOfDetail {
NONE(-1,0, 0, 1.0f, new float[]{1.0f, 1.0f, 1.0f}),
LOD0(0,0,0, 1.0f, new float[]{1.0f, 0.4f, 0.4f}),
LOD1(1, 2, 8, 0.5f, new float[]{0.4f, 1.0f, 0.4f}),
LOD2(2, 4, 50, 0.25f, new float[]{0.4f, 0.4f, 1.0f}),
LOD3(3, 8, 120, 0.125f, new float[]{1.0f, 1.0f, 0.4f}),
LOD4(4, 16, 180, 0.0625f, new float[]{0.4f, 1.0f, 1.0f}),
LOD5(5, 32, 240, 0.03125f, new float[]{1.0f, 0.4f, 1.0f}),
LOD6(6, 64, 300, 0.01625f, new float[]{1.0f, 1.0f, 1.0f});

for example, LOD6(6, 64, 300, 0.01625f, new float[]{1.0f, 1.0f, 1.0f})
would you tell me about the meaning of each parameter?
and more, if I add the value above LOD6 , is it meaningful doing?

thank you.

regarding 3d pipelines

Hello,
I am trying to use latest released version v1.7.0 to generate 3d tiles for underground pipe utilities, I have shapefile data for pipelines, and I am using following command to generate b3dm 3d tiles from shapefile: -

root@NTPL-PC-083:/home/rajnish/Desktop/Sanskardham/mago_3d_new_pieline# java -jar mago-3d-tiler-1.7.0-natives-linux.jar -i gas_pipeLines.shp -o output/ -ot b3dm -c 32643

However it is not generating tiles, what modifications can be done in above command or are there any other modifications on system side that can be done to generate 3d tiles.

can support draco or ktx2 image compressions in b3dm files?

Hello, znkim

i heard that when creating 3D tiling, the draco or ktx2 compression algorithm can reduce the file size and network loading.
so, i tested it with another 3D tiling creation program with ktx2 + draco compression options, the result of the file size was reduced by 3/1.

is there a process for texture image compressions while creating a 3d tileing b3dm files in mago-3d-tiler?
If do compressing images in Mago-3D-tiler, what method are using?
If there is no compression function currently, do you plan to support this function in the future?

thank you.

Issue in creation of 3D tiles for underground utilities

Currently working on Underground Utilities for creation of 3D pipes. For that shapefile, height and diameter attribute is required. Your tool has height attribute but not diameter attribute. What would be the possible solution for this?

Facing issue in generating 3Dtiles (b3dm) from shapefile with height column

Bug Description:
When generating 3D tiles (b3dm) using the following command:

java -jar mago-3d-tiler-1.4.4-natives-linux.jar --input /home/santosh/Downloads/pcmc_ward13/pcmc_ward13_4326.shp --inputType shp -c 4326 -aa -ac B_Height_m --output /home/santosh/Downloads/pcmc_ward13/tiles/

The 3D tiles are successfully generated; however, upon closer inspection, it appears that out of the six faces, three front faces are missing in most of the features. This issue is affecting the visual representation of the generated 3D tiles.

Steps to Reproduce:

Execute the provided command to generate 3D tiles.
Inspect the generated tiles, focusing on the front faces of the features.
Expected Result:
All six faces of the generated 3D tiles should be present, providing a complete and accurate representation of the features.

Actual Result:
In most cases, three front faces are missing, leading to an incomplete rendering of the features.

Additional Information:

mago-3d-tiler version: 1.4.4
Operating System: Ubuntu 20.4

Please find attached images for your reference and zip file containing sample shapefile to be used with above command
sample_data.zip
Screenshot from 2024-03-12 11-56-49
Screenshot from 2024-03-12 11-56-13
Screenshot from 2024-03-12 11-56-02

issue in generating b3dm 3d tiles of pipeline from pipeline shapefile.

Hello,
I am trying to generate the 3d tiles from shapefile data, for that I am using following command,

root@admin1-B250M-DS3H:/home/akshay/Desktop/mago_3d_tiler# java -jar mago-3d-tiler-1.7.0-natives-linux.jar -i road_centerline/road_centerline/road_centerline.shp -it shp -o road_3d -ot b3dm -rc radius -c 32643 -d

I have radius column which I have mentioned in -rc argument and I want to generate 3d pipeline with respect to radius value for each pipe. Although this command is running and is generating tileset.json in the output directory, but it is not generating b3dm tiles.

what changes should I do in the above command in order to generate the complete output that I can render using cesium. Or is there any dependency issue that I need to check for.

Please guide.
Thanks in advance.

Debug option raise exception

Hello,

I tried to convert an ifc file using mago-3d-tiler, but the tiles were not outputting, so I used the debug option.
However, when I run the program, I get the following exception error.

ExecutionException: java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot invoke
“org.lwjgl.assimp.AIScene.mRootNode()” because “ aiScene” is null

The error seems to be about aiScene, but the error did not occur in the glb file conversion.
Ifc,fbx,shp will result in an exception error.

Test data can be downloaded from the following URL:
https://drive.google.com/file/d/1IzBTdZlaJs7V3U8JVXjBpEBOdklOKgVy/view?usp=sharing

PS C:\work\3ddb\mago3dtiler> docker run --rm -v "${PWD}/workspace:/workspace" gaia3d/mago-3d-tiler --debug -it ifc -i /workspace/ifc -o /workspace/output -l /workspace/log.log
>>
[INFO][09:49:28][mago.Mago3DTilerMain(printStart:73)]::
┳┳┓┏┓┏┓┏┓  ┏┓┳┓  ┏┳┓┳┓ ┏┓┳┓
┃┃┃┣┫┃┓┃┃   ┫┃┃   ┃ ┃┃ ┣ ┣┫
┛ ┗┛┗┗┛┗┛  ┗┛┻┛   ┻ ┻┗┛┗┛┛┗
3d-tiler(dev-version) by Gaia3D, Inc.
----------------------------------------
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:319)]::========================================
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:320)]::inputPath: /workspace/ifc
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:321)]::outputPath: /workspace/output
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:322)]::inputFormat: IFC
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:323)]::outputFormat: B3DM
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:324)]::terrainPath: null
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:325)]::instancePath: /workspace/ifc/instance.dae
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:326)]::logPath: /workspace/log.log
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:327)]::crs: null
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:328)]::proj: null
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:329)]::tileCount: 0
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:330)]::fileCount: 0
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:331)]::pointLimit: 65536
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:332)]::pointScale: 2
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:333)]::pointSkip: 4
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:334)]::nodeLimit: -1
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:335)]::minLod: 0
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:336)]::maxLod: 3
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:337)]::debug: true
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:338)]::debugLod: false
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:339)]::glb: false
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:340)]::classicTransformMatrix: false
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:341)]::multiThreadCount: 7
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:342)]::recursive: false
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:343)]::yUpAxis: false
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:344)]::refineAdd: false
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:345)]::flipCoordinate: false
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:346)]::zeroOrigin: false
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:347)]::autoUpAxis: false
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:348)]::ignoreTextures: false
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:349)]::nameColumn: name
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:350)]::heightColumn: height
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:351)]::altitudeColumn: altitude
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:352)]::absoluteAltitude: 0.0
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:353)]::minimumHeight: 1.0
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:354)]::skirtHeight: 4.0
[DEBUG][09:49:28][mago.GlobalOptions(printDebugOptions:355)]::========================================
[INFO][09:49:28][mago.Mago3DTiler(execute:23)]::Starting process flow: BatchedProcessModel
[INFO][09:49:28][process.TilingPipeline(startPreProcesses:64)]::[Pre] Start the pre-processing.
[INFO][09:49:28][process.TilingPipeline(startPreProcesses:68)]::[Pre] Loading all files.
[INFO][09:49:28][process.TilingPipeline(startPreProcesses:70)]::[Pre] Finished loading all files
[ERROR][09:49:28][process.TilingPipeline(executeThread:197)]::Failed to execute thread.
java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot invoke "org.lwjgl.assimp.AIScene.mRootNode()" because "aiScene" is null    
        at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:?]
        at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:?]
        at com.gaia3d.process.TilingPipeline.executeThread(TilingPipeline.java:193) [classes/:?]
        at com.gaia3d.process.TilingPipeline.startPreProcesses(TilingPipeline.java:102) [classes/:?]
        at com.gaia3d.process.TilingPipeline.process(TilingPipeline.java:50) [classes/:?]
        at com.gaia3d.command.BatchedProcessModel.run(BatchedProcessModel.java:64) [classes/:?]
        at com.gaia3d.command.mago.Mago3DTiler.execute(Mago3DTiler.java:24) [classes/:?]
        at com.gaia3d.command.mago.Mago3DTilerMain.main(Mago3DTilerMain.java:55) [classes/:?]
Caused by: java.lang.NullPointerException: Cannot invoke "org.lwjgl.assimp.AIScene.mRootNode()" because "aiScene" is null
        at com.gaia3d.converter.assimp.AssimpConverter.convertScene(AssimpConverter.java:171) ~[classes/:?]
        at com.gaia3d.converter.assimp.AssimpConverter.load(AssimpConverter.java:65) ~[classes/:?]
        at com.gaia3d.converter.BatchedFileLoader.loadScene(BatchedFileLoader.java:35) ~[classes/:?]
        at com.gaia3d.converter.BatchedFileLoader.loadTileInfo(BatchedFileLoader.java:111) ~[classes/:?]
        at com.gaia3d.process.TilingPipeline.lambda$startPreProcesses$0(TilingPipeline.java:80) ~[classes/:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:?]
        at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?]
        at java.lang.Thread.run(Unknown Source) ~[?:?]
Exception in thread "main" java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot invoke "org.lwjgl.assimp.AIScene.mRootNode()" because "aiScene" is null
        at com.gaia3d.process.TilingPipeline.executeThread(TilingPipeline.java:198)
        at com.gaia3d.process.TilingPipeline.startPreProcesses(TilingPipeline.java:102)
        at com.gaia3d.process.TilingPipeline.process(TilingPipeline.java:50)
        at com.gaia3d.command.BatchedProcessModel.run(BatchedProcessModel.java:64)
        at com.gaia3d.command.mago.Mago3DTiler.execute(Mago3DTiler.java:24)
        at com.gaia3d.command.mago.Mago3DTilerMain.main(Mago3DTilerMain.java:55)
Caused by: java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot invoke "org.lwjgl.assimp.AIScene.mRootNode()" because "aiScene" is null
        at java.base/java.util.concurrent.FutureTask.report(Unknown Source)
        at java.base/java.util.concurrent.FutureTask.get(Unknown Source)
        at com.gaia3d.process.TilingPipeline.executeThread(TilingPipeline.java:193)
        ... 5 more
Caused by: java.lang.NullPointerException: Cannot invoke "org.lwjgl.assimp.AIScene.mRootNode()" because "aiScene" is null
        at com.gaia3d.converter.assimp.AssimpConverter.convertScene(AssimpConverter.java:171)
        at com.gaia3d.converter.assimp.AssimpConverter.load(AssimpConverter.java:65)
        at com.gaia3d.converter.BatchedFileLoader.loadScene(BatchedFileLoader.java:35)
        at com.gaia3d.converter.BatchedFileLoader.loadTileInfo(BatchedFileLoader.java:111)
        at com.gaia3d.process.TilingPipeline.lambda$startPreProcesses$0(TilingPipeline.java:80)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)

newly added largeMesh option not working

Hello

i ran windows jar file with bellow options.
it worked correctly and showed to cesiumjs nicely.

--input C:\data\3ds --output C:\data\3ds_output --inputType 3ds --crs 5186

End Process Time : 6s 192ms
Total tile contents count : 19
Total 'tileset.json' File Size : 3KB

with new added largemesh option add, ran jar with bellow options,
--input C:\data\3ds --output C:\data\3ds_output --inputType 3ds --crs 5186 -lm true

log like this,

[Post] Start the post-processing.
[Post][1/24] post-process in progress. : RC0000
[Post][3/24] post-process in progress. : RC10
[Post][2/24] post-process in progress. : RC1
[Post][6/24] post-process in progress. : RC1001
[Post][5/24] post-process in progress. : RC101
...
Position buffer is null
Position buffer is null
Position buffer is null
Position buffer is null
Position buffer is null
...
Batched Set is empty
BatchedSet is null, return null.
[Post][9/24] post-process in progress. : RC1011
[Create][data] Created output data directory:
[Create][data] Created output data lod directory:
[Post][10/24] post-process in progress. : RC11
[Post][11/24] post-process in progress. : RC110
...
[Post] End the post-processing.

End Process Time : 11s 757ms
Total tile contents count : 24
Total 'tileset.json' File Size : 5KB

and it dodn't show anything on cesiumjs.

i think largeMesh option is suitable for large area, such as city area.
would you explain largeMesh option and how can i use correctly?

thanks in advance.

Facing issue in generating 3D tiles generation (i3dm)

I was just going through the documentation and found out that we can change the output type format by using --outputType
and using the formula below i generated the 3D tiles but it was generated in .b3dm format only. below is the code which was used in terminal for generating output.

java -jar mago-3d-tiler-1.4.4-natives-windows.jar --input "C:\Users\GIS\Desktop\mago 3d\data\Pcmc building\pcmc_building_32643.shp" --inputType shp --outputType .obj --output "C:\Users\GIS\Desktop\mago 3d\3D tiles\pcpc_i3dm format"

Exploring opportunity for possible collaboration on tiling program for underground utilities

Issue Description:

We are exploring the potential of utilizing Mago3D Tiler for generating 3D tiles to represent underground utilities. Our specific use case involves incorporating depth as a parameter to organize lines under groups and using diameter to create lines of various sizes. However, upon exploring Mago3D Tiler, we haven't discovered a workflow that directly supports this use case.

Proposed Solution:

We propose initiating a discussion within the Mago3D Tiler community to explore potential solutions or workflows that could accommodate the representation of underground utilities in 3D tiles. This could involve incorporating depth and diameter parameters into the tiling process or exploring alternative methods to achieve the desired representation.

Points for Discussion:

  1. Is there an existing workflow or feature within Mago3D Tiler that supports the representation of underground utilities?
  2. How can depth and diameter parameters be integrated into the tiling process to accurately represent underground structures?
  3. Are there any alternative approaches or plugins/extensions that could facilitate the creation of 3D tiles for underground utilities within Mago3D Tiler?
  4. What are the best practices or recommended strategies for handling complex 3D tiling scenarios like underground infrastructure representation?

Additional Context:

We believe that addressing the representation of underground utilities in 3D tiles within Mago3D Tiler could greatly enhance its utility for urban planning, infrastructure management, and other related applications. Your insights and contributions to this discussion would be greatly appreciated.

Note: At https://www.nascentinfo.com/ we have team of good java developers who can get involved in this discussions and hopefully will work on some great feature enhancement for Mago3D Tiler together so feel free to provide any additional information or insights related to this topic. Let's collaborate to find an effective solution within the Mago3D Tiler ecosystem.


Looking forward to your feedback and contributions to this discussion

Facing issue in generating 3Dtiles (b3dm) from GLB and glTF

While generating 3D tiles From GLB and gltf format there is only Tileset.json file Data folder which contains .b3Dm is missing. where as when i change input to .shp (shapefile) its generating that folder as well as tileset.json files.

Am i missing something here?

Screenshot 2024-03-15 102547

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.