การเปลี่ยนโหนดค่าในวัสดุจำนวนมากด้วยสคริปต์ python
Blender และ python newbee ที่นี่
ฉันจะมีความสุขมากถ้าคุณคนใดคนหนึ่งสามารถช่วยฉันแก้ปัญหาต่อไปนี้ที่ฉันพบ: ฉันได้นำเข้าแบบจำลองมาตราส่วนลงในเครื่องปั่นซึ่งฉันต้องการแสดงผลในระดับชีวิตจริง เมื่อฉันปรับขนาดโมเดลวัสดุจะไม่ปรับขนาดด้วยและดูไม่ดี อย่างไรก็ตามวัสดุทั้งหมดมีโหนดค่าชื่อ "มาตราส่วน" ซึ่งถ้าฉันแก้ไขด้วยมาตราส่วนเดียวกันฉันกำลังปรับขนาดโมเดลจะแก้ไขทุกอย่างและดูเหมือนจะถูกต้อง
สิ่งที่ฉันพบคือปัญหาที่คล้ายกันนี้ได้รับการแก้ไขแล้ว แต่ฉันไม่สามารถปรับให้เข้ากับปัญหาของฉันได้เนื่องจากฉันไม่มีประสบการณ์ในการเขียนสคริปต์มาก่อน
สิ่งที่ฉันอยากจะทำ:
- เลือกวัตถุที่ฉันต้องการเปลี่ยนแปลง
- ไปที่การเขียนสคริปต์
- คัดลอกสคริปต์ลงไป
- แก้ไขตัวเลขที่ควรใส่ในโหนดค่าที่มีข้อความ "มาตราส่วน" ของวัตถุที่เลือกทั้งหมด
- เรียกใช้สคริปต์
- ยินดีที่ได้รับวิธีการแสดงผลที่ดีขึ้น
ฉันใช้ Blender 2.83.4 ในการเขียนสคริปต์คอนโซลบอกว่า PYTHON INTERACTIVE CONSOLE 3.7.4 (ค่าเริ่มต้น 17 ก.พ. 2020, 16:23:28 น.) [MSC v.1916 64 บิต (AMD64)]
ทุกความช่วยเหลือชื่นชมมาก!
คำตอบ
สคริปต์ด้านล่าง iterates "Scale"มากกว่าวัตถุที่เลือกไว้ทั้งหมดและปรับโหนดค่าในวัสดุมอบหมายถ้าป้ายชื่อของพวกเขาถูกตั้งค่าให้
import bpy
def set_scale_nodes_selected_objects(scale_val):
for obj in bpy.context.selected_objects:
for mat_slot in obj.material_slots:
set_scale_nodes_material(mat_slot.material, scale_val)
def set_scale_nodes_material(mat, scale_val):
if mat is not None and mat.use_nodes and mat.node_tree is not None:
for node in mat.node_tree.nodes:
if node.label == "Scale" and node.type == "VALUE":
node.outputs["Value"].default_value = scale_val
if __name__ == "__main__":
scale_val = 1.0
set_scale_nodes_selected_objects(scale_val)