Alex.SilR

RSS
Oct 7

Day 21 – Blender, Prototype and SetTexture

The day 21 was basically a copy of the previous day. What I had in mind to model the gun didn’t work, so I ended up spending more time than I should again. In the end I ended up not liking the result, but I’ll use it to prototype.

I thought this weekend (20 and 21) I could leave the prototype well underway, but in the end there was not much progress (there was learning, so I’m not sorry to lose this time in modeling the gun).

Dia 21 – Blender, Protótipo e SetTexture

O dia 21 foi basicamente uma replica do anterior. Como o que tinha em mente para modelar a arma não deu certo acabei dedicando mais tempo do que devia novamente e não chegando a um final satisfatório, mas para o protótipo vai servir.

Pensei que nesse final de semana (20 e 21) conseguiria deixar o protótipo bem adiantado, mas no final não houve muito progresso (houve aprendizado, por isso não estou arrependido de perder esse tempo na modelagem da arma).

Besides modeling, I lost some time in the “panel” of the gun and with that I learned one of the most interesting things today, which was how to access the textures of a shader using the method SetTexture. SetTexture receives a string that says which texture you want to modify and texture to replace.

The hardest part was finding what is the name given to the texture I needed to modify (in the case was a Illumin Self-Illumin). After searching I ended up finding that on the site of Unity you can download the code of the shaders that comes by default in Unity, and seeing the code you can see the name used.

The code of the Illumin-Diffuse is:

Além da modelagem, perdi um tempo no “painel” da arma e com isso uma das coisas mais interessantes que aprendi hoje foi como acessar as texturas de shaders usando o método SetTexture. SetTexture recebe uma string para dizer qual a textura que você quer modificar e a textura.

O mais difícil foi encontrar qual o nome dado para a textura que precisava modificar (no caso era Illumin de um Self-Illumin). Depois de dar uma pesquisa acabei achando que no próprio site da Unity você pode fazer o download do código dos shaders que vem por padrão na Unity, e vendo o código você consegue ver o nome usado.

O código do Illumin-Diffuse é:

 Shader "Self-Illumin/Diffuse" {

Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_MainTex ("Base (RGB) Gloss (A)", 2D) = "white" {}
_Illum ("Illumin (A)", 2D) = "white" {}
_EmissionLM ("Emission (Lightmapper)", Float) = 0
}

SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert

sampler2D _MainTex;
sampler2D _Illum;
fixed4 _Color;

struct Input {
float2 uv_MainTex;
float2 uv_Illum;
};

void surf (Input IN, inout SurfaceOutput o) {
fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);
fixed4 c = tex * _Color;
o.Albedo = c.rgb;
o.Emission = c.rgb * tex2D(_Illum, IN.uv_Illum).a;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Self-Illumin/VertexLit"
}

At first we can see that, in the Properties block is the names used. In my case _Illum. Then the method would be:

obj.render.material.SetTexture(“_Illum”, texture);

Logo no começo podemos ver que nas Properties está o nome utilizado. No meu caso _Illum. Então o método ficaria:

obj.render.material.SetTexture(“_Illum”, textura);