isl-org / Open3D

Open3D: A Modern Library for 3D Data Processing
http://www.open3d.org
Other
11.43k stars 2.3k forks source link

Is there some possibility to support `from_trimesh()` like what pyrender do? #2253

Open Jianghanxiao opened 4 years ago

Jianghanxiao commented 4 years ago

Is your feature request related to a problem? Please describe. Currently, the textures cannot be loaded successfully with obj with .mtl file in some cases. I try loading in trimesh and pyrender, they work well. However, for open3d, the texture cannot be successfully loaded

Describe the solution you'd like Is it possible to offer function from_trimesh(*) like what pyrender does. Maybe the core problem is not for this function. But if we can finally offer something like this, it will be very convenient. I'm not sure if it will make things easier to involve some internal representation from other library.

Additional context And one question, do you have some idea on how to convert the texture or material in other library to vertex color which can be directly used in open3d

errissa commented 4 years ago

@Jianghanxiao For the obj/mtl files that don't load textures properly, are you seeing any error messages on the console? Also, if you can share an example model that doesn't load properly for you that would be helpful.

Jianghanxiao commented 4 years ago

There are no error messages, I try both building from source and using pip to install. This link has an example https://drive.google.com/drive/folders/1W0HCi7_g-jmWysKh5NdpjPZxWbkjKI7d?usp=sharing . This is part of the model from SAPIEN dataset

errissa commented 4 years ago

@Jianghanxiao Thanks for sharing. The mtl file in this model does not reference any textures so Open3D will not load any textures.

Jianghanxiao commented 4 years ago

Thanks for your reply!!!! I'm not quite familiar with mtl, so will this be supported in the future by open3d. Or open3d will just support image texture, but not consider some materials? And is there some potential way to deal with this? In addition, for test1.zip in the above sharing link, the rendering also seems not correct (the version install through pip only shows parts of the texture, while the source version cannot load the texture). Is there some possible reason and solution? (The below image is rendered by trimesh using test1.zip) When rendering using open3d, the texture will only cover part of the model. image

mrudorfer commented 2 years ago

Regarding your proposed solution: trimesh has a function as_open3d() which gives an open3d.geometry.TriangleMesh.

Jianghanxiao commented 2 years ago

Is it possible to make as_open3d support texture as well, currently it only supports converting the geometry