allenai / Holodeck

CVPR 2024: Language Guided Generation of 3D Embodied AI Environments.
https://yueyang1996.github.io/holodeck
Apache License 2.0
346 stars 33 forks source link

Which attribute represents the rotation angle that ensure the object face as expected before loading #35

Closed DevinQiao closed 7 months ago

DevinQiao commented 7 months ago

Dear authors, thank you for your excellent work. I want to render the scene in Sapien according to the json file generated by Holodeck directly. I transform the glb file into a obj, and then transform obj into urdf. But after rendering, the orientation is not within my expection. Snipaste_2024-04-24_16-04-05 The open-shelving's orientation is wrong in the picture above. Therefore, how can I get the right rotation attributes? I guess that you may have two rotation process in you paper. The first is that you rotate the objects to make its front faces the +y axies as you question gpt-4 in the prompt.py file, "The default rotation is 0 which is +Y axis". Or if this information is inculded in the pkl file, I transform the pkl fine into a obj and then into urdf, would I get a wright rendering scene? The second is that you question gpt-4 for a rotation angles to make it reasonable in the overall layout. Could you tell me the exact attributes about the two rotation angles?

YueYANG1996 commented 7 months ago

JSON["objects"][.]["rotation"] is the rotation information. In AI2-THOR (Unity). The floor is the xz plane, and y is the height. y = 0 faces up, y=90 faces right, and so on (clockwise). I guess the comprehension of rotation in Sapien is different from Unity.

DevinQiao commented 7 months ago

Thank you for your kind response. I still have a question: did you make adjustments before loading the objects so that the fronts of all objects face in one direction? Because in actual layout design, it should be assumed that the fronts of all objects are facing in one direction, right? That is, in the "objaverse_holodeck_database.json" file, are there any attributes to make the objects face in one direction?

YueYANG1996 commented 7 months ago

All objects have been rotated based on the canonical view annotated by GPT-4V, which means the objects' front side will face up if you set the y=0.

DevinQiao commented 6 months ago

Dear author, I apologize for bothering you again with my question. In your paper, you mentioned that you used GPT4-V to label the Front view of the assets, but I was unable to find the related annotations in the dataset file I downloaded. I looked in the file named _data/objaverse_holodeck/09_23_combine_scale/objaverse_holodeckdatabase.json, but there doesn't seem to be any attribute related to the Front view. The only thing I could guess that might be related is the _pose_z_rotangle, but its values are not always 3.14 or multiples of 90 degrees. Could you please tell me where exactly in the dataset this attribute can be found?

sunfanyunn commented 6 months ago

The assets are rotated first before saving them as this data file: https://drive.google.com/file/d/1MQbFbNfTz94x8Pxfkgbohz4l46O5e3G1/view?usp=sharing