Ios SceneKit中的平滑着色

Ios SceneKit中的平滑着色,ios,swift,3d,scenekit,shading,Ios,Swift,3d,Scenekit,Shading,我目前正在开发一个iPadOS应用程序,它使用SceneKit渲染一些3D模型,没有什么特别的东西,但是当涉及到这些模型的着色时,我遇到了一个很大的障碍 基本上,我所做的只是设置一个SceneKit场景(使用几乎所有的默认设置,我甚至没有相机),然后从一些.obj文件中实例化3D对象,就像这样 let url = <URL of my .obj file> let asset = MDLAsset(url: url) let object = asset.object(at: 0)

我目前正在开发一个iPadOS应用程序,它使用SceneKit渲染一些3D模型,没有什么特别的东西,但是当涉及到这些模型的着色时,我遇到了一个很大的障碍

基本上,我所做的只是设置一个SceneKit场景(使用几乎所有的默认设置,我甚至没有相机),然后从一些.obj文件中实例化3D对象,就像这样

let url =  <URL of my .obj file>
let asset = MDLAsset(url: url)
let object = asset.object(at: 0)
let node = SCNNode(mdlObject: object)
let texture = UIImage(data: try Data(contentsOf: <URL of the texture>))
let material = SCNMaterial()
material.diffuse.contents = texture
node.geometry!.materials = [material]
self.sceneView.scene!.rootNode.addChildNode(node)
不幸的是,启用Phong后,情况仍然如此。对于3D渲染,我是一个绝对的初学者,所以这可能非常简单,但我发誓我不知道如何在这个模型上获得更平滑的着色

我试过左右看,唯一有明显效果的是使用subdivisionLevel来增加几何体中的实际面,但这并不能很好地缩放,因为实际应用程序需要加载大量的网格,即使细分设置为1,内存也会很快耗尽

肯定有办法在不改善实际几何体的情况下平滑这些阴影


提前谢谢

着色要求几何体具有正确的法线。您是否尝试过使用Model IO生成它们

material.lightingModel = .phong