Solución de problemas

En esta página se enumeran los problemas comunes que interfieren con Azure Remote Rendering y las maneras de resolverlos.

El cliente no se puede conectar al servidor

Asegúrese de que los firewalls (en el dispositivo, dentro de los enrutadores, etc.) no bloqueen los puertos mencionados en los Requisitos del sistema.

Error al cargar modelo

Al cargar un modelo (por ejemplo, a través de un ejemplo de Unity), se produce un error aunque la configuración de blobs sea correcta, es probable que el almacenamiento de blobs no esté vinculado correctamente. La manera de vincular correctamente se explica en el capítulo sobre la vinculación de una cuenta de almacenamiento. Tras una vinculación correcta, los cambios pueden tardar hasta 30 minutos en surtir efecto.

A veces, durante la vinculación de una cuenta de almacenamiento la cuenta de Remote Rendering no aparece en la lista. Para corregir este problema, vaya a la cuenta de ARR en el Azure Portal y seleccione Identidad en el grupo de Configuración de la izquierda. Asegúrese de que estado se estableció Encendido. Unity frame debugger

No se puede cargar el modelo a través de un token de SAS

Si la aplicación cliente no puede cargar un modelo desde el almacenamiento a través de un token SAS válido, podría deberse al nivel de acceso de red pública configurado en blob Storage. Cargar un modelo de ARR desde el token de SAS solo funciona si se ha configurado con la opción "Habilitado desde todas las redes": Screenshot of Azure portal settings for public network access level on blob storage.

Si limitar a los puntos de conexión privados es un requisito, la cuenta de almacenamiento debe estar vinculada y el modelo debe cargarse a través de la ruta de acceso de código que no es de SAS, como se describe aquí.

Error "Disconnected: VideoFormatNotAvailable"

Compruebe que la GPU admita la descodificación de vídeo de hardware. Consulte Equipo de desarrollo.

Si está trabajando en un equipo portátil con dos GPU, es posible que la GPU que se ejecuta de forma predeterminada no proporcione la funcionalidad de descodificación de vídeo de hardware. Si es así, intente forzar la aplicación para que use la otra GPU. En general, se puede cambiar la GPU usada en la configuración del controlador de GPU.

Error al recuperar el estado de la sesión o conversión

El envío de comandos de la API REST con demasiada frecuencia hace que el servidor limite y devuelva un error finalmente. El código de estado HTTP en caso de limitación es 429 ("demasiadas solicitudes"). Como regla general, debería haber un retraso de entre 5 y 10 segundos entre las llamadas subsiguientes.

Tenga en cuenta que este límite no solo afecta a las llamadas a API REST cuando se realizan directamente, sino también a sus homólogos de C#/C++, como Session.GetPropertiesAsync, Session.RenewAsync o Frontend.GetAssetConversionStatusAsync. Algunas funciones también devuelven información cuando se guardan para intentarse de nuevo. Por ejemplo, RenderingSessionPropertiesResult.MinimumRetryDelay especifica cuántos segundos hay que esperar antes de intentar otra comprobación. Cuando está disponible, es mejor usar este valor devuelto, ya que permite realizar comprobaciones con la mayor frecuencia posible, sin limitaciones.

Si experimenta una limitación en el lado del servidor, cambie el código para que realice las llamadas con menos frecuencia. El servidor restablecerá el estado de limitación cada minuto, por lo que podrá volver a ejecutar el código después de un minuto.

Códec H265 no disponible

Hay dos razones por las que el servidor puede rechazar la conexión con un error codec not available.

El códec H265 no está instalado:

En primer lugar, asegúrese de instalar Extensiones de vídeo HEVC como se menciona en la sección Software de los requisitos del sistema.

Si sigue teniendo problemas, asegúrese de que la tarjeta gráfica es compatible con H265 y tiene instalado el controlador gráfico más reciente. Consulte la sección Equipo de desarrollo de los requisitos del sistema para obtener información específica del proveedor.

El códec está instalado, pero no se puede usar:

La razón de este problema es una configuración de seguridad incorrecta en los archivos DLL. Este problema no se manifiesta al intentar ver vídeos codificados con H265. La reinstalación del códec tampoco soluciona el problema. En su lugar, realice los pasos siguientes:

  1. Abra una instancia de PowerShell con derechos de administrador y ejecute el comando:

    Get-AppxPackage -Name Microsoft.HEVCVideoExtension*
    

    (Tenga en cuenta que el carácter "*" se debe a que, para algunas versiones de instalación de paquetes, el nombre es HEVCVideoExtensions en lugar de HEVCVideoExtension). Ese comando debería generar el objeto InstallLocation del códec, similar al siguiente:

    InstallLocation   : C:\Program Files\WindowsApps\Microsoft.HEVCVideoExtension_1.0.23254.0_x64__5wasdgertewe
    
  2. Abra esa carpeta en el Explorador de Windows.

  3. Debería contener las subcarpetas x86 y x64. Haga clic con el botón derecho en una de las carpetas y elija Propiedades.

    1. Seleccione la pestaña Seguridad y, después, seleccione el botón Opciones avanzadas.
    2. Seleccione Cambiar en Propietario.
    3. Escriba Administradores en el campo de texto.
    4. Seleccione Comprobar nombres y luego en Aceptar.
  4. Repita los pasos anteriores para la otra carpeta.

  5. Repita también los pasos anteriores en cada archivo DLL de ambas carpetas. Debe haber cuatro archivos DLL en total.

Para comprobar que la configuración ahora es correcta, siga estos pasos con cada archivo DLL:

  1. Seleccione Propiedades > Seguridad > Editar
  2. Recorra la lista de todos los Grupos/Usuarios y asegúrese de que cada uno tenga el derecho Lectura y ejecución establecido (deben tener la marca de verificación en la columna Permitir)

Calidad de vídeo baja

La calidad de vídeo puede verse afectada por la calidad de la red o la falta del códec de vídeo H265.

El vídeo grabado con MRC no refleja la calidad de la experiencia en directo

Se puede grabar un vídeo en HoloLens a través de Captura de realidad mixta (MRC). Sin embargo, el vídeo resultante tiene una calidad peor que la experiencia en directo por dos motivos:

  • La velocidad de fotogramas de vídeo se limita a 30 Hz en lugar de 60 Hz.
  • Las imágenes de vídeo no se someten al paso de procesamiento de reproyección de la fase final, por lo que el vídeo parece más entrecortado.

Ambas limitaciones son inherentes de la técnica de grabación.

Pantalla negra tras cargar el modelo correctamente

Si está conectado al entorno de ejecución de representación y ha cargado un modelo correctamente, pero después solo ve una pantalla negra después, puede deberse a distintas causas.

Se recomienda realizar las comprobaciones siguientes antes de realizar un análisis más exhaustivo:

  • ¿El códec H265 está instalado? Aunque debería haber una reserva para el códec H264, hemos detectado casos en los que esta reserva no funcionó correctamente. Consulte los requisitos del sistema para instalar el controlador de gráficos más reciente.
  • Al usar un proyecto de Unity, cierre Unity, elimine las carpetas temporales library y obj del directorio del proyecto, y cargue o cree el proyecto de nuevo. En algunos casos, los datos almacenados en caché provocaron el fracaso del ejemplo sin ningún motivo aparente.

Si estos dos pasos no ayudan, debe averiguar si el cliente recibe fotogramas de vídeo. La consulta se puede realizar mediante programación, como se explica en el capítulo Consultas de rendimiento del lado del servidor. El objeto FrameStatistics struct tiene un miembro que indica el número de fotogramas de vídeo que se han recibido. Si este número es mayor que 0 y aumenta con el tiempo, el cliente recibe fotogramas de vídeo reales del servidor. Por lo tanto, debe ser un problema en el lado cliente.

El valor de escalado en la configuración de conversión no se aplica al modelo

Si un modelo se muestra en Presentación o Inicio rápido con escalado sin cambios, aunque se aplica un escalado como parte de los parámetros de geometría de la configuración de conversión, es probable que esto se deba a la característica integrada de escalado automático del ejemplo. Es decir, la muestra escala el modelo para que se ajuste mejor al frustum de la vista, independientemente de su escalado de entrada.

En el caso de Presentación, el escalado automático se puede deshabilitar especificando un MaxSize de cero en la sección del Transform modelo dentro del archivo models.xml. Este enfoque controlado por datos requiere que el modelo se cargue a través del XML en primer lugar, ya que en todos los demás casos, el MaxSize valor predeterminado es 1 medidor. También hay una MinSize propiedad que tiene como valor predeterminado 0,5 metros, lo que hace que todos los modelos más pequeños se escalen verticalmente. Para obtener más información sobre las formas de cargar modelos en Presentación, consulte el capítulo Agregar recursos de modelos 3D a la presentación de ARR de la documentación de presentación.

Problemas comunes del lado cliente

El modelo supera los límites de la VM seleccionada, específicamente el número máximo de primitivos:

Vea los límites de tamaño de servidor específicos.

El modelo no está dentro del tronco de la cámara:

En muchos casos, el modelo se muestra correctamente pero se encuentra fuera del tronco de la cámara. Un motivo habitual es que el modelo se ha exportado con una dinamización muy descentrada y el plano de recorte lejano de la cámara lo ha recortado. Ayuda a consultar el cuadro de límite del modelo mediante programación y a visualizar el cuadro con Unity como un cuadro de línea o imprimir sus valores en el registro de depuración.

Además, el proceso de conversión genera un archivo JSON de salida junto con el modelo convertido. Para depurar los problemas de posicionamiento de modelos, vale la pena examinar la entrada boundingBox de la sección outputStatistics:

{
    ...
    "outputStatistics": {
        ...
        "boundingBox": {
            "min": [
                -43.52,
                -61.775,
                -79.6416
            ],
            "max": [
                43.52,
                61.775,
                79.6416
            ]
        }
    }
}

El cuadro de límite se describe como una posición min y max en el espacio 3D, en metros. Por lo tanto, una coordenada de 1000,0 significa que está a 1 kilómetro del origen.

Puede haber dos problemas con este cuadro de límite que den lugar a una geometría invisible:

  • El cuadro puede estar muy alejado del centro, de modo que el objeto se recorte por completo debido al recorte del plano lejano. En este caso, los valores boundingBox tendrían el siguiente aspecto: min = [-2000, -5,-5], max = [-1990, 5,5], con un gran desplazamiento en el eje x como ejemplo aquí. Para resolver este tipo de problema, habilite la opción recenterToOrigin en Configuración de la conversión de modelos.
  • El cuadro puede centrarse, pero los órdenes de magnitud ser demasiado grandes. Esto significa que, aunque la cámara se inicie en el centro del modelo, su geometría se recorta en todas las direcciones. En este caso, los valores de boundingBox típicos tendrían el siguiente aspecto: min = [-1000,-1000,-1000], max = [1000,1000,1000]. El motivo de este tipo de problema suele ser una discrepancia en la escala de unidades. Para compensarla, especifique un valor de escalado durante la conversión o marque el modelo de origen con las unidades correctas. El escalado también se puede aplicar al nodo raíz al cargar el modelo en tiempo de ejecución.

La canalización de representación de Unity no incluye los enlaces de representación:

Azure Remote Rendering se enlaza a la canalización de representación de Unity para realizar la composición de fotogramas con el vídeo y para volver a proyectarla. Para comprobar que estos enlaces existen, abra el menú Window > Analysis > Frame debugger. Habilite esta opción y asegúrese de que existen dos entradas de HolographicRemotingCallbackPass en la canalización:

Unity render pipeline

Para corregirlo, asegúrese de que se usa el recurso HybridRenderingPipeline proporcionado:Screenshot of the Unity asset browser and Project Settings dialog. The HybridRenderingPipeline asset is highlighted in the asset browser. An arrow points from the asset to the UniversalRenderPipelineAsset field in project settings.

.. como se describe con más detalle en Las canalizaciones de representación de Unity.

El patrón de tablero de damas se representa después de cargar el modelo

Si la imagen representada tiene este aspecto: Screenshot shows a grid of black and white squares with a Tools menu.

A continuación, el representador alcanza los límites del polígono para el tamaño de configuración estándar. Para mitigarlo, cambie al tamaño de configuración prémium o reduzca el número de polígonos visibles.

La imagen representada en Unity está al revés

Asegúrese de seguir el Tutorial de Unity: Ver los modelos remotos exactamente. Una imagen al revés indica que Unity debe crear un destino de representación fuera de la pantalla. Este comportamiento no se admite en la actualidad y ocasiona un gran impacto en el rendimiento de HoloLens 2.

Los motivos de este problema podrían ser MSAA, HDR o la habilitación del procesamiento posterior. Asegúrese de que el perfil de baja calidad esté seleccionado y establecido como predeterminado en Unity. Para ello, vaya a Editar > Configuración del proyecto... > Calidad.

Cuando se usa el complemento OpenXR en Unity 2020, hay versiones de la URP (Canalización de representación universal) que crean este destino de representación fuera de la pantalla adicional, independientemente de que se habilite el procesamiento posterior. Por consiguiente, es importante actualizar la versión de la URP manualmente como mínimo a la 10.5.1. Este proceso de actualización se describe en los requisitos del sistema.

El código de Unity que usa la API de Remote Rendering no se compila

Uso de Depurar al compilar para el Editor de Unity

Cambie el tipo de compilación de la solución Unity a Depuración. Al probar ARR en el editor de Unity, el objeto UNITY_EDITOR de definición solo está disponible en las compilaciones de tipo "Depuración". Esta configuración no está relacionada con el tipo de compilación que se usa para las aplicaciones implementadas, donde debe preferir compilaciones "Release".

Errores de compilación al compilar ejemplos de Unity para HoloLens 2

Detectamos errores falsos al intentar compilar ejemplos de Unity (inicio rápido, ShowCaseApp, etc.) para HoloLens 2. Visual Studio notifica que no puede copiar algunos archivos, aunque están ahí. Si ve este problema:

  • Quite todos los archivos temporales de Unity del proyecto y vuelva a intentarlo. Es decir, cierre Unity, elimine la biblioteca y carpetas obj temporales del directorio del proyecto, y cargue o cree el proyecto de nuevo.
  • Asegúrese de que los proyectos se encuentran en un directorio en el disco con una ruta de acceso razonablemente corta, ya que el paso de copia a veces parece tener problemas con nombres de archivo largos.
  • Si eso no ayuda, podría deberse a que MS Sense interfiere con el paso de copia. Para configurar una excepción, ejecute este comando del Registro desde la línea de comandos (requiere derechos de administrador):
    reg.exe ADD "HKLM\SOFTWARE\Policies\Microsoft\Windows Advanced Threat Protection" /v groupIds /t REG_SZ /d "Unity"
    

Se producen errores en las compilaciones Arm64 para proyectos de Unity porque falta AudioPluginMsHRTF.dll

AudioPluginMsHRTF.dll para Arm64 se agregó al paquete de Windows Mixed Reality(com.unity.xr.windowsmr.metro) en la versión 3.0.1. Asegúrese de que tiene instalada la versión 3.0.1 o una versión posterior a través del administrador de paquetes de Unity. En la barra de menús de Unity, vaya a Ventana > Administrador de paquetes y busque el paquete Windows Mixed Reality.

El complemento Cinemachine de Unity no funciona en modo de posición remota

En el modo de posición remota, el código de enlace de Unity de ARR crea implícitamente una cámara de proxy que realiza la representación real. En este caso, la máscara de selección de la cámara principal se establece en 0 ("nothing") para desactivar eficazmente la representación para ella. Sin embargo, algunos complementos de terceros (como Cinemachine) que controlan la cámara, pueden depender de al menos algunos bits de capa que se establecen.

Para ello, el código de enlace permite cambiar mediante programación la máscara de bits de la capa para la cámara principal. Concretamente, se requieren los pasos siguientes:

  1. Cree una nueva capa en Unity que no se use para representar ninguna geometría de escena local. En este ejemplo, supongamos que la capa se denomina "Cam".
  2. Pase esta máscara de bits a ARR para que ARR la establezca en la cámara principal:
    RemoteManagerUnity.CameraCullingMask = LayerMask.GetMask("Cam");
    
  3. Configure las Cinemachine propiedades para usar esta nueva capa: Screenshot that shows Unity's inspector panel for camera settings in Cinemachine.

El modo de posición local no se ve afectado por este problema, ya que, en este caso, el enlace de ARR no redirige la representación a una cámara proxy interna.

Una aplicación basada en C++ nativo no se compila

Error "Library not found" (No se encuentra la biblioteca) en la aplicación para UWP o DLL de UWP

Dentro del paquete NuGet de C++, hay un archivo microsoft.azure.remoterendering.Cpp.targets que define qué tipo binario se va a usar. Para identificar UWP, las condiciones del archivo comprueban ApplicationType == 'Windows Store'. Por lo tanto, debe asegurarse de que este tipo esté establecido en el proyecto. Eso sucedería al crear una aplicación o DLL de UWP a través del asistente para proyectos de Visual Studio.

Hologramas inestables

En caso de que parezca que los objetos representados se mueven con movimientos de cabeza, es posible que experimente problemas de reproyección de fases con demora (LSR). Consulte la sección sobre la reproyección de fases con demora para obtener instrucciones sobre cómo enfocar esta situación.

Otra causa de los hologramas inestables (hologramas con tambaleo, deformación, vibración o saltos) puede ser una conectividad de red deficiente, en particular, un ancho de banda de red insuficiente o una latencia demasiado alta. Un buen indicador de la calidad de la conexión de red es el valor de estadísticas de rendimientoServiceStatistics.VideoFramesReused. Los fotogramas reutilizados indican situaciones en las que un fotograma de vídeo antiguo necesitaba reutilizarse en el lado cliente porque no había ningún nuevo fotograma de vídeo disponible (por ejemplo, debido a la pérdida de paquetes o a variaciones en la latencia de red). Si ServiceStatistics.VideoFramesReused suele ser mayor que cero, significa que hay un problema de red.

Otro valor que se debe examinar es ServiceStatistics.LatencyPoseToReceiveAvg. Debe estar siempre por debajo de 100 ms. Si se ven valores más altos, podría significar que está conectado a un centro de datos que está demasiado lejos.

Para obtener una lista de posibles mitigaciones, consulte las instrucciones sobre la conectividad de red.

El contenido local (UI, ...) en HoloLens 2 se representa significativamente con más artefactos de distorsión que sin ARR.

Este artefacto se debe a una configuración predeterminada que equilibra entre la calidad de la proyección de contenido local y el rendimiento en tiempo de ejecución. Consulte el capítulo sobre los Modos de posición de reproyección para ver cómo se puede cambiar el modo de proyección para que el contenido local se represente en el mismo nivel de calidad de reproyección que sin ARR.

Z-fighting

Si bien ARR ofrece la funcionalidad de mitigación de Z-fighting, Z-fighting todavía puede mostrarse en la escena. Esta guía pretende solucionar estos problemas restantes.

Use el siguiente flujo de trabajo para mitigar Z-fighting:

  1. Pruebe la escena con la configuración predeterminada de ARR (mitigación de Z-fighting activada).

  2. Deshabilite la mitigación de Z-fighting mediante su API.

  3. Cambie el plano de cámara de cera y lejos a un intervalo más cercano.

  4. Solucione los problemas de escena mediante la sección siguiente.

Investigación del Z-fighting restante

Si se han agotado los pasos anteriores y el Z-fighting restante es inaceptable, es necesario investigar la causa subyacente del Z-fighting. Como se indica en la página de la característica de mitigación de Z-fighting, hay dos razones principales para el Z-fighting: la pérdida de precisión de profundidad en el extremo del rango de profundidad y las superficies que forman una intersección siendo coplanarias. La pérdida de precisión de profundidad es una eventualidad matemática y solo puede mitigarse siguiendo el paso 3 anterior. Las superficies coplanarias indican un defecto del recurso de origen y se corrigen mejor en los datos de origen.

ARR tiene una característica para determinar si las superficies podrían luchar con z: resaltado de tablero de verificación. También puede determinar visualmente lo que provoca el Z-fighting. En la primera animación que hay a continuación se muestra un ejemplo de pérdida de precisión de profundidad en la distancia y en la segunda, un ejemplo de superficies prácticamente coplanarias:

Animation shows an example of depth-precision loss in the distance.Animation shows an example of nearly coplanar surfaces.

Compare estos ejemplos con z-fighting para determinar la causa principal o, opcionalmente, siga este flujo de trabajo paso a paso:

  1. Coloque la cámara sobre las superficies de Z-fighting para mirar directamente la superficie.
  2. Mueva lentamente la cámara hacia atrás, alejándose de las superficies.
  3. Si el Z-fighting es visible todo el tiempo, las superficies son perfectamente coplanarias.
  4. Si el Z-fighting es visible la mayor parte del tiempo, las superficies son prácticamente coplanarias.
  5. Si el Z-fighting solo es visible desde lejos, la causa es la falta de precisión de profundidad.

Las superficies coplanarias pueden tener varias causas:

  • La aplicación de exportación duplicó un objeto debido a un error o a distintos enfoques de flujo de trabajo.

    Compruebe estos problemas con la aplicación correspondiente y el soporte técnico de la aplicación.

  • Las superficies se duplican y se voltean para que aparezcan dos caras en los representadores que usan la selección frontal o posterior.

    La importación mediante la conversión del modelo determina la lateralidad principal del modelo. Se presupone que el valor predeterminado es la bilateralidad. La superficie se representa como una pared delgada con iluminación físicamente correcta desde ambos lados. La unilateralidad puede estar implícita en el recurso de origen o bien puede aplicarse de forma explícita en la conversión del modelo. Además, pero opcionalmente, el modo unilateral se puede establecer en "normal".

  • Los objetos forman una intersección en los recursos de origen.

    Los objetos transformados de forma que algunas de sus superficies se superpongan también crean Z-fighting. Las partes de transformación del árbol de la escena en la escena importada de ARR también pueden ocasionar este problema.

  • Las superficies se han creado de forma intencionada para tocarse, como las marcas o el texto en las paredes.

Artefactos gráficos que usan la representación estéreo de múltiples pasadas en aplicaciones de C++ nativas

En algunos casos, las aplicaciones de C++ nativas personalizadas que usan un modo de representación estéreo de varias pasadas para el contenido local (que se representan en el ojo izquierdo y derecho en pasadas independientes), después de llamar a BlitRemoteFrame, pueden desencadenar un error de controlador. El error provoca problemas de rasterización no deterministas, lo que provoca que triángulos individuales o partes de los triángulos del contenido local desaparezcan de forma aleatoria. Por motivos de rendimiento, se recomienda representar el contenido local con una técnica de representación estéreo de pasada única más moderno, por ejemplo, con SV_RenderTargetArrayIndex.

Errores de descarga del archivo de conversión

El servicio de conversión puede detectar errores al descargar archivos de Blob Storage debido a las limitaciones del sistema de archivos. A continuación se indican casos de error específicos. Puede encontrar información completa sobre las limitaciones del sistema de archivos de Windows en la documentación Asignar nombres a archivos, rutas de acceso y espacios de nombres.

Rutas de acceso y nombres de archivo en conflicto

En Blob Storage, es posible crear un archivo y una carpeta con el mismo nombre que otras entradas del mismo nivel. El sistema de archivos de Windows no lo permite. En consecuencia, el servicio emite un error de descarga en ese caso.

Longitud de la ruta de acceso

Hay límites de longitud de rutas de acceso impuestos por Windows y el servicio. Las rutas de acceso de archivo y los nombres de archivo de Blob Storage no deben superar los 178 caracteres. Por ejemplo, dado un blobPrefix de models/Assets que tiene 13 caracteres:

models/Assets/<any file or folder path greater than 164 characters will fail the conversion>

El servicio de conversión descarga todos los archivos especificados en blobPrefix, no solo los archivos usados en la conversión. Los archivos o carpetas que causan problemas pueden ser menos obvios en estos casos, por lo que es importante comprobar todo lo contenido en la cuenta de almacenamiento en blobPrefix. Consulte las entradas de ejemplo siguientes para ver lo que se descarga.

{
  "settings": {
    "inputLocation": {
      "storageContainerUri": "https://contosostorage01.blob.core.windows.net/arrInput",
      "blobPrefix": "models/Assets",
      "relativeInputAssetPath": "myAsset.fbx"
    ...
  }
}
models
├───Assets
│   │   myAsset.fbx                 <- Asset
│   │
│   └───Textures
│   |       myTexture.png           <- Used in conversion
│   |
|   └───MyFiles
|          myOtherFile.txt          <- File also downloaded under blobPrefix      
|           
└───OtherFiles
        myReallyLongFileName.txt    <- Ignores files not under blobPrefix             

HoloLens2 "Hacer una foto" (MRC) no muestra ningún contenido local o remoto

Este problema suele producirse si un proyecto se actualiza de WMR a OpenXR y el proyecto ha accedido a la configuración de la clase HolographicViewConfiguration (Windows.Graphics.Holographic). Esta API no se admite en OpenXR y no se debe tener acceso a ella.

Pasos siguientes