mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-21 10:23:41 +00:00
Fix FLAT+EMISSIVE texture loading crash
This commit is contained in:
@@ -472,12 +472,23 @@ class Loader(bonsai.core.tool.Loader):
|
|||||||
print(f"{mode} Mode texture will be skipped.")
|
print(f"{mode} Mode texture will be skipped.")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if (image := get_image) is None:
|
if (image := get_image()) is None:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# remove RGB node from `create_surface_style_rendering`
|
# Replace whatever currently feeds the FLAT color input (RGB or previous texture chain).
|
||||||
prev_node = bsdf.inputs[2].links[0].from_node
|
for link in list(bsdf.inputs[2].links):
|
||||||
blender_material.node_tree.nodes.remove(prev_node)
|
prev_node = link.from_node
|
||||||
|
blender_material.node_tree.links.remove(link)
|
||||||
|
if prev_node.type == "TEX_IMAGE":
|
||||||
|
# Remove linked texture coordinate node if it's no longer used.
|
||||||
|
for vec_link in list(prev_node.inputs["Vector"].links):
|
||||||
|
coord_node = vec_link.from_node
|
||||||
|
blender_material.node_tree.links.remove(vec_link)
|
||||||
|
if coord_node.type == "TEX_COORD" and not any(o.links for o in coord_node.outputs):
|
||||||
|
blender_material.node_tree.nodes.remove(coord_node)
|
||||||
|
blender_material.node_tree.nodes.remove(prev_node)
|
||||||
|
elif prev_node.type == "RGB":
|
||||||
|
blender_material.node_tree.nodes.remove(prev_node)
|
||||||
|
|
||||||
node = blender_material.node_tree.nodes.new(type="ShaderNodeTexImage")
|
node = blender_material.node_tree.nodes.new(type="ShaderNodeTexImage")
|
||||||
node.location = bsdf.location - Vector((200, 250))
|
node.location = bsdf.location - Vector((200, 250))
|
||||||
|
|||||||
Reference in New Issue
Block a user