ios – 金属角色动画

我刚刚钻研了金属世界,我想我已经掌握了它!但后来我发现,如果我想制作游戏,那么在屏幕上移动的静态物体就不够了.所以我的问题是,’是否有可能为使用Metal的模型创建动画?’

我已经看过使用其他API,例如SpriteKit和SceneKit,但我发现它们不支持着色器,并且没有Metal那么强大.

我能想到如何实现这一目标的唯一方法是创建60种不同的模型,然后依次加载每种模型,以产生“停止运动”的效果,但我认为这样做可能是非常低效,并希望有一个更容易的答案?

非常感谢!

解决方法

是的,还有其他更有效的动画制作方法.但在进入之前,一个警告:看起来你真的在这里咆哮错误的树.

Metal是(概念上)非常低级的接口.你使用Metal(几乎)直接与GPU交谈,所以要使用它你需要像GPU一样思考(类似):在数据缓冲区,顶点转换等方面你似乎工作得更高概念级别,所以你可能会更好地服务于其中一个高级游戏引擎:SpriteKit for 2D或SceneKit for 3D. (或者像Cocos或Unity这样的第三方引擎.)另一方面,Metal更适合构建这些游戏引擎.

SpriteKit和SceneKit支持着色器.查看文档中的SKShaderSCNShadable(并确保单击“更多”链接以阅读完整概述). SceneKit还支持角色动画(也称为骨骼动画,也称为蒙皮):通常在外部创作工具(Maya,Blender等)中设计和装配动画模型,然后使用SceneKit在运行时使用动画.

可以在Metal中执行基于GPU的骨架动画等操作.但我还没有看过任何关于它的教程或类似内容,可能是因为Metal是一项新技术.但从根本上说,它基于你在OpenGL或Direct3D中用于骨骼动画的相同技术 – 并且已经有很多关于这些技术的动画的文章.如果您愿意将时间和精力投入到低水平的工作中,那么从GL / D3D教程中调整主题相对容易.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...