회원 로그인
정보기억 정보기억에 체크할 경우 다음접속시 아이디와 패스워드를 입력하지 않으셔도 됩니다.
그러나, 개인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


스무스 바인드 툴

푸딩뱃살 | 2013.11.07 13:58 | 조회 3678
*_skin와 *_skin_con의 조인트 이름을 가진 것과 선택한 메쉬를 스무스 바인드 옵션에 따라 바인드 해준다.
skinCluster의 maxInfluences는 5로 변경해 준다.

*선택 필터는 미구현


UI

#코드
# -*- coding: utf-8 -*-
# ptSmoothBindTool.py
# 2012.6.11 ~
# scripted by artsOne

#기본 라이브러리
from maya import cmds,mel
import re
#import sys
#sys.path.append('Z:\\zCloud\\puppetTools')
#from dwRigLibrary import * 

def ptSBT_UI(UItype):
    #인하우스툴에 넣을 때
    if UItype == 'form':
        cmds.columnLayout(adj=1)
    #새 창일 때
    elif UItype == 'window':
        pass
    cmds.frameLayout('ptSBT_frL1',l=u'스킨 조인트 검색 - 0개',cll=1,cl=0,bs='etchedIn')
    cmds.textScrollList('ptSBT_tSL1',a=u'새로고침 버튼을 클릭하세요.',ams=1,nr=8,en=0)
    cmds.columnLayout(adj=1)
    cmds.button('ptSBT_b1',l=u'새로고침',c='ptSBT_checkSkinJointRefresh()')
    cmds.frameLayout(l=u'선택 필터',cll=1,cl=1,bs='etchedIn')
    cmds.columnLayout(adj=1)
    cmds.checkBoxGrp(l=u'필터',la3=[u'스킨 조인트',u'컨트롤 조인트',u''])
    cmds.setParent('..')
    cmds.setParent('..')
    cmds.button('ptSBT_b2',l=u'모두 선택',c='ptSBT_selecteAllSkinJoint()',en=0)
    cmds.frameLayout(l=u'스무스 바인드 옵션',cll=1,cl=1,bs='etchedIn')
    cmds.columnLayout(adj=1)
    cmds.button(u'스무스 바인드 옵션 열기',c="mel.eval('SmoothBindSkinOptions;')")
    cmds.setParent('..')
    cmds.setParent('..')
    cmds.button('ptSBT_b3',l=u'스무스 바인드',c='ptSBT_smoothBind()',bgc=[1,1,0],en=0)
    if UItype == 'form':
        pass
    elif UItype == 'window':
        cmds.button('ptSBT_b4',l=u'창닫기',c="cmds.deleteUI('ptSBT_w1',wnd=1)")
    cmds.setParent('..')
    cmds.setParent('..')
    if UItype == 'form':
        cmds.setParent('..')
    elif UItype == 'window':
        pass

#윈도우 UI
def ptSBT_winUI(use):
    #인하우스툴에 넣을 때
    if use == 'form':
        ptSBT_UI(use)
    #새 창일 때
    elif use == 'window':
        if cmds.window('ptSBT_w1',ex=1):
            cmds.deleteUI('ptSBT_w1',wnd=1)
        cmds.window('ptSBT_w1',t=u'스무스 바인드 툴',mnb=0,mxb=0,s=1)
        #폼UI
        ptSBT_UI(use)
        cmds.showWindow('ptSBT_w1')

#스킨 조인트 추출
#차후 추가한 조인트 네임 넣는 UI 만들기 = 추출 필터
#모든 조인트 추출/스킨 조인트 추출/조인트 컨트롤 추출 등..
def ptSBT_getSkinJoint():
    skinJointNames = cmds.ls('*_skin','*_skin_con')
    return skinJointNames

#새로고침
def ptSBT_checkSkinJointRefresh():
    skinJointLen = len(ptSBT_getSkinJoint())
    cmds.textScrollList('ptSBT_tSL1',e=1,ra=1)
    if skinJointLen >= 1:
        cmds.frameLayout('ptSBT_frL1',e=1,l=u'스킨 조인트 검색 - %d개' %skinJointLen)
        cmds.textScrollList('ptSBT_tSL1',e=1,a=ptSBT_getSkinJoint(),en=1)
        cmds.button('ptSBT_b2',e=1,en=1)
        cmds.button('ptSBT_b3',e=1,en=1)
    else:
        cmds.frameLayout('ptSBT_frL1',e=1,l=u'스킨 조인트 검색 - 0개')
        cmds.textScrollList('ptSBT_tSL1',e=1,a=u'검색된 스킨 조인트가 없습니다.',en=0)
        cmds.button('ptSBT_b2',e=1,en=0)
        cmds.button('ptSBT_b3',e=1,en=0)
    print u''
    #cmds.select(cl=1)

#모두 선택
def ptSBT_selecteAllSkinJoint():
    cmds.textScrollList('ptSBT_tSL1',e=1,si=ptSBT_getSkinJoint())
    print ptSBT_getSkinJoint()

#스무스 바인드
def ptSBT_smoothBind():
    selectJoint = cmds.textScrollList('ptSBT_tSL1',q=1,si=1)
    selectObject = cmds.ls(sl=1)
    if selectObject:
        #cmds.select(ptSBT_getSkinJoint(),selectObject)
        for sO in selectObject:
          skinClusterList = cmds.skinCluster(selectJoint,sO,normalizeWeights=1,maximumInfluences=5)
          for sCL in skinClusterList:
              cmds.setAttr('%s.maintainMaxInfluences' %sCL, 1)
              cmds.setAttr('%s.maxInfluences' %sCL, 5)
    else:
        ptSBT_smoothBind_cD1 = cmds.confirmDialog(t=u'에러',m=u'바이드할 오브젝트를 선택하지 않았습니다.',b=[u'확인'],db=u'확인')
        if ptSBT_smoothBind_cD1 == u'확인':
            pass

ptSBT_winUI('window')
466개(1/24페이지)
마야
번호 제목 글쓴이 조회 날짜
공지 마야 뷰포트 네비게이션 팁 푸딩뱃살 48323 2020.04.06 17:22
공지 Maya 버전 별 Python 버전 푸딩뱃살 68462 2014.01.08 17:59
464 [Dev] Autodesk Maya Devkit 다운로드 첨부파일 푸딩뱃살 788 2023.01.28 14:28
463 [Base] (해결 중) modules 환경설정 중 푸딩뱃살 705 2022.11.09 11:47
462 [Script] pymel 딕셔너리형 사용 시 KeyError 푸딩뱃살 975 2022.11.07 12:08
461 [오류] Building Numpy for Maya Python 2.7.x 푸딩뱃살 654 2022.10.23 14:38
460 [Base] 뷰포트에서 조절자가 안 보일때 첨부파일 푸딩뱃살 864 2022.10.13 15:47
459 [Rigging] mirror joints 사용 시 유의 사항 푸딩뱃살 863 2022.10.04 10:46
458 [Script] 2022에서 enum34 모듈 설치 금지 첨부파일 푸딩뱃살 641 2022.08.17 18:08
457 [Script] pymel 예제 푸딩뱃살 658 2022.07.05 19:20
456 [Script] 인코드 / 디코드 - 2.7 한글 사용 푸딩뱃살 951 2022.03.08 17:52
455 [Dev] ui 없이 mayapy로 자동화 첨부파일 푸딩뱃살 757 2022.02.17 13:56
454 [Dev] mayapy로 ui파일 py로 푸딩뱃살 559 2022.02.15 18:20
453 [오류] Error : MayaBonusTools 푸딩뱃살 988 2022.01.21 17:52
452 [오류] Error: ModuleNotFoundError 푸딩뱃살 828 2022.01.21 16:24
451 [Dev] mayapy 첨부파일 푸딩뱃살 711 2022.01.19 20:08
450 [Base] function selCom at 0x7f29c5c04aa0 첨부파일 푸딩뱃살 671 2022.01.19 17:24
449 [Base] wireframe on shaded 단축키 만들기 첨부파일 푸딩뱃살 973 2022.01.04 10:55
448 [오류] OpenCL Error 푸딩뱃살 551 2021.12.28 01:40
447 [Script] Easily Translate MEL Commands to Python 첨부파일 푸딩뱃살 920 2021.12.02 11:22
446 [Base] output window 띄우지 않기 첨부파일 푸딩뱃살 890 2021.11.24 21:44
445 [Rigging] shapeEditorManager 삭제 안됨 푸딩뱃살 961 2021.11.12 23:30