회원 로그인
|
![](http://dvframes.com/rb/_var/simbol/artsone.jpg)
스무스 바인드 툴
*_skin와 *_skin_con의 조인트 이름을 가진 것과 선택한 메쉬를 스무스 바인드 옵션에 따라 바인드 해준다.
skinCluster의 maxInfluences는 5로 변경해 준다.
*선택 필터는 미구현
![](http://dvframes.com/rb/files/2013/11/07/069de9a07d9a0282765d1cd51de0490b135654.png)
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')
- ptsmoothbindtool.py (4KB) (5)
![](/rb/modules/bbs/theme/_pc/list01/image/ico_comment.gif)
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 |