在Mac OS X上使用SceneKit加载COLLADA(DAE)文件时,您可以通过遍历SCNNode:s和它们各自的SCNGeometry:s树来轻松获取所有几何体,并使用[geometry geometrySourcesForSemantic:SCNGeometrySourceSemanticVertex]提取顶点数据。
然而,如果给定包含动画对象的DAE文件,那么SceneKit能否在动画中给出每个顶点的确切位置,或者我能否从关联的CAAnimation对象中提取所有动画数据?
我的用例是,我想使用SceneKit导入DAE文件,但对于其他所有内容都使用自己的渲染管道。
澄清: 显然有两种方法可以实现这一点:
1)获取并解析与动画相关的关键帧
2)让SceneKit评估特定时间的场景,并给我预先计算好的顶点(等)坐标
我的用例中的目标是#2,但如果我可以找到SceneKit使用的关键帧格式的文档,则#1也可接受。
问题在于对于#1,我无法深入挖掘以下内容: SCNNode.animationKeys为给定SCNNode可用的动画密钥,[SCNNode animationForKey:key]提供从中获取CAAnimation对象的CAAnimationGroup对象。 CAAnimation对象是(对于我的DAE文件)实际上是CAKeyframeAnimation的实例,其中我获得CAKeyframeAnimation.values:
Keyframe (1/40): <00000000 0000f0bf 00000080 d9956d3c 000000a0 0e32a13c 00000000 00000000 00000020 636772bc 00000020 2914ef3f 00000000 0f7ecebf 00000000 00000000 00000020 1324a1bc 00000000 0f7ecebf 00000020 2914efbf 00000000 00000000 00000000 00000000 000000c0 205c6d40 00000000 00a069c0 00000000 0000f03f> 等。因此,要解决上述#1方法,我需要找到这些关键帧使用的格式。
然而,如果给定包含动画对象的DAE文件,那么SceneKit能否在动画中给出每个顶点的确切位置,或者我能否从关联的CAAnimation对象中提取所有动画数据?
我的用例是,我想使用SceneKit导入DAE文件,但对于其他所有内容都使用自己的渲染管道。
澄清: 显然有两种方法可以实现这一点:
1)获取并解析与动画相关的关键帧
2)让SceneKit评估特定时间的场景,并给我预先计算好的顶点(等)坐标
我的用例中的目标是#2,但如果我可以找到SceneKit使用的关键帧格式的文档,则#1也可接受。
问题在于对于#1,我无法深入挖掘以下内容: SCNNode.animationKeys为给定SCNNode可用的动画密钥,[SCNNode animationForKey:key]提供从中获取CAAnimation对象的CAAnimationGroup对象。 CAAnimation对象是(对于我的DAE文件)实际上是CAKeyframeAnimation的实例,其中我获得CAKeyframeAnimation.values:
Keyframe (1/40): <00000000 0000f0bf 00000080 d9956d3c 000000a0 0e32a13c 00000000 00000000 00000020 636772bc 00000020 2914ef3f 00000000 0f7ecebf 00000000 00000000 00000020 1324a1bc 00000000 0f7ecebf 00000020 2914efbf 00000000 00000000 00000000 00000000 000000c0 205c6d40 00000000 00a069c0 00000000 0000f03f> 等。因此,要解决上述#1方法,我需要找到这些关键帧使用的格式。