• RuntimesUnity
  • 如何解决在3D场景中使用spine动画产生的的穿模问题

游戏DEMO是一个日式战旗类型游戏,使用正交摄像机在游戏中固定俯视角,场景用3D模型搭建,SPINE制作2D的单位,问题如图所示。在SPINE中我们将角色的脚部中心放置在原点,在游戏中同样在对应的棋盘网格中心建立骨骼对象,并让骨骼对象垂直于地面(通过摄像机的俯角调整y值使之看起来如spine中所制作那样)。在这种条件下,在spine中低于X轴的部分将与地面发生穿模现象,请问是否有类似问题的解决方案?

(不能使之像biliboard那样始终正对摄像机,因为这样有可能与垂直的墙壁等场景模型发生穿模。也不能直接将其改为OVERLAY摄像机渲染模式,因为我们需要它正确的被视角中其他3D场景模型所遮挡)

在游戏中的穿模现象↓↓↓

在spine中的制作效果↓↓↓

Related Discussions
...

在3D场景中使用Spine动画时出现穿模问题,通常是由于2D动画与3D模型之间的深度关系处理不当造成的。要解决这个问题,可以尝试以下方法:

  1. 调整深度排序:确保Spine动画的渲染顺序与3D模型的渲染顺序正确。可以通过调整Spine动画的渲染层级或深度值来避免穿模。

  2. 使用深度缓冲:确保在渲染Spine动画时启用了深度缓冲,这样可以让2D动画与3D模型正确地进行深度测试。

  3. 自定义着色器:编写自定义着色器来处理Spine动画的深度信息,使其与3D场景中的其他对象正确交互。

  4. 调整摄像机设置:如果可能,调整摄像机的视角或位置,以减少穿模现象的发生。

这些方法可以帮助你在3D场景中更好地集成Spine动画,避免穿模问题。

@IOIO Please note that the spine-unity skeleton components SkeletonAnimation and SkeletonMecanim use a normal 3D MeshRenderer. This should be simple to combine with your 3D scene, as normal Unity rules apply for arranging and sorting elements of your scene.

  • IOIO a répondu à ça.

    Harald
    我们并没有改变过SkeletonAnimation和MeshRenderer组件渲染方面的设置。

    我想UNITY是正确处理了渲染层级,它将spine工程中的坐标原点视作模型原点,在SPINE中处于X轴下方的图像就被视为了模型原点以下的部分,当在unity场景中把坐标原点放置在地面表层时,模型原点以下部分就穿入了地下。
    而我们的项目需求并不希望这样虽然正确但看起来是穿模的显示效果,所以寻求spine方面类似问题的处理方案。

    @IOIO What I intended to say is that you would solve your problem the same way as you would solve placing a normal quad or cube in a 3D world. As your camera seems to be isometric parallel projection (non-perspective) camera, you could simply move the object closer to the camera.

    Alternatively you could use sorting layers if it shall be on top of everything, or even use a custom shader to offset the position.