0
현재 MEL 용 무작위 객체 생성기 스크립트가 있습니다. 파이썬으로 변환하려고합니다. 이것은 숙제 임무이고 나는 특정 부분에 갇혀있다. 각 축에 임의의 눈금을 추가하려고합니다. 나는 계속 목록 "("str "이 아닌)만을 연결할 수 있습니다." 여기에 내가 지금까지 가지고있는 것이있다 :MEL 스크립트를 Python으로 변환하려고합니다.
#to use: my_rock_gen(1, poly_rock1)
#import python libraries
import maya.cmds as MC
import random
#define procedure with number of rocks and name
def my_rock_gen(number_of_rocks=0, rock_name="poly_rock1"):
#loop to generate rocks
for n in range(number_of_rocks):
#start with creating polygon object, basic cube
rock=MC.polyCube (name=rock_name)
#smooth it once
MC.polySmooth (rock, dv=2)
#give random scales
random_sx= random.uniform (.3, 3)
random_sy= random.uniform (.3, 3)
random_sz= random.uniform (.3, 3)
#set random values to scales
MC.setAttr ((rock + ".scaleX"), random_sx)"
나는 마지막 비트에서 붙어있다. MEL에서 여기에 내가 지난 2 개 부품이 내용은 다음과 같습니다
//set random scale range
float $random_sx = `rand .3 3`;
float $random_sy = `rand .3 3`;
float $random_sz = `rand .3 3`;
//set random values to scales
setAttr ($rock[0] + ".sx") $random_sx;
setAttr ($rock[0] + ".sx") $random_sy;
setAttr ($rock[0] + ".sx") $random_sz;
은 $ 바위 [0] 스크립트의 시작 부분으로 작성됩니다. 구문이 setAttr 부분에 어떻게 가야 하는지를 파악할 수 없습니다. 어떤 도움을 주셔서 감사합니다.
내가 y 및 z의 규모에 대해이 작업을 반복해야 목록의 요소에 ATTR를 설정하지 (여기에는 마야)을 시도하고 바위가 이미 이전에 선언했다. 어떻게 추가 할 수 있습니까? 또한 rock 변수를 다시 사용하여 3 축 모두에서 임의의 회전을 수행합니다. – JonCathcart
이것은 바위의 각 엘레멘트마다 random_sx를 설정합니다. 다른 값을 원하거나 더 많은 것을 설정하고 싶다면'for myRock in rock : '루프를 사용하고'myRock' (당신은 그것을 간지럽 히고, 돌리거나, 먼지를 ...)에해야 할 일을하십시오. 나는 일반적인 파이썬 지식을 기반으로 Maya를 사용하지 않았다. –