2017-09-30 2 views
0

누군가이 간단한 스크립트로 나를 도울 수 있습니까?루프의 색상 값 maya

배열에있는 재료 색상을 적용하기 만하면됩니다.

다음은 현재 가지고있는 내용입니다. 내 자료 2 ("색 2")가 값 $dp_matColor[3], $dp_matColor[4], $dp_matColor[5]을 찾을 수 있도록 연결하려면 어떻게해야합니까?

if 문이 필요하지만 어떤 조건을 추가해야하는지 모르겠습니다.

BTW 나는 $list_of_names[]에 따라 버튼을 만들고 $dp_matColor[]에서 배경 색상을 얻을 수

내 최종 목표는 두 개 이상의 물질이있을 것이다. 클릭하면 같은 배열을 사용하여 for 루프를 기반으로 소재를 만듭니다.

현재 모든 색상에 대해 절차를 수행하여이 작업을 수행 할 수 있지만 반복되는 스크립트가 많이 있습니다. 당신은 파이썬을 사용하는 경우

string $list_of_names[] = {"color1", "color2"}; 
float $dp_matColor[] = { 1.0, 0.5, 0.5,0.5, 0.5, 1.0}; 

for ($eachName in $list_of_names){ 
    shadingNode -asShader VRayMtl -n $eachName; 
    setAttr ($eachName + ".color") -type double3 $dp_matColor[] $dp_matColor[] $dp_matColor[]; 
} 

답변

0

,이 같은 그것을 통해 더 쉽게 루프에 데이터를 구성 할 수 있습니다 :

import maya.cmds as mc 

data = [('color1', (1.0, 0.5, 0.5)), ('color2', (0.5, 0.5, 1.0))] 

for name, values in data: 
    shader = mc.shadingNode(asShader='VRayMtl', n=name) 
    mc.setAttr('%s.color' %shader, values, type='double3') 

을 나는 그게 작동하는지 확인하기 위해 테스트하지 않았습니다 ... 당신이해야 할 수도 있습니다 별도로 값을 입력하십시오 : values[0], values[1], values[3]. 또한 사전을 사용하여 데이터를 저장하거나 서로 동기화되는 두 개의 목록을 만들 수 있습니다 ... 그리고 계속해서 (많은 옵션 ...)

하지만 시도해보십시오 멜, 작동 할 수도 있습니다 (멜을 사용한 이후로 시간이 지났습니다 ... 작동하지 않으면 용서해주세요 ...) :

string $list_of_names[] = {"color1", "color2"}; 
float $dp_matColor[] = { 1.0, 0.5, 0.5,0.5, 0.5, 1.0}; 

for (i=0;i<size($list_of_names);i++){ 
    shadingNode -asShader VRayMtl -n $list_of_names[i]; 
    int $index = i * 3; 
    setAttr ($list_of_names[i] + ".color") -type double3 $dp_matColor[$index] $dp_matColor[($index+1)] $dp_matColor[($index+2)]; 
} 
+0

감사합니다. 당신의 도움으로 결과를 얻을 수있었습니다. 나는 몇 가지 변화를했습니다. 이제 버튼마다 절차를 실행하는 방법을 모르겠습니다. 다른 게시물을 만들었습니다. https://stackoverflow.com/questions/46530691/link-procedure-to-each-button-command-maya – skb