Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to render a object with roughness/metallic textures and output roughness/metallic images? #1131

Open
bbbbubble opened this issue Jul 24, 2024 · 4 comments
Labels
enhancement New feature or request

Comments

@bbbbubble
Copy link

bbbbubble commented Jul 24, 2024

Describe your feature request

As dicussed in #1105 , with this piece of code, we can output roughness/metallic images with default values of roughness/metallic.

# some objects' normals are affected by textures
mesh_objects = convert_to_meshes([obj for obj in scene_meshes()])
for obj in mesh_objects:
    print("removing invalid normals")
    for mat in obj.get_materials():
        mat.set_principled_shader_value("Normal", [1,1,1])
        principled_bsdf = mat.get_the_one_node_with_type("BsdfPrincipled")
        for key in ["Roughness", "Metallic", "Specular"]:
            obj.set_cp("cp_"+ key.lower(),  principled_bsdf.inputs[key].default_value)

...

bproc.renderer.enable_segmentation_output(map_by=["cp_roughness", "cp_metallic", "cp_specular", 'instance'],default_values={'cp_roughness': None, 'cp_metallic': None, 'cp_specular': None} )

However, if we have objects with roughness/metallic textures, the results are wrong:
image
Any solutions? Thanks!

Describe a possible solution

No response

@cornerfarmer
Copy link
Member

@bbbbubble

No one can answer this question? It seems like a very basic problem...

The feature you request is currently not part of blenderproc. Feel free to implement it and submit a PR. It should work similar to the old SegMapRenderer (https://github.com/DLR-RM/BlenderProc/blob/main/blenderproc/python/renderer/SegMapRendererUtility.py#L269), but instead of using a single color per object, you would need to connect the roughness texture with the emission shader.

PS: Please use this issue for further comments

@bbbbubble
Copy link
Author

bbbbubble commented Aug 1, 2024

@bbbbubble

No one can answer this question? It seems like a very basic problem...

The feature you request is currently not part of blenderproc. Feel free to implement it and submit a PR. It should work similar to the old SegMapRenderer (https://github.com/DLR-RM/BlenderProc/blob/main/blenderproc/python/renderer/SegMapRendererUtility.py#L269), but instead of using a single color per object, you would need to connect the roughness texture with the emission shader.

PS: Please use this issue for further comments

Thank you! I have made it work. ^^

@Lizb6626
Copy link

Lizb6626 commented Aug 6, 2024

@bbbbubble

Hi! Could you share the code of rendering roughness images here?

@PrabigyaAcharya
Copy link

@bbbbubble
Hi! Could you provide the code or share how you were able to create the renders?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants