gyzbean

I don't see any particular issue, apart from the fact that you removed "Strip Whitespace X/Y."
How many atlas pages does this configuration export?

    Related Discussions
    ...

    Davide 只有一个图集页面(尺寸小于2048*2048),我正在试着逐级排除问题的源头。我又使用texturePacker工具将spine中使用的散图导出为spine格式的图集给godot,但依然没能合批。或许问题的源头不在spine导出的设置上,而在于godot中。我在godot中尝试使用相同的材质(如shaderMaterial、CanvasItemMaterial)给spine但都无法合批。我尝试询问了AI但没能找到AI所说的一些选项。
    如果没有能解决godot合批spine的方法,或许godot用户就要被迫使用godot自带的骨骼动画工具了,这对spine工具的忠实用户以及spine官方都是一个损失,希望在此问题上能得到官方工程师的协助。

    We cannot help you if you don't send us a minimal reproduction project of your issue, as I said above.
    Many users use spine-godot without any issue with draw calls.

      Davide 我准备好了工程文件,我应该发送到哪里呢,可以给我一个邮件地址吗。非常感谢

      • Editado

      Harald I have sent the email from <gyzbean @ 126.com>
      hope to get a quick solution
      thank you very much

      Harald My email has been returned, and I am unable to send files in compressed formats such as zip or rar. I'll try another method and send the email later

      @gyzbean You can upload your project at some filehosting service and share a link if file size is too big.

        gyzbean

        Thanks for sending us the project. We'll analyze the issue as soon as we can, probably next week.

          Davide 好的,非常感谢。有结果了请通知我

          10 días más tarde

          This is a limitation of Godot. They currently do not implement batching for 2D triangle meshes.

          orgs/godotengineprojects/33?pane=issue&itemId=20224421

          We've worked around this as best as possible, by using meshes explicitely:
          EsotericSoftware/spine-runtimesblob/4.2/spine-godot/spine_godot/SpineSprite.cpp#L173

          However, that does not help with draw calls. It does improve performance compared to canvas_item_add_triangle_array though.

          Note however, that Godot 4+ uses Vulkan as the default renderer. Batching is much less impactful there, which is one of the reasons it hasn't been implemented by Godot yet.

            Mario 我了解了,其实我不久前才购买了spinePro,虽然我很希望在项目中使用这个便捷的工具,但godot似乎还不太成熟。
            所以这是否意味着,如果我希望大规模使用spine作为游戏中的角色,最好使用unity引擎,或使用godot的原生骨骼工具+图集的方式来实现,这两种方案似乎都可以解决batch的问题。

            Mario 等等,可能刚刚我没有完全理解你的描述,你的意思是不是说,我可以忽略掉合批这个概念去使用godot-spine,不能像对待传统引擎的思路去对待godot,因为它的底层渲染逻辑很特殊,drawcall对它的影响很小。是这个意思吗?我可以忽略drawcall这个概念,在godot中大量使用spine动画

            I think Godot is mature enough for production use, including on mobile. Vulkan makes batching mostly irrelevant.

            I suggest you setup a simple scene with multiple SpineSprite nodes that's similar to your target complexity and test performance on devices you care about.

              Mario 我测试了一下,在godot里跑200个spine和unity里跑200个合批的spine,最后unity的FPS非常稳定,godot在100个的时候i5处理器就已经扛不住了,200个时drawcall达到了3000+,i7也抗不住了。但unity跑到300个i5都能稳定在60fps(unity甚至是在3D空间里)。
              其实godot无法让多个spine合批这个事儿还勉强能接收。但godot甚至无法让1个spine文件只使用1个drawcall就太糟糕了,如果godot能让1个spine只使用1个drawcall绘制,200个spine控制在200dc,应该也不会太卡,现在一个spineSprite就要耗费20-30个dc,很难大规模使用