Невозможно назначить цвет материалу импортированной геометрии .dae - PullRequest
0 голосов
/ 27 февраля 2019

Я импортировал файл .dae в свой проект Swift, и он хорошо отображается в моей сцене SceneKit - но по какой-то причине я не могу изменить цвет.

Исходный файл (из инструмента Fusion) былцветной, но в моей сцене он остается белым, независимо от того, что я делаю.

Что я пробовал:

print(geometries[0].firstMaterial?.diffuse.contents)
print("material: \(geometries[0].firstMaterial)")
//self.geometries[1].firstMaterial?.diffuse.contents = UIColor(red: 0.0, green: 0.0, blue: 1.0, alpha: 0.8)

let newMaterial2 = SCNMaterial()
//newMaterial2.diffuse.contents = UIColor.yellow
newMaterial2.diffuse.contents = UIImage(named: "wifi_d6.png")
self.geometries[0].firstMaterial? = newMaterial2
self.geometries[1].firstMaterial? = newMaterial2

Как вы можете сказать, в файле .dae есть две геометрии,Ни одна из вышеперечисленных работ, ни ошибки не выдают.

Распечатки читаются:

Необязательно (UIExtendedSRGBColorSpace 1 1 1 1)

материал: Необязательно (diffuse =
зеркальная = SCNMaterialProperty: 0x283ff4d00 | содержание = UIExtendedSRGBColorSpace 0 0 0 1>
излучения = SCNMaterialProperty: 0x283ff4f80 | содержание = UIExtendedSRGBColorSpace 0 0 0 1>
прозрачный = SCNMaterialProperty: 0x283ff5000 | содержание = UIExtendedSRGBColorSpace 1 1 1 1>
reflective = SCNMaterialProperty: 0x283ff5080 | contents = UIExtendedSRGBColorSpace 0 0 0 1>
multiply = SCNMaterialProperty: 0x283ff5100 | contents = UIExtendedSRGBColorSpace 1 1 1 1 *
нормальный 1 = SCNMOx0xOxRoSer: 0S3xOrSer_S3S: 0SerxOr3Ser_SolorSer_Ser_Sol: ProSter_Ser_Sol: ProSer_S3_Ser_Sol: ProSer_Ser_Ser_Ser_Ser_Ser_Ser_Ser_Ser_Ser_Ser_Ser_Ser_Sher_Ser_Ser_Ser_Ser_SoSer = 233Ser_Ser_Ser_Ser_Ser_Ser_Ser_Ser_Ser_Ser_Ser_Ser_SerPro:>)

Что мне здесь не хватает?Будем очень благодарны за любые предложения о том, как поступить.

РЕДАКТИРОВАТЬ: Я все еще очень хочу помочь с этим, поэтому я добавляю больше кода для контекста, а также мою последнюю попытку, основанную на этот ответ.

func createTarget() {
            print("graphics says hello")
            let filePath = Bundle.main.path(forResource: "NIVO node_colors", ofType: "dae", inDirectory: "")
            let referenceURL = URL(fileURLWithPath: filePath!)

            if #available(iOS 9.0, *) {
                // Create reference node
                sensorNode = SCNReferenceNode(url: referenceURL)
                sensorNode?.load()
                sensorNode.position = SCNVector3(0, 0, 0)

                let sceneSource = SCNSceneSource(url: referenceURL, options: nil)
                loadGeometriesFromSceneSource(sceneSource: sceneSource!)

                let yourGeometry = sceneSource!.entryWithIdentifier("Entity12geometry", withClass: SCNGeometry.self)
                let newMaterial = SCNMaterial()
                newMaterial.diffuse.contents = UIColor.blue
                yourGeometry!.replaceMaterial(at: 0, with: newMaterial)
                geometries[0].replaceMaterial(at: 0, with: newMaterial)
                geometries[1].replaceMaterial(at: 0, with: newMaterial)

                print("contents: \(geometries[0].firstMaterial?.diffuse.contents)")

                graphicsScene.rootNode.addChildNode(sensorNode!)
            } else {
                print("iOS 9 not avail")
            }
       }

func loadGeometriesFromSceneSource(sceneSource: SCNSceneSource) {
        let identifiers = sceneSource.identifiersOfEntries(withClass: SCNGeometry.self) as [String]
        for identifier in identifiers {
            print(identifier)
            geometries.append(sceneSource.entryWithIdentifier(identifier, withClass: SCNGeometry.self)!)
        }
    }

Распечатка гласит:

содержимое: необязательно (UIExtendedSRGBColorSpace 0 0 1 1)

Единственное отличие отСвязанный пост состоит в том, что файл не находится в папке .scnassets.

Я не получаю ошибок, но, конечно, узел остается белым.

Любые и все предложения очень приветствуются!Спасибо за ваше время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...