<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MAYA绑定 归档 - 喵喵动画屋</title>
	<atom:link href="https://www.miaodonghua.com/category/maya%E7%BB%91%E5%AE%9A%E6%95%99%E5%AD%A6/feed" rel="self" type="application/rss+xml" />
	<link>https://www.miaodonghua.com/category/maya绑定教学</link>
	<description>探索Maya世界：基础教程、动画技巧、建模艺术与渲染技术。</description>
	<lastBuildDate>Sun, 14 Dec 2025 15:39:21 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>

<image>
	<url>https://www.miaodonghua.com/wp-content/uploads/2020/11/cropped-shuqian_logo.webp</url>
	<title>MAYA绑定 归档 - 喵喵动画屋</title>
	<link>https://www.miaodonghua.com/category/maya绑定教学</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Maya Curve Rigger｜线条类道具一键绑定（Rope / Tail / Tentacle Rig）</title>
		<link>https://www.miaodonghua.com/3550.html</link>
		
		<dc:creator><![CDATA[喵喵动画屋]]></dc:creator>
		<pubDate>Sun, 14 Dec 2025 15:39:19 +0000</pubDate>
				<category><![CDATA[MAYA绑定]]></category>
		<guid isPermaLink="false">https://www.miaodonghua.com/?p=3550</guid>

					<description><![CDATA[<p>This video demonstrates how to rig flexible props such  &#8230; </p>
<p class="link-more"><a href="https://www.miaodonghua.com/3550.html" class="more-link">继续阅读<span class="screen-reader-text">“Maya Curve Rigger｜线条类道具一键绑定（Rope / Tail / Tentacle Rig）”</span></a></p>
<p><a href="https://www.miaodonghua.com/3550.html">Maya Curve Rigger｜线条类道具一键绑定（Rope / Tail / Tentacle Rig）</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<pre class="wp-block-code has-vivid-green-cyan-color has-black-background-color has-text-color has-background has-link-color wp-elements-bf4ee23ff0e4304b7adaed6a619ed75e"><code>import maya.cmds as cmds
import maya.mel as mel
import math
import sys
from maya.cmds import*
class Curve_Rigger:
    def __init__(self):
        print("请选择起始和结束定位器 / Select start and end locators")
        pass

    def FolRivet(self):
        sel=ls(sl=1)
        index=len(sel)
        shape=listRelatives(sel&#91;-1],type='shape')&#91;0]
        if objExists("Rivet_Fol_Group"):
            grp="Rivet_Fol_Group"
        else:
            grp=group(em=1,n="Rivet_Fol_Group")
        for i in range(0,index-1):
            loc=sel&#91;i]
            decompNode=shadingNode('decomposeMatrix',au=1)
            if nodeType(shape)=='mesh':
                cposNode=shadingNode('closestPointOnMesh',au=1)
                connectAttr(shape+'.worldMatrix&#91;0]',cposNode+'.inputMatrix')
                connectAttr(shape+'.outMesh',cposNode+'.inMesh')
            elif nodeType(shape)=='nurbsSurface':
                cposNode=shadingNode('closestPointOnSurface',au=1)
                connectAttr(shape+'.worldSpace',cposNode+'.inputSurface')
            connectAttr(loc+'.worldMatrix&#91;0]',decompNode+'.inputMatrix')
            connectAttr(decompNode+'.outputTranslate',cposNode+'.inPosition')
            UVal=getAttr(cposNode+'.parameterU')
            VVal=getAttr(cposNode+'.parameterV')
            follicle_name = loc + "_fol"
            follicle_shape_name = follicle_name + "Shape"
            # 创建毛囊 / Create follicle
            follicle_shape = createNode("follicle", name=follicle_shape_name)
            follicle = listRelatives(follicle_shape, p=1)&#91;0]
            rename(follicle,follicle_name)
            if nodeType(shape)=='mesh':
                connectAttr(shape + ".worldMesh&#91;0]", follicle_shape + ".inputMesh")
                connectAttr(shape+'.worldMatrix&#91;0]',follicle_shape+'.inputWorldMatrix')
            elif nodeType(shape)=='nurbsSurface':
                connectAttr(shape + ".local", follicle_shape + ".inputSurface")
                connectAttr(shape+'.worldMatrix&#91;0]',follicle_shape+'.inputWorldMatrix')
            setAttr(follicle_shape+'.parameterU',UVal)
            setAttr(follicle_shape+'.parameterV',VVal)
            connectAttr(follicle_shape+'.outTranslate',follicle+'.t')
            connectAttr(follicle_shape+'.outRotate',follicle+'.r')
            parentConstraint(follicle,loc,mo=1)
            parent(follicle,grp)
            delete(cposNode,decompNode)
    def create_cylinder_with_locators(self,name, start_locator, end_locator, radius=0.5, divisions=20):
        # 获取定位器的位置 / Get the positions of the locators
        start_position = cmds.xform(start_locator, query=True, translation=True, worldSpace=True)
        end_position = cmds.xform(end_locator, query=True, translation=True, worldSpace=True)
    
        # 计算圆柱体的高度和方向向量 / Calculate the height and direction vector of the cylinder
        height = math.sqrt(sum((end - start) ** 2 for start, end in zip(start_position, end_position)))
        direction = &#91;(end - start) / height for start, end in zip(start_position, end_position)]
    
        # 使用指定参数创建圆柱体 / Create a cylinder with the specified parameters
        cylinder = cmds.polyCylinder(n=name, radius=radius, height=height, subdivisionsY=divisions, axis=direction)&#91;0]
    
        # 将圆柱体定位在两个定位器的中点 / Position the cylinder at the midpoint between the locators
        midpoint = &#91;(start + end) / 2 for start, end in zip(start_position, end_position)]
        cmds.move(midpoint&#91;0], midpoint&#91;1], midpoint&#91;2], cylinder)
    
        return cylinder
    
    def create_curve_from_objects(self,objects):
        store_positions = &#91;cmds.xform(obj, query=True, worldSpace=True, translation=True) for obj in objects]
        degree = 3  # 如需更改度数请在此修改 / Change the degree here if needed
        
        build_curve = "curve -d {} ".format(degree)
        for pos in store_positions:
            build_curve += "-p {} {} {} ".format(pos&#91;0], pos&#91;1], pos&#91;2])
        
        return mel.eval(build_curve)
    
    def create_locator_in_direction(self,locator1, locator2):
        pos1 = cmds.pointPosition(locator1)
        pos2 = cmds.pointPosition(locator2)
        # 计算方向和距离 / Calculate direction and distance
        direction_vector = &#91;(pos2&#91;0] - pos1&#91;0]), (pos2&#91;1] - pos1&#91;1]), (pos2&#91;2] - pos1&#91;2])]
        direction_length = math.sqrt(sum(v ** 2 for v in direction_vector))
        normalized_direction = &#91;(v / direction_length) * 10 * direction_length for v in direction_vector]
        new_locator_pos = &#91;pos1&#91;i] + normalized_direction&#91;i] for i in range(3)]
        
        # 创建新定位器 / Create new locator
        new_locator = cmds.spaceLocator(name="new_locator")&#91;0]
        cmds.move(new_locator_pos&#91;0], new_locator_pos&#91;1], new_locator_pos&#91;2], new_locator)
        return new_locator
    
    def create_control_curve(self,pref, shape_type,obj,col):
        if shape_type == 'circle':
            ctrl = cmds.circle(ch=0, n=pref +obj.replace('Jnt','Ctrl'), r=0.5, nr=(1, 0, 0))&#91;0]
        elif shape_type == 'cube':
            mel.eval('$ctrl =`curve -d 1 -p 0.5 0.5 0.5 -p 0.5 0.5 -0.5 -p -0.5 0.5 -0.5 -p -0.5 -0.5 -0.5 -p 0.5 -0.5 -0.5 -p 0.5 0.5 -0.5 -p -0.5 0.5 -0.5 -p -0.5 0.5 0.5 -p 0.5 0.5 0.5 -p 0.5 -0.5 0.5 -p 0.5 -0.5 -0.5 -p -0.5 -0.5 -0.5 -p -0.5 -0.5 0.5 -p 0.5 -0.5 0.5 -p -0.5 -0.5 0.5 -p -0.5 0.5 0.5 -k 0 -k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9 -k 10 -k 11 -k 12 -k 13 -k 14 -k 15 -n "'+pref +obj.replace('Jnt','Ctrl')+'" `;')  # 立方体曲线定义 / Replace with cube curve definition
            ctrl = cmds.rename(pref +obj.replace('Jnt','Ctrl'))
            shape = cmds.pickWalk(d="down")&#91;0]
            cmds.rename(shape, ctrl + "Shape")
        
        ctrl_sdk_grp = cmds.group(n=pref +obj.replace('Jnt','Ctrl')+'_SdkGrp')
        ctrl_off_grp = cmds.group(n=pref +obj.replace('Jnt','Ctrl')+'_OffGrp')
        
        # 自定义控制器外观 / Customize control appearance
        cmds.setAttr(ctrl + '.overrideEnabled', 1)
        cmds.setAttr(ctrl + '.overrideColor', col)
        
        sub_ctrl = cmds.circle(ch=0, n=pref +obj.replace('Jnt','Sub_Ctrl'))&#91;0]
        sub_ctrl_sdk_grp = cmds.group(n=pref +obj.replace('Jnt','Sub_Ctrl')+'_SdkGrp')
        sub_ctrl_off_grp = cmds.group(n=pref +obj.replace('Jnt','Sub_Ctrl')+'_OffGrp')
        
        # 自定义子控制器外观 / Customize sub control appearance
        cmds.setAttr(sub_ctrl + '.overrideEnabled', 1)
        cmds.setAttr(sub_ctrl + '.overrideColor', 13)
        
        cmds.parent(sub_ctrl_off_grp, ctrl)
        cmds.addAttr(ctrl, ln='Sub_Ctrl_Vis', at='bool', h=0, k=1, r=1)
        cmds.connectAttr(ctrl + '.Sub_Ctrl_Vis', sub_ctrl_off_grp + '.v')
        delete(parentConstraint(obj,ctrl_off_grp,mo=0))
        return ctrl
    
    def create_joints_between_objects(self,num_joints, prefix=''):
        joints = &#91;]
        selObj=ls(sl=1)
        start_obj = selObj&#91;0]
        end_obj = selObj&#91;1]
        for i in range(num_joints + 2):
            select(cl=1)
            t = float(i) / float(num_joints + 1)
            joint_name = '{}_{:02d}_Jnt'.format(prefix, i)
            new_joint = cmds.joint(name=joint_name)
            
            start_pos = cmds.xform(start_obj, q=1, t=1, worldSpace=True)
            end_pos = cmds.xform(end_obj, q=1, t=1, worldSpace=True)
            joint_pos = &#91;
                start_pos&#91;0] + (end_pos&#91;0] - start_pos&#91;0]) * t,
                start_pos&#91;1] + (end_pos&#91;1] - start_pos&#91;1]) * t,
                start_pos&#91;2] + (end_pos&#91;2] - start_pos&#91;2]) * t
            ]
            cmds.xform(new_joint, translation=joint_pos, worldSpace=True)
            if not i ==  num_joints + 1:
                delete(aimConstraint(end_obj,new_joint,aim=(1,0,0),u=(0,1,0),wut='vector',wu=(0,1,0)))
            else:
                delete(aimConstraint(start_obj,end_obj,new_joint,aim=(-1,0,0),u=(0,1,0),wut='vector',wu=(0,1,0)))
            select(new_joint)
            if i>>0:
                makeIdentity( a = True, t =0, r= 1, s =0, n= 0, pn= 1);
            joints.append(new_joint)
        
        return joints
    
    def create_ui(self,path=''):
        window_name = "RigNet_Tools"
        if cmds.window(window_name, exists=True):
            cmds.deleteUI(window_name)
        cmds.window(window_name, title="曲线绑定工具 / Curve Rigger Tools",w=350,h=430)
        
        form=cmds.formLayout(numberOfDivisions=100,w = 350)
        txt=cmds.text(label="蒙皮关节数量 / Number of Skn Joints:")
        skn_joints_field = cmds.intField(minValue=1, value=10,w=80)
        
        FkTxt=cmds.text(label="控制器数量 / Number of Controls:")
        flst_field = cmds.intField(minValue=1, value=5,w=80)
        IKChk=cmds.checkBox(label="IK控制器 / IK Controls")
        TwistChk=cmds.checkBox(label="启用扭曲 / Enable Twist")
        FKChk=cmds.checkBox(label="FK控制器 / FK Controls")
        RevChk=cmds.checkBox(label="反向FK控制器 / RevFK Controls")
        PathChk=cmds.checkBox(label="路径控制器 / Path Controls",cc=lambda state: self.enable_flst_field(state,path_joints_field))
        PText = cmds.text(label="路径控制器数量 / Number of Path Controls:",)
        path_joints_field = cmds.intField(minValue=1, value=50,en=0,w=80)
        but=cmds.button(label="创建绑定 / Create Rig", command=lambda args: self.create_rig(skn_joints_field, flst_field,path_joints_field,IKChk,FKChk,RevChk,PathChk,TwistChk),bgc=(0.15,0.15,0.15),w=310,h=40)
        transfer_but=cmds.button(label="转移蒙皮权重 / Transfer Skin Weights", command=lambda args: self.transfer_skin_weights(),bgc=(0.2,0.3,0.2),w=310,h=40)
        cmds.formLayout( form, edit=True,
    	
    	attachForm=&#91;
    	(txt, 'top',20),
    	
    	(txt, 'left',20),
    	
    	(skn_joints_field, 'top',17),
    	
    	(skn_joints_field, 'left',260),
    	(flst_field, 'top',37),
    	
    	(flst_field, 'left',260),
        (IKChk, 'top', 65),
    	(IKChk, 'left', 20),
    	
    	(TwistChk, 'top', 65),
    	
    	(TwistChk, 'left', 200),
    	
    	(FkTxt, 'top', 40),
    	
    	(FkTxt, 'left', 20),
    	(FKChk, 'top', 90),
    	
    	(FKChk, 'left', 20),
    	(RevChk, 'top', 90),
    	
    	(RevChk, 'left', 200),
    	
    	(PathChk, 'top', 140),
    	
    	(PathChk, 'left', 20),
    	(PText, 'top', 115),
    	
    	(PText, 'left', 20),
    	(path_joints_field, 'top', 112),
    	
    	(path_joints_field, 'left', 260),
    	(but, 'top', 170),
    	
    	(but, 'left', 20),
    	(transfer_but, 'top', 220),
    	
    	(transfer_but, 'left', 20)
    
    
    
    
    
    	])
        cmds.showWindow(window_name)
    def enable_flst_field(self,state, path_joints_field):
        cmds.intField(path_joints_field, edit=True, enable=state,bgc=(0.0,0.0,0.0))
    
    def transfer_skin_weights(self):
        # 获取选择的模型 / Get selected model
        selection = cmds.ls(sl=True)
        if not selection:
            cmds.warning("请先选择目标模型 / Please select target model first")
            return
        
        # 检查源模型是否存在 / Check if source model exists
        source_mesh = "Dummy_Mesh"
        if not cmds.objExists(source_mesh):
            cmds.warning("源模型 'Dummy_Mesh' 不存在 / Source model 'Dummy_Mesh' does not exist")
            return
        
        # 获取源模型的蒙皮簇 / Get skin cluster from source mesh
        source_skin_cluster = None
        # 获取网格的shape节点 / Get mesh shape node
        source_shapes = cmds.listRelatives(source_mesh, shapes=True, type='mesh')
        if not source_shapes:
            cmds.warning("源模型没有网格形状 / Source model has no mesh shape")
            return
        
        source_shape = source_shapes&#91;0]
        # 从shape节点查找蒙皮簇 / Find skin cluster from shape node
        skin_clusters = cmds.listConnections(source_shape, type='skinCluster', source=True, destination=False)
        if not skin_clusters:
            # 尝试从历史记录中查找 / Try to find from history
            history = cmds.listHistory(source_shape, pruneDagObjects=True)
            if history:
                for node in history:
                    if cmds.nodeType(node) == 'skinCluster':
                        skin_clusters = &#91;node]
                        break
        
        if skin_clusters:
            source_skin_cluster = skin_clusters&#91;0]
        else:
            cmds.warning("源模型没有蒙皮簇 / Source model has no skin cluster")
            return
        
        # 获取蒙皮关节 / Get skin joints
        skin_joints = cmds.skinCluster(source_skin_cluster, query=True, influence=True)
        if not skin_joints:
            cmds.warning("无法获取蒙皮关节 / Cannot get skin joints")
            return
        
        # 处理每个选择的对象 / Process each selected object
        for target_mesh in selection:
            # 检查是否为网格 / Check if it's a mesh
            target_shapes = cmds.listRelatives(target_mesh, shapes=True, type='mesh')
            if not target_shapes:
                cmds.warning("'{}' 不是网格对象 / '{}' is not a mesh object".format(target_mesh, target_mesh))
                continue
            
            target_shape = target_shapes&#91;0]
            
            # 检查目标模型是否已有蒙皮簇 / Check if target already has skin cluster
            target_skin_cluster = None
            target_skin_clusters = cmds.listConnections(target_shape, type='skinCluster', source=True, destination=False)
            if not target_skin_clusters:
                # 尝试从历史记录中查找 / Try to find from history
                history = cmds.listHistory(target_shape, pruneDagObjects=True)
                if history:
                    for node in history:
                        if cmds.nodeType(node) == 'skinCluster':
                            target_skin_clusters = &#91;node]
                            break
            if target_skin_clusters:
                target_skin_cluster = target_skin_clusters&#91;0]
            
            # 如果目标模型没有蒙皮簇，创建一个 / Create skin cluster if target doesn't have one
            if not target_skin_cluster:
                # 创建新的蒙皮簇 / Create new skin cluster
                target_skin_cluster = cmds.skinCluster(skin_joints, target_mesh, tsb=True, mi=1)&#91;0]
            
            # 转移蒙皮权重 / Transfer skin weights
            try:
                cmds.copySkinWeights(
                    sourceSkin=source_skin_cluster,
                    destinationSkin=target_skin_cluster,
                    noMirror=True,
                    surfaceAssociation='closestPoint',
                    influenceAssociation=&#91;'oneToOne', 'closestJoint']
                )
                print("成功转移蒙皮权重: {} / Successfully transferred skin weights: {}".format(target_mesh, target_mesh))
            except Exception as e:
                cmds.warning("转移蒙皮权重失败: {} / Failed to transfer skin weights: {}".format(str(e), str(e)))
        
        cmds.select(selection, r=True)
    def create_rig(self,skn_joints_field, flst_field,path_joints_field,IKChk,FKChk,RevChk,PathChk,TwistChk):
        IK=cmds.checkBox(IKChk,q=1,v=1)
        FK=cmds.checkBox(FKChk,q=1,v=1)
        Rev=cmds.checkBox(RevChk,q=1,v=1)
        Path=cmds.checkBox(PathChk,q=1,v=1)
        Twst=cmds.checkBox(TwistChk,q=1,v=1)
        print (IK,FK,Rev,Path)
        num_skn_joints = cmds.intField(skn_joints_field, query=True, value=True)
        num_flst = cmds.intField(flst_field, query=True, value=True)
        pth_jnt=cmds.intField(path_joints_field,q=1,value=1)
        initLoc=ls(sl=1)
        
        # 创建蒙皮关节 / Create SKn Jnt #
        Jlst=self.create_joints_between_objects(num_skn_joints-2,'Skn')
        select(Jlst&#91;0])
        FreezeTransformations()
        
        # 将'locator1'和'locator2'替换为你的定位器名称 / Replace 'locator1' and 'locator2' with the names of your locators
        start_locator = initLoc&#91;0]
        end_locator = initLoc&#91;1]
        
        # 调用函数创建圆柱体 / Call the function to create the cylinder
        cylinder = self.create_cylinder_with_locators("Dummy_Mesh", start_locator, end_locator, radius=0.3, divisions=num_skn_joints-1)
        select(Jlst,cylinder)
        SmoothBindSkin()
        a=-1
        select(cl=1)
        for i in range(len(Jlst)):
            jj=cmds.duplicate(Jlst&#91;a],n='IK_'+Jlst&#91;a])
            grp = group(em=1,n= Jlst&#91;a]+'_Conn_Grp')
            delete(parentConstraint(Jlst&#91;a],grp,mo=0))
            parent(Jlst&#91;a],grp)
            if i>0:
                parent('IK_'+Jlst&#91;a+1],'IK_'+Jlst&#91;a])
                #parent(Jlst&#91;a+1]+'_Conn_Grp',Jlst&#91;a])
            parentConstraint('IK_'+Jlst&#91;a],grp,mo=1)
            #connectAttr('IK_'+Jlst&#91;a]+'.r',grp+'.r')
            a=a-1
        Ik_OffGrp=group(em=1,n='IK_Offset_Val_Grp')
        delete(parentConstraint(Jlst&#91;0],Ik_OffGrp,mo=0))        
        select(initLoc)
        
        # 创建驱动IK关节 / Create Drv IK Jnt #
        Dlst=self.create_joints_between_objects(num_flst-2,'Drv')  
        self.create_curve_from_objects(Dlst)
        crv=ls(sl=1)&#91;0]
        refresh()
        select('IK_'+Jlst&#91;0])
        FreezeTransformations()
        select('IK_'+Jlst&#91;0],'IK_'+Jlst&#91;-1])
        refresh()    
        
        # 创建IK样条 / Create IK Spline #
        ik=ikHandle(sol = 'ikSplineSolver', pcv=0, c=crv, ccv= 0)
        select(Dlst,crv)
        SmoothBindSkin()
        main_Ctrl = circle(ch=0,n='Main_Ctrl',r=5,nr=(0,1,0))&#91;0]
        main_grp = group(n='Main_Ctrl_Grp')
        #delete(parentConstraint(initLoc&#91;0],initLoc&#91;1],main_grp,mo=0))  
        parent('IK_'+Jlst&#91;0],Ik_OffGrp)
        for jJnt in Jlst:
            parent(jJnt+'_Conn_Grp',Ik_OffGrp)
        # 添加拉伸功能 / Adding Stretch #
        addAttr(main_Ctrl,ln='Maintain_Length',min=0,max=1,k=1,at='float')
        crvInfo=arclen(crv,ch=1)
        dis=getAttr(crvInfo+'.arcLength')
        StrGlMD=createNode('multiplyDivide',n='Wire_StrVGlobal_MD')
        connectAttr(crvInfo+'.arcLength',StrGlMD+'.input1X')
        connectAttr(main_Ctrl+'.sx',StrGlMD+'.input2X')
        setAttr(StrGlMD+'.operation',2)
        StrMD=createNode('multiplyDivide',n='Wire_StrVal_MD')
        setAttr(StrMD+'.input2X',dis)
        connectAttr(StrGlMD+'.outputX',StrMD+'.input1X')
        setAttr(StrMD+'.operation',2)
        Tval=getAttr('IK_'+Jlst&#91;-1]+'.tx')
        StrValMD=createNode('multiplyDivide',n='Wire_Stretchy_MD')
        setAttr(StrValMD+'.input1X',Tval)
        connectAttr(StrMD+'.outputX',StrValMD+'.input2X')
        setAttr(StrValMD+'.operation',1)
        StrcBlnd=createNode('blendColors',n='Wire_StrSwitch_MD')
        setAttr('Wire_StrSwitch_MD.color2R',Tval)
        connectAttr(StrValMD+'.outputX','Wire_StrSwitch_MD.color1R')
        connectAttr(main_Ctrl+'.Maintain_Length',StrcBlnd+'.blender')
        for i in range(1,len(Jlst)):
            connectAttr(StrcBlnd+'.outputR','IK_'+Jlst&#91;i]+'.tx')
        FkLst=&#91;]
        IKCtrl=&#91;]
        RevLst=&#91;]
        ConsLst=&#91;]
        IKGrp=&#91;]
        pthLst=&#91;]
        i=0
        if FK == True:
            if Rev == True:
                IK = True
        if IK == True:
            for DJnt in Dlst:
                Ctrl = self.create_control_curve('IK_', 'circle',DJnt,17)
                IKCtrl.append(Ctrl)
        if FK == True:
            Flst=list(Dlst)  
            print(Dlst) 
            Flst.reverse()
            print(Flst)  
            for DJnt in Flst:
                Ctrl = self.create_control_curve('FK_', 'cube',DJnt,20)
                FkLst.append(Ctrl)
                Grp=group(em=1,n=Ctrl.replace('Ctrl','Drv_OffGrp'))
                delete(parentConstraint(Ctrl,Grp,mo=0))
                if i>>0:
                    parent(FkLst&#91;i-1].replace('Ctrl','Ctrl_OffGrp'),Ctrl)
                    parent(FkLst&#91;i-1].replace('Ctrl','Drv_OffGrp'),Grp)
                i=i+1
                connectAttr(Grp+'.t',Ctrl.replace('Ctrl','Ctrl_OffGrp')+'.t')
                connectAttr(Grp+'.r',Ctrl.replace('Ctrl','Ctrl_OffGrp')+'.r')
                connectAttr(Grp+'.s',Ctrl.replace('Ctrl','Ctrl_OffGrp')+'.s')
        i=0
        if Rev == True:
            Revlst=list(Dlst)   
            print(Revlst)     
            for DJnt in Revlst:
                Ctrl = self.create_control_curve('RevFK_', 'cube',DJnt,21)
                RevLst.append(Ctrl)
                Grp=group(em=1,n=Ctrl.replace('Ctrl','Drv_OffGrp'))
                delete(parentConstraint(Ctrl,Grp,mo=0))
                if i>>0:
                    parent(RevLst&#91;i-1].replace('Ctrl','Ctrl_OffGrp'),Ctrl)
                    parent(RevLst&#91;i-1].replace('Ctrl','Drv_OffGrp'),Grp)
                i=i+1
                connectAttr(Grp+'.t',Ctrl.replace('Ctrl','Ctrl_OffGrp')+'.t')
                connectAttr(Grp+'.r',Ctrl.replace('Ctrl','Ctrl_OffGrp')+'.r')
                connectAttr(Grp+'.s',Ctrl.replace('Ctrl','Ctrl_OffGrp')+'.s')
        if IK ==  True:
            i=0
            for DJnt in Dlst:
                parentConstraint(IKCtrl&#91;i].replace('Ctrl','Sub_Ctrl'),DJnt,mo=1)
                i=i+1
        elif FK == True:
            i=0
            for DJnt in Flst:
                parentConstraint(FkLst&#91;i].replace('Ctrl','Sub_Ctrl'),DJnt,mo=1)
                i=i+1
        elif Rev == True:
            i=0
            for DJnt in Dlst:
                parentConstraint(RevLst&#91;i].replace('Ctrl','Sub_Ctrl'),DJnt,mo=1)
                i=i+1
        
        # 其余绑定创建代码 / Rest of the rig creation code #
        a=0
        b=-1
        if IK:
         for ikctrl in IKCtrl:
            IKGrp.append(ikctrl.replace('Ctrl','Ctrl_OffGrp'))
            par=&#91;]
            if FkLst:
                par.append(FkLst&#91;b])
            if RevLst:
                par.append(RevLst&#91;a])
            if par:
                constraint = cmds.parentConstraint(par, ikctrl.replace('Ctrl','Ctrl_OffGrp'),mo=1)&#91;0]
                ConsLst.append(constraint)
            a=a+1
            b=b-1    
        
        if FK and Rev == True:
            addAttr(main_Ctrl,ln='RevFK',min=0,max=10,k=1,at='float')
            inVal=0
            val=10.0/len(Dlst)
            sel =list(IKCtrl)
            for obj in sel:    
                Nobj=obj
                obj = obj.replace('Ctrl','Ctrl_OffGrp')
                par=parentConstraint(Nobj.replace('IK_','FK_'),Nobj.replace('IK_','RevFK_'),obj,mo=1)&#91;0]
                select(par)
                setDrivenKeyframe(cd="Main_Ctrl.RevFK",at=Nobj.replace('IK_','FK_')+'W0',dv=inVal,v=1)
                setDrivenKeyframe(cd="Main_Ctrl.RevFK",at=Nobj.replace('IK_','FK_')+'W0',dv=inVal+val,v=0)
                select(Nobj.replace('IK_','FK_')+'Shape')
                setDrivenKeyframe(cd="Main_Ctrl.RevFK",at='.v',dv=inVal,v=1)
                setDrivenKeyframe(cd="Main_Ctrl.RevFK",at='.v',dv=inVal+val,v=0)
                select(par)
                setDrivenKeyframe(cd="Main_Ctrl.RevFK",at=Nobj.replace('IK_','RevFK_')+'W1',dv=inVal,v=0)
                setDrivenKeyframe(cd="Main_Ctrl.RevFK",at=Nobj.replace('IK_','RevFK_')+'W1',dv=inVal+val,v=1)
                select(Nobj.replace('IK_','RevFK_')+'Shape')
                setDrivenKeyframe(cd="Main_Ctrl.RevFK",at='.v',dv=inVal,v=0)
                setDrivenKeyframe(cd="Main_Ctrl.RevFK",at='.v',dv=inVal+val,v=1)
                inVal=inVal+val
        select (Jlst)
        sets(n='Bind_Skin')
        pJnt=listRelatives(Jlst&#91;0],p=1)&#91;0]
        select(Dlst)
        group(n='Jnt_Grp')
        scaleConstraint('Main_Ctrl','Jnt_Grp',mo=1)
        select(crv,ik&#91;0])
        group(n='Extra_Grp')
        dGrp=group(em=1,n='Drv_Null_Group')
        parent(dGrp,'Extra_Grp')
        parentConstraint('Main_Ctrl',dGrp,mo=1)
        scaleConstraint('Main_Ctrl',dGrp,mo=1)
        if IK == True:
            addAttr(main_Ctrl,ln='IK_Ctrl_Vis',at='bool',k=1)
            group(IKGrp,n='IK_Ctrl_Grp')
            connectAttr('Main_Ctrl.IK_Ctrl_Vis','IK_Ctrl_Grp.v')
            parent('IK_Ctrl_Grp','Main_Ctrl')
        if FK == True:
            
            select(FkLst&#91;-1].replace('Ctrl','Ctrl_OffGrp'))
            FkGrp=group(n='Fk_Ctrl_Group')
            addAttr(main_Ctrl,ln='FK_Ctrl_Vis',at='bool',k=1)
            connectAttr('Main_Ctrl.FK_Ctrl_Vis',FkGrp+'.v')
            parent(FkGrp,'Main_Ctrl')
            parent("FK_Drv_00_Drv_OffGrp",dGrp)         
        if Rev == True:
            select(RevLst&#91;-1].replace('Ctrl','Ctrl_OffGrp'))
            RevFkGrp=group(n='RevFk_Ctrl_Group')
            try:
                addAttr(main_Ctrl,ln='FK_Ctrl_Vis',at='bool',k=1)
            except: pass
            connectAttr('Main_Ctrl.FK_Ctrl_Vis',RevFkGrp+'.v')
            parent(RevFkGrp,'Main_Ctrl')
            parent(RevLst&#91;-1].replace('Ctrl','Drv_OffGrp'),dGrp)                
        if Path == True:
            addAttr(main_Ctrl,ln='Path_Ctrl_Vis',at='bool',k=1)
            self.create_locator_in_direction(initLoc&#91;0],initLoc&#91;1])
            select(initLoc&#91;0],"new_locator")
            PathLst=self.create_joints_between_objects(pth_jnt-2,'Path')
            select(PathLst)
            Pcrv=self.create_curve_from_objects(PathLst)
            noCv=len(PathLst)-1
            rebuildCurve(Pcrv,ch=1,rpo=1,rt=0,end=1,kr=0,kcp=0,kep=1,kt=0,s=noCv,d=3,tol=0.01)
            i=0
            PathLst.reverse()
            for PJnt in PathLst:
                Ctrl = self.create_control_curve('', 'circle',PJnt,13)
                pthLst.append(Ctrl)
                parent(PJnt,Ctrl.replace('Ctrl','Sub_Ctrl'))
                if i>>0:
                    try:
                        parent(pthLst&#91;i-1].replace('Ctrl','Ctrl_OffGrp'),Ctrl)
                    except:
                        pass
                i=i+1
            parent(pthLst&#91;-1].replace('Ctrl','Ctrl_OffGrp'),'Main_Ctrl')
            connectAttr('Main_Ctrl.Path_Ctrl_Vis',pthLst&#91;-1].replace('Ctrl','Ctrl_OffGrp')+'.v')
            DummyJnt=duplicate(PathLst&#91;0],n='Dummy_Jnt')&#91;0]
            delete(pointConstraint(Pcrv,DummyJnt,mo=0))
            DCrv=duplicate(Pcrv)&#91;0]
            setAttr(DummyJnt+'.tz',0.5)
            delete(pointConstraint(DummyJnt,Pcrv,mo=0))
            setAttr(DummyJnt+'.tz',-0.5)
            delete(pointConstraint(DummyJnt,DCrv,mo=0))
            delete(DummyJnt)
            select(Pcrv,DCrv,PathLst)
            SmoothBindSkin()
            select(Pcrv,DCrv)
            surf=loft(n='Path_Surface')
            DeleteHistory(surf&#91;0])
            select(surf&#91;0],PathLst)
            skinCluster(PathLst,surf&#91;0],tsb=1,mi=1)        
            print(surf)
            if not FK and not Rev == True:
                if not IK:
                    select(Dlst,surf&#91;0])
                    self.FolRivet()  
                else: 
                    print('不存在 / Not Present')
                    select(IKGrp,surf&#91;0])
                    self.FolRivet() 
            if FK:
                select("FK_Drv_*_Drv_OffGrp",surf&#91;0])
                self.FolRivet() 
            if Rev:
                select("RevFK_Drv_*_Drv_OffGrp",surf&#91;0])
                self.FolRivet() 
            
            # 创建移动绑定设置 / Create traveling Rig setup
            addAttr(main_Ctrl,ln='Travel',min=0,max=10,k=1,at='float')
            if FK:
                fol=ls("FK_Drv_*_Drv_OffGrp_fol")
                initval=getAttr(fol&#91;-1]+"Shape.parameterV")
                Diff=1.0-initval
                for follicle in fol:
                    shp=listRelatives(follicle,c=1,f=1)&#91;0]
                    inValue=getAttr(shp+'.parameterV')
                    select(shp)
                    setDrivenKeyframe(cd="Main_Ctrl.Travel",at='parameterV',dv=0,v=inValue)
                    setDrivenKeyframe(cd="Main_Ctrl.Travel",at='parameterV',dv=10,v=inValue+Diff)
            if Rev:
                fol=ls("RevFK_Drv_*_Drv_OffGrp_fol")
                initval=getAttr(fol&#91;-1]+"Shape.parameterV")
                Diff=1.0-initval
                for follicle in fol:
                    shp=listRelatives(follicle,c=1,f=1)&#91;0]
                    inValue=getAttr(shp+'.parameterV')
                    select(shp)
                    setDrivenKeyframe(cd="Main_Ctrl.Travel",at='parameterV',dv=0,v=inValue)
                    setDrivenKeyframe(cd="Main_Ctrl.Travel",at='parameterV',dv=10,v=inValue+Diff)
            if not FK and not Rev == True:
                if not IK:
                    fol=ls("Drv_*_Jnt_fol")
                    initval=getAttr(fol&#91;-1]+"|follicleShape.parameterV")
                    Diff=1.0-initval
                    for follicle in fol:
                        shp=listRelatives(follicle,c=1,f=1)&#91;0]
                        inValue=getAttr(shp+'.parameterV')
                        select(shp)
                        setDrivenKeyframe(cd="Main_Ctrl.Travel",at='parameterV',dv=0,v=inValue)
                        setDrivenKeyframe(cd="Main_Ctrl.Travel",at='parameterV',dv=10,v=inValue+Diff)
                if IK:
                    fol=ls("IK_Drv_*_Ctrl_OffGrp_fol")
                    initval=getAttr(fol&#91;-1]+"Shape.parameterV")
                    Diff=1.0-initval
                    for follicle in fol:
                        shp=listRelatives(follicle,c=1,f=1)&#91;0]
                        inValue=getAttr(shp+'.parameterV')
                        select(shp)
                        setDrivenKeyframe(cd="Main_Ctrl.Travel",at='parameterV',dv=0,v=inValue)
                        setDrivenKeyframe(cd="Main_Ctrl.Travel",at='parameterV',dv=10,v=inValue+Diff)
        # 在蒙皮关节上添加扭曲 / Adding Twist on Skin Jnts
        if Twst:                
            select(cl=1)
            DummyJnt=duplicate(Jlst&#91;0],n='Dummy_Jnt')&#91;0]
            delete(pointConstraint(crv,DummyJnt,mo=0))
            TlocLst=&#91;]
            DnumJnt=len(Dlst)-1
            LCrv=duplicate(crv)&#91;0]
            rebuildCurve(LCrv,ch=1,rpo=1,rt=0,end=1,kr=0,kcp=0,kep=1,kt=0,s=DnumJnt,d=3,tol=0.01)
            RCrv=duplicate(LCrv)&#91;0]
            axis=&#91;'tx','ty','tz']
            for ax in axis:
                setAttr(LCrv+'.'+ax,l=0)
                setAttr(RCrv+'.'+ax,l=0)
            setAttr(DummyJnt+'.tz',0.5)
            delete(pointConstraint(DummyJnt,LCrv,mo=0))
            setAttr(DummyJnt+'.tz',-0.5)
            delete(pointConstraint(DummyJnt,RCrv,mo=0))
            delete(DummyJnt)
            select(LCrv,RCrv)
            Tsurf=loft(n='Twist_Surface')
            DeleteHistory(Tsurf&#91;0])
            select(Tsurf&#91;0],Dlst)
            skinCluster(Dlst,Tsurf&#91;0],tsb=1,mi=1)
            for SknJnt in Jlst:
                Tloc=spaceLocator(n=SknJnt.replace('Jnt','_Twst_Loc'))&#91;0]
                Tgrp=group(n=Tloc+'_Grp')
                TlocLst.append(Tgrp)
                delete(parentConstraint(SknJnt,Tgrp,mo=0))
                parentConstraint(Tloc,SknJnt,st=('x','y','z'),sr=('y','z'),mo=1)
            
            select(TlocLst,Tsurf&#91;0])
            self.FolRivet()  
            for grp in TlocLst:
                delete(listRelatives(grp,ad=1,type='constraint'))
                parent(grp,grp+'_fol')   
            parent('Twist_Surface','Extra_Grp')
            delete(LCrv,RCrv)
        
        # 创建外层控制器并整理层级 / Create outer controllers and organize hierarchy
        select(cl=True)  # 清除选择，确保组是空的 / Clear selection to ensure groups are empty
        # 创建中间层控制器 / Create middle layer controller
        middle_Ctrl = circle(ch=0,n='Middle_Ctrl',r=6,nr=(0,1,0))&#91;0]
        select(cl=True)  # 清除选择 / Clear selection
        middle_Ctrl_off_grp = group(em=True, n='Middle_Ctrl_OffGrp')
        delete(parentConstraint(main_Ctrl,middle_Ctrl_off_grp,mo=0))
        setAttr(middle_Ctrl + '.overrideEnabled', 1)
        setAttr(middle_Ctrl + '.overrideColor', 14)  # 黄色 / Yellow
        
        # 创建最外层控制器 / Create outer layer controller
        select(cl=True)  # 清除选择 / Clear selection
        outer_Ctrl = circle(ch=0,n='Outer_Ctrl',r=7,nr=(0,1,0))&#91;0]
        select(cl=True)  # 清除选择 / Clear selection
        outer_Ctrl_off_grp = group(em=True, n='Outer_Ctrl_OffGrp')
        delete(parentConstraint(middle_Ctrl,outer_Ctrl_off_grp,mo=0))
        setAttr(outer_Ctrl + '.overrideEnabled', 1)
        setAttr(outer_Ctrl + '.overrideColor', 18)  # 红色 / Red
        
        # 建立层级关系 / Establish hierarchy: Outer_Ctrl -> Middle_Ctrl -> Main_Ctrl_Grp
        # 从内到外建立层级：先将 Main_Ctrl_Grp 放入 Middle_Ctrl
        main_grp_parent = listRelatives(main_grp, p=True)
        if not main_grp_parent or main_grp_parent&#91;0] != middle_Ctrl:
            parent(main_grp, middle_Ctrl)
        # 然后将 Middle_Ctrl 放入其 OffGrp
        middle_Ctrl_parent = listRelatives(middle_Ctrl, p=True)
        if not middle_Ctrl_parent or middle_Ctrl_parent&#91;0] != middle_Ctrl_off_grp:
            parent(middle_Ctrl, middle_Ctrl_off_grp)
        # 将 Middle_Ctrl_OffGrp 放入 Outer_Ctrl
        middle_off_grp_parent = listRelatives(middle_Ctrl_off_grp, p=True)
        if not middle_off_grp_parent or middle_off_grp_parent&#91;0] != outer_Ctrl:
            parent(middle_Ctrl_off_grp, outer_Ctrl)
        # 将 Outer_Ctrl 放入其 OffGrp
        outer_Ctrl_parent = listRelatives(outer_Ctrl, p=True)
        if not outer_Ctrl_parent or outer_Ctrl_parent&#91;0] != outer_Ctrl_off_grp:
            parent(outer_Ctrl, outer_Ctrl_off_grp)
                 
        # 清理 / Cleanup
        parent(Ik_OffGrp,'Jnt_Grp')    
        delete(initLoc)
        if Path:
            delete(Pcrv,DCrv,'new_locator')
            parent('Path_Surface','Extra_Grp')
        try:
            parent('Rivet_Fol_Group','Extra_Grp')
        except:pass
        select('Dummy_Mesh')
        RefGrp=group(n='Ref_Geo_Grp')
        select(RefGrp,'Outer_Ctrl_OffGrp','Jnt_Grp','Extra_Grp')
        group(n='Rig_Grp')
        setAttr('Extra_Grp.v',0)
        setAttr('Jnt_Grp.v',0)
                           
 
rope_rig_instance = Curve_Rigger()
rope_rig_instance.create_ui()</code></pre>



<p>This video demonstrates how to rig flexible props such as rope, tail, tentacle, chain and vine in Maya using Curve Rigger.<br>本期视频演示如何在 Maya 中，使用 Curve Rigger 快速绑定线条类道具（绳子、尾巴、触手、藤蔓等）。</p>



<p>With only 2 locators, you can automatically create joints, FK / IK, Reverse FK, stretch, twist and path animation controls.<br>只需要 2 个定位器，即可一键生成骨骼、FK / IK、反向 FK、拉伸、扭曲以及路径动画控制。</p>



<p>⚠️ This tool rigs flexible props USING curves, not rigging the curve itself.<br>⚠️ 本工具是“通过曲线来绑定道具”，而不是去绑定曲线本身。</p>



<p>🔹 Tool Features / 功能亮点</p>



<ul class="wp-block-list">
<li>One-click rig for flexible props (Rope / Tail / Tentacle / Vine / Chain)</li>



<li>FK / IK / Reverse FK switching</li>



<li>Stretch &amp; twist control</li>



<li>Path-based animation control</li>



<li>Auto skin and one-click skin weight transfer</li>



<li>Bilingual UI (Chinese / English)</li>



<li>线条类道具一键自动绑定</li>



<li>支持 FK / IK / 反向 FK 切换</li>



<li>支持拉伸、扭曲控制</li>



<li>路径动画控制系统</li>



<li>蒙皮权重一键转移</li>



<li>中英文双语界面优化</li>
</ul>



<p>🔹 Suitable For / 适用类型</p>



<ul class="wp-block-list">
<li>Rope / Cable / Hose rig</li>



<li>Tail &amp; Tentacle rig</li>



<li>Vine, whip and flexible props</li>



<li>Animation, game and cartoon production</li>



<li>绳子、管线、软管类道具</li>



<li>尾巴、触手类结构</li>



<li>藤蔓、鞭子等线条道具</li>



<li>动画、游戏、卡通项目</li>
</ul>



<p>🔹 Workflow Overview / 绑定流程</p>



<ol class="wp-block-list">
<li>Place 2 locators to define the start and end of the prop</li>



<li>Run Curve Rigger to generate the rig automatically</li>



<li>Animate using FK, IK or path controls</li>



<li>放置 2 个定位器作为起点和终点</li>



<li>运行 Curve Rigger 自动生成绑定</li>



<li>使用 FK / IK 或路径控制进行动画</li>
</ol>



<p>🔹 Software<br>Autodesk Maya 2018+</p>
<p><a href="https://www.miaodonghua.com/3550.html">Maya Curve Rigger｜线条类道具一键绑定（Rope / Tail / Tentacle Rig）</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Maya 2022+ Eleven Rig绑定模型</title>
		<link>https://www.miaodonghua.com/3534.html</link>
		
		<dc:creator><![CDATA[喵喵动画屋]]></dc:creator>
		<pubDate>Wed, 01 Oct 2025 08:05:18 +0000</pubDate>
				<category><![CDATA[MAYA绑定]]></category>
		<category><![CDATA[Maya教程]]></category>
		<category><![CDATA[动画]]></category>
		<category><![CDATA[绑定]]></category>
		<guid isPermaLink="false">https://www.miaodonghua.com/?p=3534</guid>

					<description><![CDATA[<p>免费开源的 Eleven RIG 模型 —— Maya 动画练习利器 今天要和大家分享的是一个非常经典的免费开 &#8230; </p>
<p class="link-more"><a href="https://www.miaodonghua.com/3534.html" class="more-link">继续阅读<span class="screen-reader-text">“Maya 2022+ Eleven Rig绑定模型”</span></a></p>
<p><a href="https://www.miaodonghua.com/3534.html">Maya 2022+ Eleven Rig绑定模型</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-file"><a id="wp-block-file--media-dd668aec-6c39-4cd4-bdd1-b8eddfdea560" href="https://www.miaodonghua.com/wp-content/uploads/2025/10/ElevenRig_FinalTextures.7z"><br>ElevenRig_Final+Textures</a><a href="https://www.miaodonghua.com/wp-content/uploads/2025/10/ElevenRig_FinalTextures.7z" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-dd668aec-6c39-4cd4-bdd1-b8eddfdea560">下载</a></div>



<h2 class="wp-block-heading"></h2>



<h3 class="wp-block-heading">免费开源的 Eleven RIG 模型 —— Maya 动画练习利器</h3>



<p>今天要和大家分享的是一个非常经典的免费开源模型 —— <strong>Eleven RIG</strong>。<br>这个模型在动画学习圈子里非常有名，因为它简洁、优质，常被用作日常的动画练习。</p>



<p>不过，原版 Eleven RIG 在 Maya2014 之后就停止更新了，对后续版本支持不佳。为此，我对其绑定进行了全面重置，采用了更主流、更通用的 <strong>ADV 绑定系统</strong>，大大提升了兼容性与实用性。</p>



<h3 class="wp-block-heading">功能特色</h3>



<p>在保持原有基础功能的同时，我还做了一些扩展：</p>



<ol class="wp-block-list">
<li><strong>性别切换</strong> —— 一键切换男女角色，练习更灵活。</li>



<li><strong>眉毛切换</strong> —— 提供三种粗细样式，适配不同风格。</li>



<li><strong>胡子样式</strong> —— 可选择不同大小的胡子，丰富角色表现力。</li>



<li><strong>发型绑定</strong> —— 新增男女头发绑定，动画细节更饱满。</li>



<li><strong>iPhone ARKit 面捕支持</strong> —— 直接连接面部捕捉数据，让表情动画更真实。</li>
</ol>



<h3 class="wp-block-heading">版权声明</h3>



<p>出于对原作者的尊重，我在模型绑定中加入了版权归属显示。该模型依然保持开源与免费特性，可以放心用于学习与商业环境。</p>



<h3 class="wp-block-heading">写在最后</h3>



<p>绑定和优化这个模型花费了不少时间，希望它能为大家的学习和项目带来帮助。如果觉得有用，欢迎点赞与支持，谢谢</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p></p>
<p><a href="https://www.miaodonghua.com/3534.html">Maya 2022+ Eleven Rig绑定模型</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Maya绑定教学：液压臂的伸缩和移动</title>
		<link>https://www.miaodonghua.com/3428.html</link>
					<comments>https://www.miaodonghua.com/3428.html#respond</comments>
		
		<dc:creator><![CDATA[喵喵动画屋]]></dc:creator>
		<pubDate>Sat, 09 Mar 2024 07:13:48 +0000</pubDate>
				<category><![CDATA[MAYA绑定]]></category>
		<category><![CDATA[MAYA综合]]></category>
		<guid isPermaLink="false">https://www.miaodonghua.com/?p=3428</guid>

					<description><![CDATA[<p>如何在 Maya 中制作液压机械臂视频教学：https://youtu.be/UJ5ipof75Dg 本教程将 &#8230; </p>
<p class="link-more"><a href="https://www.miaodonghua.com/3428.html" class="more-link">继续阅读<span class="screen-reader-text">“Maya绑定教学：液压臂的伸缩和移动”</span></a></p>
<p><a href="https://www.miaodonghua.com/3428.html">Maya绑定教学：液压臂的伸缩和移动</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-file"><a id="wp-block-file--media-8342a9b7-ef87-404f-84e5-2c8bb9a7be3f" href="https://www.miaodonghua.com/wp-content/uploads/2024/03/Hydraulic.zip">Hydraulic</a><a href="https://www.miaodonghua.com/wp-content/uploads/2024/03/Hydraulic.zip" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-8342a9b7-ef87-404f-84e5-2c8bb9a7be3f">点击下载模型</a></div>



<h2 class="wp-block-heading">如何在 Maya 中制作液压机械臂<br>视频教学：<a href="https://youtu.be/UJ5ipof75Dg">https://youtu.be/UJ5ipof75Dg</a></h2>



<p>本教程将向您展示如何在 Maya 中制作类似于现实世界的液压机械臂。</p>



<h3 class="wp-block-heading">步骤</h3>



<ol class="wp-block-list">
<li>创建骨骼：
<ul class="wp-block-list">
<li>进入前视图，创建关节。</li>



<li>连接关节形成机械臂结构。</li>
</ul>
</li>



<li>绑定蒙皮：
<ul class="wp-block-list">
<li>将关节绑定到液压杆和其它部件上。</li>



<li>测试绑定效果，确保没有漏绑或穿模问题。</li>
</ul>
</li>



<li>目标点约束：
<ul class="wp-block-list">
<li>选中两个关键关节，执行目标点约束。</li>



<li>反过来再执行一次约束。</li>



<li>调整约束参数，确保液压杆运动流畅。</li>
</ul>
</li>



<li>创建控制器：
<ul class="wp-block-list">
<li>创建曲线圆环作为控制器。</li>



<li>复制控制器并调整位置。</li>



<li>将控制器组添加到主控制器下。</li>
</ul>
</li>



<li>父对象约束：
<ul class="wp-block-list">
<li>使用父对象约束将控制器与根骨骼连接。</li>
</ul>
</li>



<li>限制旋转范围：
<ul class="wp-block-list">
<li>旋转控制器到极限位置。</li>



<li>限制旋转轴的最小值和最大值。</li>
</ul>
</li>
</ol>



<h3 class="wp-block-heading">总结</h3>



<p>本教程介绍了 Maya 中制作液压机械臂的基本方法，包括骨骼创建、绑定蒙皮、目标点约束、控制器创建和父对象约束等。掌握这些方法，您可以制作更加复杂的液压机械臂模型。</p>



<h3 class="wp-block-heading">练习</h3>



<ul class="wp-block-list">
<li>下载视频附件的模型文件，进行练习和修改。</li>



<li>尝试制作不同形状和功能的液压机械臂。</li>
</ul>



<h3 class="wp-block-heading">资源</h3>



<ul class="wp-block-list">
<li>Maya 文档：<a target="_blank" rel="noreferrer noopener" href="https://www.autodesk.com/support/technical/article/caas/tsarticles/ts/lC3jaffqnWFyQoLPEPm7n.html">https://www.autodesk.com/support/technical/article/caas/tsarticles/ts/lC3jaffqnWFyQoLPEPm7n.html</a></li>



<li>Maya 教程：<a target="_blank" rel="noreferrer noopener" href="https://www.youtube.com/watch?v=tZieJcA5vf0">https://www.youtube.com/watch?v=tZieJcA5vf0</a></li>



<li>Maya 论坛：<a target="_blank" rel="noreferrer noopener" href="https://forums.autodesk.com/t5/maya/ct-p/area-c2">https://forums.autodesk.com/t5/maya/ct-p/area-c2</a></li>
</ul>



<h2 class="wp-block-heading">希望这篇总结对您有所帮助！</h2>
<p><a href="https://www.miaodonghua.com/3428.html">Maya绑定教学：液压臂的伸缩和移动</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.miaodonghua.com/3428.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Maya人体骨骼绑定 &#124; Polina模型 &#124; Advanced Skeleton 6</title>
		<link>https://www.miaodonghua.com/3376.html</link>
					<comments>https://www.miaodonghua.com/3376.html#respond</comments>
		
		<dc:creator><![CDATA[喵喵动画屋]]></dc:creator>
		<pubDate>Sat, 23 Dec 2023 16:12:13 +0000</pubDate>
				<category><![CDATA[MAYA绑定]]></category>
		<category><![CDATA[Maya绑定]]></category>
		<guid isPermaLink="false">https://www.miaodonghua.com/?p=3376</guid>

					<description><![CDATA[<p>Polina Model（原作者）：https://www.cgtrader.com/free-3d-mode &#8230; </p>
<p class="link-more"><a href="https://www.miaodonghua.com/3376.html" class="more-link">继续阅读<span class="screen-reader-text">“Maya人体骨骼绑定 &#124; Polina模型 &#124; Advanced Skeleton 6”</span></a></p>
<p><a href="https://www.miaodonghua.com/3376.html">Maya人体骨骼绑定 | Polina模型 | Advanced Skeleton 6</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>Polina Model（原作者）：<a href="https://www.cgtrader.com/free-3d-models/character/woman/polina-3d-stylized-character">https://www.cgtrader.com/free-3d-models/character/woman/polina-3d-stylized-character</a></p>



<div class="wp-block-file"><a id="wp-block-file--media-0e323055-160d-49bf-8acd-65fad403b03a" href="https://www.miaodonghua.com/wp-content/uploads/2023/12/Polina.zip">Polina</a><a href="https://www.miaodonghua.com/wp-content/uploads/2023/12/Polina.zip" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-0e323055-160d-49bf-8acd-65fad403b03a">下载（download）<br>&#8212;-布线改良版</a></div>



<div class="wp-block-file"><a id="wp-block-file--media-26498d61-a016-415f-9ccb-ed02ff417815" href="https://www.miaodonghua.com/wp-content/uploads/2023/12/Polina-rig.zip">Polina-rig</a><a href="https://www.miaodonghua.com/wp-content/uploads/2023/12/Polina-rig.zip" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-26498d61-a016-415f-9ccb-ed02ff417815">下载（download）<br>&#8212;-Adv绑定版</a></div>



<p><strong>推荐使用Maya2020以上的版本 + Advanced Skeleton 6+版本</strong></p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="1655" height="801" src="https://www.miaodonghua.com/wp-content/uploads/2023/12/image-10.webp" alt="" class="wp-image-3378" srcset="https://www.miaodonghua.com/wp-content/uploads/2023/12/image-10.webp 1655w, https://www.miaodonghua.com/wp-content/uploads/2023/12/image-10-1536x743.webp 1536w" sizes="(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" /></figure>



<p>Polina（Maya布线改良版原始模型）：</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1650" height="983" src="https://www.miaodonghua.com/wp-content/uploads/2023/12/image-9.webp" alt="" class="wp-image-3377" srcset="https://www.miaodonghua.com/wp-content/uploads/2023/12/image-9.webp 1650w, https://www.miaodonghua.com/wp-content/uploads/2023/12/image-9-1536x915.webp 1536w" sizes="(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" /></figure>



<p>Polina （Maya已绑定）：</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1758" height="970" src="https://www.miaodonghua.com/wp-content/uploads/2023/12/image-11.webp" alt="" class="wp-image-3379" srcset="https://www.miaodonghua.com/wp-content/uploads/2023/12/image-11.webp 1758w, https://www.miaodonghua.com/wp-content/uploads/2023/12/image-11-1536x848.webp 1536w" sizes="(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" /></figure>



<p></p>
<p><a href="https://www.miaodonghua.com/3376.html">Maya人体骨骼绑定 | Polina模型 | Advanced Skeleton 6</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.miaodonghua.com/3376.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Maya绑定教学：nHair头发动力学</title>
		<link>https://www.miaodonghua.com/2937.html</link>
					<comments>https://www.miaodonghua.com/2937.html#respond</comments>
		
		<dc:creator><![CDATA[喵喵动画屋]]></dc:creator>
		<pubDate>Tue, 21 Nov 2023 19:59:18 +0000</pubDate>
				<category><![CDATA[MAYA动画教学]]></category>
		<category><![CDATA[MAYA绑定]]></category>
		<guid isPermaLink="false">https://www.miaodonghua.com/?p=2937</guid>

					<description><![CDATA[<p>这视频主要介绍了在玛雅中如何使用头发动力学进行绑定，相比传统的绑定方式，动力学可以在保证效果的同时节省时间。以 &#8230; </p>
<p class="link-more"><a href="https://www.miaodonghua.com/2937.html" class="more-link">继续阅读<span class="screen-reader-text">“Maya绑定教学：nHair头发动力学”</span></a></p>
<p><a href="https://www.miaodonghua.com/2937.html">Maya绑定教学：nHair头发动力学</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Maya绑定教学：nHair头发动力学" width="525" height="295" src="https://www.youtube.com/embed/GwKDXjAoiPU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>这视频主要介绍了在玛雅中如何使用头发动力学进行绑定，相比传统的绑定方式，动力学可以在保证效果的同时节省时间。以下是视频内容的总结：</p>



<ol class="wp-block-list">
<li>隐藏控制器： 在开始之前，将不需要的控制器隐藏，以防止干扰后续工作。</li>



<li>创建骨骼： 确保头发骨骼完整，足够多的关节是为了保证最终效果。</li>



<li>骨骼绑定： 将头发绑定到头部以上的骨骼，确保头部和马尾部分都被正确绑定。</li>



<li>处理马尾部分： 使用合并转移的方式，将头部和马尾部分分离开，以便更好地处理。</li>



<li>创建曲线： 使用IK样条控制，在头发骨骼上创建曲线，主要在头发拐弯往下的部分。</li>



<li>曲线动力学： 对曲线应用动力学属性，取消勾选将曲线附加到选定曲面。</li>



<li>输出曲线驱动骨骼： 使用IK样条控制器，让毛发系统下的输出曲线驱动头发骨骼的运动。</li>



<li>优化动力学效果： 调整抗弯曲、抗扭曲、阻尼值等参数，以获得更自然的头发动力学效果。</li>



<li>处理碰撞： 设置身体为被动碰撞体，调整碰撞厚度，以避免头发穿过身体表面。</li>



<li>动力学开关： 在头部或其他控制器上添加动力学开关，使用表达式与模拟方法建立开关关系，方便控制动力学的开启和关闭。</li>



<li>解算设置： 可以在解算器中设置起始帧位置，以满足特定解算需求。</li>
</ol>



<p>总体而言，视频提供了一个详细的玛雅动力学头发绑定教程，涵盖了从基本设置到优化效果的多个步骤。</p>
<p><a href="https://www.miaodonghua.com/2937.html">Maya绑定教学：nHair头发动力学</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.miaodonghua.com/2937.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Maya绑定教学：尾巴摆动</title>
		<link>https://www.miaodonghua.com/2935.html</link>
					<comments>https://www.miaodonghua.com/2935.html#respond</comments>
		
		<dc:creator><![CDATA[喵喵动画屋]]></dc:creator>
		<pubDate>Tue, 21 Nov 2023 19:58:45 +0000</pubDate>
				<category><![CDATA[MAYA动画教学]]></category>
		<category><![CDATA[MAYA绑定]]></category>
		<guid isPermaLink="false">https://www.miaodonghua.com/?p=2935</guid>

					<description><![CDATA[<p>在Maya中实现类似尾巴摆动的效果的步骤概要： 希望这些步骤能够帮助成功实现鱼尾巴摆动的动画效果。</p>
<p><a href="https://www.miaodonghua.com/2935.html">Maya绑定教学：尾巴摆动</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Maya绑定教学：尾巴摆动" width="525" height="295" src="https://www.youtube.com/embed/rrIZY29T8io?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>在Maya中实现类似尾巴摆动的效果的步骤概要：</p>



<ol class="wp-block-list">
<li><strong>创建骨骼结构：</strong></li>
</ol>



<ul class="wp-block-list">
<li>手动创建骨骼，增加足够的关节数量。</li>



<li>对于线性骨骼，可以先创建首尾骨骼，然后使用高级骨骼绑定插件的关节重新采样功能，确保关节数量均匀。</li>
</ul>



<ol class="wp-block-list">
<li><strong>设置IK样条控制器：</strong></li>
</ol>



<ul class="wp-block-list">
<li>进入蒙皮下方的IK样条控制器选项设置。</li>



<li>保持默认值，设置控制点段数，选择根骨骼和尾部骨骼创建IK样条控制器。</li>



<li>进入控制点模式，通过移动控制点控制骨骼。</li>
</ul>



<ol class="wp-block-list">
<li><strong>创建簇变形器：</strong></li>
</ol>



<ul class="wp-block-list">
<li>为每个控制点创建簇变形器，确保相对控制开启。</li>
</ul>



<ol class="wp-block-list">
<li><strong>创建新的控制器：</strong></li>
</ol>



<ul class="wp-block-list">
<li>为簇变形器进行二次控制，确保相对控制开启。</li>



<li>打组并命名簇变形器。</li>
</ul>



<ol class="wp-block-list">
<li><strong>约束控制器：</strong></li>
</ol>



<ul class="wp-block-list">
<li>摆放控制器位置与簇变形器对应。</li>



<li>使用点约束时，勾选相对点约束，防止簇变形器点被直接约束到控制器中心点。</li>



<li>对根骨骼控制器使用父对象约束，确保其约束到根骨骼上。</li>
</ul>



<ol class="wp-block-list">
<li><strong>整理控制器：</strong></li>
</ol>



<ul class="wp-block-list">
<li>将所有控制器组放到根控制器下方，确保后面的控制器跟随根控制器移动。</li>
</ul>



<ol class="wp-block-list">
<li><strong>完成骨骼控制系统：</strong></li>
</ol>



<ul class="wp-block-list">
<li>验证控制器的功能，确保移动控制器能够正确控制骨骼效果。</li>
</ul>



<ol class="wp-block-list">
<li><strong>蒙皮绑定：</strong></li>
</ol>



<ul class="wp-block-list">
<li>选择模型，选中所有关节，执行蒙皮绑定。</li>
</ul>



<ol class="wp-block-list">
<li><strong>测试绑定是否正确：</strong></li>
</ol>



<ul class="wp-block-list">
<li>进行动画测试，确保尾巴摆动效果符合预期。</li>
</ul>



<ol class="wp-block-list">
<li><strong>整理大纲中的内容：</strong>
<ul class="wp-block-list">
<li>对大纲中的步骤进行整理，使其清晰易懂。</li>
</ul>
</li>
</ol>



<p>希望这些步骤能够帮助成功实现鱼尾巴摆动的动画效果。</p>
<p><a href="https://www.miaodonghua.com/2935.html">Maya绑定教学：尾巴摆动</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.miaodonghua.com/2935.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Maya绑定教学：卷轴展开</title>
		<link>https://www.miaodonghua.com/2933.html</link>
					<comments>https://www.miaodonghua.com/2933.html#respond</comments>
		
		<dc:creator><![CDATA[喵喵动画屋]]></dc:creator>
		<pubDate>Tue, 21 Nov 2023 19:58:17 +0000</pubDate>
				<category><![CDATA[MAYA绑定]]></category>
		<guid isPermaLink="false">https://www.miaodonghua.com/?p=2933</guid>

					<description><![CDATA[<p>细分面的重要性： 首先，确保我们的模型有足够多的细分面，这是后续操作的基础。 第一个弯曲变形器： 进入变形菜单 &#8230; </p>
<p class="link-more"><a href="https://www.miaodonghua.com/2933.html" class="more-link">继续阅读<span class="screen-reader-text">“Maya绑定教学：卷轴展开”</span></a></p>
<p><a href="https://www.miaodonghua.com/2933.html">Maya绑定教学：卷轴展开</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Maya绑定教学：卷轴展开" width="525" height="295" src="https://www.youtube.com/embed/nQhv3sQRVUE?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>细分面的重要性： 首先，确保我们的模型有足够多的细分面，这是后续操作的基础。</p>



<p>第一个弯曲变形器： 进入变形菜单，执行非线性弯曲变形器，给模型添加弯曲效果。</p>



<p>创建第二个变形器： 以相同的方式再次添加一个弯曲变形器，确保在大纲视图中有两个变形器节点。</p>



<p>调整节点位置： 在大纲视图中，调整这两个变形器节点的位置，使其处于卷轴展开的理想位置。</p>



<p>调整弯曲效果： 按下T键调出控制器点，在中间的控制器点上用鼠标左键拖动，形成我们期望的弯曲效果。</p>



<p>旋转变形器： 按下Q键回到对象模式，旋转第一个变形器，先暂时旋转90度，以满足我们的需求。</p>



<p>处理左侧的弯曲： 由于左侧的弯曲需要另一个变形器来完成，按下T键将左侧的控制器点拉回至中心点重合。</p>



<p>调整曲率： 展开变形器的输入节点，通过曲率参数来控制弯曲程度。初始设定为1000，如果觉得太大，可以增加曲率，这里设置为1500。</p>



<p>解决重叠问题： 根据实际需要适当调整Z轴旋转角度，以达到我们理想的弯曲效果。</p>



<p>添加控制器： 进入顶视图，使用EP曲线工具绘制箭头图案。</p>



<p>调整控制器： 绘制完成后，删除历史、冻结变换，确保枢轴点居中，重命名，并用Ctrl+G打组。</p>



<p>对称控制器： 复制一个一样的控制器，通过设置X轴缩放为-1，对称到另外一侧，然后再次重命名。</p>



<p>约束控制器： 使用父对象约束，将右侧的控制器约束到对应的右侧变形器节点。</p>



<p>实现滚动展开： 现在只要拖动这个控制器，就能实现滚动展开的效果。</p>



<p>锁定参数： 由于我们只需要控制X轴的位移，选择其他参数将其锁定，以防止用户错误操作。</p>



<p>左侧的处理： 对左侧的控制器进行类似的操作，锁定不需要的参数，确保控制器的功能正常。</p>



<p>绑定左侧： 选择左侧的控制器，调整旋转角度，按下T键调出控制器点，通过鼠标左键拖动中间的控制器点形成弯曲，将右侧的控制器点往回拉至中心点重合。</p>



<p>调整适当的曲率： 用左侧的控制器去约束左侧的变形器节点。</p>



<p>测试效果： 选择控制器移动，如果是两侧同时展开，选择两个控制器，进入对象模式进行移动。</p>



<p>主副控制器： 最后再创建两个控制器作为主副控制器。同样的删除历史、冻结变换，然后选择模型、变形器节点以及变形器控制组，将它们放到副控制器下。这样卷轴展开的模型就绑定好了。</p>



<p>通过这一系列的步骤，我们成功地在Maya中实现了卷轴展开效果的绑定。希望这些详细的操作能够帮助大家更好地理解和掌握Maya中的建模技巧。</p>
<p><a href="https://www.miaodonghua.com/2933.html">Maya绑定教学：卷轴展开</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.miaodonghua.com/2933.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Maya Advanced Skeleton 5 人物头发绑定</title>
		<link>https://www.miaodonghua.com/2588.html</link>
					<comments>https://www.miaodonghua.com/2588.html#respond</comments>
		
		<dc:creator><![CDATA[喵喵动画屋]]></dc:creator>
		<pubDate>Wed, 09 Aug 2023 07:26:06 +0000</pubDate>
				<category><![CDATA[MAYA绑定]]></category>
		<category><![CDATA[Maya动画]]></category>
		<category><![CDATA[Maya教学]]></category>
		<category><![CDATA[绑定]]></category>
		<guid isPermaLink="false">https://www.miaodonghua.com/?p=2588</guid>

					<description><![CDATA[<p>本次视频介绍人物头发的绑定。 1.打开骨骼透视，显示关节2.创建并对齐骨骼3.创建控制器，吸附到骨骼中心4.把 &#8230; </p>
<p class="link-more"><a href="https://www.miaodonghua.com/2588.html" class="more-link">继续阅读<span class="screen-reader-text">“Maya Advanced Skeleton 5 人物头发绑定”</span></a></p>
<p><a href="https://www.miaodonghua.com/2588.html">Maya Advanced Skeleton 5 人物头发绑定</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p><strong>本次视频介绍人物头发的绑定。</strong></p>



<p><br>1.打开骨骼透视，显示关节<br>2.创建并对齐骨骼<br>3.创建控制器，吸附到骨骼中心<br>4.把骨骼和控制器分别P给头部骨骼和控制<br>5.用控制器父对象约束对应的骨骼<br>6.选择所有骨骼加选头发，添加影响<br>7.绘制权重，解锁骨骼权重锁定<br>8.通过旋转角度来辅助绘制权重<br>9.测试最终绑定效果<br>10.通过高级骨骼绑定插件发布最终文件</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Maya人物头发绑定教程 | 完整hair rigging流程！" width="525" height="295" src="https://www.youtube.com/embed/LdYbtMcX9xw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p><strong>1.身体绑定教程：</strong><a href="https://youtu.be/EZPkVhTf2jw">https://youtu.be/EZPkVhTf2jw</a><br><strong>2.乳房绑定教程：</strong><a href="https://youtu.be/OR6ojxL1Sio">https://youtu.be/OR6ojxL1Sio</a><br><strong>3.面部绑定教程：</strong><a href="https://youtu.be/I-RuOuUBs9o">https://youtu.be/I-RuOuUBs9o</a><br><strong>4.毛发绑定教材：</strong><a href="https://youtu.be/LdYbtMcX9xw">https://youtu.be/LdYbtMcX9xw</a></p>
<p><a href="https://www.miaodonghua.com/2588.html">Maya Advanced Skeleton 5 人物头发绑定</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.miaodonghua.com/2588.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Maya Advanced Skeleton 5 人物面部绑定</title>
		<link>https://www.miaodonghua.com/2583.html</link>
					<comments>https://www.miaodonghua.com/2583.html#respond</comments>
		
		<dc:creator><![CDATA[喵喵动画屋]]></dc:creator>
		<pubDate>Wed, 09 Aug 2023 07:09:48 +0000</pubDate>
				<category><![CDATA[MAYA绑定]]></category>
		<category><![CDATA[Maya教学]]></category>
		<guid isPermaLink="false">https://www.miaodonghua.com/?p=2583</guid>

					<description><![CDATA[<p>advanced-skeleton link：https://www.animationstudios.com &#8230; </p>
<p class="link-more"><a href="https://www.miaodonghua.com/2583.html" class="more-link">继续阅读<span class="screen-reader-text">“Maya Advanced Skeleton 5 人物面部绑定”</span></a></p>
<p><a href="https://www.miaodonghua.com/2583.html">Maya Advanced Skeleton 5 人物面部绑定</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p><strong>advanced-skeleton link：</strong>https://www.animationstudios.com.au/advanced-skeleton </p>



<p><strong>1.身体绑定教程：</strong><a href="https://youtu.be/EZPkVhTf2jw">https://youtu.be/EZPkVhTf2jw</a> </p>



<p><strong>2.乳房绑定教程：</strong><a href="https://youtu.be/OR6ojxL1Sio ">https://youtu.be/OR6ojxL1Sio </a></p>



<p><strong>3.面部绑定教程：</strong><a href="https://youtu.be/I-RuOuUBs9o">https://youtu.be/I-RuOuUBs9o</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Maya高级角色面部绑定教程：使用Advanced Skeleton插件" width="525" height="295" src="https://www.youtube.com/embed/I-RuOuUBs9o?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>
<p><a href="https://www.miaodonghua.com/2583.html">Maya Advanced Skeleton 5 人物面部绑定</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.miaodonghua.com/2583.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Maya Advanced Skeleton 5 人物乳房绑定</title>
		<link>https://www.miaodonghua.com/2576.html</link>
					<comments>https://www.miaodonghua.com/2576.html#respond</comments>
		
		<dc:creator><![CDATA[喵喵动画屋]]></dc:creator>
		<pubDate>Wed, 09 Aug 2023 06:43:09 +0000</pubDate>
				<category><![CDATA[MAYA绑定]]></category>
		<guid isPermaLink="false">https://www.miaodonghua.com/?p=2576</guid>

					<description><![CDATA[<p>advanced-skeleton link：https://www.animationstudios.com &#8230; </p>
<p class="link-more"><a href="https://www.miaodonghua.com/2576.html" class="more-link">继续阅读<span class="screen-reader-text">“Maya Advanced Skeleton 5 人物乳房绑定”</span></a></p>
<p><a href="https://www.miaodonghua.com/2576.html">Maya Advanced Skeleton 5 人物乳房绑定</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p><strong>advanced-skeleton link：</strong><a href="https://www.animationstudios.com.au/advanced-skeleton ">https://www.animationstudios.com.au/advanced-skeleton </a></p>



<p><strong>1.身体绑定教程：</strong><a href="https://youtu.be/EZPkVhTf2jw ">https://youtu.be/EZPkVhTf2jw </a></p>



<p><strong>2.乳房绑定教程：</strong><a href="https://youtu.be/OR6ojxL1Sio ">https://youtu.be/OR6ojxL1Sio </a></p>



<p><strong>3.面部绑定教程：</strong><a href="https://youtu.be/I-RuOuUBs9o ">https://youtu.be/I-RuOuUBs9o </a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Maya女性角色乳房绑定教程：流畅动画细节展现！" width="525" height="295" src="https://www.youtube.com/embed/OR6ojxL1Sio?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>
<p><a href="https://www.miaodonghua.com/2576.html">Maya Advanced Skeleton 5 人物乳房绑定</a>最先出现在<a href="https://www.miaodonghua.com">喵喵动画屋</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.miaodonghua.com/2576.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
