59. CLASE MATERIAL (I)




Como podéis comprobar en el esquema superior, hemos subido dos peldaños en la jerarquía respecto a las últimas clases que estábamos estudiando, y vamos ahora a aproximarnos a una serie de clases que derivan directamente de la clase base Object.

La clase material, tal como es de suponer, accede a todas las propiedades de un material, permitiéndonos alterarlas/animarlas. Si pretendemos referirnos al material usado por un objeto, es preferible usar la propiedad Renderer.material, tal que así:


renderer.material.color = Color.red;



VARIABLES:

shader:

var shader : Shader

Es el shader del material. En modelado 3d, un shader vendría a ser el algoritmo que indica cómo una superficie ha de responder ante la luz.

Es una variable de la clase Shader (que estudiaremos en su momento). Nos permite utilizar/crear/importar diferentes reacciones que tendrá nuestro objeto al darle la luz (diffuse, transparent, ect)

Por ejemplo, podemos comprobar qué tipo de shader tiene nuestra esfera. Para ello, antes que nada, eliminamos el script que tenemos vinculado a la luz (si es que estamos siguiendo las lecciones por orden), y editamos MiPrimerScript tal como sigue:


renderer.material.shader = Shader.Find( "Transparent/Diffuse" );
var miShader : String;
miShader = renderer.material.shader.ToString();
Debug.Log(miShader);


Como vemos, para obtener el tipo de material referido a un objeto recurrimos a la clase Renderer. Observamos que nuestra esfera tiene el shader por defecto, que es de tipo Difusse.

Y si queremos cambiar el tipo de shader y convertirlo en especular, usamos la función Find (que estudiaremos en su momento cuando demos la clase Shader) y se la asignamos a nuestra esfera.


var miShader : String;
renderer.material.shader = Shader.Find( "Specular" );
miShader = renderer.material.shader.ToString();
Debug.Log(miShader);




color:

var color : Color


El color principal del material. Es lo mismo que -como veremos en breve- usar GetColor o SetColor con el nombre “_Color”.

Añadimos una declaración a nuestro script para cambiarle el color a la esfera:


var miShader : String;
renderer.material.shader = Shader.Find( "Specular" );
renderer.material.color = Color.cyan;
miShader = renderer.material.shader.ToString();
Debug.Log(miShader);



mainTexture:

var mainTexture : Texture

La textura principal del material. Es lo mismo que usar GetTexture o SetTexture con el nombre “_MainTex”.

Si por ejemplo escribiéramos un script así:


var texture : Texture;
renderer.material.mainTexture = texture;


tendríamos una variable "expuesta" donde podríamos arrastrar la textura principal que quisiéramos que tuviera nuestro material.


mainTextureOffset:

var mainTextureOffset : Vector2

Nos permite desplazar la textura principal.

Hay un ejemplo muy indicativo en el manual de referencia de Unity, que he modificado ligeramente. Con carácter previo necesitaría que os descargárais una textura, a poder ser alguna cuyo movimiento fuera perceptible. Yo por ejemplo voy a utilizar esta:

http://www.blogger.com/img/blank.gif

Una vez descargada, la guardamos dentro de la carpeta "assets" de nuestro proyecto en Unity, de tal manera que en Proyecto nos salga.

Acto seguido escribimos este script:


var miTextura : Texture;
renderer.material.mainTexture = miTextura;

var scrollSpeed : float = 0.5;

function Update() {
var offset : float = Time.time * scrollSpeed;
renderer.material.mainTextureOffset = Vector2 (offset, 0);
}


Salvamos y arrastramos la textura hasta la variable expuesta del script miTextura.

Le damos al play y observaremos que la textura de nuestra esfera comienza a girar (ojo, si vemos las variables rotate de la esfera observaremos que no es el objeto el que gira, sino la textura la que se desplaza sobre el objeto). Meramente estamos cambiando de sitio a nuestra textura con respecto a nuestro objeto (pensemos en aplicaciones como anuncios de neón en una ciudad futurista).

POSTED BY UnityScripts
POSTED IN
DISCUSSION 0 Comments

Leave a Reply

Con la tecnología de Blogger.