Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Creando UI con objeto 3D

Iniciado por ecko, Diciembre 13, 2016, 12:06:28 PM

Tema anterior - Siguiente tema
Gracias por la info, pero tengo un problemilla, resulta que la UI la tengo creado en la misma cámara que tengo el objeto 3D que quiero que quede por encima de dicha UI, no hay manera de hacerlo con la misma cámara?

Cita de: ecko date=1481817181Gracias por la info, pero tengo un problemilla, resulta que la UI la tengo creado en la misma cámara que tengo el objeto 3D que quiero que quede por encima de dicha UI, no hay manera de hacerlo con la misma cámara?
   


Es bastante feo asi porque la camara esa se tiene que dedicar a enfocar el objeto 3d ya que tiene un target texture y tenes que diferenciarlos bien. Dependiendo de como queres que se represente ese objeto 3d podes o no necesitar en Render Texture, como te puse en otro post mas arriba. Si queres mayor control, ya sea para encuadrar el objeto GUI3D en un lugar determinado ,etc si necesitas el rendertexture.
 
Por que no creas otra camara dedicada al UI?

Diciembre 15, 2016, 05:22:51 PM #17 Ultima modificación: Diciembre 15, 2016, 05:25:36 PM por ecko
Te comento un poco, tengo un inventario 3D ya creado (Un baul 3d) y este al pinchar y arrastrar se mueve donde tenga la posición del ratón, entonces necesito que siempre quede por encima de la UI, la cual dicha UI esta compuesta por botones y el Objeto 3D (Duplicado de mi personaje),  hice un render texture con el objeto 3d de mi personaje con una nueva cámara y esta nueva cámara la asocié a la UI que la veo desde la cámara principal, que tengo que hacer, crearme otra cámara para mi inventario y que esta siempre quede por encima de la cámara principal?
 
 
 
Si creo otra cámara para la UI y le doy una capa inferior al main cámara se verá todo lo del main cámara por encima de la nueva cámara dedicada a la UI? porque si es así no me valdría ya que el terreno, personaje y demás deben de quedar por debajo, sólo debe quedar por encima el objeto Inventario que esta visto desde la cámara principal.




   
      hice un render texture con el objeto 3d de mi personaje con una nueva cámara y esta nueva cámara la asocié a la UI que la veo desde la cámara principal,
   

[/quote]
 
La camara que enfoca al objeto 3D solo tiene que generar el RenderTexture y nada mas, ponela en una capa aparte para hacer culling luego (es decir que las demas camaras la filtren) no la asocies a nada. Los modelos de los objetos 3D que representas estan en esta capa, ya que no queres que ni la camara de la UI y la camara principal los enfoquen. Por eso te decia de usar distintas escenas para mantener el orden.
 
Cada camara funciona asi, primero limpia la pantalla (con el clear) luego renderiza lo que le pones en la culling mask,mediante la depth se determina el orden en que sucede lo anterior. Es engañoso a lo primero pero una vez que lo manejas podes hacer muchisimas cosas.
 
Tu canvas de la UI tiene que tener asociada la camara UI que tengas (Screen Space - Camera), y tiene que estar en la capa UI (creo que Unity lo pone por default).
 
En definitiva lo que tenes que hacer es jugar con depth para indicar el orden. Podes tener escenas completas en 3D encima de la UI si lo desearas.
 
 

Vamos mas despacio que casi no entiendo que rollo es ahora, primero para mencionar lo anterior; tienes una "Main Camera" con el elemento depth con el valor mas alto, esta cámara es la que va renderizar el contenido de las UI en un Canvas (ej: ventanas "bag", "character", "Inspect", etc). Hay otra cámara con un depth cuyo valor es menor al anterior por lo tanto no se ve en la ventana "Game" del Unity, y en esta muestras un objeto 3d copia de tu personaje y cuyo rendertexture se lo has puesto en una rawimage UI para que esto solo se vea en tu ventana "character",  (este objeto 3d no se ve sino mediante una imagen podemos ver a ese objeto como si fuera una "trasnmicion" pero esto es ya una imagen).
 
Tu debes de administrar las diferentes Objetos dentro del Canvas para que estos se vean como las ventanas que quieres lograr en tu proyecto.
 
No entiendo porque dices que tienes q crearte otra cámara para tu inventario, si tu nunca creaste una cámara para la ventana donde muestras el objeto 3D, creaste la cámara para el objeto mas no para la UI que muestra la imagen del objeto; entonces no vas a crear "otra cámara" para tu ventana inventario porque no creaste ninguna cámara para ninguna UI, lo que tienes que crear son mas UI dentro de tu Canvas.

Gracias por vuestras respuestas, he logrado aprender bastante el manejo de las cámaras gracias a vosotros y he logrado solucionar el problema, gracias de corazón :)

Etiquetas: