ios - 有没有办法在 swift 3 中平滑对象/模型?

标签 ios swift3 3d render

我目前正在尝试快速平滑我的 obj 模型,可以使用 SCNGeometry 或 MDLMesh。

我发现官方文档显示有“subdivisionLevel”属性,用于在 SCNGeometry 中进行分割和平滑。但是,它没有按预期工作。

对于 level = 1-2,显然没有任何变化

对于 level = 3-5,显然仍然没有任何变化,但应用程序滞后

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

分割级别=0: http://imgur.com/7BM9wp6

分割级别=5: http://imgur.com/mipaYMP

(如你所见,腰部和 ARM 的锋利边缘仍然存在)

代码:

//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

如有任何帮助或提示,我们将不胜感激。谢谢。

最佳答案

如果您导入的网格具有不共享边的面,那么您将得到如屏幕截图中所示的尖锐折痕。

A    B     C   A    BC   D
+----+-----+   +----+----+
|    |     |   |    |    |
+----+-----+   +----+----+
D    E     F   E    FG   H

左侧的网格将是平滑的,因为两个四边形共享一条边,而右侧的网格则不会,因为两个四边形有自己的内部边缘。

关于ios - 有没有办法在 swift 3 中平滑对象/模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44342014/

相关文章:

c++ - 如何使用 openframework 的 ofMesh 正确导出 .obj?

ios - 恢复标识符在 6.0 警告之前的 ios 版本上不可用

c++ - 如何对单个相机的多个图像中的点进行三角测量?

c# - 将xamarin与HTTPS WCF服务连接(带有安全模式MessageWithtransport的WShttpbinding)

iphone - 如何在swift3中将分钟转换为小时?

ios - 我应该使用 tableViewController 还是常规 viewController 来重新创建提醒详细信息 View ?

ios - 如何使用单选按钮隐藏表格 View 中的部分?

使用 mex 编译 .C 文件包含库 - 错误 LNK2019 : unresolved external symbol - for NPTrackingTools

ios - 我可以只调整 imageView 的图像大小吗?

iOS推送通知权限提示——用户选择了什么?