Saltar al contenido principal

Guía Introductoria para TRANSFR

Alcances

Esta es una guía  para comenzara trabajar en los proyectos con Transfr, incluye el setup del proyecto y el flujo de trabajo.

Proceso de Desarrollo

Pre requisitos

Los proyectos de transfr usan la versión Unity  2020.3.21f1, descárgala en este link unityhub://2020.3.21f1/a38c86f6690f   por medio de Unity HUB

Asegúrate de descargar estos módulos:

Ahora descarga el archivo TOML y agrégalo el la carpeta de tu usuario en tu computadora.  https://drive.google.com/file/d/1cq46XlbmZSDiIMNmoWLXYR3nlsNAtsvV/view?usp=drive_link

NOTA:  Cuando pasa tiempo desde que no abres un proyecto de Unity de transfr y tienes que instalar uno nuevo, a veces falla la instalación, se suele solucionar con eliminar y volver a agregar el archivo .TOML

Setup del proyecto de Unity

Cada simulación tiene un repositorio que se implementa como un package , pero antes se necesita configurar el proyecto para lo cual también se necesita instalar el package SDK Installer

  1. Crea un usuario de GITHUB con tu correo de inmersys si aun no tienes una cuenta, a través de este correo te darán acceso a los repositorios de las simulaciones
  2. Crea un  proyecto nuevo usando la plantilla 3D core  en Unity 2020.3.21f1
  3. Ahora abre el package manager y da clic en  Add package from git URL   y añade el siguiente link https://github.com/TRANSFR-Inc/Transfr_SDK_Installer.git   Nota: debes tener acceso con tu usuario  si no no funcionará.
  4. Si no se instala con el link, puedes clonar el repositorio desde github y guardarlo en la carpeta de packages del proyecto. Es el mismo resultado.
  5. Ahora deberás tener, en el menú superior, el instalador 
  6. Vamos a saltarnos el paso 1, ya que ya agregamos el archivo TOML, Da clic en el paso 2_ScopedRegistry NOTA: aparecerán un par de errores en consola, no te preocupes por eso.
  7. Terminando el paso 2 aparecerá la siguiente ventana, después de dar clic en Add Config Package sigue el proceso a continuación,
    1. Input system prompt will appear (select "yes")
    2. Upgrade prompt will appear (select "I made a backup, go ahead")
    3. The editor will restart
    4. The window below should appear, if it does not, open it manually via the Unity menu under "TransfrVR/Configure Project"
  8. Después de unos minutos y de que se reinicie Unity, los siguiente cambios estarán aplicados:
    1. It sets the following projects settings:

      • Install/enable URP

      • In Android Player Settings set the color space to Gamma

      • In Android Player Settings under ‘Graphics APIs’ remove Vulkan from the list

      • In Android Player Settings check the following boxes:

        • Require ES3.1
        • Require ES3.1+AEP
        • Require ES3.2
        • Graphics Jobs (Experimental)
      • In Android Player Settings set Minimum API Level to 26 (Android 8.0 ‘Oreo’)

      • In Android Player Settings set Target API Level to 29 (Android 10.0)

      • In Android Player Settings set ‘Scripting Backend’ to ‘IL2CPP’

      • In Android Player Settings set the Api Compatibility Level to .NET 4.x

      • In Android Player Settings set ‘C++ compiler configuration’ to ‘Master’

      • In Android Player Settings under ‘Target Architectures’ uncheck ARMv7 and check ARM64

      • In Android Player Settings set Install Location to ‘Automatic’

      • In Android Player Settings set ‘Write Permission’ to ‘External (SDCard)’

      • Create a file called csc.rsp in the Assets folder and give it the following contents:

        • r:System.Web.dll
        • r:System.ComponentModel.DataAnnotations.dll
      • Various layers will be added to support XR Interaction Toolkit

Instalación del preset de Susbtance Painter  Descargar aquí

Este archivo se descarga en la carpeta de presets de Susbtance Painter, una vez instalado, te aparecerá en la lista como TRANSRVR_2019 , no contiene el mapa de emisión pero puedes usar otro preset de Unity o PBR de susbstance.

Descarga del repositorio

En este proceso usamos Github desktop.

  1. Da clic en clone repository
  2. Agrega el link o busca el nombre de la sim, en el menú aparecerán los repositorios a los que tienes acceso.
  3. En local path selecciona la carpeta de packages del proyecto que acabas de crear, al completarse la clonación, aparecerá el folder de la simulación.
  4. Listo, ya tienes el proyecto, en github puedes ver el repositorio, asi como la rama y si hay cambios pendientes de bajar o subir

Organización, jerarquía y nomenclaturas

**en la guía que nos proporcionó TRANSFR , la  jerarquía es un poco diferente a la de  la mayoría de los proyectos que nos ha tocado para CE2 (Carrer Exploration 2).

   Una vez descargado el proyecto vas a encontrar esta organización, como puedes ver, el proyecto se guarda en la carpeta de Packages.

En este folder vamos a ver la escena principal, y la carpeta de assets.

Dentro de models vamos a agregar nuestros assets *NOTA: aqui hay una carpeta de **materiales,*esa carpeta se agrego de parte del equipo de transfr pero nosotros no la usamos asi que omitanla.

En la mayoría de los proyectos el Environment prefab  ya esta  creado y dentro de la jerarquía en la escena, si no lo esta, pregunta al XR Designer para que lo cree, Es importante, ya que el objetivo de tener este prefab es que nosotros editemos sobre el y evitemos hacer cambios en la escena, ya que eso puede generar conflictos en el repositorio.

En Models vamos a encontrar dos tipos de carpetas, la del Environment (que en general solo la tocamos nosotros) y carpetas de los props (en ocasiones nos asignan props )  que se guardan en una carpeta individual para cada uno.

En la carpeta de Environment vamos a encontar el blockout, asi como las texturas, materiales y el fbx del environment. A veces otros artistas de su equipo apoyan creando algunos props,  como estos  tienen un FBX por separado, se organizan en carpetas que incluyen sus texturas y sus materiales, posteriormente yo me encargo de acomodarlos en el Prefab

Ejemplo de un prop para el environment

Nomenclaturas

TRANSFR nos proporcionó un preset de substance painter para exportar las texturas con el formato correcto, asi que solo debemos nombrar bien el material desde Blender/Maya.

  • Se usa el CamelCase naming convention - NombreObjeto ej- StackOfBoxesB.
  • Sufijos para texturas : _A (albedo) MAO_S (Metallic, Ambient Occlusion y Smoothness ) , _N (normal) _E (Emision)
  • Tanto el material como las texturas deben llamarse como el objeto, si el objeto tiene un sub objeto que tiene un material diferente especificar la parte el final del nombre ej- StackOfBoxesBPlastic .

Jerarquía

En cuanto a la escena, nosotros no tocamos la escena solo modificamos el prefab del environment, dicho prefab lo coloca el XR designer en la escena. Generalmente el blockout ya esta implementado, depende del flujo de trabajo del XR designer el como organiza la jerarquia, en este proyecto ya se encontraba asi, asi que en donde estaba el fbx del blockout, agregue el fbx del environment y los demas assets del environment. Al mismo nivel del grupo Background agregue un grupo para la iluminación. En general hay que mantener una organización limpia con nombre  claros.

Tickets de Jira

Jira es la plataforma que usa Transfr para llevar el seguimiento de ls tareas de un proyecto, al igual que con github, debes crear una cuenta con tu correo Inmersys.  Jira | Software de seguimiento de proyectos e incidencias | Atlassian

A cada  tarea se le asigna un ticket, en el se especifica de que trata la tarea, se agregan links de referencia o comentarios a tomar en cuenta.

Lo tickets tienen un botón para cambiar el estado en el que se encuentra, OJO : se marca como completado cuando ya se encuentra en el repositorio.  abajo se puede ver si el merge ya esta hecho.

En el mismo ticket debes subir capturas de tus avances diarios, el director de arte o el XR designer usualmente agregan feedback como  comentarios en el mismo ticket. También debes registrar el tiempo trabajado en la parte de  Time tracking del lado derecho.  El ticket muestra la prioridad que tiene la tarea. 

Flujo para subir avances al repositorio  Guia paso a paso aqui

En cuanto a arte 3D el flujo es el siguiente:

  • Antes que nada asegúrate de tener los cambios más recientes, da clic en fetch origin y si hay cambios en pull.
  • Una vez hayas realizado tus cambios, crea una nueva rama  (recuerda que como trabajamos sobre el prefab del Environment, no deberia haber ninguna cambio en escena )  Puedes poner numero de ticket o nombre relacionado a los cambios.
  • Como cada tarea tiene un ticket asignado, cuando se suba el avance correspondiente se debe agregar el número de ticket al inicio del nombre del commit. seguido de un resumen sobre lo que estas subiendo, **ej.**CEF-3069 Fiber optics van added to project folder.  Si estas actualizando varios tickets, puedes separar el numero por comas (,) y escribir un resumen general de los cambios, ej. CEF-3069. CEF-3023 ,CEF-3076 Store fronts and Fiber Van implemented.  Agregar el nombre al principio conecta el commit con el ticket de Jira.
  • Da clic en push para subir el commit,
  • Ahora vamos a hacer un pull request, esto es una solicitud para que la rama en la que hemos subido nuestros avances se una a la rama develop.  NOTA: usualmente nosotros podemos aprobar este pull request, ya que solo agregamos assets en carpetas, o modificamos el prefab de environment, aunque el XR designer puede llegar a tocar este prefab también, por lo que no olvides mantener comunicación para evitar conflictos en el repo.

Flujo de trabajo para el artista 3D

  • Al comienzo del proyecto se nos proporciona un Deck de referencias del environment y props,  a veces nos comparten un storyboard pero si no lo hacen , se puede consultar en los documentos fijados en el canal de slack de la simulación.
  • También nos comparten  un blockout del envirornment, se pueden usar algunos elementos de base ,como las paredes y pisos, pero recuerda que estos modelos son muy básicos y solo nos guían en las escalas y posiciones, por lo que no tiene despliegue de uvs ni muchos detalles modelados. En el Deck suelen poner los links a referencias, el blockout o modelos que se encuentran en drive que se pueden usar de base.
  • Edición del prefab Environment :
    • Hay que trabajar sobre el blockout que nos compartieron, de la misma forma en que este modelo es un solo fbx, el environment también se recomienda ensamblarlo en un mismo archivo y exportar un solo fbx, se nombra como NombreDeLaSimEnvironment

      • La forma de implementarlo es agregar el fbx al folder del proyecto, luego agregarlo en el prefab del Environment, conforme vayas creando las versiones finales de cada elemento puedes ir apagando el correspondiente objeto en el blockout.  Ej. en el fbx_blokout hay un edificio principal, para implementarlo puedes agregar el fbx a la jerarquía, y apagar el edificio que servía de referencia en el fbx_blockout que esta en la jerarquía, cuando ya no se necesita el blockout se puede desactivar todo o eliminarlo de la escena.
      • Idealmente se tiene que actualizar el mismo fbx que ya esta en el folder, así el cambio se vera reflejado en el prefab sin tener que volver a agregar el modelo a la jerarquía.
      • La edición del environment se hace directamente en el prefab, para entrar en el modo edición, da clic en la flechita ahora en la jerarquía se ve solo lo relacionado al environment. 
  • Creación de props :
    • Los props se guardan en la carpeta de modelos, se tiene que crear una carpeta individual para cada prop y dentro de esta, se guarda el fbx, materiales y texturas. Nosotros no acomodamos  los props en la escena, esto lo hace el XR designer.
  • Iluminación: Puedes hacer las pruebas de una escena nueva, agrega el prefab de environment y cuando tengas el setup inicial, copia las luces dentro del prefab. Conectar el skybox y asignar los lighting settings a la escena principal generara un cambio, así que ponte de acuerdo con el quipo para que puedas usar la escena sin problema. Después del primer bake, los bakes siguientes no registran cambios en la escena, solo se actualizan los lightmaps.
  • Optimización : Después de que todo este armado, alguien de su equipo se encargara de hacer un pase de optimización del Environment, usando Mesh Baker, por lo que es muy importante que de nuestro lado  dejemos los assets de la manera correcta para que este proceso sea mas sencillo, es decir:
    • Un material por objeto
    • Si hay alguna parte con transparencia, que tenga un material independiente y sea un sub objeto
    • Si hay algún material que tenga tilling, agregar tiled al final del nombre del material.

RECOMENDACION: crear una escena dentro de la carpeta environment, para configurar los materiales y revisar los assets, se puede agregar ahí el prefab de environment, así evitamos hacer cambios en la escena por error. También nos sirve para las primeras pruebas de iluminación. Evita subir cambios de esta escena al repo y borrarla al finalizar el proyecto.

Consideraciones en la creación de assets  Consultar doc Art Guidelines aqui

Los siguientes puntos son extras que no están en la guía:

  • En cada proyecto se nos da un Deck de referencias, que contiene especificaciones, instrucciones  y consideraciones a tomar en cuenta dependiendo de props o elementos del environment,
  • Aunque nos suelen dar referencias, no repliques exactamente los props por cuestión de derechos , evita usar marcas reales, reemplázalas por nombres/logos inventados.
  • Intenta brandear algunos elementos del ambiente/props usando el logo/colores de transfr. (los logos están en la misma carpeta de drive).   
  • Toma en cuenta el storytelling , no  olvides añadir desgaste/uso en el texturizado — grietas, manchas, polvo, marcas, suciedad, etiquetas, etc. Busca mas referencias de ser necesario.    
  • Trabaja con escalas reales y testea constantemente en el visor.
  • Revisa que no haya problemas de aliasing. De ser necesario usar LOD´s
  • Empaqueta las UVs lo mejor posible usando todo el espacio, dale mas resolución a las partes que necesiten más detalles.
  • Los elementos que tendrán interacción deben estar separados apropiadamente y tener los pivotes en el lugar correspondiente.
  • Eliminar caras que no se verán
  • No dejes agujeros grandes en los modelos, esto puede provocar manchas grandes en el bake de iluminación en Unity. Si son necesarios, recuerda cambiar el render face a both en el material cuando se haga el bake de iluminación.

Testing del proyecto

Cada vez que se sube un commit a la rama Develop, se genera un nuevo build que esta disponible en applab después de unos minutos ( 20 min o mas, depende de el tamaño de los archivos actualizados)  Asegúrate de tener acceso a la cuenta de developer en el quest  , al inicio del proyecto suele llegar un correo de meta con una invitación para el prelanzamiento de la app, hay que aceptar la invitación para que la app aparezca en la biblioteca del quest.

Nota: si no se actualiza la aplicación, desinstala e instálalo de nuevo.

Puedes probar toda la simulación, aunque a veces resulta tedioso hacer todos los pasos para revisar solo un prop, pasa adelantar los pasos puedes usar el botón de menú del controlador izquierdo, se desplegara un menú y podrás seleccionar el paso que quieres testear.

Respaldo de proyecto y repositorio de Inmersys   Consultar guia de uso de repositorio en el miro de Arte3D

En los proyectos de transfr no permiten exportar packages, asi que el procedimiento  para subir la escena del environment como  proyecto a gitlab. es crear un proyecto nuevo. Y desde el explorador de archivos, copiar la carpeta de packages a la carpeta assets del nuevo proyecto.

Este ultimo se va a subir a gitlab. No es necesario subir todo lo relacionado con programación si causa errores en consola, basta con subir los relacionado al arte 3d que se trabajo. El archivo .gitignore lo puedes encontrar en esta carpeta https://drive.google.com/drive/folders/1ZQWcbRnRLpPqXoJ8my3iRXVTBKFX2iut?usp=drive_link

También puedes exportar un package del environment y subirlo a drive

Enlaces de descarga

Unity 2020.3.21f1 unityhub://2020.3.21f1/a38c86f6690f

Aqui encontraras los lineamientos, logo  y el preset de susbtance proporcionados por transfr https://drive.google.com/drive/folders/1ZQWcbRnRLpPqXoJ8my3iRXVTBKFX2iut?usp=drive_link

Archivos Adjuntos

Comentarios

Comentarios generales o extras de la investigación.

Ventajas

Desventajas

Ubicación Proyecto

La ubicación del proyecto en el servidor.

Elaboró

Diana Delfino