Загрузка USDZ для ARKit (не QLPreview) Свойства материала - PullRequest
0 голосов
/ 17 октября 2018

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

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

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

Спасибо!

1 Ответ

0 голосов
/ 17 октября 2018

Лучший способ создать стекло в 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 очень дороги во время рендеринга из-за технологии трассировки лучей.

enter image description here

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

...