Hoat hinh Viet NAm
Thứ Hai, 16 tháng 7, 2018
build symmetric dictionary using python in maya
import maya.cmds as mc
preciseMax=0.001
verDic=mc.ls(os=True,fl=True)
lefDic={}
rightDic={}
middleList={}
for verDicI in verDic:
pos=mc.xform(verDicI,q=True,ws=True,t=True)
if pos[0]>=- preciseMax and pos[0]<=preciseMax:
middleList[verDicI]=pos
elif pos[0]>preciseMax:
lefDic[verDicI]=pos
else:
rightDic[verDicI]=pos
symDic={}
for lefDicI in lefDic.keys():
for rightDicI in rightDic.keys():
if rightDic[rightDicI][0]<=-lefDic[lefDicI][0]+preciseMax and rightDic[rightDicI][0]>=-lefDic[lefDicI][0]-preciseMax:
if rightDic[rightDicI][1]<=lefDic[lefDicI][1]+preciseMax and rightDic[rightDicI][1]>=lefDic[lefDicI][1]-preciseMax:
if rightDic[rightDicI][2]<=lefDic[lefDicI][2]+preciseMax and rightDic[rightDicI][2]>=lefDic[lefDicI][2]-preciseMax:
symDic[lefDicI]=rightDicI
break
preciseMax=0.001
verDic=mc.ls(os=True,fl=True)
lefDic={}
rightDic={}
middleList={}
for verDicI in verDic:
pos=mc.xform(verDicI,q=True,ws=True,t=True)
if pos[0]>=- preciseMax and pos[0]<=preciseMax:
middleList[verDicI]=pos
elif pos[0]>preciseMax:
lefDic[verDicI]=pos
else:
rightDic[verDicI]=pos
symDic={}
for lefDicI in lefDic.keys():
for rightDicI in rightDic.keys():
if rightDic[rightDicI][0]<=-lefDic[lefDicI][0]+preciseMax and rightDic[rightDicI][0]>=-lefDic[lefDicI][0]-preciseMax:
if rightDic[rightDicI][1]<=lefDic[lefDicI][1]+preciseMax and rightDic[rightDicI][1]>=lefDic[lefDicI][1]-preciseMax:
if rightDic[rightDicI][2]<=lefDic[lefDicI][2]+preciseMax and rightDic[rightDicI][2]>=lefDic[lefDicI][2]-preciseMax:
symDic[lefDicI]=rightDicI
break
Thứ Sáu, 6 tháng 1, 2017
This simple scriptlet unlocks and unhides the default transform attributes (translate, rotate, scale)
CODE
global proc msAttrUnlockUnhide_all()
{
string $selectedObj[] =
for($obj in $selectedObj)
{
string $attrList[] =
for($attribute in $attrList)
{
setAttr -k 1 -l 0 ($obj + "." + $attribute); // Unhide and unlock attribute
}
/*
Set Default trans, rot, and scale attribute to unhidden and unlocked
*/
setAttr -k 1 ($obj + ".tx");
setAttr -l 0 ($obj + ".tx");
setAttr -k 1 ($obj + ".ty");
setAttr -l 0 ($obj + ".ty");
setAttr -k 1 ($obj + ".tz");
setAttr -l 0 ($obj + ".tz");
global proc msAttrUnlockUnhide_all()
{
string $selectedObj[] =
ls -sl;for($obj in $selectedObj)
{
string $attrList[] =
listAttr -v -l; // Get attributes that are visibily lockedfor($attribute in $attrList)
{
setAttr -k 1 -l 0 ($obj + "." + $attribute); // Unhide and unlock attribute
}
/*
Set Default trans, rot, and scale attribute to unhidden and unlocked
*/
setAttr -k 1 ($obj + ".tx");
setAttr -l 0 ($obj + ".tx");
setAttr -k 1 ($obj + ".ty");
setAttr -l 0 ($obj + ".ty");
setAttr -k 1 ($obj + ".tz");
setAttr -l 0 ($obj + ".tz");
setAttr -k 1 ($obj + ".sx");
setAttr -l 0 ($obj + ".sx");
setAttr -k 1 ($obj + ".sy");
setAttr -l 0 ($obj + ".sy");
setAttr -k 1 ($obj + ".sz");
setAttr -l 0 ($obj + ".sz");
setAttr -l 0 ($obj + ".sx");
setAttr -k 1 ($obj + ".sy");
setAttr -l 0 ($obj + ".sy");
setAttr -k 1 ($obj + ".sz");
setAttr -l 0 ($obj + ".sz");
setAttr -k 1 ($obj + ".rx");
setAttr -l 0 ($obj + ".rx");
setAttr -k 1 ($obj + ".ry");
setAttr -l 0 ($obj + ".ry");
setAttr -k 1 ($obj + ".rz");
setAttr -l 0 ($obj + ".rz");
setAttr -l 0 ($obj + ".rx");
setAttr -k 1 ($obj + ".ry");
setAttr -l 0 ($obj + ".ry");
setAttr -k 1 ($obj + ".rz");
setAttr -l 0 ($obj + ".rz");
clear $attrList;
$attrList =
for($attribute in $attrList)
{
setAttr -k 1 -l 0 ($obj + "." + $attribute); // Unhide and unlock attribute
}
clear $attrList;
}
listAttr -ud; // Get attributes that are userdefined, hidden or notfor($attribute in $attrList)
{
setAttr -k 1 -l 0 ($obj + "." + $attribute); // Unhide and unlock attribute
}
clear $attrList;
}
clear $selectedObj;
}
}
msAttrUnlockUnhide_all;
Thứ Năm, 5 tháng 1, 2017
crowd
//creation//seed to get repeatable resultsseed(particleShape1.particleId * 5);//decide which character will be bornparticleShape1.character = trunc(rand(0,5));//store each particle's birth position in UparticleShape1.initUPlacePP = rand(0,1);//set birth positions in U and VparticleShape1.parentU = particleShape1.initUPlacePP;particleShape1.parentV = rand(0,.1);//set goals to equal parent values to stay on surfaceparticleShape1.goalU = particleShape1.parentU;particleShape1.goalV = particleShape1.parentV;//girlif(particleShape1.character == 0){particleShape1.customIndex = rand(0,15);particleShape1.customSpeed = .005;}//guyif(particleShape1.character == 1){particleShape1.customIndex = rand(16,31);particleShape1.customSpeed = .005;}//Soldierif(particleShape1.character == 2){particleShape1.customIndex = rand(32,47);particleShape1.customSpeed = .005;}//Dogif(particleShape1.character == 3){particleShape1.customIndex = rand(48,66);particleShape1.customSpeed = .0025;}//Zombieif(particleShape1.character == 4){particleShape1.customIndex = rand(67,101);particleShape1.customSpeed = .0009;}//this particle was being weird, kill itif(particleShape1.particleId == 48){particleShape1.lifespanPP = 0;}//Runtime//add a predetermined value to parentV every frame to move particle forwardparticleShape1.parentV += particleShape1.customSpeed;particleShape1.goalV= particleShape1.parentV;//first obstacleparticleShape1.obstruction_01 = mag(particleShape1.inputForce[0]);//separate the position vector so individual channels can be changedvector $particlePos = particleShape1.position;//all particles on the left of obstacleif(particleShape1.obstruction_01 > 0 && $particlePos.x < radialField1.translateX){ //yet to pass obstacle if($particlePos.z > radialField1.translateZ){ particleShape1.parentU -= .001; particleShape1.goalU = particleShape1.parentU; } //already passed obstacle if($particlePos.z < radialField1.translateZ){ particleShape1.parentU += .001; particleShape1.goalU = particleShape1.parentU; //if particle ever reaches it's birth U position, stop moving left/right if(particleShape1.parentU == particleShape1.initUPlacePP) particleShape1.goalU += 0; }}//all particles on the right of obstacleif(particleShape1.obstruction_01 > 0 && $particlePos.x > radialField1.translateX){ //yet to pass obstacle if($particlePos.z > radialField1.translateZ){ particleShape1.parentU += .001; particleShape1.goalU = particleShape1.parentU; } //already passed obstacle if($particlePos.z < radialField1.translateZ){ particleShape1.parentU -= .001; particleShape1.goalU = particleShape1.parentU; //if particle reaches its birth U postion, stop moving left/right if(particleShape1.parentU == particleShape1.initUPlacePP) particleShape1.goalU += 0; } }//character behavior//girlif (particleShape1.character == 0){ particleShape1.customIndex += 1; if(particleShape1.customIndex >= 15){ particleShape1.customIndex = 0; }}//guyif (particleShape1.character == 1){ particleShape1.customIndex += 1; if(particleShape1.customIndex >= 31){ particleShape1.customIndex =16; }}//soldierif (particleShape1.character == 2){ particleShape1.customIndex += 1; if(particleShape1.customIndex >= 47){ particleShape1.customIndex =32; }}//dogif (particleShape1.character == 3){ particleShape1.customIndex += 1; if(particleShape1.customIndex >= 66){ particleShape1.customIndex =48; }}//zombieif (particleShape1.character == 4){ particleShape1.customIndex += 1; if(particleShape1.customIndex >= 101){ particleShape1.customIndex =67; }}//if character reaches end of surface, kill itif(particleShape1.parentV >=1){particleShape1.lifespanPP = 0;}
Đăng ký:
Bài đăng (Atom)