近期热门
粉丝33
关注 2
获赞 72
max表情样条线控制器的制作

[脚本工具教程] max表情样条线控制器的制作

 !heats_icon! [复制链接]
2024 9 18 64 3年前 举报
GIF 2021-5-25 16-09-34.gif
总体来说:先创建:变量和positionxyz共同作用的功能,把圆限制在四方形内运动。
                                然后用wire功把圆圈来控制变形骨骼的位置移动,限制运动的幅度。
                                  这样positionxyz可以移动圆圈,变量又可以实现控制和UI的功能。

先画一个方形,再在里面画一个小圆形。把圆作为方框的子物体。
11.png

选择圆形,在position xyz的上面postion里加position list
再选择avaliable,加入position script
44.png

选择position script,运行代码
33.png
def=attributes ctrl
(                     
        parameters ctrlP      
        (                  
                l type:#float
                w type:#float
                x type:#float               
                y type:#float   
                )
)               
        custAttributes.add $.pos.controller[2].controller def
        def=custAttributes.getdef $.pos.controller[2].controller.ctrl
然后得到ctrl下面四个变量
双击position Scipt分支,在scriptcontrol窗口贴入代码:
控制1.png
x=0
y=0
l=this.l/2
w=this.w/2
if this.x>w then(x=-this.x+w;this.x=w)
if this.x<-w then(x=-this.x-w;this.x=-w)
if this.y>l then(y=-this.y+l;this.y=l)
if this.y<-l then(y=-this.y-l;this.y=-l)
[ x, y, 0 ]
再用方形的lengthwidth,用wire的方式驱动ctrllw,点connect
55.png
66.png
   监听下变量,看是不是等于方框的lengthwidth
77.png
确认准确后,再用右键菜单的wire自己的positionX,和positionY链接到ctrlxy上。
88.png
然后重要的一点,就是要把圆父子绑定到方框上。拖动圆看看,这样圆就可以在方框的范围内限制运动了。
99.png
如果卡住拖不动,记得切换这里的默认值,列表选择positionXYZ
1010.png
那接下来如何用圆控制骨头呢?先切换到父物体坐标。参考圆圈和需要绑定的变形骨骼的上下轴向是x,还是y。还是z
控制2.png
1111.png
wire参数链接它们。
1212.png
拽下看看。发现拽的太远了。先ctrl+z返回到初始值。
1313.png
按alt+1添加参数控制器给圆物体,这个Xoffset,和Yoffset用来纠正偏移
按alt 1添加参数控制器.png
wire链接加入xoffset和yoffset的偏移变量
Y_Position+$.baseObject.Custom_Attributes.yOffset
X_Position+$.baseObject.Custom_Attributes.xOffset
控制3.png
把参数复位为0后对圆物体上的滑块进行偏移数值的微调。不时点update看纠正的效果,骨骼点回到原来的位置为ok,
这两个补偿参数其实不加到物体外面来也行。但是你要做个补偿。让圆在0,0的位置时候,骨骼也在它原始本来应该的位置
------------------------------------------------------------------------------------------------------------------------------------
最后,我们再需要做个数值限定,让圆拽着骨骼别跑的太远。
  MyValue= Y_Position+$.baseObject.Custom_Attributes.yOffset
   case of
  (
   (MyValue>= 10):5.5    --当大于某值时返回一个值
   (MyValue<= -10): -5.5   --当大于某值时返回一个值
   default: MyValue
  )

1414.png




22.png
18
点赞
0
打赏
64
添加到收藏夹

0

点击复制链接

使用微信扫码分享
一次扣10个券
全部评论9
您需要登录后才可以回帖 登录

可以搞个视频吗,看着好麻烦
2年前
回复

使用道具 举报

wire也可以用reaction manager来控制

也可以用反应控制器来控制.jpg 子动画.jpg
3年前
回复

使用道具 举报

跟着步骤做 圆卡不在方框里是怎么回事 ?
3年前
回复

使用道具 举报

有插件么
3年前
回复

使用道具 举报

看着不错的样子
3年前
回复

使用道具 举报

多谢分享
3年前
回复

使用道具 举报

谢谢分享
3年前
回复

使用道具 举报

感觉好复杂..
3年前
回复

使用道具 举报

感谢分享
3年前
回复

使用道具 举报

您当前使用的浏览器IE内核版本过低会导致网站显示错误

请使用高速内核浏览器或其他浏览器