Realitykit Videomaterial рендегирует розовым на iOS 18, но работает на iOS 17 - как исправить?IOS

Программируем под IOS
Ответить
Anonymous
 Realitykit Videomaterial рендегирует розовым на iOS 18, но работает на iOS 17 - как исправить?

Сообщение 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
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... how-to-fix
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»