As an end user, I find it quite difficult to import external 3D models with textures into Gazebo Sim / Fuel. Common formats downloaded from asset sites (FBX, glTF/GLB, USDZ, etc.) are not straightforward to convert to SDF-supported formats.
I tried gz-usd but the conversion often fails to properly handle textures.
Suggestion:
It would be very helpful if there was at least a clear, official or community tutorial showing the recommended workflow for converting textured models to Gazebo-compatible formats.
Even better would be improved native support for these modern formats (especially with textures) or a simple one-click/batch conversion tool/script.
This would make it much easier for users to bring more assets into Fuel and Gazebo.
I couldn’t find a clear, centralized list of natively supported texture file formats in the official Gazebo Sim documentation.
I tried GLB and textures loaded, but there’s a bug: one side is visible while the opposite side is not.
There’s no good way to directly convert GLB (or other formats) into the standard model folder structure.
Currently, my GLB import workflow is cumbersome: I have to manually write an SDF file and replace the mesh path to point to the GLB. Is there an easier way to import, especially since many assets in simulation are static (visual-only) with no physics requirements?
This could be a bug, but there’s a valid use case where you want one side to be transparent. I know blender has a setting to make a face double sided. I imagine other 3D tools have the same.
Not sure what you mean. There is no “standard” model folder structure. It is mostly convention. You can simply store the GLB (with all its textures embedded) in a meshes directory and reference it in your SDF file.
We don’t have an official 3D authoring tools, but there are several in the community. There are some listed here. @Cole created SDF_Gen (ROSCon video) which I think helps with this. Maybe @Cole or @iche033 can chime in.
Thanks for clarifying! I’ve been mistakenly assuming the model format used for downloading/uploading on Fuel was the official standard recommended by Gazebo.
On a related note, I do think defining a standard asset format would add real value. It would give everyone a unified reference to follow, streamline asset conversion, Fuel uploads and version management, and make the whole workflow pipeline much more consistent and smooth.
We are having similar issues to @Ayrton-Sheng. We are commissioning a new set of robot visual models to outside 3D asset authors and then bringing those assets into both description and gazebo projects to support visualization in both Gazebo and RVIZ.
Our initial attempt was to repurpose the existing workflow for authoring 3D assets in Blender, exporting to Collada + single PNG texture. This did not work well, mainly because the glTF spec is much more expansive than we need for Gazebo/RVIZ work and the entire mental model of what consists of an “asset” is vastly different in glTF than it was in Collada.
I’ve convinced myself that we need a new workflow. For us, that workflow would consist two documents: 1) a set of conventions to constrain glTF usage and make our conventions (coordinate frames for individual meshes, etc.) overt and 2) a detailed workflow description that both our modelers (3D authors) and developers (3D consumers) can use as a step-by-step guide to describe what is being checked, by whom and using what tools. (Lots of tools only implement a subset of glTF, so just having a glTF compliant asset is far from sufficient.)
So, while I’m digging into glTF (I’m a graphics novice), I wanted to find out if anyone else in the community as faced the same challenges. If so, perhaps there are solutions to this problem so that we don’t have to re-invent the wheel - or if there isn’t an obvious candidate for an existing solution, perhaps there are other folks interested in this important detail and interested in collaborating?