Canvas 在运动5内部渲染Scenekit
因此,根据我所做的研究,似乎有一种方法可以在其他窗口中渲染Scenekit,而不是通过NSRect或.xib文件创建自己的窗口。我试图让Scenekit显示在Motion 5的画布内。Motion 5使用FxPlug SDK,并有一个名为renderOutput的方法将内容显示到画布Canvas 在运动5内部渲染Scenekit,canvas,rendering,scenekit,Canvas,Rendering,Scenekit,因此,根据我所做的研究,似乎有一种方法可以在其他窗口中渲染Scenekit,而不是通过NSRect或.xib文件创建自己的窗口。我试图让Scenekit显示在Motion 5的画布内。Motion 5使用FxPlug SDK,并有一个名为renderOutput的方法将内容显示到画布 - (BOOL)renderOutput:(FxImage *)outputImage withInfo:(FxRenderInfo)renderInfo { BOOL retval = YES;
- (BOOL)renderOutput:(FxImage *)outputImage
withInfo:(FxRenderInfo)renderInfo
{
BOOL retval = YES;
SCNRenderer *renderer;
SCNScene *_scene;
SCNNode *cameraNode;
_scene = [SCNScene scene];
renderer = [SCNRenderer rendererWithContext:renderInfo.sharedContext options:nil];
renderer.autoenablesDefaultLighting = YES;
renderer.playing = YES;
renderer.loops = YES;
renderer.showsStatistics = YES;
renderer.scene = _scene;
SCNCamera *camera = [SCNCamera camera];
cameraNode = [SCNNode node];
cameraNode.camera = camera;
[_scene.rootNode addChildNode:cameraNode];
renderer.pointOfView = cameraNode;
renderer.sceneTime = renderInfo.time.frame;
NSLog(@"Renderer Info: %@", renderer);
return retval;
}
当我将渲染器显示到控制台时,输出显示所有节点、摄影机和场景都有分配给它的内存,如下所示:
Renderer Info: <SCNRenderer 0x14ede9890: scene = <SCNScene: 0x14edc6f30>, pointOfView = <SCNNode: 0x14ed3f680 | camera=<SCNCamera: 0x14edc5260> | no child>, sceneTime = 0.000000, context = 0x108255000>
渲染器信息:
我曾尝试使用SceneKit将节点和图像添加到场景中,无论我做什么,都无法在Motion 5的画布上显示任何内容。我不确定我遗漏了什么,但似乎有什么东西在控制台中分配数据,但我似乎遗漏了一个重要的部分。我知道这个问题非常具体,但如果有人对SceneKit有任何了解,以及如何在议案5中显示SceneKit