Ios MDLMaterial无法正确渲染相对纹理图像

Ios MDLMaterial无法正确渲染相对纹理图像,ios,textures,scenekit,modelio,Ios,Textures,Scenekit,Modelio,我可以将纹理图像加载并查看到SCN材质中。如果尝试使用相同的图像将SCNMaterial替换为MDLMaterial,则纹理渲染不正确: let scattering:MDLPhysicallyPlausibleScatteringFunction = MDLPhysicallyPlausibleScatteringFunction() scattering.baseColor.textureSamplerValue = MDLTextureSampler() scattering.baseCo

我可以将纹理图像加载并查看到
SCN材质中。如果尝试使用相同的图像将
SCNMaterial
替换为
MDLMaterial
,则纹理渲染不正确:

let scattering:MDLPhysicallyPlausibleScatteringFunction = MDLPhysicallyPlausibleScatteringFunction()
scattering.baseColor.textureSamplerValue = MDLTextureSampler()
scattering.baseColor.textureSamplerValue?.texture = MDLTexture(named: "art.scnassets/metal_bumpy_squares_Base_Color.png")

let mdlMaterial = MDLMaterial(name: "cube", scatteringFunction: scattering)
let node = SCNNode(geometry: SCNSphere(radius: 1))
node.geometry?.firstMaterial = SCNMaterial(MDLMaterial: mdlMaterial)
// With SCNMaterial works as expected
// node.geometry?.firstMaterial = SCNMaterial()
// node.geometry?.firstMaterial?.diffuse.contents = "art.scnassets/metal_bumpy_squares_Base_Color.png"
// node.position = SCNVector3Make(0,0,-3)

是否需要其他设置才能正确渲染图像?

并非模型I/O可以表示的所有内容都在SceneKit中可用。例如,基于物理的渲染是不受支持的功能之一。

从iOS 10开始,SceneKit现在支持基于物理的渲染,我相信它可以与PBR的模型I/O表示配合使用。