Spring Max 碰撞飘带

Spring Max 是一款用于生成骨骼链动画的 3Ds Max 脚本工具

主要功能:

  • 在骨骼链上创建摆动,拧转和拉伸压缩动画
  • 骨骼链可以根据它的形状来与胶囊体或者平面进行碰撞
  • 可对骨骼链施加风力或爆炸效果

注意:

  1. 参与计算的骨骼不可以在场景中有重名物体,也不能有负的缩放值
  2. 计算结果不支持 CRTL+Z 撤销操作,可以使用工具自带的回退功能,但为以防万一,请在计算前保存好源文件
  3. 当前版本仅支持 3Ds Max 标准骨骼的计算,CS骨骼和CAT骨骼暂不支持,如有相关需求请使用 Sprng Magic
  4. 如果发现关闭工具界面后场景中依然有很多虚拟体的话,可能是由于某些 MAX 插件阻碍了 Spring Max 的清理工作造成的,建议到这里下载 Max 病毒清理脚本修复。

使用教程

重要:请观看使用教程 “04 实战碰撞” 以更好的理解如何在实际生产中应用该工具

 

点此下载 Spring Max v1.4

 

另外还有 MotionBuilder 版 Spring Magic 可供选择

版本历史:
1.4:
去除 2012 版本,所有 Max 都可以使用同一个脚本工具
修复缺陷:在循环计算时如果加入风力,有可能造成首尾姿态对不上
修复缺陷:访问更新页面失败会造成脚本崩溃

1.3:
增加“回退”功能
缩小底部按钮
修复缺陷:”Bone On” 选项导致的骨骼显示问题
修复缺陷:在计算范围之外被设置关键帧
修复缺陷: 首次使用“关联”功能时报错

1.2:
增加“姿态拟合”功能
增加“骨骼关联”功能
修复缺陷:当前时间范围以外的关键帧在计算后丢失
修复缺陷:骨骼链起始姿态在重新计算同样动画时发生改变

1.1:
增加了“骨骼形状”功能,以更好的解决裙摆碰撞问题

1.0:
第一个公开版本

《Spring Max 碰撞飘带》有120个想法

  1. 关于spring的碰撞问题,结合最近的学习和制作谈一些使用经验(浅薄之见,行业大神轻喷)。
    1布料碰撞一直都是个比较头痛的问题,其实大部分业内的制作流程都是不使用碰撞,通过手K根骨骼来模拟碰撞的。这种方法计算速度较快,效果也不错,方便调整,是我现在最喜欢用的。

    2【非骨骼布料碰撞(模拟)】,首当其冲便是MAYA的nCLOTH与APEX布料了,计算速度尚可,但是都有穿模的问题,需要在碰撞体与布料权重上花很多时间调整,APEX布料解算完后可以导入虚幻4,不过需要在60帧以上,并且还是有一定几率会在UE4中穿模。缺点是MAYA版的碰撞体制作非常繁琐,且会导致骨骼树十分混乱。

    2-2虚幻4中的虚幻cloth,可以实时与在UE4中创建的碰撞体进行解算,计算速度最快,缺点仍然是高速运动时的穿模。

    3使用白老师开发的spring碰撞系统,在开启碰撞体的情况下计算速度比较慢(和ncloth差不多),并且仍然需要很多的手动调整。

    综上所述,关于布料的问题还是推荐大家使用无碰撞spring,并手K根关节动画,解算完后再进行一些细节调整为佳!

    1. * 在 Maya 里用 nCloth 驱动骨骼进行布料效果模拟,其实早在 Maya 2013 就有比较成熟的工具了,具体见链接 https://www.youtube.com/watch?v=F5oPTUHN-5U
      但正如我以前说过的,布料模拟最大的缺点在于不能做循环,因此对于游戏动画不是那么方便,影视动画的话,直接用布料算就好了,也没必要烘焙到骨骼上

      * UE4 里的 cloth,也是基于 APEX 系统的,只是将刷布料权重的操作从 Maya 或 Max 转到了 UE4 内部,简化了美术工作流程,从计算结果来说,跟 APEX 是一致的。优点是模型面数足够多的情况下,效果比较好,缺点是性能问题,一般常用于主角较少的动作类游戏,如果同屏角色较多,则会明显降低帧率。另外由于 APEX 是 Nv 基于自家 PhysiX 引擎开发的模块,因此对 Nv 的卡支持较好,可以 GPU 解算,但是 A 卡的话计算工作就会转移到 CPU 上,此时如果 CPU 核心不够则会明显拖累性能,这也是开发时需要考虑的地方。

      * 我自己工作的项目里,使用 UE4 动画蓝图的 Rigid Body 节点调用 Physic Assets 来做的布料。这个方法也是 EPIC 开发团队推荐的做法,他们在 Fortnite 的角色也是使用这种方式来做的。总体来说,Rigid Body 节点的性能非常好,开销几乎可以忽略不计,效果虽然不如 APEX 逼真,但是也还过得去,具体方法见此:
      https://docs.unrealengine.com/en-us/Engine/Animation/NodeReference/SkeletalControls/RigidBody

  2. 看了视频操作了一下,基本功能出错.只是勾选了循环一个选项,多次尝试都无法得到正确的计算结果.
    在MAX2014/16/18三个版本上都做了尝试,都是相同的结果。

    文件和操作的录屏文件都以邮件形式发送给你了.

  3. 您好,請問在啟動工具時,常常出現MAXScript Rollout Handler Exception的視窗,內容顯示–Runtime error:Read past end of stream的狀況。
    這問題有影響功能嗎?
    使用MAX版本為2015。

    1. 之前这个问题可能是由于我网站出问题导致脚本更新模块故障,现在应该没问题了,另外也可以下载最新的 1.4 版本以避免今后再次发生此类问题

  4. 你好 大神~请教下Spring max 是不是不支持 max2012以上版本吗?我用2014和2016版本试了 都运算不了
    PS:也不知道是我骨骼创建有没有问题 。。我把文件发给你 麻烦帮我看看 多谢了

  5. 白老师您好,我仿照你的教程第四篇在max中建立了一个简易裙子,第一层骨骼手动k帧,从第二层开始计算,可是只要开了碰撞选项,计算的骨骼就会乱飞抖动,卡到大腿胶囊里,大部分时候都这样,无法靠删除几帧来修复,即使删掉大部分帧修复了这一层,计算下一层还是会发生一样的情况,实在不知道问题出在哪里了…… 可以的话我发文件发给您看看?

  6. 请问,这个有什么办法支持从别的软件导过来的骨骼么?我从maya或者c4d导入到max里想做飘带,但是骨骼已经被max转成dummy了(修改器面板里只有个dummy),不是max的bone,我试了下点apply没有任何效果,碰撞体也加不上。。。

    1. 目前只支持 Max 的标准骨骼,以在满足绝大多数人的需求的同时降低软件复杂度

      对于你的特例,我有两个建议可选:
      1. 如果只是需要做飘带的话,可以在我网站下载 Maya 版本的 Spring Magic,直接在 Maya 里算就好了,不用导入 Max
      2. 如果必须导入 Max 做额外处理,则需要先手动建立一套与之匹配的 Max 标准骨骼,再将动作导入标准骨骼后计算

  7. 白老大,我这边用了这个软件之后,也出现了他们说的一堆虚拟体的问题。
    不过我这边是有时出现有时不出现。
    我自己试了试,发现在点计算的时候,如果按照我平时的习惯连着点了好几次计算,就会出现这种虚拟体。
    之前用SpringMagic的时候,因为公司机子卡,不能确定是不是真的点到了,所以有连着点好几次计算,直到确定开始算为止才停下的习惯。
    如果只点一次计算,插件的响应会慢一秒钟左右(软件没有任何反应,不确定是不是我机器的原因),然后开始计算,这种情况就不会出现奇怪的虚拟体。
    已经试过好多个文件,包括数个以前做过的动作文件,以及一个新建的只有bone骨骼的文件,都是这样的情况。
    不知道能否为您修复bug提供一点帮助。
    以上。

  8. 白先生,能用到你这个插件很高兴~ 但是目前出了一些问题,max,低模游戏模型大衣长袖绑了几段bone~ 加载了bip运动文件之后,对bone进行姿态拟合的运算~ 计算完毕之后留下了好多长长的十字线辅助体(之前有看到有人留言说这是个bug?我以为自己不会踩雷,结果就出现了) 我在列表里专门找齐了这些一长串名字的辅助体删掉,以为就万事大吉了,结果导出fbx到unity里面,就报错了;相反之前没有经过您这个插件计算的bone动画导出的时候,在unity就没有什么事儿,您现在最新版的插件解决了这个问题吗? bone的运算难道会对其他物体产生影响?生成的那些辅助体是不是应该自动删掉的?

      1. 帮你移过来了。
        那些辅助物体,正常情况下在计算结束后会被自动删除,但是由于目前未明确的原因,某些情况下会删除失败,造成遗留。由于我本地无法重现这一现象,所以只能估计可能是由于某些 max 病毒造成的。
        对此,目前推荐的解决方法就是重装 Max,或者换一个版本的 Max 再试试。再或者就是用我上面发的 Max 病毒删除工具试试。
        如果你有明确的解决方案,也请告诉我,谢谢。

        1. 另外在最新版本里我还加了个功能,就是在关闭工具面板的时候再次执行清理工作,但如果也不行的话,那基本可以肯定工具的操作被某种原因干扰了。

          1. 不行的呀…我把max2016卸了,所有aotodesk的都卸光了,重启电脑再装,再把ALC和CRP的那两个删病毒的脚本放到scripts下的startup里面,金山杀毒一遍,各种清理了一遍,运算过后,那些一长串的辅助体还是消不掉…我快绝望了…怎么办?白老大…要不,你有qq吗?给你传一份出问题的文件研究一下?

            1. 此问题我也遇到了,软件版本2014与2018,解决方法是在大纲视图中仅显示dummy后删除有spring后缀的虚拟体即可。
              手动删除很快,不是大问题。
              虚幻4导入测试正常

    1. 补充记录,在跟黄波邮件讨论并查看源文件后,发现他的文件在我本地运行一切正常。
      后来黄波在尝试重装系统和Max后,问题得到解决。
      因此怀疑是某些外界因素影响了飘带工具的正常运行。

  9. 我是一个动画 师,挺感谢辛苦无偿的开发的大佬。
    我之前一直用springmagic,这个老版本的解算很好用。
    但是这个新版我看了教程 ,为什么一解算就有很多的虚拟体,这个我看网友很多人都说了。但这个是没用的,不可能每次都删除吧?还是我哪里操作出错了

    1. 你在这个页面重新下载一个 1.3 版本试试,之前我尝试了一个修复,让那个用户帮忙试一下结果,但一直没有得到反馈
      这个多余虚拟体的问题我本地是无法重现的,你看我录的教程也没有这个问题,所以我只能试着修修看

      记得试一下并回来反馈

      1. 刚刚测试下了,1.3版本。
        用的是15版和14版max。
        结果是解算后,是不出现了(隐藏了)。但是在资源管理器里还是有的,这个应该运算完删除,不应该在文件里。不然这样的导出到untiy会有多余的虚拟体占资源。如果是为了记录相关信息不能删除的话,可以在插件里开发个一键删除功能

        1. 正确的执行结果,所有的虚拟体都会被删除,场景中不会留下任何痕迹,除了“回退”功能所需要的一些以 “saveAnim” 命名的节点。所以如果你看到还有其他很多节点的话,说明还是没有正确执行。
          但就像我之前说的,具体为什么会删不掉辅助节点,我不清楚,目前来看只有少部分的人遇到这个情况,所以我的猜想是某些插件阻碍了工具清理场景的功能。
          我之前做的一个修复,就是你下载的那个,试图用多种方法来清理场景,但目前看也对你没有帮助,所以只能让我再想想了
          方便的话你留一个邮箱给我,我有测试版本了发你试试

            1. 嗯,这样的话我也不太确定原因,你可以试试重装max或者换个版本的max,因为这种情况都是个例,很可能跟你本地的运行环境有关系

      1. 大佬,我用的1.3版本的做测试(3dmax是2014版) 用外力风力计算bone骨骼 算完会弹出一个 Unknown system exception 然后每2个骨骼之间会多出一个point helper ,风力效果是有 但是插件不能再次使用(必须重新再打开插件才能继续使用) 请教这是什么问题? 因为我特地重新装了一遍max。

        1. 所有文件计算风力都有这个问题么?计算碰撞有没有同样的问题?
          如果只是个别文件有问题,我可以帮忙看看,如果所有文件都有问题,我也不太确定原因,或者你换个其他版本 MAX 试试
          还有就是报错的时候,你按F11打开脚本编辑器,把里面红色的报错文字复制了发来我看看大致是哪个部分出问题

          1. 不管是风力,还是碰撞还是普通骨骼循环动画计算都是算完就报错的。

            Welcome to MAXScript.

            — Error occurred in item loop; filename: C:\Users\Administrator\Desktop\springmax\SpringMax\SpringMax.mse; position: 62641; line: 1549
            — Defined in encrypted script
            — called in springMax_Main(); filename: C:\Users\Administrator\Desktop\springmax\SpringMax\SpringMax.mse; position: 62641; line: 1549
            — Defined in encrypted script
            — called in springMax_Launcher(); filename: C:\Users\Administrator\Desktop\springmax\SpringMax\SpringMax.mse; position: 69270; line: 1728
            — Defined in encrypted script
            — called in springApply_btn.pressed(); filename: C:\Users\Administrator\Desktop\springmax\SpringMax\SpringMax.mse; position: 90878; line: 2105
            — Defined in encrypted script
            >> MAXScript Rollout Handler Exception:
            — Unknown system exception <<
            这是脚本报错信息

        2. 我更新了一下工具,应该可以修复这个问题,至少不会报错了
          你重新下载后再试试,完了告诉我结果
          版本号没变,因为没增加新功能
          谢谢

  10. 哦还有就是。我上面说的是用的12版本。。。我用14那个。他算完会给我在骨骼上直接添加了两个point~~ctrl+z撤销也没反应。。好像14不稳定。max会崩。。

  11. 这个是不能撤销么?我按ctrl+z、没反应。。。我算那种全bone绑定的。他直接就缩进去了。。骨骼变形的厉害,
    – -!~是我绑定链接有问题么!我那个bone直接用的父子链接。。这个插件刚用。不是很熟。是不是哪里操作有问题。看你视频好像都没出现这些问题

  12. 大佬 max2016 每次都报错 还会出现一些多余的 虚拟体 插件也失效了
    — Error occurred in item loop; filename: D:\SpringMax (1)\SpringMax.mse; position: 61298; line: 1506
    — Defined in encrypted script
    — called in springMax_Main(); filename: D:\SpringMax (1)\SpringMax.mse; position: 61298; line: 1506
    — Defined in encrypted script
    — called in springMax_Launcher(); filename: D:\SpringMax (1)\SpringMax.mse; position: 67891; line: 1683
    — Defined in encrypted script
    — called in springApply_btn.pressed(); filename: D:\SpringMax (1)\SpringMax.mse; position: 89136; line: 2050
    — Defined in encrypted script
    >> MAXScript Rollout Handler Exception:
    — Unknown system exception <<

      1. 你好。我是新开的场景新建的骨骼。就出现这个问题。所以给你发文件应该意义不大。是否跟V-Ray有关呢。你那边没遇到的话。空了重装MAX试试。

    1. 填1的话是每帧震荡 1/π 次,所以会比较快,其实我当初应该把这个值放大10倍,这样更人性化一点,但已经做成这样了,再改会引起老用户混乱,就仍旧保留吧

  13. 我有个关于碰撞的想法。我们创建骨骼的时候都是纵向的创建,以至于碰撞体由下往上的运动造成碰撞不成功。我的想法是能不能在骨骼和骨骼之间创建一个横向的骨骼,就像高级工具里面骨骼关联的那样(只不是里面创建的是线,这里创建是的关联骨骼),一个物体由横向和纵向十字交叉的骨骼群去控制,运算碰撞出错的概率应该就会大大减少

    1. 你是说 Max 自身的隐藏骨骼功能,不能隐藏脚本计算过的骨骼?这个有可能是因为我关闭了骨骼的 “bone on” 属性导致的,你可以用点击显示界面里“Bone Objects”下方的“Bone”字样来隐藏

    1. 仅凭你的描述,我不知道是为什么。我所能说的是在我本地的MAX 2016上使用这个工具,一切正常。
      另外也有其他人跟你有类似的情况,他们把出问题的文件发我以后,我发现在我这边一切正常,并且操作录像也发还他们了,然而并没有下文。所以我只能猜测出现这种情况的人可能是装了某些插件造成与 spring max 发生冲突导致的,但具体什么插件我不知道。
      目前来看,建议重装一个干净的 max 试试。

    1. 如果你有女朋友,她劈头盖脸只说一句:“我不开心,你看怎么办吧”,不知你能否哄她开心?嗯,我现在的想法跟那时候的你是一样的 🙂

  14. Hi, Spring Max is the most useful toolkit on soft-material solution that I ever see. Very impressive.
    However the current version doesn’t work on 3ds-max 2011
    The max listener shows:
    — Error occurred during fileIn in
    — Error occurred in anonymous codeblock; filename: C:\Program Files\Autodesk\3ds Max 2011\Scripts\SpringMax_2012.mse; position: 69143; line: 276
    >> MAXScript FileIn Exception: — Syntax error: at [, expected name
    — In line: <<

          1. Since I got some trouble when install Max 2011, so may not able to find what exactly cause the crash, but from your crash report, i think you could try re-extract zip package and make sure mse file and icon folder place in same path then try again.

  15. 个人在软件的使用过中出现了些问题.然后有些想法希望对完善软件功能有所帮助.目前使用中感觉软件只是支持骨骼数量比较多的模型,演示的视频文件中模型文件纵列有布线的地方就有一条骨骼.但是很多时候一般都是2-3条线,我们使用一根骨骼控制的,.这样问题就被放大了.然后目前的算法我理解为,单纯的bone骨骼与碰撞体小胶囊的碰撞算法.这样的话没有架设骨骼的地方很容易出现穿插,而且也是不可避免的.然而在演示的视频文件中我看到可以对面片进行k帧.我自己测试软件的时候也是测试的跑步动作.然后就产生了一些想法.假设我们把面片或者碰撞胶囊改变成可编辑多边形..文字说可能不是很直观我举个例子吧.正面看跑步动画双腿移动的形状是一个四边形或者是梯形,侧偏看的话双腿的移动的形状就是3角形四边形梯形又或者是菱形.顶视图的话基本上就是不断变化的椭圆 .然后我们使用可编辑多边形来替换目前的碰撞体.面片又或者胶囊.只需要改变多边形的形状是不是可以计更多更好的计算碰撞而不会出现滑到一边的情况呢(因为本身就是一个整体)又或者是碰撞不到碰撞体的情况呢. 特殊说明本评论只是意见和想法.希望对大神有所帮助.而且作为一名动画师 深深的明白穿插无论怎么样都不可能完全的避免,我们能做的只是尽量的避免.如果在这个软件的帮助下肯定会更高更快的提高的我们的制作效率就是了.

    1. 将骨骼加宽后启用“骨骼形状”功能,是否能解决你的问题?
      另外将胶囊改成多边形进行碰撞,会大大增加计算量,这也是游戏引擎里推荐使用胶囊或者是长方形来计算物理效果的原因。

  16. 大佬你好,非常感谢大佬为国内动画师开发这个插件,提高了工作效率。遇到个问题是,这个如果选了一整串骨骼一起计算,就会报错,生成很多个点对象

  17. 每次在计算和平面碰撞的时候会报错,但是碰撞结果是正确的。然后就必须要关了插件重新开才行,这是我找到的MAX报错记录,希望能优化

    — Error occurred during fileIn in #C:\Program Files\Autodesk\3ds Max 2014\scripts\startup\vraylightlister.ms; line number: 113
    >> MAXScript Auto-load Script Error – C:\Program Files\Autodesk\3ds Max 2014\scripts\startup\vrayinstall.ms Exception:
    — Compile error: Duplicate struct member name: LightInspectorListRollout
    — In line: LightInspectorListRollout, <> MAXScript Auto-load Script Error – C:\Program Files\Autodesk\3ds Max 2014\scripts\startup\vraylightlister.ms Exception:
    — Compile error: Duplicate struct member name: LightInspectorListRollout
    — In line: LightInspectorListRollout, <> MAXScript Rollout Handler Exception:
    — Unknown system exception <<

    1. 看报错内容,是跟你的 vray 插件有关系,因为计算时会调用一个光线追踪的功能,那个功能如果被修改了可能会引发这样的问题。就目前我所了解,你这个可能是孤例,所以我无法解决。

      1. Welcome to MAXScript.

        — Error occurred in item loop; filename: C:\Program Files\Autodesk\3ds Max 2014\plugins\sprigmax\SpringMax.mse; position: 56536; line: 1389
        — Defined in encrypted script
        — called in springMax_Main(); filename: C:\Program Files\Autodesk\3ds Max 2014\plugins\sprigmax\SpringMax.mse; position: 56536; line: 1389
        — Defined in encrypted script
        — called in springMax_Launcher(); filename: C:\Program Files\Autodesk\3ds Max 2014\plugins\sprigmax\SpringMax.mse; position: 62963; line: 1565
        — Defined in encrypted script
        — called in springApply_btn.pressed(); filename: C:\Program Files\Autodesk\3ds Max 2014\plugins\sprigmax\SpringMax.mse; position: 83343; line: 1917
        — Defined in encrypted script
        — Error occurred in anonymous codeblock; filename: C:\Program Files\Autodesk\3ds Max 2014\plugins\sprigmax\SpringMax.mse; position: 56536; line: 1389
        >> MAXScript Rollout Handler Exception:
        — Unknown system exception <<
        重装了新的VRAY之后报的这个错,还是骨骼和地面碰撞,一切都正常就是要报错,然后要重启插件,Bone003_SpringMaxRefLoc骨骼上面也多了很多这种虚拟体

  18. 很好用的插件,但是大佬,我碰到个问题,不知道是不是插件的原因,我们项目是所有动作在一个max文件里面,我用这个插件的时候,第一个动作算完飘带,算第二个的时候,第一个飘带的骨骼会被压扁并且算完的帧也会消失

    1. 如果你计算第二个骨骼链时并没有选中第一个骨骼链,则不会对其产生任何影响。除非两个骨骼链共享一个父物体,而且那个父物体自身缩放值为负的。但具体还得看到那个文件我才能查找问题。

      1. 没有第二个骨骼链,两个动作是同一个骨骼连,只不过两个动作做到了一个max文件里,算完第一个动作的飘带,算第二个文件的时候第一个就会出问题,你可以自己找个文件试试,有的项目需要把一个角色的所有动作做到同一个max文件里,我自己新建bone试了下也会出错,第一段动作算完,算完第二段,第一段就会出错

        1. 明白你意思了,你是一个文件里有很长的一段动画,内容分别是一个角色的不同动作如走炮攻击都做在一个文件里了对吧?目前是这样的,计算后只会处理在时间轴范围内的帧,超过时间轴显示范围的帧就会被清理掉,造成你遇到的问题。会考虑在下个版本修正这个问题,尽量保留其他部分动画。谢谢意见!

发表评论

电子邮件地址不会被公开。 必填项已用*标注