Noticias

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

Temas recientes

Textura ventanas cristal (SOLUCIONADO)

Iniciado por Jhonatan00_00, Enero 01, 2020, 12:44:17 PM

Tema anterior - Siguiente tema
Enero 01, 2020, 12:44:17 PM Ultima modificación: Enero 03, 2020, 09:54:05 PM por Jhonatan00_00
Buenos días y feliz año nuevo!!. Vengo con otro problemilla que me tiene atascado, esta vez sobre texturizado en Unity y creo que le va a servir a mucha gente para hacer cualquier cosa si lo conseguimos resolver.
 
Tengo una ventana modelada y texturizada y en la propia textura de la ventana va metido el marco de la ventana y el cristal. Lo que necesito poder hacer es aplicar brillos al cristal pero que la madera siga teniendo su misma apariencia. Si aplico Specular a la textura de la ventana brilla por igual tanto el marco como el cristal y mi pregunta es:
 
- ¿De que manera podría aplicar configuraciones distintas a una textura sin tener que realizar el modelado del objeto en varias partes?.
 
Un saludo.

el material standard specular tiene la posibilidad de asignarle un textura de specular, en la que los tonos mas claros serian zonas con mas brillo. haz una copia de tu textura de la ventana, y ponle donde el cristal en blanco y las zonas que quieres sin brillos ponle esas zonas en color negro.

Enero 01, 2020, 02:05:59 PM #2 Ultima modificación: Enero 01, 2020, 04:56:07 PM por Jhonatan00_00
Hola Igor, estoy buscando la opción para hacer lo que me ha explicado pero no me aparece. Lo que me aparece es esto:
 

 
El caso es que leyendo el manual de Unity me dice exactamente lo mismo, que puedo controlar la parte de la textura que va a ser mas o menos reflectiva, lo que no explica es como hacerlo. ¿Podría explicarme paso a paso donde tocar para llegar a esta opción?.
 
Gracias.

hola, si, yo te estaba diciendo de otro tipo de material.... donde pone shader, arriba del todo, tu tienes puesto "specular"... yo creia que estabas usando el "standard", y hay uno que se llama "standard (specular setup)"... te decia que usases ese... entonces te sale un recuadro donde pone specular y ahi puedes asignar una imagen...
 
 
 
...lo siento, estoy intentando subirte unas imagenes pero me da error todo el rato... sera porque lo intento con el movil?
 
de todas formas no se que shader specular estas usando... que version de unity tienes? porque mi shader specular normal se llama "legacy shaders/specular"...me parece muy raro que solo te ponga "specular" donde el shader...
 
de todas formas si no tienes el shader "standard (specular setup)"  (que me parece muy raro) puedo hacerte un shader "a medida" que haga justo eso que quieres.... es muy facil

Buenos días!!, la versión que uso es la 4.7.2 y me compré un PC nuevo estas navidades para instalar la última versión porque usaba versiones anteriores en un PC muy viejo, pero no lo he actualizado a la última versión porque lo hice y me cambió toda la iluminación y aspecto en general del proyecto, un desastre, así que tuve que instalar la mas nueva que no me estropeaba el trabajo realizado y es la 4.7.2... Puede que sea por la versión que no me aparece esta opción.
 
Ahora estoy usando el Shader Bumped Specular para que se vea el relieve del marco de la ventana con respecto al cristal y queda muy bien, pero tampoco tiene opción de hacer lo que estoy buscando.
 
- ¿Donde se guardan los Shaders en Unity?.
 
- Puedo actualizarlos?.
 
Saludos.
 
 
 
 

Enero 02, 2020, 11:39:40 PM #5 Ultima modificación: Enero 02, 2020, 11:41:40 PM por Igor
si que puedes descargarlos de algun lado, los shaders de unity, porejemplo estan en github:
 
https://github.com/TwoTailsGames/Unity-Built-in-Shaders
 
 
 
pero no se si te serviran para esa version antigua que tienes de unity.
 
pero puedes escribir tus propios shaders, en la pestaña del proyecto, de la misma forma que creas un nuevo material, puedes darle a "create/shader" (surface shader) 
 
te he escrito uno que hace justo lo que pides.
 
crea un shader (create/shader) y llama al nuevo shader "specularTexture", abrelo con el editor/MonoDebelop/VisualStudio/blockDeNotas o como quieras borra todo lo que pone y copia esto dentro, arrastra el shader al material o seleciona en el material el nuevo shader "custom/specularTexture" ...y listo
 

Shader "Custom/specularTexture" {
Properties {
   _Color ("Color", Color) = (1,1,1,1)
   _MainTex ("Albedo (RGB)", 2D) = "white" {}
   _SpecColor("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
   _SpecMap("Specular ", 2D) = "white" {}
   _Shininess("Shininess", Range(0.01, 1)) = 0.25
}
SubShader {
   Tags { "RenderType"="Opaque" }
   LOD 200
   CGPROGRAM
   
   #pragma surface surf BlinnPhong
   #pragma target 3.0
   sampler2D _MainTex;
   sampler2D _SpecMap;
   struct Input {
      float2 uv_MainTex;
      float2 uv_SpecMap;
   };
   fixed4 _Color;
   half _Shininess;
 
   void surf (Input IN, inout SurfaceOutput o) {
      fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
      o.Albedo = c.rgb;
      o.Alpha = c.a;
      fixed4 specTex = tex2D(_SpecMap, IN.uv_SpecMap);
      o.Gloss = specTex.r;
      o.Specular = _Shininess * (specTex.r+0.001);
   }
   ENDCG
}
FallBack "Diffuse"
}

 
 

Buenas noches, acabo de llegar y lo primero que he hecho ha sido entrar al foro para ver si tenia alguna respuesta para solucionar el problema y funciona!!. Lo único que me falta por añadir a este nuevo Shader es que también sea Bumped Specular para que el marco de la ventana tenga relieve.
 
- ¿Como puedo añadirle esta característica?.
 
Gracias!!.

hola.
 
este seria el mismo shader pero con bumpMap:
 
 
 

Shader "Custom/specularTexture" {
Properties{
   _Color("Color", Color) = (1,1,1,1)
   _MainTex("Albedo (RGB)", 2D) = "white" {}
   _BumpMap("Bump Map", 2D) = "bump" {}
   _SpecColor("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
   _SpecMap("Specular ", 2D) = "white" {}
   _Shininess("Shininess", Range(0.01, 1)) = 0.25
}
SubShader{
   Tags{ "RenderType" = "Opaque" }
   LOD 200
   CGPROGRAM
   #pragma surface surf BlinnPhong
   #pragma target 3.0
   sampler2D _MainTex;
   sampler2D _BumpMap;
   sampler2D _SpecMap;
   fixed4 _Color;
   half _Shininess;
   struct Input {
      float2 uv_MainTex;
      float2 uv_BumpMap;
      float2 uv_SpecMap;
   };
   void surf(Input IN, inout SurfaceOutput o) {
      fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
      o.Albedo = c.rgb;
      o.Alpha = c.a;
      fixed4 specTex = tex2D(_SpecMap, IN.uv_SpecMap);
      o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
      o.Gloss = specTex.r;
      o.Specular = _Shininess * (specTex.r + 0.001);
   }
   ENDCG
}
FallBack "Diffuse"
}

 
 

Solucionado!!. Aún me queda mucho hasta saber programar mis propios shaders pero acabo de darme cuenta de que si eres capaz de crearlos no hay nada que se te resista.
 
Un saludo y gracias.

Etiquetas: