【发布时间】:2019-04-04 02:14:32
【问题描述】:
我在“渲染时”为 SCNNode 设置动画时遇到问题,所以我的问题是如何知道 SCNNode 已完全加载并在场景中可见?我想在加载/渲染后立即为其缩放设置动画。
我是这样初始化的:
NSString* ring = [[NSBundle mainBundle]
pathForResource:[NSString stringWithFormat:@"sweep"]
ofType:@"obj"];
NSURL *url = [NSURL fileURLWithPath:ring];
MDLAsset *asset = [[MDLAsset alloc]initWithURL:url];
self.node = [SCNNode nodeWithMDLObject:[asset objectAtIndex:0]];
self.node.geometry.firstMaterial = goldMaterial;
self.node.geometry.subdivisionLevel = 1;
[self.node setRotation:SCNVector4Make(-1, 0, 0, M_PI/2.5)]; //M_PI = 180d
[self.node setScale:SCNVector3Make(0.1, 0.1, 0.1)];
[scene.rootNode addChildNode: self.node];
然后我尝试添加这样的操作
SCNAction *scaleUp = [SCNAction scaleTo:1.0f duration:0.5f];
scaleUp.timingMode = SCNActionTimingModeEaseInEaseOut;
[self.node runAction:scaleUp];
但我的节点只是按比例放大,因为加载 obj 资产需要大约 2 秒。 当我将持续时间更改为 5 秒时,我可以看到动画。
我也尝试委托 SCNSceneRenderer: didRenderScene,但我也无法成功运行该动画。
【问题讨论】:
标签: ios objective-c scenekit