为什么还没有游戏引擎或者布料组件能实现服装 Mesh 永远显示在身体 Mesh 的外面,这样不就可以彻底防止服装穿模了?现在穿衣要逐个骨骼调权重,布料组件也要逐个绑定碰撞体 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Game Engines
Unreal Engine
MyCryENGINE
drymonfidelia
V2EX    游戏开发

为什么还没有游戏引擎或者布料组件能实现服装 Mesh 永远显示在身体 Mesh 的外面,这样不就可以彻底防止服装穿模了?现在穿衣要逐个骨骼调权重,布料组件也要逐个绑定碰撞体

  •  
  •   drymonfidelia 197 天前 2732 次点击
    这是一个创建于 197 天前的主题,其中的信息可能已经有所发展或是发生改变。
    9 条回复    2025-06-18 03:41:55 +08:00
    Zhuzhuchenyan
        1
    Zhuzhuchenyan  
       197 天前
    服装和身体不是简单的包裹关系
    服装有自己的布料约束和其他效果,身体的运动和服装的运动不是同步的

    如何定义服装 Mesh 稳定在外呢?用身体的表面法线去算一个稳定在外位置?两个躯干相交位置的处理就非常困难了。

    以上决定了不存在一个通用的防止服装穿模的算法或者插件,或许每个大厂有自己的解决方案,但是这些解决方案都是和本身的生产管线强绑定的。
    yutou527
        2
    yutou527  
       197 天前
    对啊 就是不能实现
    Rothschild
        3
    Rothschild  
       197 天前
    你当穿机甲外骨骼呢
    nullyouraise
        4
    nullyouraise  
       197 天前
    游戏需要在效果和性能之间取得平衡,60 帧的游戏一帧只有 16.67ms ,就算你 16 核处理器 100%利用率,总计 266.72ms ,时间全用来计算布料和角色模型骨骼之间的物理动画,也是完全不够的
    UnluckyNinja
        5
    UnluckyNinja  
       197 天前 via Android
    因为你感觉很简单的事情,实现上并不一定简单,比如整个布料“在外面”,你如何在计算机中表示?你如何判断布料当前是否“在外面”?若发生冲突又如何处理?尤其在碰撞两边都有物理模拟都有动画,每帧都要解算,你又如何保证以上算法的性能?


    关于网格形变不自相交,去年 SIGGRAPH 上已经有论文得奖了,什么时候能实际应用就不知道了
    geekvcn
        6
    geekvcn  
       197 天前
    大规模实时物理计算目前没有电脑吃得消,你短短几句话背后是大量物理运算,你要达到的布料解算效果目前物理仿真软件就能实现,简化的物理布料模拟有 NVIDIA Flex 、AMD TressFX 。
    yulon
        7
    yulon  
       197 天前
    你都说游戏引擎了,每个面都运算碰撞,电脑带得动吗
    drymonfidelia
        8
    drymonfidelia  
    OP
       193 天前
    @nullyouraise
    @UnluckyNinja
    @Zhuzhuchenyan
    @geekvcn 我说的不是布料模拟,而是在布料模拟之后,避免穿模的一种兜底方案。类似 Unity 单独用一个和主相机参数相同,但 Culling Mask 只包含衣物所在层的相机叠加的效果,确保衣服显示在身体外面,这样就永远不会穿模了。当然这么做是不行的,这样做的话脖子就变透明了。
    UnluckyNinja
        9
    UnluckyNinja  
       193 天前
    @drymonfidelia #8 如果你说的是图层优先级,单纯让衣服显示在人物前面,那么确实能做,但也只是视觉上的掩耳盗铃,真穿模时该有问题还是有问题,因为本质上并没有解决穿模的问题(也就是物理空间冲突),只不过穿模时不显示交叉部分而已。(更别提这个 hack 可能带来的更多问题)

    以及这样实际上不是“内/外”的关系,而是“前/后”的关系,要判断内外必然涉及到碰撞检测相关概念,然后就是大家说的情况

    如果你想解决的问题,实际上是你另一个帖子里关于角色/人物几何体绑定动画导致穿模的情况,那么应该是 3D 建模软件的相关问题,跟游戏引擎关系不大,没人会把角色全身的布料都放进游戏物理引擎里,个别组件例如衣摆穿模一下也无伤大雅(此时碰撞也都是和物理引擎的刚体碰撞,不是和人物网格体碰撞),贴身部分可以直接烘培进动画。
    最简单的就是那个帖子里 1L 说的,衣服里面完全看不到的面直接隐藏/删除就行了,“某个角度看到是空的”但能让玩家看到里面本身就是个问题(袖口领口之类的贴合一下,或者用内衬填充,或者只显示入口一小段然后过渡到全黑挡住,类似枪口。)。其它方法还有 shape key 微调等。
    以及 V2 上基本都是程序员,你很难找到 3D 资产创作方面的专业答案,建议去行业论坛,或者直接搜,常见问题基本都能在视频网站上找到解决方法。(以及现在有 AI 了可以直接问 AI )

    再说回原来的标题,“永远”“彻底”等绝对词,让人以为你要在物理引擎中完美模拟双方来解决布料网格体与人物网格体穿模的问题。而实时计算下无微不至的模拟,在正常程序员眼中基本等于创造永动机
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2644 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 06:51 PVG 14:51 LAX 22:51 JFK 01:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86