![]() |
1
Zhuzhuchenyan 9 天前
服装和身体不是简单的包裹关系
服装有自己的布料约束和其他效果,身体的运动和服装的运动不是同步的 如何定义服装 Mesh 稳定在外呢?用身体的表面法线去算一个稳定在外位置?两个躯干相交位置的处理就非常困难了。 以上决定了不存在一个通用的防止服装穿模的算法或者插件,或许每个大厂有自己的解决方案,但是这些解决方案都是和本身的生产管线强绑定的。 |
![]() |
2
yutou527 9 天前
对啊 就是不能实现
|
3
Rothschild 9 天前
你当穿机甲外骨骼呢
|
4
nullyouraise 9 天前
游戏需要在效果和性能之间取得平衡,60 帧的游戏一帧只有 16.67ms ,就算你 16 核处理器 100%利用率,总计 266.72ms ,时间全用来计算布料和角色模型骨骼之间的物理动画,也是完全不够的
|
![]() |
5
UnluckyNinja 9 天前 via Android
因为你感觉很简单的事情,实现上并不一定简单,比如整个布料“在外面”,你如何在计算机中表示?你如何判断布料当前是否“在外面”?若发生冲突又如何处理?尤其在碰撞两边都有物理模拟都有动画,每帧都要解算,你又如何保证以上算法的性能?
关于网格形变不自相交,去年 SIGGRAPH 上已经有论文得奖了,什么时候能实际应用就不知道了 |
![]() |
6
geekvcn 9 天前
大规模实时物理计算目前没有电脑吃得消,你短短几句话背后是大量物理运算,你要达到的布料解算效果目前物理仿真软件就能实现,简化的物理布料模拟有 NVIDIA Flex 、AMD TressFX 。
|
7
yulon 9 天前
你都说游戏引擎了,每个面都运算碰撞,电脑带得动吗
|
8
drymonfidelia OP @nullyouraise
@UnluckyNinja @Zhuzhuchenyan @geekvcn 我说的不是布料模拟,而是在布料模拟之后,避免穿模的一种兜底方案。类似 Unity 单独用一个和主相机参数相同,但 Culling Mask 只包含衣物所在层的相机叠加的效果,确保衣服显示在身体外面,这样就永远不会穿模了。当然这么做是不行的,这样做的话脖子就变透明了。 |
![]() |
9
UnluckyNinja 5 天前
@drymonfidelia #8 如果你说的是图层优先级,单纯让衣服显示在人物前面,那么确实能做,但也只是视觉上的掩耳盗铃,真穿模时该有问题还是有问题,因为本质上并没有解决穿模的问题(也就是物理空间冲突),只不过穿模时不显示交叉部分而已。(更别提这个 hack 可能带来的更多问题)
以及这样实际上不是“内/外”的关系,而是“前/后”的关系,要判断内外必然涉及到碰撞检测相关概念,然后就是大家说的情况 如果你想解决的问题,实际上是你另一个帖子里关于角色/人物几何体绑定动画导致穿模的情况,那么应该是 3D 建模软件的相关问题,跟游戏引擎关系不大,没人会把角色全身的布料都放进游戏物理引擎里,个别组件例如衣摆穿模一下也无伤大雅(此时碰撞也都是和物理引擎的刚体碰撞,不是和人物网格体碰撞),贴身部分可以直接烘培进动画。 最简单的就是那个帖子里 1L 说的,衣服里面完全看不到的面直接隐藏/删除就行了,“某个角度看到是空的”——但能让玩家看到里面本身就是个问题(袖口领口之类的贴合一下,或者用内衬填充,或者只显示入口一小段然后过渡到全黑挡住,类似枪口。)。其它方法还有 shape key 微调等。 以及 V2 上基本都是程序员,你很难找到 3D 资产创作方面的专业答案,建议去行业论坛,或者直接搜,常见问题基本都能在视频网站上找到解决方法。(以及现在有 AI 了可以直接问 AI ) 再说回原来的标题,“永远”“彻底”等绝对词,让人以为你要在物理引擎中完美模拟双方来解决布料网格体与人物网格体穿模的问题。而实时计算下无微不至的模拟,在正常程序员眼中基本等于创造永动机 |