1

尽管记录了以下MDLAsset类方法,但库中不存在ModelIO

+ assetWithSCNScene:bufferAllocator:



+ assetWithSCNScene:

因此,目前无法读取SceneKit .scn文件并创建MDLAsset.

解决方法是什么?

更新 0

我正在导入这些:

import SceneKit
import ModelIO
import MetalKit
import GLKit

在我的渲染器中,我尝试MDLAsset从一个实例化一个SCNScene

guard let scene = SCNScene(named:"ball.scn") else {
    fatalError("Error: Can not create scene")
}

let asset = MDLAsset(scnScene:scene, bufferAllocator:MTKMeshBufferAllocator(device: device))

我收到这个错误

在此处输入图像描述

找不到指示类别。我在这里错过了什么?

4

2 回答 2

1

您正在混合和匹配三个不同的框架,这就是该类别不起作用的原因。

MTKMeshBufferAllocator 是 MetalKit 的一部分,SceneKit 不知道如何处理分配。

只需离开 bufferAllocator 就可以了。

let asset = MDLAsset(scnScene:scene)

关于进口问题,

import SceneKit.ModelIO

为您提供桥接 API。它的目的是允许您从 MDL 对象构造 SCN 对象。

于 2017-09-01T17:56:15.760 回答
1

这些被MDLAssetSceneKit 定义为一个类别(这是必要的,因为这SCNScene是定义的)。您需要@import SceneKit以及@import ModelIO.


您在 ObjC 中列出了签名;没有注意到您已将其标记为 Swift。在 Swift 中,您需要导入相关的子模块:

import SceneKit.ModelIO

这实际上有点奇怪 IMO,可能没有必要。我会打开一个雷达(bugreport.apple.com)。至少,文档需要更清晰。

于 2016-11-04T13:52:54.227 回答