ios - Alpha map 在 scenekit swift ios 中不起作用

标签 ios swift scenekit

我有托盘可以在模型上应用漫反射、金属度、法线、粗糙度和 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/

相关文章:

ios - 为 UITableViewCell 设置彩色边框

Android/iOS 指纹扫描仪用作身份验证

ios - 在为另一个节点使用灯光后保持原始节点照明

ios - 在类型中找不到枚举大小写开关

ios - 重命名 IPA 应用名称

swift - 如何在 Xcode swift 中以编程方式更改 UIBarButtonItem 功能

ios - 在 Swift 中从 `UserDefaults` 更新值时出现问题

ios - 如何从查询传递数据 - Swift 和 Parse

ios - SceneKit Material 中的玻璃效果

swift - 在模型 I/O 中,提供的库中缺少记录的 API。解决方法是什么?