회원 로그인
정보기억 정보기억에 체크할 경우 다음접속시 아이디와 패스워드를 입력하지 않으셔도 됩니다.
그러나, 개인PC가 아닐 경우 타인이 로그인할 수 있습니다.
PC를 여러사람이 사용하는 공공장소에서는 체크하지 마세요.
소셜네트워크 서비스를 통해서 로그인하시면 별도의 로그인 절차없이 회원서비스를 이용하실 수 있습니다.


최근 게시물

1.노션에서 작성 중

1.노션에서 작성 중

개편하기 전까지 노션에서 작성 중

2024.04.04//read more

2.ChatGPT

2.ChatGPT

OpenAI로 대규모 언어 모델대화형...

2023.03.16//read more

3.노코딩 게임 엔진 - 빌..

3.노코딩 게임 엔진 - 빌..

빌드 지원안드로이드iOS윈도우즈특이사...

2023.03.14//read more

4.(완료) 미접속 회원 정..

4.(완료) 미접속 회원 정..

[완료] 36명의 회원을 정리하였습니...

2023.02.16//read more

5.매뉴얼 플러스 - 전자제..



안정적인 DNS 서비스 DNSEver
DNS Powered by DNSEver.com


Python for Maya - 8. random 응용 (if문)

artsOne | 2008.02.27 02:22 | 조회 4732

Digital Dream ( http://cafe.naver.com/digitaldream ) 카페의 'Maya Python 시작하기'의
기반으로 복습하는 차원에서 재정리한 것입니다.



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 응용

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