User Tools

Site Tools


informatica:realidad_virtual:unity

This is an old revision of the document!


Enero 2023

Descarga Unity

Descargamos Unity hub

https://unity3d.com/get-unity/download

Método de instalación con apt metiendo el server en sources:

echo "deb https://hub.unity3d.com/linux/repos/deb stable main" > /etc/apt/sources.list.d/unityhub.list'

Descargamos la key. La mete en trusted.gpg pero eso es deprecated y la movemos a trusted.gpg.d

mv /etc/apt/trusted.gpg /etc/apt/trusted.gpg_old 
wget -qO - https://hub.unity3d.com/linux/keys/public | sudo apt-key add -
mv /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d/hub.unity3d.com.gpg

Luego lo instalamos

apt update
apt-get install unityhub

Instalamos hub/editor (son unas 5Gb)

Instalamos la última versión LTS que es 2021.3.16f1 y la última que hay que es 2022.2.2f1

https://developer.oculus.com/downloads/package/unity-integration-archive/

Nuevo Proyecto

https://www.youtube.com/watch?v=apL9lIkKLHQ

Nuevo Proyecto como 3D

Vamos a “File > Build Settings” y seleccionamos android y pulsamos switch platform

En “Texture Compression” seleccionamos la recomendada para Oculus: ASTC

Ahora instalamos el plugin de XR. “Edit > Project Settings” luego “XR Plugin Management” y “Install XR Plugin Management”

En la pestaña de Android, seleccionamos Oculus

Instalamos “XR Interaction Toolkit unity”. Seleccionamos “Window > Package Manager”

Seleccionamos “Unity Registry” e instalamos “XR Interaction Toolkit”

Nos dice que reiniciar, le damos que si.

Importamos los ejemplos:

Añadimos las acciones a las manos. Vamos a “Assets > Samples > XR Interaction Toolkit > 2.04 > Starter Assets”. Para verlo en modo lista, seleccionamos la barra de preview de la derecha al mínimo.

Seleccionamos “XRI Default Left Controller” y pulsamos a la derecha: “Add to ActionBaseController default”
Lo mismo para “XRI Default Right Controller”

Ponemos un nombre por defecto. Vamos a “Edit > Project Settings” y en “Preset Manager” ponemos “Left” y Right“

Añadimos a la escena el jugador, que sería “XR > XR Origin (Action-Based)” En la última versión es “XR Origin (VR)” Importante haber hecho antes lo de asignar los Assets en los controles, sinó, nos añadirá el XR Origin pero sin acciones en las manos.

Añadimos un plano para tener referencia

Bajamos el suelo un poco para que quede por debajo del jugador

Tenemos que hacer que detecte los input assets. Seleccionamos “XR Origin” y en la derecha seleccionamos “Add Component”

Buscamos “Input Action Manager” y lo seleccionamos

Abrimos “Action Assets”. Tiene seleccionado el único que tenemos que viene por default.

Coger un objeto a distancia

https://www.youtube.com/watch?v=rhD4_NJMl-g

Descargamos linterna de asset store pulsando “add to my assets”

https://assetstore.unity.com/packages/3d/props/electronics/flashlight-18972

En unity lo importamos, Vamos a “Window > Package Manager” y seleccionamos “My Assets”

Si no nos aparece, le damos abajo a refrescar. Seleccionamos la linterna y damos a download

Luego nos aparecerá import, pulsamos y se abrirá otra ventana y nuevamente import.

Nos aparece en nuestros Assets. La arrastramos a nuestra escena, en la pantalla o a la lista de izquierda.

Añadimos cubos a la escena para iluminar con la linterna:

Deshabilitamos la luz de ambiente. Seleccionamos “Directional Light” y quitamos el check.

Apagamos también la linterna. Abrimos el desplegable y en “White light” desmarcamos el check

Añadimos el componente a la linterna para que la podamos coger. Abajo en el menu de la derecha y está “Add Component” y selecctioamos “XR Grab Interactable”

Para evitar que la linterna atraviese el suelo, le añadimos el componente “Box Collider”

La coge con el botón (dedo anular) pero en perpendicular:

Tenemos que crear un un nuevo elemento a la linterna. Pulsamos botón derecho y pulsamos “Create Empty”

Por defecto pone “GameObject”, le cambiamos el nombre a “PuntoCogida”

Será el punto en el que lo cojamos

Ahora para aplicar la transformación, tenemos que arrastrar el gameobject “PuntoCogida” a la linterna, en “XR Grab Interactable > Attach Transform” o seleccionarlo.

Quedaría así:

Ahora ya la coge bien.

Si pulsamos el stick del mando el objeto se aleja. Si queremos quitar este efecto es con “Anchor Control”

Ahora falta hacer que al pulsar el botón se encienda la luz. Usamos los action events. Vamos a “XR Grab Interactable > Interactable Events”

El botón de activar es el gatillo. El botón “Select” es el anular y “Activate” el gatillo. Pulsamos el + en Activate para añadir propiedad. Arrastramos la luz encendida (WhiteLight) ponemos “GameObject.SetActive” y marcamos el check.

Para que se apague, hacemos lo mismo en Deactivated pero sin marcar el check:

Añadir manos

Descargamos el asset “Oculus Hands Physics.unitypackage”

https://download2270.mediafire.com/ikdov34vpujg/r8vmytboostszzj/Oculus+Hands+Physics.unitypackage

Lo adjunto por si acaso:
oculus_hands_physics.unitypackage.gz

Para instalar el Asset, arrastramos dentro de Assets el fichero “oculus_hands_physics.unitypackage” o lo añadimos desde “Assets” > “import package” > “Custom Package”

Ahora lo añadimos a las manos arrastrando el asset “Oculus Hands Physics > Prefabs > Left Hand Presence” a la mano izquierda y el derecho a la derecha

Coger un objeto a mano

Vamos a hacer que la mano izquierda coja los elementos en local sin necesidad del rayo. Vamos a left hand controller y eliminamos “XR Ray Interactor”

Y ahora añadimos “XR Direct Interactor”

Para que pueda coger el objeto, tenemos que añadir en la mano también el componente “Sphere Collider”

Y luego marcarlo como Trigger

Si no coge el objeto, cuidado que a veces se cambian las coordenadas del Box Colider que le hemos puesto en la mano. Poner a 0

Movimiento Continuo

https://www.youtube.com/watch?v=706Bx0hutM0

Creamos GameObject y lo llamamos “LocomotionSystem” y le asignamos con “Add Component” > “Locomotion System”

Arrastramos nuestro “XR Origin” a la casilla “XR Origin” del componente “Locomotion System”

Al jugador (XR Origin) le añadimos con “Add Component”:

  1. Continous Move provider
  2. Continous Turn provider

Seleccionamos la mano derecha para girar. Pulsamos en “Continous Turn Provider”, marcamos el check de “Use Reference” y en “Reference” ponemos “XRI RightHand Locomotion Turn”

Para la mano izquierda, lo mismo pero con “XRI LeftHand Locomotion/Move”

Ahora tenemos que añadir que haga colisión con los objetos. Añadimos a “XR Origin” el componente “Character Controller” y “Character Controller Driver”. En “Character Controller Driver” ponemos “Min Height” 1 y “Max Height” 2 que sería altura entre 1 metro y 2 metros.

Hay un problema que hace colisión con un objeto cogido y empiezas a volar

https://forum.unity.com/threads/grab-able-objects-interfering-with-locomotion-system.1258443/

Una posible solución:

https://forum.unity.com/threads/grabbed-rigidbody-is-moving-my-xr-rig.1087481/

Lo he solucionado de momento en el objeto poniendo que al pulsar select (anular) le quite la propiedad boxcollider y al soltarlo se la vuelva a añadir.

Teleport

Puzzle

https://www.youtube.com/watch?v=iSYfs6NXZck

16:15 - Scripts

Se crean las cartas. La caja del puzzle es “XR > Socket Interactor”

URP Universal Render Pipeline

No sé para que sirve del todo, pero lo uso para dar luz a los materiales.

Instalación:
https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@7.1/manual/InstallURPIntoAProject.html

Para que el material se vea se tiene que convertir a URP en “Edit > Rendering > Materials > Convert Selected Built-in Materials to URP”

Luego hay que añadir “Gobal Volume” y a este los Overrides:

Tonemapping
Bloom
Vignette

Luces

informatica/realidad_virtual/unity.1675122231.txt.gz · Last modified: 2023/01/30 23:43 by jose