2017-12-08 14 views
1

3 가지 속성이 있습니다. 그 중 2 가지 속성은 3 가지 값을 결정하는 데 함께 사용됩니다.Maya 파이썬 업데이트 속성

트라이 그 기능 - 사용자는 사용할 트라이 그 기능을 선택합니다. 지금은 죄와 cos 일뿐입니다.

Radians - 사용자가 trig 기능에 대한 라디안 값을 입력합니다.

출력 -이 값은 노이즈 텍스처의 속성에 연결됩니다.

"Trig Function"& "Radians"값을 변경하면 출력 값이 업데이트되도록 내 문제는 어떻게 설정합니까?

예제 코드 :

import maya.cmds as cmds 
import math 

cmds.window(title="Simple UI in Maya", width=300) 
theMasterLayout = cmds.columnLayout() 
groupName = "testGrp" 
cmds.group(empty=True, name=groupName) 
cmds.addAttr(ln="WaveType", at='enum', en="sin:cos") 
cmds.addAttr(ln="radians", at='double', min=0, max=10, dv=0.2, k=True) 
cmds.addAttr(ln='WaveValue', at='double', dv=0) 
if cmds.getAttr(groupName + ".WaveType") == "sin": 
    wave = math.sin(cmds.getAttr(groupName + ".radians")) 
else: 
    wave = math.cos(cmds.getAttr(groupName + ".radians")) 
cmds.setAttr(groupName + ".WaveValue", wave) 

# Display the window 
cmds.showWindow() 
+0

연구를하고 무언가를 시도 했습니까? – user1767754

+0

코드 샘플을 요청하십니까? – Berkyjay

답변

1

나는이 문제에 대한 해결책을 찾을 수 있었다. 기본적으로 표현식을 사용하는 것입니다. 그러나 누군가가 대체 방법을 알고 있다면 나는 아직도 그것을 듣고 싶어합니다.

import maya.cmds as cmds 

groupName = "testGrp" 
cmds.group(empty=True, name=groupName) 
cmds.addAttr(ln="WaveType", at='enum', en="sin:cos") 
cmds.addAttr(ln="radians", at='double', min=0, max=10, dv=0.2, k=True) 
cmds.addAttr(ln='WaveValue', at='double', dv=0) 
expString = 'if ('+ groupName + '.WaveType == 0){\n' 
expString += groupName + '.WaveValue = sin(' + groupName + '.radians);\n}' 
expString += '\nelse {\n' + groupName + '.WaveValue = cos(' + groupName + '.radians);\n}' 
cmds.expression(s=expString, 
       o=groupName, 
       n="WaveResult", 
       ae=1, 
       uc=all)