Я импортировал файл .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.
Я не получаю ошибок, но, конечно, узел остается белым.
Любые и все предложения очень приветствуются!Спасибо за ваше время.