首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在swift 3中有没有平滑对象/模型的方法?

在swift 3中有没有平滑对象/模型的方法?
EN

Stack Overflow用户
提问于 2017-06-03 16:34:19
回答 0查看 366关注 0票数 0

我目前正在尝试在swift中平滑我的obj模型,使用SCNGeometry或MDLMesh都是适用的。

我发现官方文档显示在SCNGeometry中有用于细分和平滑的"subdivisionLevel“属性。然而,它并没有像预期的那样工作。

对于level = 1-2,没有明显的变化

对于level = 3-5,仍然没有明显的变化,但应用程序正在滞后

下面是我的实验和代码的截图,还有什么我可以尝试平滑的吗?

subdivisionLevel=0:http://imgur.com/7BM9wp6

subdivisionLevel=5:http://imgur.com/mipaYMP

(如你所见,锐利的边缘、腰部和手臂仍然在那里)

代码:

代码语言:javascript
复制
//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

任何帮助或提示都将不胜感激。谢谢。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44342014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档