파이썬 스크립트로 많은 머티리얼에서 값 노드 변경
여기 블렌더와 파이썬 newbee.
여러분 중 한 명이 제가 겪고있는 다음 문제에 대해 저를 도울 수 있다면 매우 기쁠 것입니다. 저는 스케일 모델을 블렌더로 가져 왔는데 실제 스케일로 렌더링하고 싶습니다. 모델의 크기를 조정할 때 재료가 함께 크기가 조정되지 않고 나빠 보입니다. 그러나 모든 머티리얼에는 "Scale"이라는 Value 노드 가 있습니다. 동일한 스케일로 편집하면 모델을 스케일링하고 모든 것을 수정하고 바로 보입니다.
내가 찾은 것은 비슷한 종류의 문제가 해결 되었지만 스크립팅에 대한 사전 경험이 없기 때문에 문제를 해결하기 위해 적응할 수 없었습니다.
내가하고 싶은 것 :
- 변경할 개체를 선택하십시오.
- 스크립팅으로 이동
- 그것에 스크립트를 복사
- 선택한 모든 개체의 "scale"이라는 레이블이 지정된 값 노드에 넣어야하는 숫자를 편집합니다.
- 스크립트 실행
- 더 나은 렌더링 결과를 얻게되어 기쁩니다.
블렌더 2.83.4를 사용하고 있는데 콘솔 스크립팅에서 PYTHON INTERACTIVE CONSOLE 3.7.4 (기본값, 2020 년 2 월 17 일, 16:23:28) [MSC v.1916 64 비트 (AMD64)]라고 표시됩니다.
모든 도움에 감사드립니다!
답변
1 RobertGützkow
아래 스크립트는 선택한 모든 오브젝트를 반복하고 레이블이로 설정된 경우 할당 된 재질의 값 노드를 조정합니다 "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)