Загрузка USDZ для ARKit (не QLPreview) Свойства материала

Я пытаюсь загрузить usdz файл в ARKkit, который имеет прозрачность стекла на одном из своих материалов. Когда я положил модель в QLPreviewController стекло рендерится правильно. Проблема в том, что я хочу сделать стекло в SCNScene с ARKit, а не QLPreviewматериал стекла черный, когда я загружаю его в сцену SCNS. Это также черный, когда я предварительно просмотреть его в Xcode.

Не уверен что QLPreview делает, или если я делаю что-то не так с моим освещением в моей сцене. Я удалил все свои собственные огни и просто autoenablesDefaultLighting установлен в true, Затем я установил модель освещения каждого материала, чтобы PhysicallyBased, Но все еще только черный.

Кто-нибудь знает, что мне нужно сделать, чтобы сделать так же QLPreview делает? Нужно ли распаковать usdz, чтобы получить текстуру прозрачности и установить ее вручную?

Спасибо!

1 ответ

Лучший способ создать стекло в SceneKit - использовать модель затенения Фонга (не PBR). На данный момент в фреймворке SceneKit нет стекла PBR, поэтому вам нужно использовать поддельное. Для изготовления fake glass вам нужно создать SCNMaterial со следующими свойствами:

let material = SCNMaterial()

material.lightingModel = .phong
material.diffuse.contents = UIColor(white: 0.2, alpha: 1)
material.diffuse.intensity = 0.9
material.specular.contents = UIColor(white: 1, alpha: 1)
material.specular.intensity = 1.0
material.reflective.contents = UIImage(named: "fileName.png")
material.reflective.intensity = 2.0

material.transparencyMode = .dualLayer
material.fresnelExponent = 2.2
material.isDoubleSided = true
material.blendMode = .alpha
material.shininess = 100
material.transparency.native = 0.7
material.cullMode = .back

.fresnelExponent Свойство определяет интенсивность отражений на поверхности на основе ее угла относительно зрителя. Более высокий показатель Френеля увеличивает видимость отражений, когда материал рассматривается под небольшим углом. Это не IOR (показатель преломления Френеля).

Стекло PBR или водные объекты PBR очень дороги во время рендеринга из-за технологии трассировки лучей.

Если вам нужна частичная прозрачность вашего объекта - просто используйте transparent слот в Material Inspector загрузить черно-белую маску для прозрачных / непрозрачных областей.

Другие вопросы по тегам