我试图将ARKit中的对象创建与SceneKit和Metal集成 . 有些东西我可以用SeneKit轻松创建,有些用Metal创建,所以我希望能够并排使用 .
例如,使用sceneKit模板创建一个ArKit项目会通过SceneKit节点将太空船作为演示放置 . 另一方面,使用Metal模板在ARKit中创建一个立方体,并使用锚点进行挖掘 .
我怎样才能在同一个项目中使用它们?例如,通过Metal和SpaceKit创建一个多维数据集 .
另一个例子,有一个MTKView,我希望将它作为一个对象或层叠在SceneKit中的一个对象之上,我还有其他对象,我在SceneKit中使用PBR创建,我希望将它们并排放在一起ARKit . 如果可能的话 .
也许这个? :https://developer.apple.com/documentation/scenekit/scnprogram
我认为,如果可能,这对于不断发展的ARKit社区非常有用 .
谢谢!
2 回答
您应该能够同时在场景中使用SceneKit和Metal内容 - 您可以通过访问渲染器及其currentRenderCommandEncoder属性(https://developer.apple.com/documentation/scenekit/scnscenerendererdelegate)来使用 SCNSceneRendererDelegate :
renderer(_:willRenderScene:atTime:) - 用于在SceneKit之前渲染金属内容
renderer(_:didRenderScene:atTime:) - 用于在SceneKit之后渲染金属内容
或使用 SCNNodeRendererDelegate 用金属内容(https://developer.apple.com/documentation/scenekit/scnnoderendererdelegate)替换节点的内容:
您必须选择使用Metal或SceneKit构建应用程序,它们都有起伏 . 我认为你可以采取两种方法:
使用SceneKit . 由于SceneKit使用Metal,您可以增强和更改着色器或程序 . Maybe start reading the documentation关于在SceneKit中使用Metal . 也许你可以在Metal中做你想做的事情,同时尽可能使用SceneKits抽象 .
使用金属 . 如果在SceneKit中使用Metal作为Apple的意图,那么你必须在Metal中构建所有内容 . 要加载复杂模型,您可以使用Apples ModelIO将3D内容加载到金属中 .