forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Мультитекстуринг (http://forum.boolean.name/showthread.php?t=16457)

Crystal 09.03.2012 01:08

Мультитекстуринг
 
Как присвоить отдельным вертексам сурфейса разные текстуры?
Есть ли готовые решения?

(не предлагайте написать шейдер, я не умею их писать)

HolyDel 09.03.2012 01:13

Ответ: Мультитекстуринг
 
никак. это должны быть разные сюрфейсы. на дх10 есть текстурные массивы.

ну или атлас.

Crystal 09.03.2012 11:02

Ответ: Мультитекстуринг
 
Цитата:

Сообщение от HolyDel (Сообщение 222193)
никак. это должны быть разные сюрфейсы. на дх10 есть текстурные массивы.

ну или атлас.

Читал вчера справку по шейдерам, там написано:

Цитата:

Текстуры объекта. Каждый объект (а точнее его поверхности), могут иметь до 8 текстур, они передаются по семантике TEXTURE_n, где n – номе текстурного слоя в диапазоне [0, 7]. Например:
Код:

texture diffuseTexture : TEXTURE_0; // дифузная текстура, будет взята с
// нулевого слоя поверхности объекта
texture normalTexture : TEXTURE_1; // текстура карты нормалей, будет
// взята с первого слоя поверхности
// объекта

Значит, через шейдеры к одному сурфейсу можно применить до 8 текстур.
Значит уже есть готовые решения, кто-нибудь этим занимался.

HolyDel 09.03.2012 12:57

Ответ: Мультитекстуринг
 
8 текстур.
текстурные координаты то одни. ну или максимум две.

Crystal 09.03.2012 13:06

Ответ: Мультитекстуринг
 
Цитата:

Сообщение от HolyDel (Сообщение 222204)
8 текстур.
текстурные координаты то одни. ну или максимум две.

Я видел видео различных редакторов, где кистями рисуют по мешу.
Берут текстуру, и наносят в нужную область. Никаких дополнительных
мешей при этом имхо не создаётся.

Есть теория, как они это делают?
Я много проблем для себя решил в программировании,
но проблему текстурирования ландшафтов не смог.

В максе я могу замоделить ландшафт, и затекстурить как надо,
но это мне не подходит.

Есть какие предложения по реализации нормального текстурирования ландшафта?

HolyDel 09.03.2012 13:14

Ответ: Мультитекстуринг
 
смотря сколько текстур.
5 - вполне влазят в интерполяцию по цвету.
Код:

float4 resultcolor = tex2D(tex0,uv) * color.a + tex2D(tex1,uv) * color.r + tex2D(tex2,uv) * color.g + tex2D(tex3,uv) * color.b + tex2D(tex4,uv) * ((1.0 - color.a + color.r + color.g + color.b));
больше - сложнее, и скорее всего сведется к созданию дополнительных поверхностей.

Crystal 09.03.2012 13:32

Ответ: Мультитекстуринг
 
Пардон, этот код - это что вообще?

Mr_F_ 09.03.2012 13:51

Ответ: Мультитекстуринг
 
Цитата:

Берут текстуру, и наносят в нужную область. Никаких дополнительных
мешей при этом имхо не создаётся.
а кто сказал? насколько я помню по рипперенью TES, там на каждую текстуру на террейне рисуется копия меша террейна с этой тексой. много текс блендятся поверх друг друга.

если тебе не говорят, что дополнительные меши создаются, это не значит, что они не создаются.

dsd 09.03.2012 14:57

Ответ: Мультитекстуринг
 
Цитата:

Сообщение от CrystalDev (Сообщение 222205)
Есть какие предложения по реализации нормального текстурирования ландшафта?

Смотреть насколько нормаль откланяется от вертикали, обращать внимание на высоту каждого пикселя и плюс можно еще по самим текстурным координатам что-нить замутить и таки из десятка хороших текстур можно сделать относительно приличный шейдер.

moka 09.03.2012 18:40

Ответ: Мультитекстуринг
 
Кури Terrain Splatting.

LLI.T.A.L.K.E.R. 09.03.2012 19:30

Ответ: Мультитекстуринг
 
Цитата:

Сообщение от MoKa (Сообщение 222240)
Кури Terrain Splatting.

http://www.blitzbasic.com/codearcs/c....php?code=2620



В последней версии используется один mesh.

Mr_F_ 09.03.2012 19:38

Ответ: Мультитекстуринг
 
сюрфейсов несколько, а именно они олицетворяют вызовы отрисовки.

Taugeshtu 09.03.2012 22:49

Ответ: Мультитекстуринг
 
Цитата:

больше - сложнее, и скорее всего сведется к созданию дополнительных поверхностей.
Запихивал в ксорс шейдером 8 текстур, алгоритм топорен донельзя:
  • в альфа-канал суём маску для текстуры (можно нарисовать в любой 3д-малевалке по любому мешу-террейну (я лично использовал для летающих островов) любым интересующим цветом маску, а потом сунуть в каком-нибудь фотошопе);
  • в rbg - саму диффузную текстуру (да, фокусы с нормалями не сделать, печаль..);
  • опционально передаём масштабирование отдельно на каждый слой и смещение каким-нибудь 4-хкомпонентным вектором;
  • смешиваем в порядке следования по альфе...

Где-то даже лежит (наверное) у меня исходник шейдера...
В качестве "бонуса" - 16 выборок на пиксель, да.

Вот шейдер; правда комменты похерились в кодировке... Ну и леший с ними:

Код:

float4x4 matrixWorldViewProj : MATRIX_WORLDVIEWPROJ; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
float4x4 matrixWorld        : MATRIX_WORLD;        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
float3  lightDirection      : LIGHT0_DIRECTION;    // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
float4  lightColor          : LIGHT0_COLOR;        // пїЅпїЅпїЅпїЅ
float4  entityColor        : COLOR_DIFFUSE;        // пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
float4      size0            ;
float4      size1            ;
texture  lay0                : TEXTURE_0;            // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
texture  lay1                : TEXTURE_1;            // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
texture  lay2                : TEXTURE_2;            // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
texture  lay3                : TEXTURE_3;            // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
texture  lay4                : TEXTURE_4;            // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
texture  lay5                : TEXTURE_5;            // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
texture  lay6                : TEXTURE_6;            // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
texture  lay7                : TEXTURE_7;            // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
// LAYER_0
sampler layer_0 = sampler_state
{
        Texture = <lay0>; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        AddressU      = WRAP;
        AddressV      = WRAP;
        AddressW      = WRAP;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        MinFilter    = ANISOTROPIC;
        MagFilter    = ANISOTROPIC;
        MipFilter    = ANISOTROPIC;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        MaxAnisotropy = 4;
};
// LAYER_1
sampler layer_1 = sampler_state
{
        Texture = <lay1>; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        AddressU      = WRAP;
        AddressV      = WRAP;
        AddressW      = WRAP;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        MinFilter    = ANISOTROPIC;
        MagFilter    = ANISOTROPIC;
        MipFilter    = ANISOTROPIC;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        MaxAnisotropy = 4;
};
// LAYER_2
sampler layer_2 = sampler_state
{
        Texture = <lay2>; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        AddressU      = WRAP;
        AddressV      = WRAP;
        AddressW      = WRAP;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        MinFilter    = ANISOTROPIC;
        MagFilter    = ANISOTROPIC;
        MipFilter    = ANISOTROPIC;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        MaxAnisotropy = 4;
};
// LAYER_3
sampler layer_3 = sampler_state
{
        Texture = <lay3>; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        AddressU      = WRAP;
        AddressV      = WRAP;
        AddressW      = WRAP;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        MinFilter    = ANISOTROPIC;
        MagFilter    = ANISOTROPIC;
        MipFilter    = ANISOTROPIC;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        MaxAnisotropy = 4;
};
// LAYER_4
sampler layer_4 = sampler_state
{
        Texture = <lay4>; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        AddressU      = WRAP;
        AddressV      = WRAP;
        AddressW      = WRAP;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        MinFilter    = ANISOTROPIC;
        MagFilter    = ANISOTROPIC;
        MipFilter    = ANISOTROPIC;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        MaxAnisotropy = 4;
};
// LAYER_5
sampler layer_5 = sampler_state
{
        Texture = <lay5>; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        AddressU      = WRAP;
        AddressV      = WRAP;
        AddressW      = WRAP;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        MinFilter    = ANISOTROPIC;
        MagFilter    = ANISOTROPIC;
        MipFilter    = ANISOTROPIC;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        MaxAnisotropy = 4;
};
// LAYER_6
sampler layer_6 = sampler_state
{
        Texture = <lay6>; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        AddressU      = WRAP;
        AddressV      = WRAP;
        AddressW      = WRAP;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        MinFilter    = ANISOTROPIC;
        MagFilter    = ANISOTROPIC;
        MipFilter    = ANISOTROPIC;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        MaxAnisotropy = 4;
};// LAYER_7
sampler layer_7 = sampler_state
{
        Texture = <lay7>; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        AddressU      = WRAP;
        AddressV      = WRAP;
        AddressW      = WRAP;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        MinFilter    = ANISOTROPIC;
        MagFilter    = ANISOTROPIC;
        MipFilter    = ANISOTROPIC;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        MaxAnisotropy = 4;
};
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
struct VSInput
{
        float4 position  : POSITION;
        float3 normal    : NORMAL;
        float2 texCoords : TEXCOORD0;
};
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
struct VSOutput
{
        float4 position  : POSITION;
        float3 normal    : TEXCOORD1;
        float2 texCoords : TEXCOORD0;
};
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ
VSOutput VSMain(VSInput input)
{
        // пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ
        VSOutput output;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        output.position  = mul(input.position, matrixWorldViewProj);
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        output.normal    = normalize(mul(input.normal, matrixWorld));
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        output.texCoords = input.texCoords;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        return output;
}
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ
float4 PSMain(VSOutput input) : COLOR0
{       
        // пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
        float4 m0 = tex2D(layer_0, input.texCoords);
        float4 m1 = tex2D(layer_1, input.texCoords);
        float4 m2 = tex2D(layer_2, input.texCoords);
        float4 m3 = tex2D(layer_3, input.texCoords);
        float4 m4 = tex2D(layer_4, input.texCoords);
        float4 m5 = tex2D(layer_5, input.texCoords);
        float4 m6 = tex2D(layer_6, input.texCoords);
        float4 m7 = tex2D(layer_7, input.texCoords);
        float4 d0 = tex2D(layer_0, input.texCoords * size0.x);
        float4 d1 = tex2D(layer_1, input.texCoords * size0.y);
        float4 d2 = tex2D(layer_2, input.texCoords * size0.z);
        float4 d3 = tex2D(layer_3, input.texCoords * size0.w);
        float4 d4 = tex2D(layer_4, input.texCoords * size1.x);
        float4 d5 = tex2D(layer_5, input.texCoords * size1.y);
        float4 d6 = tex2D(layer_6, input.texCoords * size1.z);
        float4 d7 = tex2D(layer_7, input.texCoords * size1.w);
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ
        float lit = dot(input.normal, -lightDirection);
        // ambient
        lit = max(0.15, lit);
        float4 result = ((((((d0*(1-m1.a)+d1*m1.a)*(1-m2.a)+d2*m2.a)*(1-m3.a)+d3*m3.a)*(1-m4.a)+d4*m4.a)*(1-m5.a)+d5*m5.a)*(1-m6.a)+d6*m6.a)*(1-m7.a)+d7*m7.a;
        // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
//        result = (result * entityColor * lit * lightColor);
//        result.a = 0.5;
//        return result;
        return (result * entityColor * lit * lightColor);
}
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
technique multi_tile
{
        pass p0
        {
//                AlphaBlendEnable= true;
                VertexShader = compile vs_2_0 VSMain();
                PixelShader  = compile ps_2_0 PSMain();
        }
}


Crystal 09.03.2012 23:51

Ответ: Мультитекстуринг
 
http://www.youtube.com/watch?v=kKov7Uyqm6E

Вот видео из редактора юнити, смотрим на 3:00.
Вы хотите сказать, что при рисовке этой дороги
создалась копия террайна с альфой???

А если мне надо 20 дорог из разного кирпича,
эт что 20 альфатеррайнов создастся?

Да брехня это всё.

Crystal 10.03.2012 00:02

Ответ: Мультитекстуринг
 
Даже вот возьмём например не мэп эдиторы, а текстурирование в максе.
Я могу на одну цельную модель кучу разных текстур наляпать в разные области.
Если это возможно в максе сделать с моделью, то блин наверное и в игре можно.


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

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