Jump to content
Sign in to follow this  
Jhonatan00_00

ANSWERED Textura ventanas cristal (SOLUCIONADO)

Recommended Posts

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.

Edited by Jhonatan00_00

Share this post


Link to post
Share on other sites

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.

  • Like 1

Share this post


Link to post
Share on other sites

Hola Igor, estoy buscando la opción para hacer lo que me ha explicado pero no me aparece. Lo que me aparece es esto:

Specular.png

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.

Edited by Jhonatan00_00

Share this post


Link to post
Share on other sites

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

  • Like 1

Share this post


Link to post
Share on other sites

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.

 

 

Share this post


Link to post
Share on other sites

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"
}

 

Edited by Igor
  • Like 2

Share this post


Link to post
Share on other sites

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!!.

Share this post


Link to post
Share on other sites

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"
}

 

  • Like 2

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...