我刚刚钻研了金属世界,我想我已经掌握了它!但后来我发现,如果我想制作游戏,那么在屏幕上移动的静态物体就不够了.所以我的问题是,’是否有可能为使用Metal的模型创建动画?’
我已经看过使用其他API,例如SpriteKit和SceneKit,但我发现它们不支持着色器,并且没有Metal那么强大.
我能想到如何实现这一目标的唯一方法是创建60种不同的模型,然后依次加载每种模型,以产生“停止运动”的效果,但我认为这样做可能是非常低效,并希望有一个更容易的答案?
非常感谢!
解决方法
是的,还有其他更有效的动画制作方法.但在进入之前,一个警告:看起来你真的在这里咆哮错误的树.
Metal是(概念上)非常低级的接口.你使用Metal(几乎)直接与GPU交谈,所以要使用它你需要像GPU一样思考(类似):在数据缓冲区,顶点转换等方面你似乎工作得更高概念级别,所以你可能会更好地服务于其中一个高级游戏引擎:SpriteKit for 2D或SceneKit for 3D. (或者像Cocos或Unity这样的第三方引擎.)另一方面,Metal更适合构建这些游戏引擎.
SpriteKit和SceneKit支持着色器.查看文档中的SKShader
和SCNShadable
(并确保单击“更多”链接以阅读完整概述). SceneKit还支持角色动画(也称为骨骼动画,也称为蒙皮):通常在外部创作工具(Maya,Blender等)中设计和装配动画模型,然后使用SceneKit在运行时使用动画.
可以在Metal中执行基于GPU的骨架动画等操作.但我还没有看过任何关于它的教程或类似内容,可能是因为Metal是一项新技术.但从根本上说,它基于你在OpenGL或Direct3D中用于骨骼动画的相同技术 – 并且已经有很多关于这些技术的动画的文章.如果您愿意将时间和精力投入到低水平的工作中,那么从GL / D3D教程中调整主题相对容易.