VICTOR: Hola a todos.
Bienvenido de nuevo a la transmisión. Estoy aquí con un
par de desarrolladores de Realidad Mixta del equipo de Microsoft. Vamos a hablar hoy aquí
sobre cómo desarrollar una aplicación HoloLens 2
usando Unreal Engine y las herramientas Microsoft Mixed Reality
UX, y para ayudarme en este esfuerzo
aquí en la transmisión de hoy, tengo a Vanessa Araujo,
ingeniera de software de Microsoft, así como a Carl McCaffrey, también
ingeniero de software de Microsoft. Con nosotros también tenemos a Sajid Farooq, ingeniero de software principal
de Microsoft, y por último, pero no
menos importante, a Luis Valverde, ingeniero de software senior
de Microsoft. Bienvenido a "Inside Unreal",
episodio especial de hoy, diría yo, ya que
técnicamente lo haremos el viernes, cosa que nunca habíamos hecho antes, y también es la segunda
parte de una transmisión de dos partes, diría yo.
No voy a hablar más. Me gustaría entregárselo a
Vanessa para su presentación. VANESSA: Hola a todos.
No dije hola antes. Esta será una
guía rápida paso a paso sobre cómo comenzar
con la realidad mixta, donde crearemos
una aplicación usando Unreal Engine y el complemento Microsoft Mixed
Reality UX Tools.
El objetivo principal
de este tutorial es que se familiarice más
con el desarrollo de Realidad Mixta y también que sepa más sobre
los recursos de Microsoft que pueden ayudarlo a
crear increíbles experiencias de Realidad Mixta
para juegos durante el Jam. Comenzaremos mostrándole algunas referencias de Realidad Mixta, el complemento UX Tools y
los requisitos del proyecto. Veremos cómo
podemos configurar el proyecto para que su nivel sea
interactivo en Realidad Mixta. Luego, mis colegas, Carl y Sajid, le mostrarán cómo utilizar
algunos componentes interesantes de UX del complemento UX Tools
y también le darán algunos consejos sobre cómo mejorar y
optimizar su experiencia. Luego finalizaremos con
una pequeña sesión de preguntas y respuestas donde podremos aclarar cualquier
concepto de Realidad Mixta que estemos tratando hoy aquí, y para ello contamos
con nuestro compañero Luis. El complemento UX Tools
que mencioné y que estamos usando hoy
es parte de un conjunto de componentes que juntos forman el
kit de herramientas de Microsoft Mixed Reality para Unreal. Dentro de este
complemento del kit de herramientas de realidad mixta, puede encontrar código,
planos, muestras, documentación y
el complemento de herramientas UX.
Básicamente es un
conjunto de controles UX creados específicamente
para Realidad Mixta. Esos controles son como
botones 3D u objetos que se pueden agarrar con los que se puede interactuar
o manipular con las manos mediante el seguimiento manual o el
seguimiento manual simulado. Esto te permitirá dedicar
tu tiempo de desarrollo a la experiencia en sí o a la
lógica del juego y al diseño de niveles en lugar de tener que desarrollar esos controles e
interacciones de UX desde cero.
Entonces, repasemos
algunos de los recursos que puede encontrar en línea y
que pueden ayudarlo a comenzar rápidamente con el
desarrollo y diseño de realidad mixta. Entonces, si es nuevo en el
desarrollo de Realidad Mixta o incluso si ya
tiene algo de experiencia, puede encontrar mucha
información útil en la
página de documentación de Microsoft Mixed Reality, de modo que todo lo que
cubrimos hoy aquí se puede encontrar allí y allí. son algunos conceptos de diseño de experiencias de Realidad Mixta muy importantes
que también se tratan junto
con algunos minitutoriales sobre cómo usar los
servicios de Realidad Mixta de Azure u otros códigos y características
que puede agregar a su proyecto, como códigos QR,
captura de imágenes o uso compartido de anclajes.
Desde Microsoft App Store, también puedes descargar esta aplicación
llamada Designing Holograms. Explica los conceptos básicos de UX y las mejores prácticas en
Realidad Mixta y diseño de experiencias con respecto a aspectos
como la conciencia espacial, el seguimiento de las manos o el
seguimiento de la cabeza y los ojos. Entonces, esta aplicación se puede instalar
en su dispositivo HoloLens o, si no tiene uno,
puede usar el emulador de HoloLens. La página de documentación de Unreal también tiene algunas
guías de introducción a HoloLens y el contenido es muy similar
a lo que cubrimos aquí.
Puede encontrar información sobre
cómo usar el emulador o implementar su
aplicación en el dispositivo. Ahora repasemos las
herramientas que necesitamos instalar para desarrollar nuestra
aplicación HoloLens 2 con Unreal. Entonces esto es lo que
necesitas para crear tu aplicación. Básicamente, querrás
tener Unreal Engine 4.25 o posterior con los
archivos de soporte de HoloLens instalados, un dispositivo HoloLens 2
configurado para desarrollo o un emulador instalado
en tu computadora. También necesitará
Windows 10 1809 instalado en su máquina
y Visual Studio 2019, la última versión con
algunas cargas de trabajo adicionales. Si ya tienes Unreal,
simplemente ve al iniciador de Epic. Luego vaya a la pestaña Biblioteca
y en Iniciar y Opciones, asegúrese de tener activada la opción HoloLens
2 y presione Aplicar. Necesitará estos
archivos de respaldo para poder implementarlos en HoloLens. Si no tiene un
dispositivo HoloLens, nuevamente, como mencioné,
puede usar el emulador HoloLens, y toda la información sobre
cómo instalar el emulador también se puede encontrar en la página de documentación de Microsoft Mixed Reality. Con Visual
Studio 2019 instalado desde la
página de descarga de Visual Studio, debe ejecutar el
instalador de Visual Studio una vez más para modificar Visual Studio y agregar algunas cargas de trabajo adicionales
que necesitará.
También puede agregar esas cargas de trabajo cuando
instale Visual Studio, por lo que si está modificando
Visual Studio, solo asegúrese de haber
seleccionado las cargas de trabajo ' Desarrollo de escritorio .NET', '
Desarrollo de plataforma universal de Windows' y 'Desarrollo de escritorio'.
con C++' seleccionado. Y también en los
componentes individuales, deberá elegir
el MSVC V142 para ARM64. Simplemente elija la
última versión y con esto tendrá Visual Studio
configurado para HoloLens 2. Y esto prácticamente está
hecho con los requisitos, y podemos iniciar Unreal y comenzar con nuestro
proyecto de Realidad Mixta. Nuevamente, puedes revisar
esta presentación después y seguirla. Entonces, en el navegador de proyectos de Unreal, seleccionaremos "Juegos"
en Nuevas categorías de proyectos y simplemente haremos clic en Siguiente.
Seleccione la plantilla en blanco
y presione nuevamente Siguiente y para la Configuración del proyecto,
solo asegúrese de seleccionar 'C++' ya que las herramientas UX
lo necesitarán para poder compilar. Seleccione también '
3D escalable', 'Móvil/tableta' y 'Sin contenido inicial'. Elija un directorio y
un nombre para su proyecto y haga clic en Crear proyecto. Así que ahora con el Unreal Editor abierto, comenzaremos
habilitando los complementos que permitirán el
desarrollo de Realidad Mixta. Continúe y abra los
complementos en la pestaña Editar y busque "Realidad aumentada" en la lista de complementos integrados, y luego busque y
habilite el complemento HoloLens. Simplemente habilítelo. Ahora busque la
categoría "Realidad virtual" y luego busque "
Realidad mixta de Microsoft Windows". Por lo tanto, ambos complementos son necesarios
para el desarrollo de HoloLens 2 y deberá
reiniciar el Editor. Con el Editor abierto,
necesitaremos crear un activo ARSessionConfig, así que continúe y en
el Explorador de contenido, haga clic en Agregar nuevo >
Varios > Activo de datos y seleccione ARSessionConfig.
Luego puedes nombrarlo
'ARSessionConfig'. Haga doble clic en él. Déjalo como está y simplemente presiona Guardar. Entonces, este ARSessionConfig
sería responsable de almacenar
sesiones de realidad aumentada, configuraciones específicas como alineación mundial o configuraciones de oclusión. Entonces, creemos un
nivel básico para nuestra aplicación. Simplemente elija Nuevo
nivel > Nivel vacío, arrastre un actor de Inicio del reproductor
a su escena y restablezca su ubicación. Y simplemente vaya a
Archivo > Guardar actual , nombre su nivel
"Principal" y guárdelo. Ahora editaremos este
Blueprint de nivel principal, para que podamos usar el
activo ARSessionConfig que hemos creado durante el tiempo de ejecución. Haga clic en el menú desplegable Plano y elija Plano de nivel abierto. Arrastre el pin de ejecución desde
el nodo Event BeginPlay y busque el
nodo Iniciar sesión AR. En la opción Configuración de sesión, elija el activo ARSessionConfig, el que hemos creado, y ahora puede agregar un
nodo Event End Play al gráfico y arrastrar el pin de ejecución.
Simplemente busque Detener sesión AR. Ahora puedes compilar, guardar y la sesión de AR comenzará
y finalizará con el nivel de juego. Configuremos nuestro peón.
En Navegador de contenido, haga clic en Agregar nuevo y
luego en Clase Blueprint. Busque 'defaultpawn'
y elija DefaultPawn. Ahora le pondrás
el nombre 'MRPawn' y harás doble clic para abrirlo en edición.
Vamos a agregar un componente. Simplemente busque el componente Cámara
y, una vez agregada la cámara, quiero que seleccione
el componente Colisión y cambie los ajustes preestablecidos de Colisión en la
pestaña Detalles a Sin colisión. Por eso, estamos haciendo esto para
evitar colisiones entre el usuario y el contenido de cualquier nivel
en realidad aumentada. Haga lo mismo con
MeshComponent y nuevamente, compílelo y guárdelo. Y ahora vamos a
crear nuestro modo de juego, así que nuevamente en Navegador de contenido, haga clic en Agregar nuevo >
Clase de plano y Base del modo de juego. Lo llamarás MRGameMode. Haz doble clic para editarlo
y, en la pestaña Detalles, simplemente elige el MRPawn
que creamos. Agréguelo a la clase de peón predeterminada. Luego compila y guarda. Ahora simplemente abra Configuración del proyecto
nuevamente desde la pestaña Editar y en Mapas y modos, expanda el menú desplegable Modos predeterminados y configure nuestro MRGameMode
en el Modo de juego predeterminado. Y ahora agregue nuestro nivel principal
tanto al mapa de inicio del editor como al mapa predeterminado del juego.
Luego puede cerrar la
ventana Configuración del proyecto. Ahora tenemos esos
activos básicos y un nivel muy vacío. Finalmente estamos agregando el
complemento UX Tools al proyecto. El complemento UX Tools se puede descargar
desde la página de lanzamiento. Lo vincularé al
GitHub de herramientas UX. No lo publiqué aquí porque
es extraño leer el enlace, pero si vas a github/Microsoft y buscas "UX Tools Unreal", puedes abrir la
página de GitHub de UX Tools donde puedes encontrar la
documentación de la versión y cómo hacerlo. Instale y
utilice los componentes UX que vienen con el complemento.
Entonces, UX Tools es de código abierto y, aunque
todavía no aceptamos contribuciones de la comunidad, puede agregar problemas
a través de la página de GitHub, y esto también
nos ayudará a comprender dónde priorizar las
funciones y las correcciones de errores.
Continúe y
busque el enlace de lanzamiento en la columna del lado derecho. Ábrelo y
busca UXTools.0.10.0, el archivo ZIP. Esta es nuestra última versión
y haga clic para descargar. Solo como aviso,
actualmente UX Tools solo admite el
dispositivo HoloLens 2, pero el equipo de UX Tools,
que es mi equipo, ha hecho un gran esfuerzo para elaborar
algunos trabajos en progreso.
Es un trabajo en progreso
para cualquiera que quiera usar
herramientas UX con el casco Windows Mixed Reality o
el casco Oculus VR. Entonces, aún en la
página de GitHub de Herramientas UX, simplemente busque la
rama característica/megajam y podrá trabajar desde allí.
Y este proyecto debería funcionar en los últimos
auriculares de realidad mixta. Nuevamente, esto no es compatible,
pero es una muy buena base de partida. Ahora continúe y cree una nueva
carpeta en la raíz del proyecto, el proyecto que creó, asígnele el
nombre 'Complementos' y luego copie la carpeta UXTools descomprimida en esta carpeta de Complementos
y simplemente reinicie el Editor.
Esto debería ser suficiente para agregar el
complemento UX Tools a su proyecto. Y ahora es el momento de hacer que
tu nivel sea más interesante. Veamos qué herramientas UX
tienen en el proyecto. Así que vamos a empezar
añadiendo manos simuladas a nuestro nivel. Las manos se pueden usar para depurar la interacción de Realidad Mixta
o para manipular objetos, así que haga doble clic en
MRPawn para abrirlo y, desde el nodo Event BeginPlay, simplemente arrastre el pin de ejecución a
un Actor Spawn desde el nodo Clase. Y luego, en Clase,
seleccione UXTHandInteractionActor y luego expanda el nodo para que
la propiedad Propietario sea visible. Ahora arrastre el pin de ejecución y cree un duplicado de
este nodo para la mano derecha. Nuevamente,
seleccione UXTHandInteractionActor y expanda el nodo y en la
propiedad Mano elija Derecha. Ahora tenemos las
manos derecha e izquierda, y organizamos el
gráfico como quieras. Ahora quiero que agregue un
nodo Crear transformación al gráfico y lo vincule a la
propiedad Generar transformación de ambos nodos UXT Hand Interaction.
También vincule una referencia
al nodo propio MRPawn a la propiedad Propietario en ambos
actores de interacción manual UXT y simplemente continúe,
compile y guarde. Ahora necesitaremos algo de contenido de nivel para interactuar con esas manos,
pero las manos están listas para funcionar. Así que regrese a la ventana del nivel
y agregue un cubo al nivel arrastrándolo desde
la pestaña de actores básicos y, en el panel Detalles,
restablezca su transformación. Cambie la Ubicación para que esté a 50
centímetros frente al usuario y cambie su Escala a 10
por 10 por 10 centímetros, y cambiemos el
cubo Movilidad a Móvil. Ahora, en el Explorador de contenido,
simplemente agregue un nuevo material y asígnele el nombre "Rojo"
para hacerlo más visible. Haga doble clic en el material y luego, desde la
propiedad de color del nodo del material, simplemente arrastre un enlace a un
nodo Constant3Vector y cambie el valor R.
Vamos a cambiar el
valor de R a 1, presionaremos Aceptar y simplemente guardaremos el activo. Ahora podemos simplemente agregar este
material al cubo que hicimos y también vamos a agregar una
luz direccional al nivel. Simplemente colóquelo encima
del inicio del reproductor. Ahora hagamos que el
cubo sea interactuable. Seleccionemos el cubo
y le agregaremos un componente Manipulador genérico UXT
, por lo que esto básicamente
hará que este cubo sea interactivo y permitirá la manipulación manual
con las manos que creamos, por lo que en los
detalles del Manipulador genérico UXT, seleccione Girar sobre Grab Point en la
propiedad Modo de rotación con una mano y ahora tenemos un
nivel interactivo. Ahora continúa y haz clic en Reproducir. Probemos el nivel con
las manos simuladas, para que puedas mover la
mano derecha haciendo clic, manteniendo presionada la tecla alt izquierda
y moviendo el mouse. El clic del mouse
activará un pellizco con la mano que puedes usar para agarrar
el cubo y moverlo, y también puedes usar la
tecla Mayús izquierda para la mano izquierda y luego simplemente usar WASD para
controlar la posición del jugador, y puedes ver el
Levantamiento de mano de interacción lejana.
Ahora probémoslo en el
dispositivo conectando nuestro editor con la aplicación Holographic Remote
en el dispositivo HoloLens. Entonces, primero debemos
habilitar Holographic Remote, así que vaya a
Configuración del proyecto en la pestaña Editar y en Plataformas, simplemente busque
Windows Mixed Reality y luego active Habilitar
comunicación remota para el editor. Ahora debe reiniciar el
Editor para aplicar el cambio y, una vez que el Editor se vuelva a abrir, puede continuar e insertar
el dispositivo HoloLens 2: la dirección IP de
HoloLens allí. Solo recuerda que
el dispositivo y la PC deben estar en la misma red. Simplemente haga clic en Conectar y ahora
expanda el menú desplegable Reproducir sobre la ventana del nivel
y haga clic en Vista previa de VR.
Y entonces esto debería ser… Por supuesto, deberías ver
tu casa y no la mía, y ahora puedes manipular
el cubo con tus propias manos usando el seguimiento manual
proveniente de HoloLens, y listo. Tenemos esta
aplicación de Realidad Mixta muy básica ejecutándose en HoloLens, pero ya es muy interactiva. Estoy muy contento con mi cubo, pero las cosas van a empezar
a ponerse más interesantes. Se lo voy a pasar a Carl, y él le mostrará algunos controles de herramientas UX geniales,
más divertidos que un cubo giratorio, que puede agregar a su
proyecto para hacerlo más asombroso. Gracias chicos. VÍCTOR: Gracias, Vanessa. Está bien.
Carl, ¿te tenemos al teléfono? CARL: Sí.
Recuperaré mi pantalla compartida.
VÍCTOR: Perfecto. CARL: Está bien. ¿
Eres capaz de ver eso? VICTOR: Sí, se ve bien.
CARL: Perfecto. Vanessa le explicó cómo configurar su
proyecto de realidad mixta para HoloLens en
Unreal Engine, por lo que ahora veremos
algunos de los controles que vienen con las herramientas UX
y cómo usarlos. Entonces, UX Tools viene con
muchos controles listos para usar. El principal que
usarás son los botones. Los botones son la base
de la mayoría de las aplicaciones de realidad mixta y la forma principal en que impulsarás las
interacciones con tus usuarios. Debido a esto,
UXT incluye una amplia variedad de botones temáticos de HoloLens 2
. Estos botones son configurables.
Puedes configurar diferentes tamaños, iconos, etiquetas y también
diferentes variantes.
Si no desea el
tema de HoloLens 2 en su aplicación, exponemos toda la lógica
como un componente independiente que puede usar para
crear sus propios botones, de los que hablaremos
un poco más adelante. Otro control común
serían los controles deslizantes, por lo que también tenemos un control
deslizante temático de HoloLens 2 incorporado que también es personalizable
y, similar a los botones, también tienen su lógica
en un componente separado para permitirle crear sus
propios controles deslizantes temáticos sin depender de la
personalización. nuestro. Finalmente, para el tipo de
métodos de interacción principales cuando se trata de UI,
tenemos volúmenes táctiles. Éste no tiene una
implementación concreta dentro de UXT. Este es solo un componente que
puede agregar a un actor, configurar qué partes del actor desea que activen una interacción y luego, cada vez que
su usuario lo toque, desencadenará un evento.
Luego, como una especie de
controles auxiliares, dos de los más importantes que verá con frecuencia son los elementos de la interfaz de usuario
y los grupos de alternancia. Entonces, un elemento de la interfaz de usuario es un componente que
puedes colocar en un actor y que te permitirá
controlar ese actor como parte de una jerarquía de la interfaz de usuario, lo que eso significa es que si
ocultas, digamos, un actor, este se ocultará a sí mismo y a todos
los demás. sus elementos secundarios de la interfaz de usuario, y si muestra ese actor, restaurará el estado
de los elementos secundarios de la interfaz de usuario, y los otros componentes
visibles aquí son grupos de alternancia. Un grupo de alternancia es esencialmente
solo un grupo de botones de alternancia.
Limita que solo uno de ellos
esté activo a la vez y también proporciona
una interfaz más sencilla para consultar cuál de
los botones está alternado en lugar de tener que
consultarlos todos individualmente, y cuando los combinas, puedes crear cosas
como menús con pestañas como Puedes ver en ese ejemplo. También tenemos soporte nativo de UMG, por lo que este es un componente muy simple que simplemente puede
agregar a su actor, y ese actor, cualquiera de los
widgets de UMG que están en ese actor, ahora puede manejar usando los
controles manuales de HoloLens.
Y el último tipo
de control, que generalmente se usa
en la interfaz de usuario, es la información sobre herramientas, por lo que tenemos actores de información sobre herramientas que
pueden ser estáticos en el mundo, que pueden apuntar a una
parte específica de un objeto, o también hay un componente generador que puede le permite generarlos y ocultarlos dependiendo
de lo que esté haciendo el usuario, y la información sobre herramientas
en sí es UMG, por lo que puede colocar menús dentro de ellos o cualquier cosa que realmente desee. Entonces están los
controles que tenemos. ¿ Cómo los uso realmente? Este es un ejemplo del
Blueprint del módulo de aterrizaje que puede encontrar en
el complemento UX Tools. Aquí podemos ver el módulo de aterrizaje en sí. El control deslizante impulsa sus patas y tenemos el
gráfico de eventos al lado.
Usando los
controles de actor incorporados, por lo que nuestro control deslizante y nuestros botones son actores,
puede tomar una referencia. En este caso, nuestro Blueprint del módulo de aterrizaje toma una referencia
a un actor deslizante, y luego simplemente
vinculamos un evento personalizado a los controles deslizantes en el
evento de actualización del valor y luego actualizamos las
patas de aterrizaje en ese evento personalizado, por lo que son muy
sencillos de usar. Pero si desea
crear sus propios controles que no tengan el tema de HoloLens 2,
puede hacerlo, como dije, solo con el tipo
de componentes lógicos. Este es otro ejemplo
tomado del complemento UX Tools que puedes consultar más adelante. Este es el SimpleButton Blueprint, que es un botón muy simple que
puedes presionar. Se compone de tres componentes: el componente del botón para la lógica; una malla estática base,
que es el círculo gris que la rodea; y la malla estática visual en movimiento, que es el centro rosa, que es la parte del
botón que realmente se mueve. Y luego puede ver también las diversas opciones de configuración expuestas en los componentes del botón.
Puede ajustar las distancias de empuje, hasta qué punto lo presiona
antes de que se active, qué tan rápido se libera, sus diferentes
velocidades de recuperación, etc., y también configurar
sus componentes visuales, entonces, ¿qué es eso? Necesita
apuntar el componente del botón hacia el parte del botón
que realmente se moverá para poder crear
sus cuadros de colisión para escuchar
las manos de los jugadores y también para saber
qué parte del botón presionar realmente cuando el
usuario interactúa con el botón. Para usar los eventos que
vienen con estos componentes, puede simplemente colocarlos
en su gráfico de eventos como lo haría con cualquier
otro evento de componente usando el botón más en la
lista de eventos de ese componente. Y también puede crear
controles usando C++ y Blueprints usando
estos componentes lógicos. Hay ejemplos de
ambos en el complemento UX Tools. El actor Pressable Button, que son los
botones temáticos de HoloLens 2, es un ejemplo de una
implementación de C++, y SimpleButton es
este ejemplo que vemos arriba. Tenemos nuestros controles y queremos
juntarlos en menús, así que solo voy a mostrar dos
de los métodos más comunes para armar menús, que están cerca de los menús
y los menús manuales.
Un menú cercano es mejor
para una interfaz de usuario más duradera. En cierto modo flota cerca del usuario. A menudo se puede fijar en
el mundo para que permanezca, y si el usuario se
aleja, es posible que puedas volver a alcanzarlo
y quedarte con él. Y los menús manuales son mucho
mejores para una interfaz de usuario más rápida, donde el usuario levanta
la mano con la palma hacia la cámara o la cabeza. El menú aparece al lado de su
mano, sigue su mano. Pueden presionar botones y luego bajan la mano y el menú desaparece. Entonces, ejemplos de
ambos podrían ser si tuviera una aplicación de pintura,
usaría un menú cercano, digamos, para su menú principal,
seleccionando una nueva imagen, etc., y un menú manual para
su selector de color porque el usuario solo quiere
poder abrirlo, elegir el siguiente color
y volver a pintar.
Ahora lo que vamos a hacer es
crear un pequeño menú manual básico. Entonces puedes ver una demostración de
lo que construiremos aquí. Es un menú manual con un módulo de aterrizaje
que podemos volar hacia arriba y hacia abajo. Entonces vamos a
saltar al motor. Este es el nivel que
Vanessa acaba de construir. La única diferencia es
que importé el Lander Blueprint
del juego UX Tools. Esto se hizo usando la herramienta integrada Unreal
Asset Migration, y luego simplemente aplané la estructura de carpetas. Entonces comenzaremos colocando
un módulo de aterrizaje en la escena y podremos
deshacernos de este cubo. Entonces tenemos nuestro módulo de aterrizaje.
Ahora queremos construir nuestro menú.
Queremos agregar un
nuevo Actor de Blueprint, que puede ser nuestro Actor de menú,
y podemos llamarlo simplemente BP_Menu porque no soy muy
bueno nombrando cosas. Entonces queremos convertir
esto en un menú de mano, y lo primero que
queremos es la capacidad de mostrar y ocultar ese menú con la mano. Y como mencioné anteriormente, los elementos de la interfaz de usuario son una buena forma de
controlar las jerarquías de la interfaz de usuario, por lo que crearemos
un elemento de la interfaz de usuario en este actor y lo configuraremos como el componente raíz y luego iremos aquí a
nuestra propiedad Visibilidad de la interfaz de usuario y configúralo en Ocultar para
que el menú quede oculto cuando el usuario inicie el juego
porque no quieres que flote en medio de la nada hasta que levanten la mano. Y esa es la
parte de mostrar/ocultar hecha. Lo siguiente que
necesitamos es la capacidad de mostrar el menú cuando
el usuario levanta la mano. Y convenientemente, UX Tools
también tiene un componente que hace exactamente eso, que es UxtPalmUpConstraint.
Y lo que esto hace es
observar las manos del usuario, y cuando levantan la mano para que la palma
mire hacia la cámara, activa la restricción
y acercará al Actor al que está conectado
a la parte de la mano que está establecido en su configuración. Entonces, si revisamos nuestras
opciones de configuración aquí, no necesitamos hacer mucho. Queremos configurar esta
opción Requerir mano plana porque ayudará a
evitar activaciones falsas. Significa que el usuario, si levanta la mano en un
puño, no se activará. Lo convierte en un
movimiento más deliberado para que no
aparezca el menú cuando no lo quieren.
Y luego, bajando a
nuestra propia restricción de mano, esto ya casi está listo. Está configurado para trabajar
con ambas manos, el lado cubital de la mano,
que es el lado de aquí, y está configurado para hacer que el
actor mire a la cámara. Lo único que queremos cambiar es establecer el Margen objetivo en 3 solo para mover nuestro menú
ligeramente fuera de la mano.
Y están todos los componentes que necesitaremos para
aplicar la lógica del menú manual real. Sin embargo, necesitamos conectar esos
componentes para que cuando se active la restricción
, se muestre la interfaz de usuario. Y la forma en que lo hacemos es
usando las restricciones PalmUp: evento On Constraint Activated aquí. Entonces podemos simplemente agregar uno de
ellos a nuestro gráfico de eventos y luego, a partir de ahí,
queremos alternar o habilitar la visibilidad de nuestra interfaz de usuario. Entonces podemos entrar aquí
y obtener visibilidad de nuestra interfaz de usuario. Solo tenga en cuenta: no desea utilizar
*Representación* Establecer visibilidad. Desea utilizar
*UIElement* Establecer visibilidad de la interfaz de usuario, porque la
visibilidad de renderizado no hará cosas como desactivar la colisión en el actor,
lo que significa que el usuario aún
podrá presionar botones, aunque la interfaz de usuario no esté visible. . Entonces podemos incorporar uno de
esos a nuestra escena, y ya está
configurado para hacer Show. Y luego solo queremos
hacer lo contrario cuando la restricción está desactivada, para que podamos tomar eso,
duplicarlo, conectarlo y
configurarlo en Ocultar.
Excelente. Esa es nuestra
lógica de menú completa, así que ahora queremos ponerle
algunos botones reales. Y la forma en que esto funciona es, como antes,
nuestro botón Actores son Actores. No son componentes,
por lo que necesitamos hacer referencia a ellos desde nuestro menú a través de un
componente Actor secundario, para que podamos agregar un Actor secundario
a nuestro Blueprint aquí, y podemos simplemente llamar a este UpButton, ya que mantendrá
presionado nuestro botón de arriba.
. Querremos
seleccionar nuestra clase Actor para que sean los botones UXT, y puedes ver la
variedad de botones predeterminados de estilo HoloLens 2
que tenemos aquí. Simplemente vamos a ir
con el normal. No necesitamos ninguna
lógica de alternancia ni nada por el estilo. Entonces puedo venir aquí y echar
un vistazo más de cerca a nuestro botón. No hace mucho sugerir
que moverá nuestro módulo de aterrizaje hacia arriba, por lo que debemos ingresar a la
configuración de nuestros botones aquí y podemos configurar un nuevo
ícono debajo de nuestro Pincel de íconos.
Podemos abrir nuestro editor aquí y obtener una vista de todos
los íconos disponibles, y creo que esta flecha hacia arriba
funcionará bien. VICTOR: Hola, Carl,
perdón por interrumpir. CARL: Sí. VICTOR: La tasa de bits es un
poco baja en la transmisión. ¿Le importaría continuar
y reiniciar muy rápido y ver si podemos aumentarlo? CARL: Puedo hacerlo. VICTOR: Ha sido
la solución mágica. Vamos a ver. CARL: Sí. ¿ Cómo se ve, mejor? VICTOR: Un poquito, sí.
Un poco. Esperemos que siga así.
Gracias. CARL: Está bien. Sí.
Resulta que el día que lo necesitas la
red se vuelve un poco dudosa. VICTOR: Así es
cuando estamos en vivo.
CARL: Bien, haremos
la última parte nuevamente para nuestro segundo botón,
así que no lo repetiré, si estaba borroso,
así que vamos a seguir adelante y configurar nuestra etiqueta aquí en
algo como Arriba. , así que ese es un buen botón que
tenemos para mover nuestro módulo de aterrizaje hacia arriba. Ahora queremos agregar un botón hacia abajo, por lo que queremos que
queden justo uno encima del otro, por lo que moveremos nuestro
botón hacia arriba la mitad de su altura. Podemos ver aquí que el
tamaño milimétrico de nuestro botón es de 32 milímetros. En unidades Unreal, eso es 3.2,
por lo que queremos subirlo a la mitad, que es 1.6,
y para nuestro botón hacia abajo, podemos simplemente duplicarlo
y llamarlo 'DownButton' y moverlo a menos 1.6.
Y podemos regresar a
nuestro editor de pinceles de íconos aquí, seleccionar la flecha hacia abajo
y cambiar la etiqueta a "Abajo". Una cosa que
notarás en estos botones es que tienen este tipo de costura entre ellos que
no se ve muy bien. Entonces, lo que podemos hacer para crear
una especie de pizarra única que contenga nuestros dos
botones es quitar estas placas posteriores
de estos botones, lo que se puede hacer usando este interruptor Is Plateado,
así que es agradable y fácil. Podemos simplemente desactivarlos y luego regresar
aquí a nuestro Actor y agregar un componente UxtBackPlate, y esto es esencialmente
una malla estática que es igual que
las placas posteriores de pizarra. Entonces sumamos eso
y queremos duplicar su altura para que cubra
ambos botones, por lo que el doble 3,2 es 6,4. Y creo que se ve bien,
así que así fue construida nuestra interfaz de usuario. Ahora sólo tenemos que
conectarlo al módulo de aterrizaje para que realmente se mueva.
Así que volveremos
a nuestro gráfico de eventos y comenzaremos necesitando una referencia
a nuestro módulo de aterrizaje. Ahora, podemos simplemente agregar una nueva
variable, llamarla 'Lander' y convertirla en Referencia de objeto de actor,
ya que en realidad no le importa si en realidad es
un módulo de aterrizaje o no. Solo necesita ser un Actor, y también queremos
hacerlo público para poder configurarlo
desde nuestra ventana gráfica. A continuación, querremos
obtener el estado de nuestro botón y mover el módulo de aterrizaje
según el estado del botón.
Anteriormente, en
el ejemplo con el módulo de aterrizaje y el control deslizante, el módulo de aterrizaje tomaba la referencia al control deslizante. Simplemente estamos invirtiendo eso aquí,
y también vinculamos las interacciones a los
eventos en el control deslizante, lo que también es
posible con los botones, pero realmente no nos
importa el momento en que se presionó el botón. Solo nos importa si se presionó el botón
para este cuadro y si debemos mover el módulo de aterrizaje. Así que ignoraremos BeginPlay y BeginOverlap e
iremos a Event Tick y simplemente consultaremos el
estado del botón en cada cuadro.
Entonces, comenzaremos
con nuestro botón Arriba para poder obtener una referencia
a nuestro componente Botón Arriba. Debido a que este es un
componente de actor secundario, necesitamos
obtener el actor de él, por lo que queremos llamar a Get
Child Actor para eso. De ese Actor secundario,
que ahora es solo un Actor genérico, queremos obtener el botón Actor de ahí,
así que lo convertiremos en UxtPressableButtonActor. Y ahora que
tenemos nuestra instancia de actor de botón, podemos llamar a Obtener
estado en este botón, lo que nos dará el
estado actual del botón, ya sea enfocado,
presionado o liberado. Entonces, desde aquí, podemos hacer
iguales fáciles y agradables y establecer nuestra verificación contra
el estado presionado. Ahora tenemos un bool fácil y agradable. Podemos simplemente continuar si
se presiona el botón, y si se presiona el botón, podemos hacer un AddActorWorldOffset. Y entonces vamos a querer
manipular nuestro Actor de módulo de aterrizaje, no nuestro Actor de menú. No queremos que nuestro menú
salga volando al espacio cuando presionamos el botón, así que podemos conectarlo
a nuestro módulo de aterrizaje.
También vamos a
mover el módulo de aterrizaje hacia arriba uno en el eje z en cada cuadro. En un juego real,
querrás hacer esto según tu
tiempo delta, pero para esta demostración, solo lo haremos
en una cantidad determinada en cada cuadro, y luego simplemente conectaremos
todos estos juntos. y esa es nuestra consulta
realizada para el botón Arriba. Podemos simplemente tomar
esto, duplicarlo, soltarlo justo debajo y conectarlo, en lugar del
botón Arriba, al botón Abajo, y en lugar de mover el
Actor hacia arriba en el eje z, podemos moverlo hacia abajo. Y luego solo necesitamos conectarlos
a nuestro Evento Tick, así que
usaré una secuencia para esto, conectaré todos estos
juntos de manera agradable y desordenada, y eso debería funcionar, así que
compilaremos nuestro Blueprint, lo guardaremos, y regrese a la
ventana gráfica de nuestro editor principal y agregue una instancia
de esto a nuestra escena.
Por ahora lo dejaré ligeramente por
encima del módulo de aterrizaje. Desde aquí, podemos ver la
variable Lander que expusimos y queremos configurarla en
nuestro Blueprint del módulo de aterrizaje estático que pusimos en el mundo, y ahora podemos ver si lo que
hicimos realmente funciona. Entonces podemos presionar reproducir para
ingresar a la simulación de entrada, modo Reproducir en editor.
Ahora tenemos nuestras manos aquí. Como Vanessa explicó anteriormente, puedes usar un desplazamiento hacia la izquierda
para controlar la mano izquierda, y si quieres
girar la mano para que mire a la cámara con la palma plana para
activar la restricción, puedes presionar la tecla de inicio
mientras presionas la tecla Mayús. llave. Pueden ver que tenemos
nuestro bonito menú aquí, y luego podemos usar la
otra mano para acercarnos y presionar el botón demasiado
lejos, y nuestro módulo de aterrizaje vuela, y ese es nuestro increíble
juego HoloLens 2. Así que ahora tienes tu juego. ¿ Cómo lo colocas en tu dispositivo? Hay un par de cosas que
deberá configurar en el editor
para crear un paquete que realmente irá al
dispositivo HoloLens, y todas están en la
configuración del proyecto.
Los dos primeros están en la
descripción de su proyecto. Recibirás advertencias sobre
estos si los olvidas, así que no sientas que
necesitas recordarlo, pero lo primero es que
tu proyecto necesita un nombre. Sin un nombre, no sabe cómo llamar a su
aplicación para HoloLens, así que simplemente
la llamaré 'MyAwesomeGame', y luego también
necesitará el certificado utilizado para firmar su aplicación, necesitará para establecer un
nombre distinguido de la empresa.
Si está utilizando un certificado real, deberá coincidir con
el nombre de ese certificado, pero para esto, solo
usaremos un certificado autofirmado, y usted puede usar
certificados autofirmados para su carga lateral y desarrollo. , así que no hay necesidad de
poner nada importante aquí, así que simplemente pondré CN
igual a 'My Game Company'. Necesitará ese
CN delante de él. No recuerdo el
nombre de la especificación, pero debe ajustarse a la
especificación de nombre distinguido.
Y lo último que debemos
hacer es obtener un certificado, por lo que si bajamos a la
configuración de nuestra plataforma HoloLens aquí, pueden ver que tenemos
esta opción de certificado. Puede configurar un certificado aquí
si tiene uno real, o puede presionar
el botón Generar para generar un
certificado autofirmado y simplemente no podemos seleccionar ninguno.
No necesitamos una clave privada, y eso es todo lo que necesitamos. La aplicación está lista
para ser empaquetada. También puedes ver las otras
opciones aquí para empaquetarlo, como los fondos de tus mosaicos
y los colores de tu pantalla de presentación. También existe la opción de
compilar para el emulador o el dispositivo real aquí, pero solo vamos
a compilar para el dispositivo. Entonces, una vez
configurado, puede simplemente ingresar, empaquetar el proyecto como lo
haría con cualquier otro proyecto, seleccionar dónde
desea empaquetarlo y se compilará.
No voy a crearlo aquí porque
llevará demasiado tiempo y tengo una versión que
construí anteriormente.
Es como un programa de cocina.
Aquí hay uno que preparé antes. Voy a iniciar el HoloLens que está a mi lado para que podamos acceder
al portal del dispositivo, así que no voy a repasar cómo se configura realmente un
HoloLens para el desarrollo. Hay documentos en
docs.Microsoft.com. Básicamente, solo implica
habilitar el modo de desarrollador y también habilitar una
casilla de verificación para el portal del dispositivo.
Luego podemos ir
a Vistas > Aplicaciones, que nos muestra nuestras
aplicaciones, las aplicaciones instaladas y las aplicaciones en ejecución,
como su administrador de tareas. Y si realmente queremos
instalar nuestro nuevo paquete en el dispositivo, podemos subir aquí para Elegir Archivo. Esto ha recordado dónde
construí el paquete. Pero navegas hasta
donde está tu paquete. Seleccionas tu aplicación aquí.
Presionas Abrir. Seleccione un paquete opcional; también
desea verificar esto . Presione Siguiente. Elija el archivo y luego elija
ARM64 VCLibs para acompañarlo. Seleccione esos. Pulsa Instalar. Lo
cargará en el dispositivo y, una vez que haya terminado de instalarse, aparecerá en la
lista de aplicaciones del dispositivo y podrá abrirlo
como lo haría con cualquier otra aplicación. Y eso cubre la
implementación en el dispositivo, por lo que le
entregaré la palabra a Sajid, quien cubrirá
algunas de las mejores prácticas para cuando esté creando sus
aplicaciones HoloLens usando Unreal. SAJID: Muchas gracias.
Déjame configurar la presentación y vamos a comenzar. VÍCTOR: Muchas gracias, Carl. SAJID: Está bien. ¿
Todos pueden ver la presentación? VÍCTOR: Se ve bien.
SAJID: Está bien.
Excelente. Bien. Primero que nada,
mi nombre es Sajid Farooq. Soy
ingeniero principal en Microsoft y trabajo en Realidad Mixta. Me especializo particularmente
en Unreal Engine y cómo funciona en
situaciones de realidad mixta. Voy a hablar
sobre las mejores prácticas para usar UE4 en MR. Normalmente,
cuando doy esta presentación, comienzo con la Configuración del proyecto. Sin embargo, a estas alturas, las Configuraciones del Proyecto están
muy bien documentadas, así que
las revisaré un poco para tratar de llegar rápidamente al meollo de la sección,
que son más cosas de las que normalmente no
escuchas.
Todavía están documentados,
pero no son cosas de las que normalmente escucharías
, así que el editor de materiales. ¿ Cómo se puede volver a utilizar eso de forma
más eficaz, especialmente cuando se trata de RM? ¿
Cuáles son algunas de las configuraciones que harán que la
creación de materiales sea más eficaz? Luego pasaré a la depuración
y creación de perfiles, nuevamente, una de esas cosas que
no se menciona en ninguna parte, específicamente porque la depuración
y creación de perfiles en HoloLens con Unreal Engine aún es muy nueva y
aún se está desarrollando. Y luego, al final, quiero hablar sobre
un par de consejos, dejarles algunos
consejos, un par de cosas, un par de patrones, por así decirlo, sobre cómo usar Unreal Engine para
hacer que las aplicaciones de MR sean más rápidas y mejores. , más confiable
y con más rendimiento, ¿verdad? Y, por supuesto, si escuchas
algún ruido de fondo, creo que es perfectamente normal
cuando trabajamos desde casa, así que tendrás que disculparme de
antemano por eso.
Está bien. Entonces, comencemos con la
configuración de proyecto recomendada, primero que nada, la habitual: estamos tratando de crear algo que estará en el
móvil, la tableta. Será escalable 3D o 2D porque es un dispositivo móvil, y cuando estás creando algo, queremos asegurarnos de
que estamos usando el renderizador Forward Shading
en lugar del diferido, y nuevamente, no pienses
en esto como una elección binaria. El sombreado directo siempre es más rápido y el renderizado diferido
siempre es más lento. Realmente no es así. Forward Shading, de forma predeterminada,
no es necesariamente más rápido. Lo que realmente hace Forward Shading es
brindarle
más flexibilidad, y esa es realmente la idea de que puede
activar y desactivar funciones individualmente. Eso es realmente lo que hace que
Forward Shading sea mucho más atractivo de usar cuando lo usas
para el desarrollo de MR porque puedes
desactivar todas las funciones que de otro modo no usarías,
y es por eso que recomendamos usar el
renderizador Forward Shading. . Entonces, si ve,
ahora hay algunas funciones que luego puede activar y desactivar, y nuevamente, la idea básica
es que debe desactivar todas las funciones que
realmente no necesita.
Si no va a
utilizar ningún tipo de nebulización o nebulización de vértices,
simplemente apáguelo. Si no vas a utilizar
sombras, apágalas. Establezca un límite superior en la
cantidad de mapas de sombras en cascada. Generalmente, el
sombreado es obviamente lento, así que evítalo si puedes. Luego está la
cuestión de la oclusión. Normalmente, cuando
hablas de un juego AAA, si vienes de ese lado, lo primero que
te viene a la mente es: "Activemos la oclusión. Hará que mi juego sea más rápido", porque oclusión básicamente
significa si algo está escondido detrás de otra cosa,
no lo vas a ver, por lo que la computadora hace
algunos cálculos adicionales
para descubrir: "¿Cuáles son las cosas
que no puedo ver?" Y luego no los atrae. El problema es que, en AR,
en realidad, hay un límite en la cantidad de objetos virtuales que
puedes mostrar de todos modos y, en términos generales,
no son tantos como para
quedar ocluidos de todos modos. Lo más probable es que
estén justo frente a usted, por lo que la oclusión de hardware,
generalmente en una GPU limitada, en un dispositivo móvil es lenta de todos modos, por lo que, en general, verá que
si activa la oclusión, especialmente si no tiene
elementos que puedan ser ocluidos, en realidad hará que
su rendimiento disminuya en lugar de mejorar, así que considere
desactivar la oclusión de hardware.
Una alternativa si
debe usar la oclusión es habilitar la
oclusión por software, cierto, y así descargar parte
de ese trabajo de su GPU, una y otra vez, pero eso realmente no
hará una gran diferencia si
de todos modos está vinculado específicamente a la GPU, así que simplemente mantenlo en mente.
Otra cosa, como dije, algunas de esas cosas que
no necesitas, no las uses. Una de las cosas específicas
que quiero destacar es la translucidez. Parece divertido. Es interesante porque la translucidez
es una de esas cosas que probablemente
más asociamos con los hologramas, ¿verdad? Son cosas traslúcidas y efímeras que
quieres tocar.
Sin embargo, desafortunadamente, la
translucidez es muy lenta y,
en la medida de lo posible, debe evitarse. Nuevamente, la plantilla de profundidad,
si la activa… Entonces, si miran,
por ejemplo, esto, verán que hay un
paso de plantilla de profundidad personalizado. En términos generales, realmente
no he visto un caso de uso, un caso de uso sólido
para la necesidad de usar una pasada de plantilla de profundidad personalizada para MR. Y, por lo general,
hay otras formas de hacerlo, así que si no lo necesita, lo
que probablemente no sea así, desactívelo porque una plantilla de profundidad personalizada
requerirá una pasada adicional. E incluso si no
hace nada,
ralentizará su rendimiento. Lo mismo ocurre con cualquier cosa que sea como un
efecto de posprocesamiento. Nuevamente, si estás tratando de hacer RM, si estás tratando de
hacer realidad aumentada, una de las cosas más agradables en las que
estás pensando son algunos de estos
efectos de cortina de humo o efectos de partículas o
cualquier otra cosa.
Cualquiera de ese tipo de efectos, especialmente los
efectos de posprocesamiento de pantalla completa, deben mantenerse al mínimo porque requieren un pase adicional, así que nuevamente,
si es absolutamente necesario, genial. De lo contrario,
deberías deshacerte de ellos. Ahora, una de las cosas que
deberías hacer es siempre
activar Mobile Multi-View, Instanced Stereo. Nuevamente, sin entrar en
detalles de qué son, tenemos dos ojos
y la forma en que vemos, hay mucha superposición
entre lo que vemos en estéreo entre los dos ojos y lo que
normalmente tienen sus hologramas, sus dispositivos. Lo que hay que hacer
para crear VR o AR es renderizar dos veces, de manera
diferente para que el ojo diferente proporcione un
efecto tridimensional adecuado para que su cerebro
lo interprete como si viniera del mundo real y ojos diferentes
vieran cosas diferentes.
Sin embargo, la mayoría de las veces,
como dije, hay una gran superposición entre lo que ves
entre dos de tus ojos, por lo que habilitar Mobile
Multi-View y Instanced Stereo le permite a Unreal Engine reutilizar
parte de esa información, y hace una gran diferencia, por lo que si tiene algo
que se puede instanciar, se puede reutilizar, entonces Unreal Engine
podrá funcionar mucho, mucho más rápido si ha
activado Instancia estéreo y vista múltiple móvil. Y luego, un pequeño dato,
nuevamente, sobre la Configuración del proyecto, nuevamente, no es muy importante, no está particularmente
relacionado con el rendimiento, pero si te encuentras con
mucha compilación de sombreadores…
Estás esperando que tu sombreador
se compile mucho. Muchas veces… hay ciertas
cosas que puedes hacer, y una de ellas es la
Reducción de permutación de sombreador móvil. Entonces, si sabes que
no tendrás un interruptor de luz que se moverá independientemente de la cámara… Si se mueven con la cámara, eso es una cosa diferente, pero si no se van a mover
independientemente de la cámara, entonces En realidad, podemos
establecer este valor en cero de forma segura. Y lo que eso hace es que le permite a Unreal seleccionar varias
permutaciones de sombreadores, y eso acelera
mucho la compilación de sombreadores, por lo que eso será beneficioso. Ahora podría decirse que es la
parte más interesante, así que después de configurar el proyecto,
lo que encuentro es que hay un par de cosas que la
mayoría de la gente no sabe, y veo un par de
errores que la gente comete, especialmente cuando
se trata de materiales. , particularmente porque Unreal Engine no te permite
crear materiales fácilmente…
Lo hace, pero no fácilmente…
directamente usando código de sombreado, por lo que usarás el
editor de materiales, lo cual es excelente, pero es importante comprenderlo. qué está haciendo realmente el editor de materiales
detrás de escena para comprender cómo desea
optimizar las cosas. Entonces, lo primero y lo más básico
que veo es que cuando haces cosas
que requieren cálculo UV, este es el tipo de cosas
que veo que suceden muy, muy comúnmente,
por lo que hay una coordenada de textura.
Quieres tenerlo en mosaico,
entonces harás algo como, tendrás una
constante de cuatro por cuatro, y luego
multiplicarás la coordenada de texto por ese número,
la pasarás a los valores UV y luego pasar eso al color normal o base o al especular. Y nuevamente, este consejo que estoy
dando es igualmente aplicable a cosas generales no relacionadas con la realidad virtual
. Ahora, lo que esto realmente hace es
que, recuerden, en la GPU, hay dos pases principales,
por así decirlo, o módulos. Entonces está el sombreador de vértices y luego está el
sombreador de fragmentos, ¿verdad? Entonces, el sombreador de vértices solo
ocurre para cada vértice, y el sombreador de fragmentos
ocurre para cada píxel.
Ahora, en términos generales,
en la pantalla, especialmente para MR/VR,
si tienes algo como un cubo, solo tienes ocho vértices, pero la cantidad de píxeles que
tienes es enorme. Entonces, idealmente, para muchos cálculos
como este, desea moverlos
del sombreador de píxeles o del sombreador de fragmentos
al sombreador de vértices. Si lo hace de esta manera, si lo hace de la manera que lo
hace normalmente, calculará
esto por cada píxel, literalmente,
y por eso no querrá hacer eso.
Entonces, una forma alternativa que
ofrece Unreal Engine son los llamados UV personalizados. Entonces, si observan, por ejemplo,
he habilitado UV personalizados aquí, para que puedan ver
el color base regular, metálico, especular, etc., pero pueden ver que hay
dos pines adicionales que normalmente no están allí. Te mostraré cómo conseguir
esos pines en un segundo, pero ves que están
ahí, ¿verdad? Entonces, lo que
idealmente desea hacer es tomar ese texcoord y desea multiplicarlo,
hacer lo que esté haciendo, pero luego desea
moverlo al UV personalizado. Y ese UV personalizado
luego se usa en el UV que tiene aquí, de modo que
cuando cambie esto, todo lo demás utilizará los
UV personalizados. Y nuevamente, el beneficio de esto es que pasa por
el sombreador de vértices, por lo que será
mucho, mucho, mucho más rápido.
Ahora, para mostrarle cómo
hacer esto realmente. Lo que quiere hacer es
su valor UV no personalizado que realmente puede
ver aquí, en la configuración de Material, si lo establece en más de cero, lo verá
aparecer aquí. Entonces, si lo configura en
uno, verá uno. Si lo configura en
dos, verá dos. Creo que hay un límite y
, de nuevo, ese es el valor que realmente quieres
usar, así que un pequeño dato. No he visto a
mucha gente usarlo. La mayoría de la gente simplemente sigue adelante
y utiliza esta técnica, que desaconsejo encarecidamente.
Ahora, otra cosa es que
si observan sus materiales y demás, verán que el
cálculo del mapa de luz nuevamente se puede reducir. Entonces tu mapa de luz tiene
mucha información. Además de la
información plana y difusa, también tiene
información direccional. Ahora, nuevamente,
debido a que tenemos el mundo real, esa información direccional
probablemente no sea tan perceptible, pero está consumiendo parte
de nuestro tiempo de cálculo, por lo que podemos desactivarla. La otra cosa es que
no necesariamente necesitas una precisión total, ¿verdad? El
completo es de 32 bits. Puedes continuar y
desactivarlo para obtener una precisión única que, nuevamente, la mayoría de las veces
ni siquiera notarás.
Nuevamente, si lo notas,
puedes subirlo. Si está trabajando en
visualización médica, casos médicos, a veces los necesitará, pero la mayoría de las veces puede
deshacerse de ellos y, nuevamente, las GPU móviles de forma predeterminada
tendrán que realizar una instrucción que tomará el doble
de cantidad. de tiempo si estás usando precisión total,
así que tenlo en cuenta. Otra
cosa importante son los interruptores de sombreado. Entonces, si estás
intentando, en un sombreador, intentar encender y
apagar algo, tienes un interruptor y puedes hacer cosas como un
booleano, ¿verdad? Ahora, lo que notarás es que
Unreal Engine tiene un prefijo.
Permanecerá estático
booleano, interruptor estático. Entonces, cada vez que
use algunos interruptores, debería preferir
usar parámetros estáticos en lugar de los no estáticos
, ¿verdad? Los dinámicos. ¿Por qué? Porque cuando
realmente estás ejecutando, incluso antes de ejecutar,
en tiempo de compilación, el compilador, Unreal Engine, puede crear una permutación
de ese sombreador en particular con ese
booleano particular incorporado. Por lo tanto, no es un valor dinámico.
Es literalmente como si creara dos versiones diferentes
de ese sombreador, una con el booleano activado y
otra con el booleano desactivado. ¿ Bien? Y entonces, dependiendo de
cuál sea el booleano estático configurado, simplemente lo realizará sin tener que hacer un
condicional en tiempo de ejecución, por lo que será mucho, mucho más rápido. La desventaja,
como mencioné, es que significa que
tiene que crear una permutación. Entonces, si le preocupa cuántas permutaciones
y compilaciones de sombreadores, entonces sus parámetros estáticos
aumentarán eso. Nuevamente, en general, reduzca la
cantidad de parámetros en general, pero si tiene que usar parámetros, opte por parámetros estáticos
en lugar de parámetros dinámicos.
Entonces supongo que es una
especie de equilibrio, así que reduzca la cantidad de parámetros. Intente utilizar parámetros estáticos
en lugar de parámetros dinámicos, a menos que realmente no le preocupe la
compilación de sombreadores. Está bien. Y luego están los
casos materiales. Así que hay dos tipos
de instancias materiales. Entonces, si tienes una
instancia material, y… Lo cual es genial.
Entonces tienes un material base, y luego aplicas tus
diferentes instancias de material, y lo que quieres hacer es simplemente
variar los parámetros para poder usar la misma base.
Recuerde que lo más probable es que lo
que esté buscando sea una constante de instancia material
, MIC, ¿verdad? En lugar de un MID, que es una
instancia material dinámica porque la mayoría de las veces, cuando
estableces el valor de ese parámetro en cualquier otra cosa, en realidad no
lo animarás la mayor parte del tiempo. Entonces, si no
lo vas a modificar dinámicamente, entonces lo que quieres hacer es convertirlo en una
constante de instancia material.
Ahora, si está preocupado,
estará pensando: "¿Cómo sé si lo que estoy usando es
una constante de instancia material o si por error estoy usando una
dinámica de instancia material?" es bastante fácil de decir. Si creó
la instancia de material a través del navegador de contenido haciendo
clic derecho y diciendo "Crear instancia de material",
es decir, de forma predeterminada, una constante de instancia de material.
Es una constante. Pero si realmente siguió adelante
y lo creó usando código, entonces sabrá si
creó una constante o una dinámica. Lo más probable es que, si estás creando
algo mediante código, entonces estés creando una
instancia de material dinámica. Ahora, una de las cosas, de nuevo,
si quieres animar, así que hablamos de esto, dijimos: "¿Qué pasa si quieres animar? ¿ Qué pasa si quieres hacer cosas
como que algo se cubra de nieve con el tiempo o onda usando
alguna manipulación de vértices?" entonces está bien. Entonces necesitarás una
instancia material dinámica. Eso es perfectamente lógico. Es posible que incluso puedas
usar una constante de instancia material si solo necesitas
encender y apagar cosas, pero si realmente necesitas
hacer cambios dinámicos, entonces es posible que necesites un MIC, ¿verdad? Sin embargo, si está utilizando una
dinámica de instancia de material, incluso en general, le sugiero encarecidamente que consulte las
colecciones de parámetros de material.
Lo siento. Esta era una de esas cosas de las
que estaba hablando, sobre las que realmente no
tengo control. Entonces, las
colecciones de parámetros de materiales son básicamente un activo y almacenan un conjunto arbitrario
de parámetros escalares y vectoriales, a los que se puede hacer referencia
en cualquier material. ¿Bien? Entonces, normalmente lo que
tendría que hacer es establecer el
valor de cada parámetro individual en su instancia de material,
y eso es lento, ¿verdad? Si lo haces individualmente, básicamente Unreal Engine
también tiene que hacerlo individualmente. No sabe que estas
cosas se pueden agrupar y que se pueden almacenar en
caché si es necesario. Y entonces, la colección de parámetros de material
, en esencia, es una forma de forzar
que el almacenamiento en caché diga: "Está bien, están todos juntos".
Si quiero cambiar algo, no quiero tener que ir
uno por uno y cambiarlos. Puedo tomar todo esto
como una colección una vez y luego cambiarlo. ¿Bien? Y, por supuesto, intenta usar cosas
como rutas de animación y la línea de tiempo o el editor para poder hacer la animación si realmente necesitas hacerlo.
Eso cubre los materiales, algunas de las cosas que
creo que son importantes en relación con los materiales. Ahora quiero hablar rápidamente
sobre la creación de perfiles y la depuración. Una vez más, esto es relativamente nuevo porque todavía se están trabajando en muchas herramientas
y, por lo tanto, la herramienta principal, en realidad, es crear perfiles en Unreal Engine, si quieres saber
qué tan rápido se está ejecutando algo o, lo que es más importante,
dónde estás. Si observa desaceleraciones, desea utilizar Unreal Insights,
que es la herramienta integrada. Desafortunadamente, hasta la versión 4.25,
Unreal Insights no funcionó.
Ahora está disponible en Unreal 4.26, que literalmente se acaba de lanzar, por lo que si encuentra algún error,
infórmenos si la
versión de lanzamiento de Unreal Insights realmente funciona o no. Entonces Unreal Insights
es una herramienta excelente. Básicamente, le proporciona
información detallada sobre la sincronización tanto de la CPU como de la GPU. Le indica qué está haciendo la CPU y cuándo y qué
está haciendo la GPU y cuándo. Y puede
grabar arbitrariamente sus propios marcadores para crear marcas de tiempo.
Podrías decir: "Quiero saber cuánto tiempo lleva
hacer exactamente esto y esto", así que puedes poner un
marcador y puedes verlo, y te lo mostrará dentro de
la ventana de Unreal Insights, y luego puedes ver.
Como puede ver,
es un poco pequeño aquí, pero puede ver cómo en
realidad le indica cuánto tiempo está tomando cada uno de estos
diferentes subprocesos. Y si miras este lado, verás que
te proporciona la pila de llamadas completa, y ésta puede mostrarte
tanto la CPU como la GPU y, como puedes ver, puede mostrarte
los números enteros y los flotadores.
Puedes ver cuánto,
cuál es el recuento, cuánta memoria
está consumiendo, etc., excelente, excelente cosa.
Si desea ir un poco más allá, si lo necesita porque
Unreal Insights no le brinda
lo que necesita hacer, hay un par de cosas que Unreal Insights
no le brindará. En su dispositivo, en HoloLens, hay una herramienta que
le permite crear seguimientos ETL. Entonces, puedes
crear rastros ETL, que son básicamente rastros
desde Windows, y esos rastros
te brindan mucho más… Están a nivel del sistema operativo. Le brindan
información mucho más detallada y puede ver esos
seguimientos ETL con herramientas como GPUView,
que está aquí, para que pueda
ver la cola de hardware, incluso, en presentación,
o puede usar el Analizador de rendimiento de Windows, WPA. ,
y ambos son gratuitos. Puedes descargarlos.
WPA es parte del SDK, que puede
descargar, Windows SDK. GPUView, también puede encontrarlo en línea
, descargarlo y le proporcionará
mucha más información.
Y si desea
realizar un poco de depuración, existen algunas
herramientas excelentes. Pix, nuevamente, forma
parte del SDK de Windows, pero también puedes encontrarlo en línea. Pix le proporcionará información
para depurar los comandos de la GPU. Funciona, de forma predeterminada,
con HoloLens. Debe tener en cuenta
que en 4.25 y anteriores, se utiliza principalmente DX11. La implementación de Unreal Engine
usa DX11, por lo que necesitarás usar el
modo de compatibilidad DX11, y luego en 4.26 en adelante,
creo, en OpenXR puedes elegir DirectX 12,
así que debería estar bien. Y Pix, por defecto, es DirectX 12. También puedes usar ETL
Traces a través de GPUView o WPA para una vista completa,
como dije antes.
Solo recuerde usar
sus símbolos de depuración, por lo que los archivos PDB
los necesitará. Normalmente, los ignora, pero necesitará esos archivos PDB para poder
asignar las trazas ETL a las llamadas de función correctas
dentro de Unreal Engine. De lo contrario,
será muy difícil. Otra alternativa que he
propuesto como alternativa y que a mucha gente
le encanta usar es RenderDoc. La razón por la que lo pongo
como una alternativa en lugar de una de las cosas principales es porque en este momento el complemento que viene para RenderDoc
dentro de Unreal Engine solo funciona para el
escritorio, de forma predeterminada, y puedes hacer que
funcione para HoloLens, pero Requiere
saltar algunos aros que, nuevamente, son para principiantes
o incluso no para principiantes, pero en general es un poco más difícil. Aún así,
creo que incluso la versión de escritorio sigue siendo muy buena para la depuración porque el proceso
seguirá siendo el mismo, incluso si no estás
interesado en el momento.
El tiempo será incorrecto porque lo está ejecutando
en el escritorio, pero aún
le da una muy buena idea de dónde
está fallando su canalización, dónde está cometiendo errores.
Está bien. Ahora pasaré a
la última sección de mi charla, que consiste básicamente en algunos consejos. Primero que nada, digo esto a menudo. Lo diré de nuevo. Utilice las herramientas integradas
tanto como sea posible en lugar de reinventar la rueda. Entonces, si hay algo
que quieres hacer y tienes que escribir mucho
código, recuerda, Unreal Engine es un
motor completo. La mayoría de las veces,
tendrá algo allí que puede hacer lo que está
tratando de buscar y, en la mayoría de los casos,
estará más optimizado que lo que crearía a mano.
Entonces, para que te hagas una idea, mucha gente no conoce
el Variant Manager, ¿verdad? Hablaré de qué
es el Variant Manager.
Mucha gente no conoce
el componente spline. Ahora, no estoy hablando
del componente de malla spline, que le permite crear
mallas a partir de una spline. Eso es algo diferente. Estoy hablando
del componente spline, simplemente un spline con una curva que puedes usar como entrada
para animación y demás. Y luego también hay un
componente de línea de tiempo, que mucha
gente conoce, así que no hablaré mucho sobre ello, pero nuevamente, el componente spline
y el componente de línea de tiempo juntos funcionan muy
bien de la mano. Entonces el Variant Manager: el Variant Manager
es básicamente una herramienta. Si tienes un programa, que es
un caso de uso muy común en AR, quieres ver
diferentes variaciones de lo mismo. Es posible que quieras ver
cómo se vería tu auto con un determinado color o con ciertas ruedas
o ciertas personalizaciones o, por ejemplo,
estás tratando de comprar muebles y estás tratando de
comprar, digamos, algunos electrodomésticos y Estamos
mirando un refrigerador e intentando cambiar y
cambiar diferentes tipos.
Curiosamente, afortunadamente, eso se puede hacer sin
ningún tipo de codificación porque Unreal Engine
tiene algo llamado Variant Manager, lo que
significa que el artista puede preensamblar
muchos de estos recursos, e incluso puedes seguir
adelante y, de hecho… Entonces, digamos, por ejemplo.
Tenemos esta bicicleta, la tenemos roja y luego tiene una llanta delantera.
Tiene tanque de gasolina. Tiene todas estas
cosas diferentes, y luego puedes
hacer clic en el amarillo y tendrá un
conjunto diferente de actores, por ejemplo. E incluso esos actores,
dentro de los actores, pueden tener un
conjunto diferente de propiedades, y luego incluso esas propiedades pueden manipularse mediante
valores o funciones, incluso eventos, de modo que cuando paso de, digamos, este a este,
podría Incluso llamar a una función que me permita
preparar esto correctamente.
Entonces, todo esto tiene un
rendimiento excelente en el sentido de que el Administrador de variantes
tiene mucha información sobre lo que intentas
hacer en tiempo de compilación porque en realidad configuras
todo esto en tiempo de compilación y potencialmente optimizas mucho de
ello, ¿verdad? ? Pero si haces
todo esto a mano, si escribes
estos planos grandes que te permitan cambiar, lo más probable es que estés
reinventando la rueda. Ahora bien, hay casos
en los que no desea utilizar el Administrador de variantes. Por lo tanto, deberías utilizar
el Administrador de variantes si tu proyecto tiene muchos
activos con diferentes variantes. Si generalmente necesita
realizar intercambios de propiedades en el lugar o si su artista desea
una manera fácil de usar la GUI para configurar variantes de activos
que, nuevamente, proporciona Unreal.
Sin embargo, en general, si necesita llamar a
funciones complejas y necesita hacer mucho
más que en términos generales, en realidad no está mirando
el Administrador de variantes porque no lo sé.
El beneficio de rendimiento probablemente no
será tan pronunciado, y entonces tampoco
necesariamente querrás usarlo si tienes muchos metadatos
para cada variante, y no son solo propiedades, sino que tienes muchos
gastos generales. de algunos datos de actores que deben procesarse cada
vez que se cambia a algo. De nuevo, Variant Manager, úsalo. Esto va de la mano con
Datasmith, que, nuevamente, es otra cosa que
no he mencionado aquí, pero
recomiendo encarecidamente que le eches un vistazo. Entonces, Datasmith es una excelente
manera de importar diferentes cosas desde diferentes herramientas, como, por ejemplo, Maya o 3D Studio Max sin tener que
ingresar a su motor y luego cambiar las propiedades porque es
una especie de puente gratuito. El componente spline,
como estaba hablando, básicamente te permite
crear splines visualmente. Nuevamente, una manera fantástica
de crear animación sin hacer nada.
Entonces creas una animación en la que tienes algo
que entra o sale volando o simplemente como la demostración del módulo de aterrizaje que
viste donde era interactivo, entonces haces clic en él
y sube y baja.
Pero si supiera que
siempre subiría y bajaría de acuerdo con una
ruta compleja particular, podría usar esa demostración del
módulo de aterrizaje modificada para que al
hacer clic en el botón realmente usara el componente spline como un
camino y permitiera que su módulo de aterrizaje se moviera desde el principio. hasta
el final de ese camino, ¿verdad? Y nuevamente,
el componente spline se puede crear dentro del motor
muy, muy fácilmente. Por lo tanto, también podrías usarlo como
valor de interpolación. Puedes hacer cosas como cambiar
la suavidad del movimiento o la velocidad y
todo visualmente, por lo que es muy, muy amigable para los artistas, por lo que
te recomendamos que lo uses.
Menciono esto porque he
visto a algunas personas seguir adelante y usar planos para hacer
todo esto a mano y hacer algunos cálculos extraños
para descubrir cómo hacer que algo se
mueva, y al final, descubro que son simplemente me
muevo de A a B. Ahora, si estás pensando: "Esto no funciona muchas veces porque no sabes dónde
estarán A y B", recuerda, esto es
muy, muy flexible. . Entonces, podrías tener un
componente spline donde el inicio y el final sean
controlados por otro actor, de modo que sea
hijo de ese actor y puedas moverlo
a donde quieras. Y también puedes actualizarlo
dinámicamente, así que usa estas cosas. El otro consejo es trabajar tanto como sea posible
en tiempo de compilación o en el almacenamiento en caché de inicio. Entonces mucha gente no hace eso. Muchas veces hacen cosas como buscar o obtener, y eso puede ser muy
lento, así que no lo hagas. Hay cosas como, por
ejemplo, el OnBeginPlay, ¿no? Y recuerda,
eso es parte del plano del nivel.
Veo gente rehuyendo
el nivel Blueprint. Veo gente que usa
mucho el plano de actor, pero veo muy pocas personas que
usan el plano de nivel. Creo que es una oportunidad perdida. Puede usar un Blueprint de nivel, especialmente OnBeginPlay,
para almacenar en caché muchas de las cosas que luego podría usar
el Blueprint del actor. Es un buen complemento para
todo el nivel que puedes usar, así que úsalo.
No rehuyas eso. Sí, es global, pero se puede utilizar adecuadamente
para acelerar las cosas. Y luego, otra cosa que
veo que la gente no usa tanto es el guión de construcción. Un guión de construcción es
realmente útil. Se puede usar para hacer cosas como
ejecutar código para verificar cosas, ¿verdad? Decir:
"¿Esto realmente va a funcionar? ¿Se verá bien? ¿
Está en el lugar correcto?". Y, curiosamente, como
es un script de construcción, puede hacer todo eso
incluso en tiempo de compilación, de modo que si ha escrito algún código que se basa en colocar ciertas
cosas al lado de otras o en una ubicación correcta, ponerlo en un script de construcción permite Debe ejecutarlo en el editor y luego, a medida que mueva las cosas, se actualizará junto con él y siempre
le brindará información inmediata sobre si está haciendo
algo bien o no.
Está bien.
Así que ya me quedan 30 minutos, muchas gracias. Ahora voy a
detener mi presentación y básicamente se la pasaré
nuevamente a Víctor. VÍCTOR: Muchas gracias, Sajid. Hay muchos buenos conocimientos
que no solo se aplican al desarrollo de HoloLens,
sino también en general a sus
proyectos en Unreal Engine. Vinculé un video de consejos y trucos al Administrador de variantes en el chat. Seguiré adelante y pegaré eso nuevamente un poco más aquí también, y muchas de las cosas de las que
Sajid estaba hablando, si estás interesado en
profundizar un poco más, como Unreal Insights, etcétera, Hay mucha documentación
en docs.unrealengine.com. Excelente. Vamos a ver. Creo que Luis… LUIS: Sí. Escuché mi nombre.
VICTOR: Sólo me estaba asegurando. ¿ Hubo algo más
en la llamada que usted… Lo siento. Ha sido un largo día. No recuerdo si tuviste
una presentación o no para nosotros. LUIS: No me importa. No, no lo hago. Sólo estoy aquí para
responder cualquier pregunta que mis colegas no puedan responder y sé cómo responder,
que no serán muchas.
VÍCTOR: Perfecto.
No hemos recibido tantas preguntas al respecto. Sinceramente, creo que
todas sus presentaciones fueron tan rápidas y precisas que
somos bastante claros y no hemos recibido ninguna
pregunta al respecto. También creo que la gente
está entusiasmada por poder
recibir una HoloLens 2 que, en este momento, apenas
está disponible para nosotros, lo cual es emocionante. Afortunadamente,
pude conseguir uno y estoy entusiasmado de
profundizar en estos temas. Es un mundo completamente nuevo, ¿verdad?
Realidad mixta. Muchos de nosotros, los diseñadores, aún no hemos
podido experimentar con esto, ¿verdad? Hemos hecho mucha realidad virtual.
Hay un seguimiento manual involucrado, pero la oportunidad de
poder ver el mundo real y luego aumentarlo
con hologramas es nueva, por lo que hay mucho que experimentar
y experimentar.
Quizás un par de
preguntas para ustedes. A medida que has estado jugando
con la tecnología, ¿ cuáles son algunas de las cosas
que más te llaman la atención, tal vez algo que
no sabías que iba a ser asombroso
o extraño cuando se trata de
diseñar realmente para el dispositivo? ¿ pero también usarlo? LUIS: Creo que para mí ya hemos estado
trabajando con HoloLens por un tiempo , internamente, por lo que no es tan nuevo como
lo es para otras personas, por lo que no puedes acostumbrarte
a su maravilla. Tengo que recordar cuando
comencé con HoloLens las cosas que realmente me llamaron la atención, y creo que una de las
cosas que realmente… Es muy tonto, pero una de las
cosas que me impresionó mucho es la forma en que tienes rayos. Al
salir disparado de tu mano, ese rayo golpea los
muebles de tu habitación. Esa conexión entre lo que
está generando la computadora y lo que existe en la vida real, esa fue la primera vez
que pude sentirla, y eso realmente me dejó alucinado.
Es muy tonto. No tiene
mucha utilidad, digamos, excepto conectar la
computadora con el mundo real, y ese fue un momento
de inspiración para mí. SAJID: Para mí, es interesante. He estado haciendo gráficos
durante mucho tiempo, y la mayoría de las veces
haces cosas… [VOCES DE LOS NIÑOS
DE FONDO] Lo siento. Esto sucede todo el tiempo.
Lo lamento. Está bien. Está bien.
Solo estaba diciendo que lo interesante
es que tú… He estado haciendo gráficos
durante mucho tiempo y he visto todo
tipo de experimentos que hacemos con el procesamiento de imágenes, superponiendo cosas una
encima de otra.
, y la mayoría de las veces es
información bidimensional porque proviene de una
cámara a la que estás acostumbrado. Y lo que me llamó la atención la primera vez que usé HoloLens fue:
"Oh, espera. Tiene profundidad". Fue alucinante
porque siempre estaba acostumbrado a hacer cosas como trucos, verdad, para que algo apareciera
detrás o para ocluir, y te olvidas por completo
que es increíble que tengas un
dispositivo que es móvil, que está
literalmente en tu cabeza, y hace todo
eso en tiempo real a 60 fotogramas por segundo
junto con la profundidad y luego sabe qué hay
delante y qué hay detrás. Y abre muchas posibilidades
en términos de posibilidades porque realmente no te das
cuenta hasta que empiezas a trabajar con herramientas tradicionales
que no tienen la profundidad de cuánto
dependes realmente de ellas. Entonces, incluso haciendo cosas
como, por ejemplo, hablabas
de cirugía virtual. Hemos visto personas que
superponen herramientas en un cuerpo para enseñar a otras personas, a
otros médicos sobre cirugía, por ejemplo, a estudiantes. Pero si no
tienes esa profundidad, es muy, muy evidente y luego, como dije,
con HoloLens simplemente funciona porque la tienes
y lo reconoce.
Y hemos visto a personas de nuestro equipo, como Nick Klingensmith, experimentar
incluso haciendo cosas como tomar información
del mundo real en términos de iluminación y
luego integrar un objeto para que cuando
lo mires o lo gires, sea no solo está iluminado de manera diferente
al resto del mundo, sino que su iluminación realmente
coincide con el mundo real, y esa es la información de la
que toma. Pero nuevamente, como dije, para mí
es súper fascinante que algo pueda hacer eso
a 60 cuadros por segundo, así que para mí fue alucinante. VICTOR: Recuerdo la primera vez que
probé la demostración de "Mission AR" que se presentó en SIGGRAPH, casi sentí que mi
cerebro llenaba el vacío y siento que en
realidad estoy tocando algo cuando lo agarro e
interactúo con él. los menús, aunque no esté ahí. ¿Bien? Y es interesante
cómo tu cerebro primitivo simplemente llena eso porque es a lo que estás acostumbrado, y creo que eso se debe
al hecho de que la profundidad es tan real que
tu cerebro reptil simplemente dice: "Bueno, esto es se supone que está aquí, y deberías sentir algo cuando interactúas con él".
SAJID: Absolutamente. Sí. Julia Schwartz hizo una
presentación sobre eso, y ese era en realidad
uno de nuestros objetivos, lograr que las
interacciones que estás haciendo se traduzcan de
lo que harías normalmente, que sea lo esperado para
que puedas De hecho, toma cosas y hazlas en lugar de tener que
cambiar tu cerebro y decir: "Oh, estoy en AR, así que tengo que
interactuar con él de manera diferente". Y ese fue uno de los
objetivos que creo, sí, creo que ella lo dijo
bien, que nuestro cerebro interpola mucha
de esa información y porque está funcionando a
un ritmo muy rápido y porque de todos modos existe
toda esa información que nuestro cerebro normalmente
requiere. , simplemente lo fusionamos para
que aunque… Tienes razón. Aunque
sólo estés sosteniendo algo que no existe,
sientes: "Tengo algo en la mano", aunque en realidad no estés
sosteniendo nada. Es interesante ese sentimiento.
LUIS: Creo que el seguimiento manual articulado
fue un punto de inflexión. Es algo que cuando
usabas HoloLens 1, sentías que instintivamente
querías tocar cosas. Realmente sentiste que
debería estar ahí y creo que tenerlo en HoloLens 2 realmente cambia la experiencia y la hace
mucho más intuitiva. Es brillante. Y espero con
ansias que el seguimiento manual se utilice
también en otros lugares. Gran parte de lo que
hacemos en UXT es crear una interfaz de usuario que pueda manejarse con las manos, lo cual es algo
relativamente nuevo y realmente interesante, y me encanta la forma en que
puedo darle HoloLens 2 a alguien por primera vez, y ellos Vamos a saber
cómo navegar por los menús.
No necesitan ningún
tipo de instrucciones. Ellos pueden simplemente irse y usted hace lo que cree
que debe hacer. Simplemente tocan
algo y éste reacciona, y creo que es una muy
buena parte de la experiencia. VICTOR: Ese es el sueño de
cualquier diseñador de UX, ¿verdad? Que la gente simplemente entienda
lo que se supone que deben hacer y no es necesario que se lo expliques. Entonces, algo
que ha sido bastante complicado cuando se trata, debería decir, del
diseño de interacción 6DoF proveniente de controladores de movimiento,
incluso 3DoF donde generalmente, cuando no estás
usando solo las manos, permite a los usuarios
saber qué botones hacen qué, puede ser algo complicado. Especialmente si la persona no está
acostumbrada a este dispositivo en particular que está usando. En este caso, los controladores de movimiento tienen las manos,
y ese es un botón. Hago clic en el botón.
Es muy intuitivo y no se
requieren muchas explicaciones.
Es súper emocionante. Bueno, nos estamos quedando un
poco cortos de tiempo aquí. Oh no importa. En
realidad había una pregunta aquí. Correcto. Entonces, Sajid,
mencionaste la oportunidad de poder recopilar
datos de iluminación del mundo real. ¿ Existe una función llamada
como parte del complemento para obtener esa información
de HoloLens? SAJID: No que yo sepa.
Entonces proporcionaré ese enlace. Tendré que encontrarlo,
pero lo hizo, como dije,
Nick Klingensmith en nuestro equipo, y no recuerdo si
es parte de Stereo Kit, pero básicamente tiene una
herramienta llamada Stereo Kit que básicamente
permite le permite crear software OpenXR para
HoloLens y cualquier otro dispositivo. Funciona con Oculus y
todos esos otros dispositivos muy, muy fácilmente en C#. Entonces Nick también creó, como
dije, esa información de iluminación. Lo buscaré y
luego lo publicaré en algún lugar, pero sí, puedes lograrlo, pero hasta donde yo
sé, no de forma nativa.
Luis, ¿lo sabrías? No creo que sea parte de
nuestro kit de herramientas de forma nativa, ¿verdad? Sí. No. LUIS: No, no lo creo. SAJID: Sí, no forma parte
del conjunto de herramientas de forma nativa, pero es información
que se puede obtener. Las bibliotecas son de código abierto
y están disponibles, así que intentaré
encontrar un enlace a ellas. VICTOR: Para cualquier
conversación futura con respecto a la transmisión en vivo, puedes ir a
la publicación del anuncio del foro si tienes alguna pregunta o quieres hablar sobre los
detalles de esta transmisión en vivo.
Pegué el enlace
en el chat ahora mismo y también estará en la
descripción de YouTube. Es emocionante. [Ininteligible] preguntó: "Entonces, ¿existe
un mapa cúbico generado en tiempo real para los reflejos y el ambiente
de los objetos en el mundo holográfico?" SAJID: Nuevamente, hasta
donde yo sé, no de forma nativa. Nuevamente, Luis puede corregirme si me
equivoco, pero no de forma nativa, y estas son, nuevamente, cosas que son
ciertamente posibles, ciertamente factibles, pero
no entran dentro del UXT nativo o la experiencia nativa
que debemos brindar. , y hay muchas funciones. Cada uno tendrá su
propia idea de lo que quiere y lo que necesita. Lo que queremos hacer en
general, y de nuevo, Luis, puedes corregirme,
pero lo que queremos hacer es proporcionar un
pequeño subconjunto muy eficaz de lo que creemos que será el
núcleo de lo que todos necesitan, y luego todos estos otros
Las cosas son ciertamente cosas que la gente puede agregar,
descargar y empaquetar.
Hay varios ejemplos
, varios kits de herramientas, muchos de ellos de Microsoft, algunos incluso de gente
ajena a Microsoft, pero existen.
Y más concretamente, Víctor, sí, tendré en
cuenta que hay un foro e intentaré publicarlos
en los foros. Creo que será
útil para las personas que se conecten
más tarde y vean esto para poder ir al
foro y encontrar esos enlaces. VICTOR: Sí,
para aquellos que nos sintonicen, el VOD de esta
presentación de Microsoft también estará disponible en YouTube dentro de las próximas 24 horas.
Genial. ¿ Hay algo más
con lo que les gustaría dejar el chat antes de que finalicemos la transmisión de hoy? Vaya a jugar con las
herramientas UX de realidad mixta y recuerde que el
modificador especial… Oh, ni siquiera puedo hablar en este momento. En la categoría de modificador especial,
"¿Es esto la vida real?", Microsoft generalmente
patrocina un dispositivo HoloLens así como un kit de desarrollo Kinect de Azure, lo siento,
para todos los ganadores
de esa categoría, hasta cinco personas,
lo cual es muy emocionante.
Espero que podamos ver
muchas presentaciones de XR al Jam. Seguiremos adelante y los tocaremos. Y sí,
gracias a todos por venir y hacer sus
presentaciones aquí hoy. Debo decir que estaban muy,
muy, muy bien pensados. Me aseguraré de
publicar esto en YouTube para que las personas puedan
disfrutarlo o aprender tan pronto como tengan en sus
manos un dispositivo HoloLens. También pegué algunos enlaces en la
publicación del anuncio del foro.
Puede encontrarlos en
la sección Recursos. Tenemos la
descripción general del desarrollo de Unreal en el lado de los documentos de Microsoft, así como las aplicaciones de muestra de Unreal. ¿ Hay algún otro
recurso que sepa que existe y que le gustaría señalar? SAJID: Solo quería
agregar rápidamente no directamente en términos de recursos, pero creo que Carl mencionó
esto en su presentación, probablemente Vanessa también, pero usted mencionó que
cuando obtenga sus HoloLens, podrá experimentar con ellos, pero No
necesariamente tenemos que esperar porque sí tenemos el emulador. Las manos, puedes verlas,
los clics de los botones, etc., así que yo diría que experimentes con ello, incluso con lo que tienes. Muchas veces
verás que cuando lo exportas
a un dispositivo real, es una experiencia bastante sencilla, por lo que el emulador
te da una idea bastante buena, salvo algunos pequeños problemas.
En términos de recursos,
los recursos primarios, por lo que estas diapositivas
también estarán disponibles. Víctor, ¿sabes dónde
podemos poner las diapositivas? VICTOR: Si continúas
y me los envías, los subiré y los vincularé
en la publicación del anuncio del foro. SAJID: Genial, sí, porque las diapositivas que
tengo en particular, y estoy bastante seguro de que las de
Carl y Vanessa también, tienen enlaces,
y cada vez que menciono algo, hay un enlace real
a dónde pueden ir y encontrar más información
sobre esa cosa en particular, tan similar a lo que
estabas hablando en términos del
Administrador de variantes y demás.
Entonces, la información en este
momento, la forma en que funciona, está un poco dispersa entre
Microsoft y Epic. Estamos tratando de unificar ese esfuerzo para que la gente sepa dónde
buscar qué información, pero ha mejorado significativamente, pero con el tiempo, lo que estamos tratando de
hacer es tratar de proporcionar una forma muy guiada de
encontrar información, como esta. paso número uno,
paso número dos, paso número tres, y estará en el
sitio web de Epic y Microsoft, y
desde allí podrá ir a otros recursos. Pero aparte de eso,
esta diapositiva en particular que publicará Víctor
también tendrá al final algunos enlaces a algunos
tutoriales realmente interesantes que encontré en YouTube y que creo que son muy relevantes.
Como dije,
uno de los ejemplos que di fue el componente spline, nuevamente,
no el componente spline-mesh. La mayoría de la gente
confundirá eso con eso.
Hay muy poca información sobre el componente spline, pero hay uno o dos tutoriales realmente interesantes sobre él, que me han resultado muy útiles para darles una
idea de cómo usarlo. La otra cosa que creo que se
pasa mucho por alto es la de Epic. Victor probablemente haya mencionado
esto muchas veces a la gente, pero hay una especie de paquete de muestra real que
viene con Unreal y que puedes descargar y que
muestra las muestras, y está tan bien hecho
que tiene estas escenas para mostrarte cómo hacerlo exactamente.
use, como dije como ejemplo,
el componente spline pero también cosas como
nodos matemáticos básicos o planos o el
terreno y todo eso. Entonces, si necesita un ejemplo real
de cómo usar algo en particular pero realmente no encuentra
información al respecto, le
sugiero encarecidamente que se acostumbre a mirarlo y
explorarlo. La otra cosa que
recomendaría encarecidamente es observar de vez en cuando
las mejores prácticas. Nuevamente,
ese enlace estará en mis diapositivas. Esas mejores prácticas para Unreal se encuentran en el sitio web de Microsoft
para Unreal para HoloLens y mencionan todas las
cosas que mencioné, cuáles deberían ser las configuraciones de su proyecto,
etc., pero se actualizan. Obviamente, Unreal Engine se actualiza
muy rápidamente, por lo que lo que le decimos cuáles son
las mejores prácticas también se actualiza muy rápidamente
para que coincida con eso, así que yo diría que no
lo mire una vez y diga: "Oh, ya lo sé". eso", pero trata de estar atento
a ello de vez en cuando.
Entonces esos serían los recursos
que yo señalaría. VICTOR: Sajid se refiere a
los proyectos de ejemplos de contenido que puedes descargar
desde la pestaña Aprender en Epic Games Launcher en la categoría Unreal Engine
, y tienes razón: se actualizan con
cada lanzamiento del motor porque las herramientas cambian, mejor. Las prácticas mejoran
y tratamos de asegurarnos de que los
ejemplos de contenido sigan el ejemplo. Es un gran recurso.
Es algo interesante. Exploraste
ejemplos de contenido completo como un personaje en tercera persona. Es genial.
Asegúrate de revisar los niveles. Ese es el truco. Tienes que encontrar la carpeta de
los mapas y luego entrar allí, y podrás descubrir
todo, desde Niagara hasta Blueprints y la biblioteca de matemáticas. La biblioteca de matemáticas es
particularmente interesante y, con ese reconocimiento,
hicimos una transmisión en vivo con nuestro
matemático principal a principios de este año, tal vez el año pasado.
No sé.
Ha sido un año extraño. Continuaré y vincularé eso en el chat tan pronto como terminemos aquí también. Impresionante. Bueno, dicho esto, muchas gracias nuevamente a todos por
asistir a la transmisión de hoy. Si ustedes han estado
mirando desde el principio, gracias por unirse a nosotros.
Sé que ha pasado mucho tiempo. Hemos
cubierto dos temas muy diferentes pero importantes.
Arrancó MegaJam 2020.
El tema está disponible
en la página de Itch.io. Pueden ir allí y comprobarlo, y gracias a todos por unirse. Tengo un par de
cosas que quiero mencionar antes de desconectarnos aquí. En la transmisión en vivo de la próxima semana,
Patrick Wambold
hablará sobre el nuevo complemento DMX mejorado que se
incluye con Unreal Engine 4.26. Si no lo sabes,
DMX es una especie de interfaz para poder controlar la
iluminación del mundo real. Hay un complemento en Unreal que te permite abordar
ambos temas. Puedes seguir adelante
y controlar la iluminación del mundo real dentro de Unreal Engine, o puedes seguir adelante
y usar controles DMX para controlar luces virtuales
dentro de Unreal Engine, y Patrick ha preparado una
presentación realmente genial para nosotros.
Estaremos en vivo el jueves de la
próxima semana en nuestro horario habitual y no el viernes como
hoy, lo cual es especial. Asegúrate de seguir adelante
y consultar nuestros foros. Communities.unrealengine.com es un gran lugar para
encontrar grupos de reunión. Claramente nadie se ve
en la vida real en este momento, pero los grupos ahora están realizando
reuniones virtuales principalmente usando Discord y algunas otras
plataformas de eventos disponibles. Asegúrate de seguirnos
en las redes sociales y, si
luego miras esto en YouTube, asegúrate de presionar
la campana de notificación en caso de que estés interesado
en todo lo que estamos produciendo en
el canal Unreal Engine. Hay mucho más que
nuestras transmisiones en vivo. Producimos otros
tipos de tutoriales, consejos y trucos,
seminarios web, etc., y encontrará todo
eso dentro de nuestra lista de reproducción en la página de YouTube de Unreal Engine. Dicho esto, una vez más, gracias a todos por venir
a la transmisión preparándose. Me aseguraré de que
las presentaciones de diapositivas y los enlaces estén disponibles en la
publicación del anuncio del foro, y ustedes podrán continuar y
sumergirse en todos los recursos que están disponibles allí.
Fresco. SAJID: Muchas gracias a
todos. Que tengas un buen resto de tu día. VANESSA: Gracias, Víctor.
LUIS: Gracias Víctor. CARL: Gracias. VICTOR: Adiós a todos y
adiós a todos los que están ahí fuera. Que tengas una buena semana..