Есть ли способ отобразить представления как сущности в RealityKit? - PullRequest
1 голос
/ 20 января 2020

Я пытался найти способ отображать UIViews как трехмерные объекты в моем ARView. Я пытался создать своего рода коробку, которая бы работала как дисплей для размещения UIView, но безуспешно.

Этот ответ предоставляет решение для SceneKit, но, похоже, то же самое не работает в RealityKit. До сих пор моя идея заключалась в следующем, но я не смог найти способ подключить UIView.

let box = MeshResource.generateBox(width: 0.6, height: 0.3, depth: 0.02, cornerRadius: 0.03)
let material = SimpleMaterial()
material.baseColor =  --SET UIVIEW AS DIFFUSE OF MATERIAL?--
let entity  = ModelEntity(mesh: box, materials: [material])
anchorEntity.addChild(entity)

1 Ответ

1 голос
/ 21 января 2020

На данный момент я вижу только следующее решение:

Вы можете использовать snapshotView(afterScreenUpdates:) метод экземпляра, чтобы получить снимок содержимого в текущем UIView а затем вы можете использовать его в качестве текстуры для 3D-модели RealityKit. Насколько я знаю, RealityKit пока не поддерживает видео-текстуры.

Подход, показывающий, как применить текстуру к примитиву RealityKit :

var arView = ARView(frame: .zero)
let anchorModels = try! RCScene.loadSomeModels()

var material = SimpleMaterial()    
material.baseColor = try! .texture(.load(named: "snapshot.jpg")

let mesh: MeshResource = .generateBox(size: 5.0) 
let modelComponent = ModelComponent(mesh: mesh, materials: [material])

anchorModels.components.set(modelComponent)
arView.scene.anchors.append(anchorModels)
...