forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на Unity (http://forum.boolean.name/forumdisplay.php?f=147)
-   -   Диваны (http://forum.boolean.name/showthread.php?t=13440)

pax 03.10.2010 20:08

Ответ: Диваны
 
Цитата:

Сообщение от ARENSHI (Сообщение 163760)
А заказчик предупреждён на счёт плеера?)

Конструктор прикольный намечается :)
Интерполяцыя клёво смотрится. Вот только заметил что Beast-овские лайтмапы в режиме эмуляции DX7 не отображаются. А просчитанные в максе отображаются. У тебя какие? А то домохоязьки фпечале будут.

У заказчика был набросок на Quest3d который работает только в IE. Unity работает на всех распространенных браузерах, а лайтмэпы у меня просчитанные максом (какие дали).

ARA 04.10.2010 04:36

Ответ: Диваны
 
Вложений: 1
Цитата:

Да все вроде работает как надо:
Да не всё):

pax 04.10.2010 18:01

Ответ: Диваны
 
Сегодня написал Editor скрипт, добавляющий функционал назначения материалов и коллайдеров подобъектам модуля дивана не лазя по его иерархии. Скрыл ненужные во время проектирования настройки.


Еще в демке теперь таскание текстуры по дивану ориентировано правильно, даже если текстурные координаты повернуты на 90, 180.. и т.д. градусов.

http://shgames.ru/divan/

IGR 05.10.2010 13:18

Ответ: Диваны
 
диван выглядит симпотно !! ;)

pax 06.10.2010 23:19

Ответ: Диваны
 
Исправил шейдер, который цвет засвечивал, теперь все нормально (запутали меня лайтмэпные шейдеры, которе идут в исходниках как extra, своей эмиссией). Сделал загрузку модулей дивана отдельно, теперь плеер весит ~100кб. Загружаются тока запрошенные модули.
Можете теперь откуда-нибудь загружать текстуры и смотреть как получается :)
В формуле по умолчанию (которая текстом прописана) представлены все доступные модули на текущий момент.

pax 07.10.2010 22:06

Ответ: Диваны
 
Сегодня сделал блики для имитации лакированных поверхностей, но получается в местах щелей толи просветы, толи блики так себя ведут...
http://shgames.ru/divan/ бликует материал с цветочками.
Может кто из гуру посоветовать как от этого избавиться?

.Squid 07.10.2010 23:24

Ответ: Диваны
 
Шойдер бы показал. Там не только засветы. Если смотреть строго сверху на засвеченную область подушки, то в блике получается два креста: один белый пересвеченный, второй вокруг него монотонно темный. Что-то с нормалями, может быть...

pax 07.10.2010 23:37

Ответ: Диваны
 
Первый мой шейдер был с использованием сурфейсной техники юнити, как оказалось я пока не до конца понимаю как она генерит шейдеры и блики там сделать вообще не получилось.
Сейчас шейдер переписал заново вот так:
PHP код:

Shader "Divan/DiffuseSpecularNew" {
Properties {
    
_Color ("Main Color"Color) = (1,1,1,1)
    
_SpecColor ("Specular Color"Color) = (0.50.50.51)
    
_Shininess ("Shininess"Range (0.011)) = 0.8    
    _MainTex 
("Base (RGB) Gloss (A)"2D) = "white" {}
    
_LightMap ("Lightmap (RGB)"2D) = "white" {}
    
_LightMap2 ("Lightmap2 (RGB)"2D) = "white" {}
    
_LightMapT ("LightmapT"Range (0.01)) = 0.0 
}

SubShader {
    
LOD 200
    Tags 
"RenderType" "Opaque" }
    
Pass{
        
CGPROGRAM
        
#pragma vertex vert
        #pragma fragment frag

        #include "UnityCG.cginc" 

        
sampler2D _MainTex;
        
sampler2D _LightMap;
        
sampler2D _LightMap2;
        
float4 _Color;
        
float4 _SpecColor;
        
float _LightMapT;
        
float _Shininess;
        
float4x4 _MainTexMatrix;

        
struct appdata
        
{
            
float4 vertex   POSITION;
            
float4 texcoord TEXCOORD0;
            
float4 texcoord1TEXCOORD1;
            
float4 normal   NORMAL;
        };

        
struct v2f {
          
float4 pos POSITION;
          
float4 uv  TEXCOORD0;
          
float4 uv2 TEXCOORD1;
          
float4 normal TEXCOORD2;
          
float3 lightDir TEXCOORD3;
          
float3 viewDir  TEXCOORD4;
        };


        
v2f vert (appdata v
        {
            
v2f o;
            
o.pos mulUNITY_MATRIX_MVPv.vertex );
            
o.uv mul(_MainTexMatrixv.texcoord);
            
o.uv2 v.texcoord1;
            
o.normal v.normal;
            
o.lightDir ObjSpaceLightDirv.vertex );
            
o.viewDir ObjSpaceViewDirv.vertex );
            return 
o;
        }

        
half4 fragv2f i ) : COLOR {
            
half4 mainColor tex2D(_MainTexi.uv.xy);
            
half4 c = ((_LightMapT) * tex2D (_LightMapi.uv2.xy) + _LightMapT tex2D (_LightMap2i.uv2.xy) ) * mainColor;
           
            
half3 h normalize (i.lightDir i.viewDir);
            
float nh max (0dot (i.normalh));
            
float spec pow (nhmainColor.48) * _Shininess;
            
            return 
_Color spec _SpecColor;
        }


        
ENDCG
    
}
}

FallBack "Divan/VertexLit"



UPD: такое чувство, что шейдер считает положение камеры и источника в одном месте, и источник точечный... хотя должен быть направленный...

.Squid 08.10.2010 00:11

Ответ: Диваны
 
А нормали нормализованы? Те, что i.normal.
Кстати, а что max быстрее, чем saturate?

pax 08.10.2010 00:18

Ответ: Диваны
 
нормализованы ли нормали не знаю, но скорее всего нормализованы импортером, а max была использована в шейдере, который я взял за пример. Попробую нормализовать нормали и использовать saturate, мне не нужны значения больше 1...

pax 08.10.2010 00:25

Ответ: Диваны
 
Странно, при нормализации нормали в вершинной функции блики вообще пропадают...

pax 08.10.2010 12:04

Ответ: Диваны
 
Решил использовать двухпроходный шейдер для двухтекстурных видеокарт без использования Cg вставок.
Получилось следующее:
PHP код:

Shader "Divan/VertexLit" {
Properties {
    
_Color ("Main Color"Color) = (1,1,1,1)
    
_SpecColor ("Spec Color"Color) = (1,1,1,1)
    
_Shininess ("Shininess"Range (0.011)) = 0.7
    _MainTex 
("Base (RGB)"2D) = "white" {}
    
_LightMap ("Lightmap (RGB)"2D) = "lightmap" LightmapMode }
    
_LightMap2 ("Lightmap2 (RGB)"2D) = "lightmap" LightmapMode }
    
_LightMapT ("LightmapT"Range (0.01)) = 0.0 
}


// ------------------------------------------------------------------
// Two texture cards

SubShader {
    
LOD 100
    Tags 
"RenderType"="Opaque" }

    
Pass {
        
Name "LM"
        
        
BindChannels {
            
Bind "Vertex"vertex
            Bind 
"texcoord1"texcoord0 // lightmap uses 2nd uv
            
Bind "texcoord1"texcoord1 // lightmap2 uses 2nd uv
        
}
        
        
SetTexture [_LightMap] {
            
combine texture
        
}
        
SetTexture [_LightMap2] {
            
constantColor (0.5,0.5,0.5,[_LightMapT])
            
combine texture lerp(constantprevious
        
}
    }
    
    
Pass {
        
Name "COLOR"
        
Tags {"LightMode" "Vertex"}
        
Material {
            
Diffuse [_Color]
            
Shininess [_Shininess]
            
Specular [_SpecColor]
        }

        
Lighting On
        SeparateSpecular On
        ZWrite Off
        Offset 0
, -1
        Blend DstColor Zero
        
        BindChannels 
{
            
Bind "Vertex"vertex
            Bind 
"normal"normal
            Bind 
"texcoord"texcoord0 // main uses 1st uv
        
}
        
        
SetTexture [_MainTex] {
            
ConstantColor [_Color]
            
combine texture Constanttexture
            matrix 
[_MainTexMatrix]
        }
    }
}

Fallback "VertexLit"


Теперь есть поддержка старых видеокарт и блики исправились.

pax 25.11.2010 16:54

Ответ: Диваны
 
Новое демо http://shgames.ru/divan_new/
Для некоторых тканей есть параметр falloff, который придает им более реалистичный вид. Пример:

pepel 26.11.2010 06:24

Ответ: Диваны
 
да смотрится конешь красиво, но когда загружается эта демка, то браузер глючит и стопорит.
в самой проге какието странные тормоза, где-то с периодом 1 секунда появляется некая задержка изображения(скачек) странно както.хз мож модели оптимизировать, но на обычные тормоза не похоже(в первой версии такого не было)
и текстуры достаточно медленно зангружаются ~5сек.
еще интуитивно хочется зум на колесо мышки, т.к. везде так сделано

а вообще круто, почти как рендер, шейдеры прикольные.!

Harter 26.11.2010 12:59

Ответ: Диваны
 
Оно то может и красиво, но зачем Диванам графика Кризиса? У меня, средне статического дивано-жаждателя с потенциальным нетбуком, при построении диванов программа ненадолго зависает, а после, просто работает медленно. Если она всё-таки коммерческая, стоит задуматься об оптимизации. ИМХО.


Часовой пояс GMT +4, время: 01:00.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot