Вопрос или проблема
Я пытаюсь разместить 3D модели usdz в режиме дополненной реальности. В светлое время суток или в освещенной среде они выглядят прекрасно, но в темноте объекты едва видны.
Как я могу сделать их полностью видимыми даже в темноте? Есть ли способ увеличить яркость объекта или сделать его источником света?
self.addBody(x: bodyPosition.x, y:bodyPosition.y z:bodyPosition.z , in: arView)
Я использую бесплатные модели usdz, я бы предпочел увеличить яркость программно, так как у меня есть несколько таких моделей, но в случае необходимости я готов отредактировать их в каком-либо редакторе. К сожалению, я новичок в этом, и не знаю, как с этим справиться.
Ответ или решение
Чтобы улучшить видимость 3D моделей USDZ в AR с использованием SwiftUI и RealityKit в условиях недостаточного освещения, есть несколько подходов, которые вы можете использовать. Важно отметить, что в AR-среде освещение имеет решающее значение для визуализации 3D объектов.
1. Изменение освещения в RealityKit
Сначала убедитесь, что в вашей сцене есть источник света. Вы можете добавить источник света в вашу AR-сцену, чтобы помочь осветить объекты:
let lightAnchor = AnchorEntity(world: SIMD3(x: 0, y: 1, z: 0)) // Позиция источника света
let light = DirectionalLight()
light.intensity = 1000 // Увеличьте значение для более яркого света
light.color = UIColor.white // Установите цвет света
lightAnchor.light = light
arView.scene.addAnchor(lightAnchor)
2. Изменение материала объектов
Если объекты темные даже при наличии источника света, вы можете изменить их материалы программно, чтобы они обладали более высоким коэффициентом отражения:
func addBody(x: Float, y: Float, z: Float, in arView: ARView) {
let modelAnchor = AnchorEntity(world: SIMD3(x, y, z))
let modelEntity = try! Entity.loadModel(named: "yourModel.usdz")
// Изменение материала модели
if let mesh = modelEntity.model?.materials {
for material in mesh {
if let pbrMaterial = material as? PPEModelEntity.Material {
pbrMaterial.baseColor.color = .white // Увеличьте яркость
pbrMaterial.metallic = 1.0 // Увеличьте металлическость (если нужно)
pbrMaterial.roughness = 0.1 // Уменьшите шероховатость для более блестящего эффекта
}
}
}
modelAnchor.addChild(modelEntity)
arView.scene.addAnchor(modelAnchor)
}
3. Использование освещения в моделях USDZ
Если желаемый эффект нельзя достичь через изменение программного кода, вы также можете отредактировать файл USDZ в редакторах, таких как Apple Xcode или таких инструментах, как Reality Composer. Убедитесь, что материалы включают свойства, которые помогут отразить свет. Вы можете повысить яркость материалов или настраивать их текстуры.
4. Реализация постобработки
Если объекты все еще выглядят недостаточно яркими, возможно, стоит добавить некоторые эффекты постобработки, такие как bloom (сияние), который может улучшить визуальную привлекательность сцен:
let bloomEffect = BloomEffect()
bloomEffect.intensity = 0.5 // Настройте интенсивность по необходимости
arView.environment.bloom = bloomEffect
Заключение
Эти методы должны помочь вам улучшить видимость 3D моделей в AR, особенно в условиях низкой освещенности. Выберите тот подход, который лучше всего подходит для вашей ситуации. Запуск нескольких источников света и правильная настройка материалов — ключевые моменты для достижения желаемого результата. Если у вас есть дополнительные вопросы или нужна помощь по конкретным моментам, не стесняйтесь задавать их.