Estoy tratando de presentar un texto usando realitykit, el código se compila, la escena comienza pero, sin embargo, no se muestra texto en la escena.

Estoy usando un iPhone 7 con iOS 13.1.2, probé el mismo código pero con una caja de recursos de malla y funciona bien.

Mi controlador se ve así

    func makeUIView(context: Context) -> ARView {

        let arView = ARView(frame: .zero)

        let anchor = AnchorEntity(plane: .horizontal)

        let mesh = MeshResource.generateText("text")
        let color = UIColor.systemBlue
        let material = UnlitMaterial(color: color)
        let entity = ModelEntity(mesh: mesh, materials: [material])

        anchor.addChild(entity)

        // Add the box anchor to the scene
        arView.scene.anchors.append(anchor)

        return arView

    }

Como dije antes, cuando llego al tiempo de ejecución, la consola muestra estos errores:

2019-10-02 09:07:33.707275+0200 tesss[646:78901] Compiler failed to build request
2019-10-02 09:07:33.707476+0200 tesss[646:78901] [Graphics] makeRenderPipelineState failed [output of type ushort is not compatible with a MTLPixelFormatR16Float color attachement.].
2019-10-02 09:07:33.707507+0200 tesss[646:78901] [Graphics] makeRenderPipelineState failed.
2
Claudio Perroni 2 oct. 2019 a las 10:15

1 respuesta

La mejor respuesta

De forma predeterminada, el método MeshResource.generateText utiliza una fuente del sistema que es muy grande por defecto, por lo que debe cambiar su tamaño. Hay dos maneras de hacer esto:

1) Cambiar el tamaño de la entidad:

entity.scale = SIMD3<Float>(0.01, 0.01, 0.1)

2) Cambiar el tamaño de fuente:

let mesh = MeshResource.generateText(
            "text", 
            extrusionDepth: 0.1,
            font: .systemFont(ofSize: 0.1),
            containerFrame: CGRect.zero,
            alignment: .left,
            lineBreakMode: .byTruncatingTail)
3
0xBFE1A8 2 oct. 2019 a las 10:13