diff --git a/infinigen/assets/objects/creatures/crustacean.py b/infinigen/assets/objects/creatures/crustacean.py index 62da7d55..d400f068 100644 --- a/infinigen/assets/objects/creatures/crustacean.py +++ b/infinigen/assets/objects/creatures/crustacean.py @@ -225,7 +225,7 @@ def shader_crustacean(nw: NodeWrangler, params): "Metallic": metallic, "Roughness": roughness, "Specular IOR Level": specular, - "Specular IOR Level Tint": specular_tint, + "Specular Tint": specular_tint, "Coat Weight": clearcoat, }, ) diff --git a/infinigen/assets/objects/creatures/insects/utils/geom_utils.py b/infinigen/assets/objects/creatures/insects/utils/geom_utils.py index 5c286324..d0705619 100644 --- a/infinigen/assets/objects/creatures/insects/utils/geom_utils.py +++ b/infinigen/assets/objects/creatures/insects/utils/geom_utils.py @@ -652,7 +652,7 @@ def nodegroup_raycast_rotation(nw: NodeWrangler): Nodes.Switch, input_kwargs={ 0: group_input.outputs["Do Tangent Rot"], - 1: if_normal_rot.outputs[3], + 1: if_normal_rot, 2: rotate_euler_1, }, label="if_tangent_rot", diff --git a/infinigen/assets/objects/creatures/parts/eye_new.py b/infinigen/assets/objects/creatures/parts/eye_new.py index f440b68a..66a53a2f 100644 --- a/infinigen/assets/objects/creatures/parts/eye_new.py +++ b/infinigen/assets/objects/creatures/parts/eye_new.py @@ -2623,7 +2623,7 @@ def nodegroup_raycast_rotation(nw: NodeWrangler): Nodes.Switch, input_kwargs={ 0: group_input.outputs["Do Tangent Rot"], - 1: if_normal_rot.outputs[3], + 1: if_normal_rot, 2: rotate_euler_1, }, label="if_tangent_rot", diff --git a/infinigen/assets/objects/wall_decorations/skirting_board.py b/infinigen/assets/objects/wall_decorations/skirting_board.py index f7ec2144..17a6c48f 100644 --- a/infinigen/assets/objects/wall_decorations/skirting_board.py +++ b/infinigen/assets/objects/wall_decorations/skirting_board.py @@ -89,7 +89,6 @@ def nodegroup_make_skirting_board(nw: NodeWrangler, control_points): Nodes.ResampleCurve, input_kwargs={ "Curve": transform_geometry, - "Count": 220, "Length": group_input.outputs["Resolution"], }, attrs={"mode": "LENGTH"}, diff --git a/infinigen/core/nodes/shader_utils.py b/infinigen/core/nodes/shader_utils.py index 8c804ea2..71aacaeb 100644 --- a/infinigen/core/nodes/shader_utils.py +++ b/infinigen/core/nodes/shader_utils.py @@ -38,8 +38,12 @@ def convert_shader_displacement(mat: bpy.types.Material): geo_node_group = bpy.data.node_groups.new("GeometryNodes", "GeometryNodeTree") group_input = geo_node_group.nodes.new("NodeGroupInput") group_output = geo_node_group.nodes.new("NodeGroupOutput") - geo_node_group.outputs.new("NodeSocketGeometry", "Geometry") - geo_node_group.inputs.new("NodeSocketGeometry", "Geometry") + geo_node_group.interface.new_socket( + name="Geometry", in_out="INPUT", socket_type="NodeSocketGeometry" + ) + geo_node_group.interface.new_socket( + name="Geometry", in_out="OUTPUT", socket_type="NodeSocketGeometry" + ) set_pos = geo_node_group.nodes.new("GeometryNodeSetPosition") normal = geo_node_group.nodes.new("GeometryNodeInputNormal") scale = geo_node_group.nodes.new("ShaderNodeVectorMath") diff --git a/infinigen/core/placement/particles.py b/infinigen/core/placement/particles.py index 00b6f948..23ce8015 100644 --- a/infinigen/core/placement/particles.py +++ b/infinigen/core/placement/particles.py @@ -47,7 +47,8 @@ def configure_boids(system_config, settings): context = bpy.context.copy() context["particle_settings"] = system_config for _ in boids.states[0].rules.keys(): - bpy.ops.boid.rule_del(context) + with bpy.context.temp_override(context): + bpy.ops.boid.rule_del() for r in rules: bpy.ops.boid.rule_add(context, type=r.pop("type")) for k, v in r.items(): diff --git a/infinigen/core/util/blender.py b/infinigen/core/util/blender.py index 86a3a661..284329cd 100644 --- a/infinigen/core/util/blender.py +++ b/infinigen/core/util/blender.py @@ -561,7 +561,7 @@ def set_geomod_inputs(mod, inputs: dict): if s.in_out == "INPUT" } if k not in inputs: - raise KeyError(f"Couldnt find {k=} in {mod.node_group.inputs.keys()=}") + raise KeyError(f"Couldnt find {k=} in {inputs=}") soc = inputs[k] if not hasattr(soc, "default_value"): diff --git a/infinigen/terrain/utils/mesh.py b/infinigen/terrain/utils/mesh.py index bc390f21..972da1b9 100644 --- a/infinigen/terrain/utils/mesh.py +++ b/infinigen/terrain/utils/mesh.py @@ -16,7 +16,7 @@ from infinigen.core.util.logging import Timer from infinigen.core.util.organization import Attributes -from ...core.nodes.node_wrangler import ng_inputs +from ...core.nodes.node_wrangler import ng_inputs, ng_outputs from .camera import getK from .ctype_util import ASDOUBLE, ASINT, load_cdll from .kernelizer_util import ATTRTYPE_DIMS, ATTRTYPE_FIELDS, NPTYPEDIM_ATTR, Vars @@ -433,7 +433,7 @@ def move_modifier(target_obj, m): id = inp.identifier modifier[f"{id}_attribute_name"] = inp.name modifier[f"{id}_use_attribute"] = True - for i, outp in enumerate(modifier.node_group.outputs): + for i, outp in enumerate(ng_outputs(modifier.node_group).values()): if i > 0: id = outp.identifier modifier[f"{id}_attribute_name"] = m[f"{id}_attribute_name"]