我有托盘可以在模型上应用漫反射、金属度、法线、粗糙度和 Alpha 贴图,但所有贴图都有效,但只有 alpha 贴图无效。 如何在场景包中制作透明玻璃?我在 swift iOS 中有下面代码的托盘。谁能告诉我具体原因吗?
if let finishMap = finish.finishMap {
if let diffuseTexturePath = finishMap.diffuseMapUrl {
disPatchGroup.enter()
self.dataProvider.fetchTextureFile(forpath: diffuseTexturePath, successBlock: { (success, imageObject) in
material.diffuse.contents = imageObject
disPatchGroup.leave()
}, failureBlock: { (error) in
disPatchGroup.leave()
})
}
if let metalTexturePath = finishMap.metalnessMapUrl {
disPatchGroup.enter()
self.dataProvider.fetchTextureFile(forpath: metalTexturePath, successBlock: { (success, imageObject) in
material.metalness.contents = imageObject
disPatchGroup.leave()
}, failureBlock: { (error) in
disPatchGroup.leave()
})
}
if let roughnessTexturePath = finishMap.roughnessMapUrl {
disPatchGroup.enter()
self.dataProvider.fetchTextureFile(forpath: roughnessTexturePath, successBlock: { (success, imageObject) in
material.roughness.contents = imageObject
disPatchGroup.leave()
}, failureBlock: { (error) in
disPatchGroup.leave()
})
}
if let normalTexturePath = finishMap.normalMapUrl {
disPatchGroup.enter()
self.dataProvider.fetchTextureFile(forpath: normalTexturePath, successBlock: { (success, imageObject) in
material.normal.contents = imageObject
disPatchGroup.leave()
}, failureBlock: { (error) in
disPatchGroup.leave()
})
}
if let transparentTexturePath = finishMap.transparentMapUrl {
disPatchGroup.enter()
self.dataProvider.fetchTextureFile(forpath: transparentTexturePath, successBlock: { (success, imageObject) in
material.transparent.contents = imageObject
disPatchGroup.leave()
}, failureBlock: { (error) in
disPatchGroup.leave()
})
}
}
最佳答案
将透明度贴图设置为 rbgZero。有几种透明模式,我认为默认是 alpha(不确定),如果你想使用灰度图像作为 map ,那么你需要使用 rgbZero
material.transparencyMode = .rgbZero
关于ios - Alpha map 在 scenekit swift ios 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51040859/