Взял стандартный куб в Блендере, добавил ему два UV канала: первый стандартный, второй порезанный, чтобы на каждую грань лёг свой рисунок. Но вот незадача: после импорта модели, складывается ощущение, что вместо текстуры накладывается её первый пиксель и растягивается на всю модель. Причём если при импорте поменять каналы местами (Swap UVs), то неправильно работает всё равно второй. Так как я Блендер три дня назад первый раз в жизни увидел, а модели в Юнити ни разу не импортировал, 100%, я делаю что-то не так.
Ниже прикладываю скриншоты, как выглядят UV каналы в Блендере, настройки модельки в Юнити и её внешний вид на сцене. В самом конце — код используемого шейдера.
В Блендере
UV1: http://pic.noptor.ru/images/hU3q4BIEgSXRSOaw2tgc.png
UV2: http://pic.noptor.ru/images/oXaI3R0apiqElkBNnbWF.png
В Юнити
Импорт: http://pic.noptor.ru/images/75YOKg2b4iIU1M3caGFQ.png
На сцене: http://pic.noptor.ru/images/B6mgxJE8Xxe72AO8Ez5u.png
Настройки куба: http://pic.noptor.ru/images/gMnXHBr9D95Bxk2IDAIv.png
Синтаксис:
- Shader "Noptor/MapedEmission" {
- Properties {
- _MainTex ("Base (RGBA)", 2D) = "white" {}
- _EmissiveMap ("Emissive map (R)", 2D) = "black" {}
- _EmissiveColor ("Emissive color (RGB)", Color) = (1, 0, 0, 1)
- _EmissivePower ("Emissive power", Range(0, 4)) = 1
- _CracksMap ("Cracks map (R)", 2D) = "black" {}
- _CracksPower ("Crack power", Range(0, 30)) = 0
- _DissolvePower ("Dissolve power", Range(0, 1)) = 0
- }
- SubShader {
- Tags { "RenderType" = "Opaque" }
- LOD 150
- Cull Off
- CGPROGRAM
- #pragma surface surf Lambert
- sampler2D _MainTex;
- sampler2D _EmissiveMap;
- fixed3 _EmissiveColor;
- fixed _EmissivePower;
- sampler2D _CracksMap;
- fixed _CracksPower;
- fixed _DissolvePower;
- struct Input {
- half2 uv_MainTex;
- half2 uv_EmissiveMap;
- };
- void surf (Input IN, inout SurfaceOutput o) {
- fixed3 main = tex2D(_MainTex, IN.uv_MainTex).rgb;
- fixed3 figureMap = tex2D(_EmissiveMap, IN.uv_EmissiveMap).r;
- o.Emission = figureMap * _EmissiveColor * _EmissivePower;
- o.Albedo = main * (1 - figureMap);
- if (_CracksPower > 0)
- {
- fixed3 cracksMap = tex2D(_CracksMap, IN.uv_MainTex).r;
- clip((1 - cracksMap) - _DissolvePower);
- o.Emission += cracksMap * _CracksPower;
- }
- }
- ENDCG
- }
- FallBack "Diffuse"
- }