Usar SideFX Houdini para convertir nubes de puntos en objetos 3D optimizados para Dynamics 365 Guides y para componentes de realidad mixta en aplicaciones creadas con Power Apps
En este tutorial se proporcionan instrucciones paso a paso para las tareas siguientes:
Convertir una nube de puntos en un objeto 3D.
Optimizar un objeto 3D reduciendo el número de polígonos para que coincida con los objetivos de rendimiento de las aplicaciones de realidad mixta de Dynamics 365.
Exportar un objeto 3D optimizado en forma de archivo .glb para utilizarlo en Dynamics 365 Guides y en componentes de realidad mixta, en aplicaciones creadas con Power Apps
Cree una plantilla de canalización de procesamiento, para que pueda optimizar rápidamente nubes de puntos en el futuro.
Este tutorial solo es para fines informativos, para mostrar cómo SideFX Houdini funciona con Microsoft Dynamics 365 Guides y Power Apps. El uso de cualquier aplicación de terceros está sujeto a los términos establecidos entre usted y el tercero. Microsoft Corporation no está afiliado a SideFX, ni es socio ni partner de dicha sociedad, ni respalda ni patrocina a SideFX ni a ninguno de sus productos. Existen varias aplicaciones más de creación de contenido que puede utilizar para preparar los objetos 3D.
¿Qué es Houdini?
Houdini es una herramienta utilizada para crear contenido de procedimientos 3D. Utiliza un sistema de herramientas basado en nodos no destructivo para diseñar canalizaciones de proceso y contenido 3D.
Configurar el entorno
Para configurar el entorno, debe ejecutar las tareas siguientes:
Instalar la extensión SideFX Labs.
Configurar AliceVision para fotogrametría.
Instalar la extensión SideFX Labs
SideFX Labs es un campo de pruebas para herramientas que puede serle útil para empezar a trabajar con Houdini más rápidamente. En esta colección de herramientas gratuitas hay herramientas que puede usar para convertir nubes de puntos en objetos 3D optimizados. Para usar SideFX Labs, debe tener Houdini 18 o una versión posterior.
SideFX proporciona un tutorial en vídeo que ayuda a instalar estas herramientas.
Nota
Para poder instalar SideFX Labs, primero tiene que instalar Houdini. Obtenga más información sobre cómo instalar Houdini.
Abra Houdini.
Para instalar SideFX Labs, seleccione el signo más en la parte superior de la ventana de Houdini, luego seleccione Shelves y, por último, seleccione la casilla SideFX Labs.
En la barra de herramientas que aparece cerca de la parte superior de la ventana, seleccione Update Toolset para abrir el instalador.
Seleccione Update para instalar las herramientas.
Si la instalación se realiza correctamente, aparecerán más herramientas en la barra de herramientas. A partir de ahora, puede continuar con este tutorial.
Configurar AliceVision para fotogrametría
AliceVision es un marco de Computer Vision (visión) fotogramétrico desarrollado por Mikros Image. Proporciona algoritmos de seguimiento de cámara y reconstrucción 3D. Para obtener más información vaya a acerca de AliceVision y el complemento AliceVision.
Para obtener información acerca de cómo instalar y configurar el complemento AliceVision para Houdini, consulte el tutorial de SideFX.
Importar una nube de puntos a Houdini
Houdini puede importar archivos de nube de puntos en el formato de archivo PLY. Si su archivo está en formato PTS, puede convertirlo manualmente al formato PLY.
Convertir un archivo .pts en un archivo .ply
Abra el archivo .pts en el editor de archivos de su elección y agregue el siguiente encabezado.
************************ ply format ascii 1.0 element vertex 534993 property float x property float y property float z property uchar intensity property uchar red property uchar green property uchar blue end_header ************************
En el encabezado, junto a element vertex, reemplace el valor 534993 por el valor que aparecía originalmente en la parte superior del archivo .pts (pero que ahora está justo después del encabezado).
Este valor es el número total de puntos de la nube de puntos.
Elimine el valor original indicado después del encabezado. En la tabla siguiente se muestra una comparación en paralelo de los archivos antes y después de introducir los cambios anteriores. El valor element vertex está resaltado en rojo.
Parte superior del archivo .pts Parte superior del archivo .ply Guarde el archivo con la extensión de nombre de archivo .ply.
Importar el archivo .ply
Abra Houdini. Se crea automáticamente una nueva escena. En este procedimiento, creará una cadena de nodos para procesar la nube de puntos en un objeto 3D. Dichos nodos se crean en el panel inferior derecho de la ventana de Houdini.
Haga clic con el botón derecho en el panel inferior derecho para abrir el TAB Menu. (O bien, presione la tecla Tab).
En TAB Menu, seleccione Import > File y, a continuación, seleccione en el panel Geometry para colocar el nodo.
Haga doble clic en medio del nodo file1 (o presione I) para explorar en profundidad en la parte del nodo de selección de archivos, seleccione el botón File Chooser y, por último, seleccione el archivo que desee importar.
En el explorador de archivos que se visualiza, busque la ubicación del archivo de nube de puntos .ply que desee importar, seleccione el archivo y, a continuación, seleccione Accept.
La nube de puntos se visualizará en la parte principal de la ventana. Si no la ve, intente usar la rueda del ratón para alejarla hasta que pueda verla por completo.
Preparar la nube de puntos
Reorientar la nube de puntos
A veces, cuando se importa por primera vez una nube de puntos, su orientación es incorrecta. Puede corregir la orientación agregando un nodo de transformación al árbol de nodos.
Haga clic con el botón derecho en el panel Geometry para abrir el TAB Menu y, a continuación, seleccione Manipulate > Transform para agregar un nodo de transformación.
Arrastre desde el punto de la parte inferior del nodo file1 al punto de la parte superior del nodo transform1. De esta forma, conectará la salida del nodo file1 a la entrada del nodo transform1. Luego seleccione en el lado derecho del nodo transform1. El lateral derecho del nodo transform1 se volverá azul y el nodo se activará en la parte principal de la ventana, de modo que pueda ver el modelo después de la reorientación.
Sugerencia
Para ver el modelo en una fase específica del proceso en Houdini, haga clic en el lado derecho del nodo correspondiente. Esta capacidad puede serle útil si alguna vez tiene que mirar el objeto 3D en un estado anterior y editar los cambios que se produjeron en dicho estado.
Para corregir la rotación del modelo, en el panel de opciones que está sobre el panel de nodos, agregue valores en la fila Rotate. A menudo puede configurar el valor x en 270 para girar el modelo a la posición correcta. Sin embargo, si ese valor no funciona, pruebe con otros valores.
Para centrar la nube de puntos sobre el punto de origen, agregue un nodo de alineación de eje después del nodo de transformación. Para colocar el nodo, mantenga el ratón sobre el panel Geometry, presione la tecla Tab para abrir el TAB Menu y, a continuación, seleccione Labs>Geo>Labs Axis Align.
Arrastre para conectar el punto de salida de la parte inferior del nodo transform1 al punto de entrada de la parte superior del nodo axis_align1. Deje los valores predeterminados tal como están para colocar la nube de puntos encima del punto de origen (un lugar ideal para ello).
Limpiar la nube de puntos para eliminar puntos dispersos
Si la nube de puntos tiene puntos dispersos que desee eliminar, puede seleccionar y eliminar puntos individuales o grupos de puntos.
Cambie el método Geometry select a Points y la herramienta Select a Lasso Picking.
Nota
Puede utilizar otro método si lo prefiere.
Seleccione los puntos que desee eliminar.
Presione la tecla Delete. Aparecerá un nodo blast1 nuevo. El punto de entrada de la parte superior de este nodo está conectado al punto de salida de la parte inferior del último nodo con el que estaba trabajando.
Siga eliminando puntos hasta que quede satisfecho con los resultados. Con cada eliminación se agrega un nodo de descomposición nuevo que puede ver o eliminar en cualquier momento.
Convertir la nube de puntos en una malla
Tanto las aplicaciones de representación glTF como en tiempo real requieren que los objetos se representen como una superficie poligonal triangulada. Puedes ejecutar el comando Particle Fluid Surface para conectar los puntos en una superficie lógica, en forma de geometría poligonal.
Seleccione en el panel Geometry para abrir el TAB Menu y luego seleccione Fluid>Particle Fluid Surface. A continuación, seleccione el nodo y agréguelo al panel Geometry.
Arrastre para conectar el punto de salida de la parte inferior del nodo transform1 al punto de entrada de la parte superior izquierda del nodo particlefluidsurface1. A continuación, seleccione en el lado derecho del nodo pariclefluidsurface1 para activar el nodo en la parte principal de la ventana.
En la parte principal de la ventana, la nube de puntos se representa como una malla. La pestaña Surfacing está seleccionada en el panel superior derecho, sobre el panel Geometry.
Si asocia datos de color a los puntos de la nube de puntos, podrá usar los atributos de color agregando las letras Cd al final del valor del campo Transfer Attributes. El color se mostrará en la malla.
Si, tal como se muestra en la siguiente ilustración, la malla tiene orificios, ajuste los controles Particle Separation y Voxel Scale en el panel superior derecho para intentar solucionar el problema.
Para preparar la malla para el diezmado (el siguiente paso en el proceso general), en Output, cambie el valor del campo Convert To de Surface Polygon Soup a Surface Polygons. De esta manera, puede volver a crear una malla con la malla y diezmarla.
Haga clic con el botón derecho en el panel Geometry para abrir el TAB Menu y, a continuación, seleccione Polygon>Remesh. Se agrega un nodo de remallado para convertir la malla en triángulos. De esta manera, puede diezmar el objeto 3D a un recuento de polígonos que cumpla los requisitos de rendimiento.
Arrastre para conectar el punto de salida de la parte inferior del nodo particlefluidsurface1 al punto de entrada de la parte superior izquierda del nodo remesh. Seleccione en medio del nodo remesh para activarlo en el panel que está encima del panel Geometry. Luego seleccione en el lado derecho del nodo remesh para activar el modelo en la parte principal de la ventana. Ahora puede editar las propiedades de remesh y el modelo de la parte principal de la ventana reflejará dichas ediciones.
Experimente con las opciones de Element Sizing para obtener los resultados que desee. En el campo Edge Lengths, puede mantener el valor predeterminado (Uniform), o bien puede seleccionar Adaptive y ajustar el control Relative Density (y otras opciones) para producir la malla que desee.
Diezmar el objeto 3D para ayudar a mejorar el rendimiento
Para lograr los objetivos específicos de la aplicación, es posible que deba diezmar el objeto 3D. Diezmar es el proceso de volver a calcular los polígonos de superficie de un modelo para crear una forma similar con menos polígonos. Aunque este proceso reduce la fidelidad visual, ayuda a mejorar el rendimiento. En la tabla siguiente se muestra una comparación en paralelo de un modelo de alta calidad que se utiliza para una complejidad de escena baja en HoloLens y un modelo de baja calidad que se utiliza para escenas de alta complejidad.
Objeto 3D con un alto número de polígonos | Objeto 3D con un bajo número de polígonos |
---|---|
500 000 triángulos | 8000 triángulos |
Diezmar un modelo
En el panel Geometry, presione la tecla Tab para abrir el TAB Menu y, a continuación, seleccione Polygon>PolyReduce para colocar un nodo PolyReduce en el panel Geometry.
Arrastre para conectar el punto de salida de la parte inferior del nodo remesh al punto de entrada de la parte superior izquierda del nodo polyreduce1. Seleccione en el medio del nodo polyreduce1 y luego seleccione en el lateral derecho del nodo para activarlo en la parte principal de la ventana.
En Reduction Amount, en el campo Target, seleccione Output Polygon Count y luego use el control Number To Keep para ajustar la cantidad de polígonos y cumplir los requisitos de rendimiento, además de mantener una fidelidad visual aceptable.
Ahora, la nube de puntos se habrá convertido en una malla 3D optimizada. En el siguiente paso, horneará una textura de alta resolución en el objeto 3D para recuperar parte de la fidelidad visual que existía antes del diezmado.
Hornear una textura de alta resolución en una malla con pocos polígonos
Una desventaja de reducir el número de polígonos en una malla es que se pierden gran parte de los detalles. Para restaurar una parte de dichos detalles, puede capturarlos y aplicarlos como una textura que se superponga por capas encima del modelo con pocos polígonos. Durante este proceso, conocido como hornear texturas, toma una fotografía de todas las superficies del modelo con un alto número de polígonos y las une en un "quilt" que coloca sobre el modelo con pocos polígonos. De esta forma, obtiene el rendimiento de un modelo con pocos polígonos, pero conserva parte de los detalles más precisos de un modelo con muchos polígonos.
Las coordenadas de la textura (también conocidas como UV) son pares de números (U y V) que se almacenan en la geometría de un modelo. Estos números representan la forma en que una imagen 2D se puede asignar en una superficie 3D, y permiten definir las propiedades de superficie como una imagen. Las imágenes pueden ser calcomanías sencillas o componentes de materiales complejos, como rugosidad y metal. Puede generar manualmente posiciones UV para una malla, o el proceso se puede realizar de forma semiautomática o automática. El operador de superficie AutoUV es una herramienta de Houdini que puede generar UV. Utiliza varios métodos automáticos durante la creación de UV.
Hornear la textura
Haga clic con el botón derecho del ratón en el panel Geometry para abrir el TAB Menu y luego seleccione Labs>UV>Labs Auto UV para agregar un nodo AutoUV a la escena.
En Method, cambie el valor del campo Method a UV Unwrap.
Arrastre para conectar el punto de salida la parte inferior del nodo polyreduce1 al punto de entrada de la parte superior del nodo autouv1.
Para ver los objetos "antes" y "después" uno al lado del otro, seleccione el botón Diseño de ventanilla y, a continuación, seleccione Dos vistas, una al lado de otra.
En la parte principal de la ventana, en el menú desplegable, seleccione Set View > UV viewport.
Los UV desenvueltos se verán en el lado izquierdo, mientras que el objeto 3D se verá en el derecho.
En el panel Geometry, seleccione Labs>Output>Labs Maps Baker para agregar un nodo maps_baker1.
Arrastre para conectar el punto de salida de la parte inferior del nodo autouv1 al punto de entrada de la parte superior izquierda del nodo maps_baker1. (El punto superior izquierdo es el nodo de LOW Resolution input).
Arrastre para conectar el punto de salida de la parte inferior del nodo particlefluidsurface1 al punto de entrada de la parte superior derecha del nodo maps_baker 1. (El punto superior derecho es el nodo de HIGH Resolution input).
Seleccione el nodo maps_baker1 y, a continuación, en Bake, cambie el valor del campo Preview Channel por diffuse. En Bake Options, establezca el campo Diffuse Map en diffuse.
Sugerencia
Para guardar su proyecto en una carpeta específica, seleccione el botón File Chooser junto al campo Output Directory que se muestra en la ilustración anterior. Cuando hornea una textura, el archivo de textura .png se guarda en una carpeta render que se crea en la carpeta raíz del proyecto guardado. Al guardar el proyecto en su propia carpeta, hace que sea fácil encontrar la textura horneada.
Seleccione el nodo maps_baker1 y, a continuación, en el panel de opciones, seleccione Bake.
Haga clic con el botón derecho del ratón en el panel Geometry para abrir el TAB Menu y luego seleccione Managers>Material Network para agregar un nodo matnet1 a la escena.
Haga doble clic en el nodo matnet1 para abrir el panel VEX Builder.
Haga clic con el botón derecho en el panel VEX Builder y luego seleccione Shaders > Principled Shader para agregar un material de Principled Shader.
En el panel de opciones, en la pestaña Surface, utilice los controles para cambiar el valor del campo Roughness a 0.6 y el valor del campo Metallic a 0.1. (Puede configurar estos campos como desee, pero hemos visto que estos valores son un buen punto de partida cuando se utilizan junto con los valores predeterminados).
En la pestaña Textures, en Base color, seleccione la casilla Use texture. Luego seleccione el botón File Chooser y el archivo de textura *_color.png que guardó antes en la carpeta render. El sombreador de principios ya está listo para su uso.
Nota
Modifique el material tanto como quiera. Para los fines de este tutorial, esta configuración es suficiente.
En el panel VEX Builder, seleccione el botón Back (flecha izquierda) para volver al panel Geometry.
Seleccione Material > Material para colocar un nodo de material en el panel Geometry.
Arrastre para conectar el punto de salida la parte inferior del nodo autouv1 al punto de entrada de la parte superior del nodo material1.
Seleccione sucesivamente el nodo material1 y el botón Operator chooser. A continuación, en el cuadro de diálogo Choose Operator, seleccione file1>matnet1>principledshader1 para seleccionar el sombreador de principios que creó anteriormente.
Seleccione en el lado derecho del nodo para activarlo en la parte principal de la ventana.
La textura se representa sobre el objeto 3D de pocos polígonos. Si le parece aceptable, vaya al siguiente paso.
Exportar el modelo a un archivo .glb
En este paso, exportará el modelo a un archivo .glb para que pueda usarse con Dynamics 365 Guides y Power Apps.
Haga clic con el botón derecho en el panel Geometry para abrir el TAB Menu y luego seleccione Export>ROP GLTF Output.
Arrastre para conectar el punto de salida la parte inferior del nodo material1 al punto de entrada de la parte superior del nodo rop_gltf1.
En el panel superior, cambie el valor del campo Export Type a glb.
Seleccione el botón File Chooser junto al campo Output File y luego introduzca un nombre y un destino para el archivo .glb. Asegúrese de agregar .glb al final del nombre del archivo. Cuando termine, seleccione Accept.
Seleccione Render to Disk para finalizar la exportación y crear el archivo .glb.
Crear una plantilla para volver a utilizar la configuración en otras nubes de puntos
Para ahorrarse tiempo y esfuerzos, puede crear una plantilla. Así, podrá usar la configuración que cree para una nube de puntos en otras nubes de puntos. Aunque todavía tenga que seleccionar manualmente Bake y probablemente deba ajustar algunos valores, podrá automatizar la mayor parte del procesamiento.
Crear una plantilla
Reemplace la geometría que se usa actualmente con una geometría predeterminada. Con este paso, el archivo de plantilla pasa a ser liviano y se carga rápidamente.
En el panel Geometry, seleccione en medio del nodo de archivo para ir al menú File del panel superior.
Cambiar el valor del campo Geometry File a default.bgeo y luego seleccione Reload Geometry.
Observe que la geometría se vuelve a dibujar y pasa a ser un cubo genérico.
Cambie el nombre del archivo por un nombre genérico, como Template.
Seleccione File > Save e introduzca un nombre que le sea fácil de recordar, como Prep_Template.
Cierre Houdini.
Uso de la plantilla
Abra Houdini, seleccione File>Open y luego seleccione la plantilla que acaba de crear.
En el panel Geometry, seleccione en medio del nodo de archivo para ir al menú File del panel superior. A continuación, seleccione el botón File Chooser al lado del campo Geometry File para seleccionar el archivo de nube de puntos .ply.
Seleccione Reload Geometry para cargar la nube de puntos en la escena.
Vaya al nodo maps_baker1 y luego seleccione Bake para simular una nueva textura para el objeto 3D.
Seleccione en el lado derecho del nodo material1 para ver el modelo horneado.
Siga uno de estos pasos:
Si está satisfecho con el objeto 3D, vaya al nodo rop_gltfB y luego seleccione Render to Disk para exportar el objeto 3D.
Si no está satisfecho con el aspecto del objeto 3D, ajuste la configuración de los nodos particlefluidsurface1, remesh y polyreduce1. Cuando el modelo le parezca aceptable, vuelva a hornear la textura y exporte el objeto 3D.
Ver un objeto 3D en Dynamics 365 Guides o Power Apps
Una vez que haya preparado un objeto 3D, utilice los siguientes vínculos para obtener más información sobre el uso del modelo en Dynamics 365 Guides o Power Apps:
Más información
Las capturas de pantalla de este tutorial se han tomado del programa de software Houdini para proporcionar instrucciones claras acerca de cómo usar el software Houdini. Más información acerca de SideFX Houdini.
Microsoft Corporation no es responsable y renuncia expresamente a toda responsabilidad por daños de cualquier tipo que se produzcan como consecuencia del uso de Houdini, o de la confianza depositada en estas instrucciones. Este documento se creó únicamente para proporcionar información general a nuestros clientes y no tiene en cuenta ninguna especificación ni plan empresarial individualizados.
El uso en este documento de nombres e imágenes de marcas comerciales se realiza con fines estrictamente informativos y descriptivos, y Microsoft Corporation manifiesta que no tiene establecida obligación comercial alguna relativa a su uso, ni a la sugerencia de su patrocinio o respaldo.