You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python脚本设置Blender材质Noise Texture节点的W属性

用户创建的材质
你可以通过访问材质的节点树找到噪波纹理节点,再修改对应W属性,完整逻辑如下:

import bpy
import random # 用于实现W属性随机化

# --- 以下是你已有的代码段 ---
PATH_TO_MY_OBJ = "替换为你的obj文件实际路径"
bpy.ops.import_scene.obj( filepath = PATH_TO_MY_OBJ)
bpy.context.object.name = "obbb"
obj = bpy.data.objects["obbb"]
# --- 以上是你已有的代码段 ---

# 1. 获取目标材质,两种获取方式选其一即可
# 方式1:按材质名全局获取
mat = bpy.data.materials.get("Material")
# 方式2:从物体的材质槽直接获取,避免全局材质重名问题
# mat = obj.material_slots[0].material

# 2. 确认材质启用节点系统
mat.use_nodes = True
all_nodes = mat.node_tree.nodes

# 3. 查找噪波纹理节点,两种查找方式选其一即可
# 方式1:按节点类型查找,适合材质中只有1个噪波纹理节点的场景
noise_node = None
for node in all_nodes:
    if isinstance(node, bpy.types.ShaderNodeTexNoise):
        noise_node = node
        break
# 方式2:按节点名称查找,如果你在Blender中修改过节点名称,替换为对应名称即可
# noise_node = all_nodes.get("Noise Texture")

if noise_node:
    # 4. 赋值W属性,下方为随机0-20的示例,也可以直接写固定数值
    noise_node.inputs['W'].default_value = random.uniform(0, 20)

补充说明

  • 如果材质内有多个噪波纹理节点,可以提前在Blender里给目标节点自定义命名,再用按名称查找的方式精准定位
  • 噪波纹理的缩放、细节、粗糙度等其他参数,也可以通过修改noise_node.inputs下对应参数的default_value实现调整

内容的提问来源于stack exchange,提问作者pookie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:36:03