0
我目前正在嘗試在swift中平滑我的obj模型,無論是使用SCNGeometry還是MDLMesh都適用。有沒有辦法在swift 3中平滑對象/模型?
我發現正式文件顯示有「subdivisionLevel」屬性,用於在SCNGeometry中進行細分和平滑。但是,它沒有按預期工作。
對於水平= 1-2,沒有什麼變化顯然
對於水平= 3-5,仍然沒有明顯變化,但應用滯後
以下是我的實驗和代碼的截圖,有還有什麼我可以嘗試平滑?
subdivisionLevel = 0: http://imgur.com/7BM9wp6
subdivisionLevel = 5: http://imgur.com/mipaYMP
(正如你可以看到,銳邊腰和臂仍然存在)
代碼:
//load obj
let path = Bundle.main.path(forResource: "model_longshirt", ofType: "obj")!
let fileUrl = URL(fileURLWithPath: path)
let asset = MDLAsset(url: fileUrl)
guard let object = asset.object(at: 0) as? MDLMesh else {
fatalError("ERROR_FAILED_TO_GET_MESH_FROM_ASSET")
}
//load material
let scatteringFunction = MDLScatteringFunction()
let material = MDLMaterial(name: "baseMaterial2", scatteringFunction: scatteringFunction)
let texPath = Bundle.main.path(forResource: "model_LongSleeve_texture_3", ofType: "jpg")!
let texUrl = URL(fileURLWithPath: texPath)
let materialProperty = MDLMaterialProperty(name: "baseTexture2", semantic: MDLMaterialSemantic.baseColor, url: texUrl)
material.setProperty(materialProperty)
//attach to node
let scnGeometry = SCNGeometry(mdlMesh: object)
scnGeometry.subdivisionLevel = 5
objNode = SCNNode(geometry: scnGeometry)
objNode.geometry?.firstMaterial = scnMaterial
任何幫助或暗示都是值得讚賞的。謝謝。
我也面臨同樣的問題。你有沒有找到解決方案? –
不幸的是,我終於裝載了更流暢的另一個模型。 – adayoegi
我覺得Scenekit是面對正常計算,而不是基於頂點引起這個問題。 –