I would like to share my experience and seek advice to resolve issues encountered during the conversion of 3D models in Cesium ION and the use of the open-source tool Obj2Tiles. My goal is to visualize water pipes, represented as OBJ mesh files with associated MTL files and JPG images, at their correct geolocation in a Cesium viewer. These water pipes will form a massive network in the near future, and the Cesium 3D Tiles approach seems to be the best solution.
Conversion with Cesium ION:
Process:
Upload as a zip file via Cesium ION My Asset for the OBJ file.
Automatic conversion to Cesium 3D Tiles on loading.
Georeferencing via “Adjust Tileset Location.”
Issues:
The visual rendering is not satisfactory, especially regarding control over texture appearance as one approaches the object.
Textures are degraded compared to the original OBJ.
Original obj :
After tiling:
Conclusion:
Uncontrolled conversion with no LOD (Level of Detail) and division management.
Manual but accurate geolocation.
Unsatisfactory rendering.
Error: “Exception: Element not supported: ‘l 238385 238386’.”
The process stops at the Decimation and Splitting stages in the presence of lines related to ‘l XXXXX XXXXX’ in the OBJ.
Temporary Solution:
Removal of lines related to ‘l XXXXX XXXXX’ to allow the process to continue.
Results:
the geolocation is not correct
Improved rendering compared to Cesium ION’s automatic conversion.
Rotation not indicated, leading to incorrect object positioning.
Very long texture display time.
I seek your assistance in understanding these issues and finding solutions. Have you encountered similar situations, or do you have recommendations to optimize these conversion and georeferencing processes?
My goal is to have the good location and the original render. I want also that render displayed as quickly as possible
I would like to share a recently discovered trick to achieve optimal rendering quality when converting pipelines from OBJ format to 3D Tiles using Cesium Ion. This approach involves an intermediate step of conversion to GLB format using the objtogltf tool.
Step 1: Conversion to GLB with objtogltf
The conversion to GLB format addresses various issues, including eliminating the 90-degree rotation induced by the Z-up coordinate system of OBJ models. This step avoids the need to manually modify tilset.json afterward, as indicated in the documentation (GitHub - OpenDroneMap/Obj2Tiles: Converts OBJ files to OGC 3D tiles by performing splitting, decimation and conversion). Furthermore, it facilitates accurate geolocation of the object by preserving the origin of the source model as a reference.
Step 2: Using Cesium Ion Tileset Generator with Tileset Position Adjustment
The second step involves using the Cesium Ion tileset generator with the photogrammetry option and adjusting the tileset position. This approach eliminates the need for manual modification of tilset.json, as suggested in the documentation (How to correctly position 3D models when tiling with Cesium ion).
I want to express gratitude to Hiroshi Yaginuma and the Cesium documentation (Cesium 3D Tiling Pipeline Reality Tiler) for shedding light on these crucial settings.
Question: Is the Cesium 3D Tiling Pipeline Reality Tiler the most suitable solution for fully automating the conversion process with precise settings?
In conclusion, to achieve a fully automated conversion process with precise settings and complete control over the final result, turning to the Cesium 3D Tiling Pipeline Reality Tiler appears to be a recommended option. This solution offers a variety of customizable options, paving the way for robust automation. What are your thoughts?
Is it correct that you used the 3D Model setting for the image in your first post? And then you achieved better results with the 3D Capture setting?
If you are able, can you share an image of the tileset with the 3D Capture setting. That would be great to see the improvement.
If you run into any problems when tiling, like the poor quality of the output, please do not hesitate to contact support@cesium.com or post on the forum to ask for assistance with the asset. Our team is actively working on improving our tilers so the continue to be the best available.
I’m also going to move this to the Cesium ion category since this is related to Cesium ion tiling more than the 3D Tiles specification.
Thank you for your response and for showing interest in my shared experience, @plaulhe.
Yes, that’s correct; I initially used the 3D Model setting for the images in my first post, and later, I achieved better results with the 3D Capture setting.
I’ve attached below an example of the rendering with the 3D Capture setting (screenshot attached).
If you have any additional recommendations or suggestions to enhance the process, I would be delighted to hear them.
To achieve a fully automated conversion process with precise settings and complete control over the final result, turning to the Cesium 3D Tiling Pipeline Reality Tiler appears to be a recommended option. This solution offers a variety of customizable options, paving the way for robust automation.
Thanks for posting those screen shots. The reality tiler version does look better.
It depends on what type of data is being tiled.
For data modeling the real world (for example a model of a city created from photogrammetery, or model of a pipe), the Reality Tiler (using the 3D Capture setting) is the best option. If you aren’t sure which one to select, I would recommend starting this option.
The 3D Model option is for designed objects such as a model of an engine. These models might have instance geometry such as 800 copies of a single bolt.