Blender -> Unity3D: second UV

Импорт текстур, моделей, звуков и пр.

Blender -> Unity3D: second UV

Сообщение AlmazDelDiablo 09 май 2016, 18:18

Привет, котаны.

Взял стандартный куб в Блендере, добавил ему два 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

Синтаксис:
  1. Shader "Noptor/MapedEmission" { 
  2.     Properties { 
  3.         _MainTex ("Base (RGBA)", 2D) = "white" {} 
  4.         _EmissiveMap ("Emissive map (R)", 2D) = "black" {} 
  5.         _EmissiveColor ("Emissive color (RGB)", Color) = (1, 0, 0, 1) 
  6.         _EmissivePower ("Emissive power", Range(0, 4)) = 1 
  7.         _CracksMap ("Cracks map (R)", 2D) = "black" {} 
  8.         _CracksPower ("Crack power", Range(0, 30)) = 0 
  9.         _DissolvePower ("Dissolve power", Range(0, 1)) = 0 
  10.     } 
  11.      
  12.     SubShader { 
  13.         Tags { "RenderType" = "Opaque" } 
  14.         LOD 150 
  15.         Cull Off 
  16.  
  17.             CGPROGRAM 
  18.             #pragma surface surf Lambert 
  19.              
  20.             sampler2D _MainTex; 
  21.  
  22.             sampler2D _EmissiveMap; 
  23.             fixed3 _EmissiveColor; 
  24.             fixed _EmissivePower; 
  25.  
  26.             sampler2D _CracksMap; 
  27.             fixed _CracksPower; 
  28.             fixed _DissolvePower; 
  29.  
  30.             struct Input { 
  31.                 half2 uv_MainTex; 
  32.                 half2 uv_EmissiveMap; 
  33.             }; 
  34.  
  35.             void surf (Input IN, inout SurfaceOutput o) { 
  36.                 fixed3 main = tex2D(_MainTex, IN.uv_MainTex).rgb; 
  37.                 fixed3 figureMap = tex2D(_EmissiveMap, IN.uv_EmissiveMap).r; 
  38.  
  39.                 o.Emission = figureMap * _EmissiveColor * _EmissivePower; 
  40.                 o.Albedo = main * (1 - figureMap); 
  41.  
  42.                 if (_CracksPower > 0) 
  43.                 { 
  44.                     fixed3 cracksMap = tex2D(_CracksMap, IN.uv_MainTex).r; 
  45.  
  46.                     clip((1 - cracksMap) - _DissolvePower); 
  47.                      
  48.                     o.Emission += cracksMap * _CracksPower; 
  49.                 } 
  50.             } 
  51.             ENDCG 
  52.     } 
  53.      
  54.     FallBack "Diffuse" 
Аватара пользователя
AlmazDelDiablo
UNец
 
Сообщения: 25
Зарегистрирован: 17 фев 2013, 13:13
Откуда: Россия, Москва
  • Сайт

Вернуться в Медиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3