gpt4 book ai didi

ios - SCNRender 带有动画对象的场景

转载 作者:可可西里 更新时间:2023-11-01 03:58:52 26 4
gpt4 key购买 nike

我有 SCNScene 和动画对象(.dae 文件),我还有 SCNRenderopenGLContext 初始化.当我将我的动画场景设置为此渲染时,我看不到动画,但是当我将我的动画场景设置为 SCNView 时,我看到动画。

我如何设置渲染:

self.renderer = [SCNRenderer rendererWithContext:_openGLContext options:nil];
self.renderer.autoenablesDefaultLighting = YES;
self.renderer.playing = YES;
self.renderer.scene = myAnimatedScene;

我知道 OpenGL 只能绘制对象,它对我的​​ .dae 文件中的动画设置一无所知

谁能告诉我如何使用 SCNRenderopenGLContext 初始化动画场景?

最佳答案

调用以下函数时出现:

renderer.render(atTime: time, viewport: viewport,
commandBuffer: commandBuffer,
passDescriptor: renderPassDescriptor)

time 参数非常重要。在我将它保留为零并且没有动画之前。如果用CFAbsoluteTimeGetCurrent()设置,好像只能得到一个动画(我刚测试过,我的游戏英雄既有射击 Action 也有行走 Action ,通过设置atTime 使用 CFAbsoluteTimeGetCurrent(),只会出现行走的那个。)

但是,我们的情况有点不同。在我的例子中,我还有一个渲染英雄视角的 SCNView。所以为了运行所有的动画,我创建了一个 globe 变量:

var globeTime:TimeInterval = 0

并在SCNView的renderer函数中保存了当前时间:

func renderer(_ aRenderer: SCNSceneRenderer,
updateAtTime time: TimeInterval) {
globeTime = time
//...
}

最后将它传递给我的 SCNRender。

//...
renderer.render(atTime: globeTime, viewport: viewport,
commandBuffer: commandBuffer,
passDescriptor: renderPassDescriptor)

这完美地解决了我的问题。

关于ios - SCNRender 带有动画对象的场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40378180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com