Я создаю видеоэкран в реальности для приложения AR. Мой код работает правильно на iOS 17, но на iOS 18 VideoMaterial рендесирует как розовые полосы. Инженер Apple предположил, что это может указывать на то, что материал не применяется правильно. Может ли это быть связано с изменениями в поведении RealityKit или AvPlayer в iOS 18? AvPlayerItem .
[*] привязывать модель сущность на аримагейнхор. /> фактический результат: < /strong>
На iOS 18, плоскость появляется розовым, что указывает на то, что VideoMaterial < /code> не применяется. < /p>
то, что я попробовал: < /strong> < /p>
. /> проверил, что AvPlayerItem и VideoMaterial инициализируются правильно.
обеспечить AvPlayer . Что изменит видео. рендеринг в реальности, и как я могу решить эту проблему? < /p>
// Create Video Screen
private func createVideoScreen(width: Float, height: Float, url: URL, uuid: UUID) -> ModelEntity {
let screenMesh = MeshResource.generatePlane(width: width, height: height)
let videoItem = createVideoItem(with: url)
let videoMaterial = createVideoMaterial(with: videoItem, uuid: uuid)
let videoScreenModel = ModelEntity(mesh: screenMesh, materials: [videoMaterial])
return videoScreenModel
}
// Create Video Item
private func createVideoItem(with url: URL) -> AVPlayerItem {
let asset = AVURLAsset(url: url)
let videoItem = AVPlayerItem(asset: asset)
return videoItem
}
// Create Video Material
private func createVideoMaterial(with videoItem: AVPlayerItem, uuid: UUID) -> VideoMaterial {
let player = AVPlayer()
player.actionAtItemEnd = .none
let videoMaterial = VideoMaterial(avPlayer: player)
player.replaceCurrentItem(with: videoItem)
player.play()
NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: player.currentItem, queue: .main) { _ in
player.seek(to: .zero)
player.play()
}
videoPlayers[uuid] = player
return videoMaterial
}
// Place Video Screen
private func placeVideoScreen(videoScreen: ModelEntity, imageAnchor: ARImageAnchor, uuid: UUID) {
guard let arView = arView else { return }
let imageAnchorEntity = AnchorEntity(anchor: imageAnchor)
let rotationAngle = simd_quatf(angle: GLKMathDegreesToRadians(-90), axis: SIMD3(x: 1, y: 0, z: 0))
videoScreen.setOrientation(rotationAngle, relativeTo: imageAnchorEntity)
imageAnchorEntity.addChild(videoScreen)
arView.scene.addAnchor(imageAnchorEntity)
activeAnchors[uuid] = imageAnchorEntity
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... how-to-fix
Realitykit Videomaterial рендегирует розовым на iOS 18, но работает на iOS 17 - как исправить? ⇐ IOS
Программируем под IOS
1748256614
Anonymous
Я создаю видеоэкран в реальности для приложения AR. Мой код работает правильно на iOS 17, но на iOS 18 VideoMaterial рендесирует как розовые полосы. Инженер Apple предположил, что это может указывать на то, что материал не применяется правильно. Может ли это быть связано с изменениями в поведении RealityKit или AvPlayer в iOS 18? AvPlayerItem .
[*] привязывать модель сущность на аримагейнхор. /> фактический результат: < /strong>
На iOS 18, плоскость появляется розовым, что указывает на то, что VideoMaterial < /code> не применяется. < /p>
то, что я попробовал: < /strong> < /p>
. /> проверил, что AvPlayerItem и VideoMaterial инициализируются правильно.
обеспечить AvPlayer . Что изменит видео. рендеринг в реальности, и как я могу решить эту проблему? < /p>
// Create Video Screen
private func createVideoScreen(width: Float, height: Float, url: URL, uuid: UUID) -> ModelEntity {
let screenMesh = MeshResource.generatePlane(width: width, height: height)
let videoItem = createVideoItem(with: url)
let videoMaterial = createVideoMaterial(with: videoItem, uuid: uuid)
let videoScreenModel = ModelEntity(mesh: screenMesh, materials: [videoMaterial])
return videoScreenModel
}
// Create Video Item
private func createVideoItem(with url: URL) -> AVPlayerItem {
let asset = AVURLAsset(url: url)
let videoItem = AVPlayerItem(asset: asset)
return videoItem
}
// Create Video Material
private func createVideoMaterial(with videoItem: AVPlayerItem, uuid: UUID) -> VideoMaterial {
let player = AVPlayer()
player.actionAtItemEnd = .none
let videoMaterial = VideoMaterial(avPlayer: player)
player.replaceCurrentItem(with: videoItem)
player.play()
NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: player.currentItem, queue: .main) { _ in
player.seek(to: .zero)
player.play()
}
videoPlayers[uuid] = player
return videoMaterial
}
// Place Video Screen
private func placeVideoScreen(videoScreen: ModelEntity, imageAnchor: ARImageAnchor, uuid: UUID) {
guard let arView = arView else { return }
let imageAnchorEntity = AnchorEntity(anchor: imageAnchor)
let rotationAngle = simd_quatf(angle: GLKMathDegreesToRadians(-90), axis: SIMD3(x: 1, y: 0, z: 0))
videoScreen.setOrientation(rotationAngle, relativeTo: imageAnchorEntity)
imageAnchorEntity.addChild(videoScreen)
arView.scene.addAnchor(imageAnchorEntity)
activeAnchors[uuid] = imageAnchorEntity
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79246607/realitykit-videomaterial-renders-pink-on-ios-18-but-works-on-ios-17-how-to-fix[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия