회원 로그인
|
Python for Maya - 8. random 응용 (if문)
기반으로 복습하는 차원에서 재정리한 것입니다.
object 수정 응용으로 cylinder에 bend를 random으로 주워보겠다.
import maya.cmds as cmd import random sel_ = cmd.ls('pCy*', type='transform') random.shuffle(sel_) for x in sel_[:10]: cmd.nonLinear(x, type='bend', curvature=1)ls의 flag인 type='transform'은 transform 형태의 모든 pCy로 시작되는 object를 sel_로 넣어주게 된다.
mel에선 pCy로 시작되는 object 선택은 ls -sl "pCy*"; 이다.
nonLinear는 bend, twist, squash, flare, sine, wave를 줄 수 있는 deformer를 적용하는 maya 명령어이다.
flag인 type='bend'는 object를 휘게 해주는 것이고, curvature는 옵션으로 휨정도를 설정한다.
mel에서의 bend 적용은 object 먼저 선택해 주고...
nonLinear -type bend -curvature 1;형태로 뛴다.
이번엔 bend가 적용된 object만 선택해보자.
# pCylinder2 # # pCylinder3 # # pCylinder5 # # pCylinder6 # # pCylinder7 # # pCylinder8 # # pCylinder9 # # pCylinder11 # # pCylinder14 # # pCylinder15 #
import maya.cmds as cmd # pCy로 시작하는 transform 형태의 object를 sel_에 저장 한다. sel_ = cmd.ls('pCy*', type='transform') # obj_sel의 리스트 공석을 만든다. obj_sel = [] # sel_리스트를 obj_로 치환하며 반복 수행한다. for obj_ in sel_: # listHistory를 이용해 node 추출하여 his_list에 저장한다. his_list = cmd.listHistory(obj_, lv=1) # his_list를 his_로 치환하여 반복 수행한다. for his_ in his_list: # his_ 자료의 노드 형태와 nonLinear와 같은지 비교하여 참이면 아래 명령어를 수행한다. if cmd.nodeType(his_) == 'nonLinear': # obj_sel 리스트에 추가 하고 obj_sel.append(obj_) # obj_를 출력한다. print obj_ # 더이상 비교할 자료가 없으면 종료한다. break # nonLinear 노드가 들어간 obj_sel 리스트를 선택한다. cmd.select(obj_sel)위 code의 전체 알고리즘 이해하자면 listHistory()로 object의 node을 his_list에 넣어두고,
그 node들을 nonLinear가 적용되었는지를 판단 후 obj_sel에 하나씩 추가하여 출력하면서 선택되게 한다.
listHistory()는 object의 history를 거꾸로 검색하여 node를 추출한다. level = 1은 레벨 1단계의 node를 추출하는 것이다.
cmd.listHistory('pCylinder15', lv=1) # Result: [u'pCylinderShape15', u'bend7'] #nodeType()은 노드의 형태를 알 수 있게 한다.
cmd.nodeType('pCylinder15') # Result: transform # cmd.nodeType('pCylinderShape15') # Result: mesh # cmd.nodeType('bend7') # Result: nonLinear #nonLinear()에 bend가 있으므로 object에 nonLinear가 적용되어 있는지 object를 비교하면서 골라내는 방법이다.
#python의 if 명령어는 조건문으로... if 조건식1: 문1 elif 조건식2: 문2 else: 문3
조건식1이 참(True)이면 문1 수행하고, 그렇지 않으면 조건식2를 검사해서 참이면 문2를 수행한다. 이것도 거짓이라면 문3이 수행하게 된다.
조건을 비교하기 위한 관계 연산자로는...
> | 크다 |
< | 작다 |
>= | 크거나 같다 |
<= | 작거나 같다 |
== | 같다 |
!= | 같지 않다 |
예제로 object를 선택하여 선택한 object가 pCylinder1이면 선택한 object is Ture 출력, 그렇지 않으면 선택한 object is False를 출력하는 간단한 code이다.
import maya.cmds as cmd temp = cmd.ls(sl=1) for x in temp: if x == 'pCylinder1': print x + ' is True' else: print x + ' is False'
─────────────────────────────────────────────────
source : http://cafe.naver.com/digitaldream/461 - 'Maya Python 시작하기' 8) random 응용
댓글 0개
| 엮인글 0개
466개(18/24페이지)
번호 | 제목 | 글쓴이 | 조회 | 날짜 |
---|---|---|---|---|
마야 뷰포트 네비게이션 팁 | 푸딩뱃살 | 42786 | 2020.04.06 17:22 | |
Maya 버전 별 Python 버전 | 푸딩뱃살 | 64094 | 2014.01.08 17:59 | |
124 | [FX] Lesson 1: Creating nCloth collisions Step 2 | artsOne | 2164 | 2008.04.13 17:28 |
123 | [FX] Lesson 1: Creating nCloth collisions Step 1 | artsOne | 2403 | 2008.04.13 16:23 |
122 | [참고] Expression Manual | artsOne | 2243 | 2008.04.13 02:44 |
121 | [Script] MEL 기초 #01 - 기초 (자료형) | artsOne | 3959 | 2008.04.10 00:28 |
120 | [Base] 선택 우선순위 | artsone | 2170 | 2008.04.09 02:47 |
119 | [Script] Python for Maya - 10. polygon vertex random move | artsOne | 4619 | 2008.04.06 23:44 |
118 | [Rigging] Deform > Edit Membership Tool | artsone | 2636 | 2008.04.05 02:28 |
117 | [Rigging] Deform > Wire 활용 | artsone | 2242 | 2008.04.05 02:01 |
116 | [Animation] Bake Simulation | artsone | 1879 | 2008.04.01 23:04 |
115 | [Rigging] 로프 Stretch Rigging | artsone | 2380 | 2008.03.31 21:40 |
114 | [Rigging] Bouncing Ball Rigging | artsone | 2367 | 2008.03.20 23:29 |
113 | [Rigging] bind 후 object가 2배로 움직이는 현상 막기 | artsone | 2125 | 2008.03.08 03:28 |
112 | [Rigging] Lattice와 Rigid bind를 이용한 skinning | artsone | 2641 | 2008.03.08 03:18 |
111 | [Script] Python for Maya - 9. polysmooth 자동 설정 (format 변환) | artsOne | 4421 | 2008.03.05 01:18 |
>> | [Script] Python for Maya - 8. random 응용 (if문) | artsOne | 4733 | 2008.02.27 02:22 |
109 | [Script] Python for Maya - 7. random (for문) | artsone | 4755 | 2008.02.26 01:37 |
108 | [Script] Python for Maya - 6. 리스트 자료 다루기 2 | artsOne | 3836 | 2008.02.23 17:17 |
107 | [Script] Python for Maya - 5. 리스트 자료 다루기 1 | artsOne | 3925 | 2008.02.22 20:27 |
106 | [Script] Python for Maya - 4. set (집합) | artsOne | 4830 | 2008.02.22 17:49 |
105 | [Script] Python for Maya - 3. pickle (지속 모듈-파일 관리) | artsOne | 4806 | 2008.02.21 01:57 |