可能是由于两个模型的UV映射不同导致的。可以尝试在材质面板中,将Texture Coordinate节点的UV映射方式从“UV”更改为“Object”,并在Object输入中输入对应的物体名称。
示例代码:
import bpy
# 获取对应的物体
obj1 = bpy.data.objects["object_name1"]
obj2 = bpy.data.objects["object_name2"]
# 获取材质
mat = bpy.data.materials["material_name"]
# 在材质面板中创建Texture Coordinate和Image Texture节点
tex_coord = mat.node_tree.nodes.new(type="ShaderNodeTexCoord")
tex_img = mat.node_tree.nodes.new(type="ShaderNodeTexImage")
# 设置UV映射方式为Object,并输入对应的物体名称
tex_coord.uv_map = "Object"
tex_coord.object = obj1 # 或者 obj2
# 绑定纹理图像
tex_img.image = bpy.data.images.load("path_to_image")
# 将节点连接起来
mat.node_tree.links.new(tex_coord.outputs[2], tex_img.inputs[0])
mat.node_tree.links.new(tex_img.outputs[0], mat.node_tree.nodes["Principled BSDF"].inputs[0])
# 将材质应用于对应物体
obj1.data.materials[0] = mat
obj2.data.materials[0] = mat