ジャンプ先: 概要. 戻り値. キーワード. 関連. フラグ. Python 例.
bakeDeformer([bakeRangeOfMotion=boolean], [colorizeSkeleton=boolean], [customRangeOfMotion=timerange], [dstMeshName=string], [dstSkeletonName=string], [hierarchy=boolean], [influences=string[]], [maxInfluences=int], [pruneWeights=float], [smoothWeights=int], [srcMeshName=string], [srcSkeletonName=string])
注: オブジェクトの名前と引数を表す文字列は、カンマで区切る必要があります。これはシノプシスに示されていません。
bakeDeformer は、取り消し可能、照会不可能、および編集不可能です。
デフォーマのセットによってメッシュ シェイプが決定されたリグ キャラクタを基に、bakeDeformer は観測されたデフォメーションに最も近いリニア ブレンド スキン ウェイトを計算します。そのために、可動域内でリグを移動することによってサンプルのテスト セットを生成します。結果のメッシュとポーズのペアは、スキニング ウェイトを計算して、制限された最適化を計算するために使用されます。bakeDeformer は、算出されたウェイトを自動的にバインドして目的のジオメトリに適用します。ソースと目的のメッシュ/スケルトンが同じ場合、このコマンドは、元のデフォメーションを skinCluster および計算されたウェイトで置き換えます。サンプルの使用方法については、次の例を参照してください。
bake, skinning, deformer
skinPercent
bakeRangeOfMotion, colorizeSkeleton, customRangeOfMotion, dstMeshName, dstSkeletonName, hierarchy, influences, maxInfluences, pruneWeights, smoothWeights, srcMeshName, srcSkeletonName
フラグはコマンドの作成モードで表示できます
|
フラグはコマンドの編集モードで表示できます
|
フラグはコマンドの照会モードで表示できます
|
フラグに複数の引数を指定し、タプルまたはリストとして渡すことができます。
|
import maya.cmds as cmds
import maya.cmds as cmds
import maya.mel as mel
def createJointsAndMesh(offset = (0., 0., 0.)):
root = cmds.joint()
for _ in range(0,5):
cmds.joint()
cmds.move(0., 2., 0., r=True)
meshes = cmds.polyCube(sx=3,sy=10,sz=3,h=10)
cmds.move(0, 5, 0, r=True)
cmds.select([root, meshes[0]], r=True)
cmds.move(offset[0], offset[1], offset[2], r=True)
cmds.select(cl=True)
return (root, meshes[0])
def bindMesh(object):
rootJoint, mesh = object
cmds.select(rootJoint, r=True, hi=True)
cmds.select(mesh, add=True)
mel.eval('SmoothBindSkin')
cmds.select(cl=True)
def randomizeJoints(object):
from math import degrees
rootJoint = object[0]
cmds.select(rootJoint, r=True)
cmds.pickWalk(d='down')
for i in range(4):
rads = mel.eval('sphrand 1.')
cmds.rotate(degrees(rads[0]), degrees(rads[1]), degrees(rads[2]))
cmds.pickWalk(d='down')
def matchRotations(src, dst):
cmds.select(src[0], r=True, hi=True)
srcChain = cmds.ls(sl=True)
cmds.select(dst[0], r=True, hi=True)
dstChain = cmds.ls(sl=True)
for joints in zip(dstChain, srcChain):
cmds.select(list(joints), r=True)
mel.eval('MatchRotation')
# Create a new scene
cmds.file(f=True, new=True)
# Create two joint chains/meshes
object1 = createJointsAndMesh()
object2 = createJointsAndMesh(offset=(5, 0, 0))
# Bind one of the joint chains to the mesh and rotate the weights
bindMesh(object1)
randomizeJoints(object1)
# Use bakeDeformer to learn and apply the linear blend skinning weights.
cmds.bakeDeformer(ss=object1[0], sm=object1[1], ds=object2[0], dm=object2[1], mi=3)
# Match the rotations of the two chains to show the results are similar
matchRotations(object1, object2)