闪耀暖暖开发者:从美术设计解答换装游戏的根本
由于移动平台性能有限,暖暖系列衣服复杂度又比较高,即使是PC平台也无法完全使用布料系统来做到我们想要的效果。我们的物理系统是一个链式迭代的质点系统,粒子之间可以添加弹簧,用这种方式可以做到简单的布料模拟。 如何进行碰撞处理? 关于碰撞处理,粒子和弹簧都可以作为碰撞处理对象。我们的碰撞体有两类,第一类由跟随基础骨架,包括平面碰撞体和胶囊碰撞体。胶囊碰撞体可以调整两端的大小,让它更贴合人的形体。 在处理腿与裙子的碰撞时,当腿的移动范围较小的时候,能够正确往外推裙子。而腿移动量较大时,腿反而会向内压裙子。我们的解决方法是用弹簧方向和粒子链方向的叉乘向量,作为弹簧的碰撞主方向,当弹簧与胶囊体发生碰撞时,优先朝主方向那一侧推。这样效果更为稳定。 ![]() 第二类碰撞体跟随扩展骨架,根据服装的骨骼链和邻居结构可以构建出虚拟的网格碰撞体。这个蓝色的点是当前的物理粒子,线是物理骨骼链和邻居结构。我们可以将其转换成黄色所示的虚拟网格。在运行时,可以查找粒子所最接近的虚拟网格中的三角形,用这个三角形作为平面碰撞。我们使用八叉树管理网格碰撞体中的所有三角形,方便运行时快速查找。网格碰撞体的三角形比较大,过渡比较剧烈,在某些情况下可能会抖动,我们允许在运行时动态取最近的四个三角形,根据距离权重插值进行平滑处理。 网格碰撞体的另一个作用是可以处理部件间的碰撞,我们为每类部件可以取一个别名,粒子设置它与哪个别名进行碰撞。如图我们设置头发与“裙子”进行碰撞,接下来我们切裙子的时候,只要通过别名,就可以动态寻找到当前所穿的究竟是哪个裙子,这个裙子针对的网格碰撞体是怎样的,可以实时调整头发与网格碰撞体的碰撞。 ![]() (编辑:D游戏网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |