Mengubah simpul nilai di banyak materi dengan skrip python
Blender dan python newbee di sini.
Saya akan sangat senang jika salah satu dari Anda dapat membantu saya dengan masalah berikut yang saya hadapi: saya telah mengimpor model skala ke dalam blender, yang ingin saya render dalam skala kehidupan nyata. Saat saya menskalakan model, bahannya tidak berskala dan terlihat buruk. Namun semua materi memiliki simpul Nilai bernama "Skala", yang, jika saya mengeditnya dengan skala yang sama saya menskalakan model, memperbaiki semuanya dan terlihat saat itu.

Apa yang dapat saya temukan adalah masalah serupa yang telah diselesaikan , tetapi saya belum dapat menyesuaikannya untuk menyelesaikan masalah saya, karena saya tidak memiliki pengalaman sebelumnya dengan skrip.
Apa yang ingin saya lakukan:
- Pilih objek yang ingin saya ubah
- Pergilah ke scripting
- salin skrip ke dalamnya
- edit nomor yang harus dimasukkan ke simpul nilai berlabel "skala" dari semua objek yang dipilih
- jalankan skrip
- dengan senang hati mendapatkan hasil rendering yang jauh lebih baik.
Saya menggunakan Blender 2.83.4, dalam skrip konsol mengatakan PYTHON INTERACTIVE CONSOLE 3.7.4 (default, 17 Feb 2020, 16:23:28) [MSC v.1916 64 bit (AMD64)]
Setiap bantuan sangat dihargai!
Jawaban
Skrip di bawah ini mengulangi semua objek yang dipilih dan menyesuaikan node nilai dalam materi yang ditetapkan jika labelnya disetel ke "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)