forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Наложение нескольких текстур на загружаемый Mesh (http://forum.boolean.name/showthread.php?t=19589)

MOrtAl44444 19.12.2014 18:28

Наложение нескольких текстур на загружаемый Mesh
 
Вложений: 4
Помогите пожалуйста. 3 дня мучаюсь над этим вопросом, уже все учебники, статьи и примеры пересмотрел - ни один из них не подходит.

:::::: КОД ::::::
;загружаем Mesh
mesh = xloadmesh("mesh.3ds")

;вызываем функцию текстурирования
mesh_texture_splatting()

Скажите суть метода, какие команды потребуется или может у кого-то алгоритм есть ))

Например нам дана вот такая маска и каждый цвет на ней ссответствует определенной текстуре.
->->->

MOrtAl44444 19.12.2014 18:36

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Вложений: 12
Или нам даны maps и textures.
Где map (карта гор, карта_травы, карта_еще травы, карта_еще гор, карта нормалей)
А где textures( разные текстурки рисующие по белому цвету на maps)
+ ну еще в добавок можно текстуру Detail

ABTOMAT 19.12.2014 18:57

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Пиксельный шейдер в том состоянии в каком он сейчас в студию!

Izunad 20.12.2014 01:43

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Если тебе дать готовый шейдер, ты начнешь задавать много много вопросов.
Начни с малого:
  1. изучи конвейер визуализации
  2. структуру написания шейдера
  3. "загрузку" текстур, каких то значений в шейдер
  4. пиксельный шейдер
  5. мультитекстурирование

Код:

static float4 Colorka : COLOR0;
texture diffuseTexture : TEXTURE_0;

sampler diffuseSampler = sampler_state
{
        Texture = <diffuseTexture>;
        AddressU = WRAP;
        AddressV = WRAP;
        AddressW = WRAP;
        MinFilter = ANISOTROPIC;
        MagFilter = ANISOTROPIC;
        MipFilter = ANISOTROPIC;
        MaxAnisotropy = 4;
};

struct PSInput
{
        float2 texCoords : TEXCOORD0;
};

struct PSOutput
{
        float4 color : COLOR;
};

PSOutput PSMain (PSInput input)
{
        PSOutput output;
        Colorka = float4(0,0.1,0,0);
        output.color.rgba = tex2D(diffuseSampler, input.texCoords).rgba+Colorka;
        return output;
}

technique MainTechnique
{
        pass p
        {
                PixelShader        = compile ps_2_0 PSMain();
        }
}

Вкуришь данный фрагмент дальше попрет само собой.

MOrtAl44444 20.12.2014 01:57

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Я думаю, что если дать мне полный шейдер, то у меня как раз не возникнет вопросов)) Он будет исчерпан...когда написал пост я потом что и делал читал про шейдеры и изучал семплы .... так что Please me help

ABTOMAT 20.12.2014 02:20

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

Сообщение от MOrtAl44444 (Сообщение 290884)
Я думаю, что если дать мне полный шейдер, то у меня как раз не возникнет вопросов)) Он будет исчерпан...когда написал пост я потом что и делал читал про шейдеры и изучал семплы .... так что Please me help

Никто тебе такой шейдер не даст потому что его ни у кого нет.
Его нужно написать под конкретно твою задачу. Станет ли кто-то это делать за тебя? Вряд ли.

Что конкретно тебе непонятно? Как прочитать пиксель из текстуры? Как их смешать?

Пусть у нас будет какая-то "подложка" — диффузина, которая есть всегда, в любом месте меша. Например пусть это будет текстура скалы.
Потом у нас есть другие текстуры - травы, грязи, ещё чего-нибудь.

У нас информация о распределении текстур хранится в цветной кляксе.
В кляксе 4 канала: RGBA.
То есть максимум мы можем раскрасить наш меш в 4 текстуры + подложка, которая есть всегда. Аналогия в Фотошопе (если знаком): подложка — Background-слой, остальные слои — текстуры, их ластиком подтёрли в местах где нужно и наложили друг на друга.

Делаем в шейдере вектор4. В нём мы будем хранить результат. В него сразу записываем данные из текстуры-подложки.

Потом смешиваем его с первой текстурой. Пусть её "интенсивность" обозначается красным каналом из кляксы.
Берём значение R из кляксы. Умножаем на него значение прочитанное из первой текстуры. Умножаем на (1-R) значение подложки. Складываем. Записываем в наш вектор4.

Потом смешиваем со второй текстурой. Пусть её "интенсивность" хранится в канале G кляксы. Читаем оттуда G, умножаем на него тексель второй текстуры. На (1-G) умножаем значение, того, что у нас получилось перед этим. Складываем, помещаем в наш вектор результата.

Аналогично делаешь с каналами B и A если таковые нужны.
Как сделать больше текстур? Решать можно по-разному, проще всего сделать ещё одну "кляксу" для хранения интенсивности ещё текстур.
Хотя сначала сделай с четырьмя чтоб работало, потом двигайся дальше.

В итоге у тебя должен получиться в векторе4 правильно смешанный цвет из всех текстур. Применяешь его как будто пиксель прочитанный из текстуры.

Вот тебе полный алгоритм как делать. Возьми и делай. Задавай вопросы в конкретных местах если не получается.

Mr_F_ 20.12.2014 02:24

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

Умножаем на него значение прочитанное из первой текстуры. Умножаем на (1-R) значение подложки. Складываем.
это всё делает lerp
(хотя я так понял, ты решил разжевать для понятности его смысл)

tirarex 20.12.2014 12:57

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Вложений: 1
Упрощенный способ автомата.
Дорабатывай как тебе надо,набросал за 5 минут.

MOrtAl44444 20.12.2014 14:40

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Код:

diffuse=(tex2D(Stex1S, input.texCoords)*diffuse.r)+(tex2D(Stex2S, input.texCoords)*diffuse.g)+(tex2D(Stex3S, input.texCoords)*diffuse.b),1;
        return diffuse * lit * lightColor;

Вот за этот код отдельное спасибо ))

tirarex 20.12.2014 14:52

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Я не заморачивался с кодом , там все можно переделать на много лучше и как сказал автомат , с 4 текстурами.
Гугли тему Tetxure Splatting.

ABTOMAT 20.12.2014 14:53

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
http://habrahabr.ru/post/180743/
Вот тут кстати описан хороший принцип как сделать ещё более продвинуто.
Но, как говорится, совершенству нет предела.
Начни с малого и далее вноси улучшения до той степени до какой посчитаешь нужным.

Mr_F_ 20.12.2014 14:55

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

diffuse=(tex2D(Stex1S, input.texCoords)*diffuse.r)+(tex2D(Stex2S, input.texCoords)*diffuse.g)+(tex2D(Stex3S, input.texCoords)*diffuse.b),1;
так может ненароком заярчение выйти из-за сложения, т.к. ты не умножаешь на 1-альфа нижние слои.

не собирался делать работу за ТСа, но вы меня вынуждаете:


Код:

float3 mask = tex2D(texMask, texCoords);
float3 tex0 = tex2D(tex_0, texCoordsTiled);
float3 tex1 = tex2D(tex_1, texCoordsTiled);
float3 tex2 = tex2D(tex_2, texCoordsTiled);
float3 tex3 = tex2D(tex_3, texCoordsTiled);

float3 color = lerp(tex0, tex1, mask.r);
color = lerp(color, tex2, mask.g);
color = lerp(color, tex3, mask.b);


MOrtAl44444 20.12.2014 18:54

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Что не так или я уже в глаза долблюсь!!)

-- Шейдер --
Цитата:

float4x4 world;
float4x4 view;
float4x4 proj;

float maxHeight = 128;

texture displacementMap;
sampler displacementSampler = sampler_state
{
Texture = <displacementMap>;
MipFilter = Point;
MinFilter = Point;
MagFilter = Point;
AddressU = Clamp;
AddressV = Clamp;
};

texture sandMap;
sampler sandSampler = sampler_state
{
Texture = <sandMap>;
MipFilter = Linear;
MinFilter = Linear;
MagFilter = Linear;
AddressU = Wrap;
AddressV = Wrap;
};

texture grassMap;
sampler grassSampler = sampler_state
{
Texture = <grassMap>;
MipFilter = Linear;
MinFilter = Linear;
MagFilter = Linear;
AddressU = Wrap;
AddressV = Wrap;
};

texture rockMap;
sampler rockSampler = sampler_state
{
Texture = <rockMap>;
MipFilter = Linear;
MinFilter = Linear;
MagFilter = Linear;
AddressU = Wrap;
AddressV = Wrap;
};

texture snowMap;
sampler snowSampler = sampler_state
{
Texture = <snowMap>;
MipFilter = Linear;
MinFilter = Linear;
MagFilter = Linear;
AddressU = Wrap;
AddressV = Wrap;
};

struct VS_INPUT {
float4 position : POSITION;
float4 uv : TEXCOORD0;
};
struct VS_OUTPUT
{
float4 position : POSITION;
float4 uv : TEXCOORD0;
float4 worldPos : TEXCOORD1;
float4 textureWeights : TEXCOORD2;
};

float textureSize = 1024.0f;
float texelSize = 1.0f / 256.0f; //size of one texel;

float4 tex2Dlod_bilinear( sampler texSam, float4 uv )
{

float4 height00 = tex2Dlod(texSam, uv);
float4 height10 = tex2Dlod(texSam, uv + float4(texelSize, 0, 0, 0));
float4 height01 = tex2Dlod(texSam, uv + float4(0, texelSize, 0, 0));
float4 height11 = tex2Dlod(texSam, uv + float4(texelSize , texelSize, 0, 0));

float2 f = frac( uv.xy * textureSize );

float4 tA = lerp( height00, height10, f.x );
float4 tB = lerp( height01, height11, f.x );

return lerp( tA, tB, f.y );
}


VS_OUTPUT Transform(VS_INPUT In)
{
VS_OUTPUT Out = (VS_OUTPUT)0;
float4x4 viewProj = mul(view, proj);
float4x4 worldViewProj= mul(world, viewProj);


float height = tex2Dlod_bilinear( displacementSampler, float4(In.uv.xy,0,0)).r;

In.position.y = height * maxHeight;
Out.worldPos = mul(In.position, world);
Out.position = mul( In.position , worldViewProj);
Out.uv = In.uv;
float4 TexWeights = 0;

TexWeights.x = saturate( 1.0f - abs(height - 0) / 0.2f);
TexWeights.y = saturate( 1.0f - abs(height - 0.3) / 0.25f);
TexWeights.z = saturate( 1.0f - abs(height - 0.6) / 0.25f);
TexWeights.w = saturate( 1.0f - abs(height - 0.9) / 0.25f);
float totalWeight = TexWeights.x + TexWeights.y + TexWeights.z + TexWeights.w;
TexWeights /=totalWeight;
Out.textureWeights = TexWeights;


return Out;
}

float4 PixelShader(in float4 uv : TEXCOORD0, in float4 weights : TEXCOORD2) : COLOR
{
float4 sand = tex2D(sandSampler,uv*8);
float4 grass = tex2D(grassSampler,uv*8);
float4 rock = tex2D(rockSampler,uv*8);
float4 snow = tex2D(snowSampler,uv*8);
return sand * weights.x + grass * weights.y + rock * weights.z + snow * weights.w;
}

technique GridDraw
{
pass P0
{
vertexShader = compile vs_3_0 Transform();
pixelShader = compile ps_3_0 PixelShader();
}
}

-- Код в Xors3D --
Цитата:

mesh = xCreateCube()
xScaleEntity mesh, 500, 500, 500
xPositionEntity mesh, 40000, 1300, 30000

effect = xLoadFXFile("1.fx")
xSetEffectMatrixSemantic mesh, "world", MATRIX_WORLD
xSetEffectMatrixSemantic mesh, "view", MATRIX_VIEW
xSetEffectMatrixSemantic mesh, "proj", MATRIX_PROJ
xSetEntityEffect mesh, effect
xSetEffectTechnique mesh, "GridDraw"

xSetEffectTexture mesh, "sandMap",xLoadTexture("sand.jpg")
xSetEffectTexture mesh, "grassMap",xLoadTexture("grass.jpg")
xSetEffectTexture mesh, "rockMap",xLoadTexture("rock.jpg")
xSetEffectTexture mesh, "displacementMap",xLoadTexture("dm.png")
xSetEffectTexture mesh, "snowMap",xLoadTexture("snow.jpg")



tirarex 20.12.2014 19:04

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Проверяй шейдер на ошибки через tv3d.

Arton 20.12.2014 20:09

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Проверка шейдера sFXe.7z
Тестер сказал что шейдер рабочий. Упаковывай код в сообщение в соответствующие теги.

Последний Хорс с примерами.
Примеры.

Э, не ту ссылку дал на семплы https://yadi.sk/d/npgfRfwlcjhST, думаю — что-то так мало.

P. S. Хорс в лог тоже может писать ошибки шейдера.

MOrtAl44444 25.12.2014 23:31

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Вложений: 1
Короч в опу шейдеры...пока что
Поделил весь террайн на 36 регионов, в 3ds max сделал текстуры для каждого и получилось вот что:
FPS 81 - временно без оптимизации

dsd 25.12.2014 23:42

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Вложений: 1


Ты что то типа этого замутить пытался?

Код:

uniform sampler2D texture0;
uniform sampler2D texture1;
uniform sampler2D texture2;
uniform sampler2D texture3;

in vec3 fragmentn;
in vec2 fragmentuv;
in vec3 lightvec;


out vec4 color;





void main(void) {
float diff = dot(fragmentn,normalize(lightvec));

//получаю отклонение нормали от вертикали
float v_diff = dot(fragmentn, vec3 (0.0f,1.0f,0.0f));
//...
float disp=0.0f;

vec4 diffuse;
vec4 diffuse1;
vec4 diffuse2;

if(v_diff>0.95){diffuse = texture(texture0,fragmentuv);}

if(v_diff>0.91 && v_diff<=0.95){
                        diffuse2 = texture(texture1,fragmentuv);
                        diffuse1 = texture(texture0,fragmentuv);
                        diffuse=mix(diffuse1,diffuse2,25*(0.95-v_diff));}

//если местность имеет небольшой уклон
if(v_diff>0.88 && v_diff<=0.91){diffuse = texture(texture1,fragmentuv);}               

if(v_diff>0.84 && v_diff<=0.88){
                        diffuse2 = texture(texture2,fragmentuv);
                        diffuse1 = texture(texture1,fragmentuv);       
                        diffuse=mix(diffuse1,diffuse2,25*(0.88-v_diff));}

//если местность имеет большой уклон
if(v_diff>0.79 && v_diff<=0.84){diffuse = texture(texture2,fragmentuv);}               

if(v_diff>0.75 && v_diff<=0.79){
                        diffuse2 = texture(texture3,fragmentuv);
                        diffuse1 = texture(texture2,fragmentuv);       
                        diffuse=mix(diffuse1,diffuse2,25*(0.79-v_diff));}

//если местность имеет пипец большой уклон
if(v_diff<=0.75){diffuse = texture(texture3,fragmentuv);}

color = diffuse*diff;
}


Arton 25.12.2014 23:49

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

Сообщение от MOrtAl44444 (Сообщение 291069)
сделал текстуры для каждого

Тогда лучше тайлами.

MOrtAl44444 26.12.2014 00:11

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

Ты что то типа этого замутить пытался?
Да, что-то типа)

Izunad 26.12.2014 00:42

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

Сообщение от MOrtAl44444 (Сообщение 291069)
Короч в опу шейдеры

Зря ты так про шейдеры :(

MOrtAl44444 26.12.2014 01:02

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

Сообщение от Izunad (Сообщение 291074)
Зря ты так про шейдеры :(

я ведь написал "пока что"
Следующая по плану вода - она с шейдером )

MOrtAl44444 30.12.2014 14:40

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Вложений: 2
Мож кто знает более совершенную формулу расположения травы( и не только травы) по вертексам Меша ?

У меня так:
PHP код:

Function LoadGrass()
grass_terr xLoadMesh("grass.3ds")  
xEntityFX grass_terr16 Or 1
xScaleEntity grass_terr
500400500

surf_terr1 
xGetSurface(terr10)
For 
j=-10 To 10 Step 1
    
For i=-10 To 10 Step 1
    
    grass_brush_rnd 
Rnd(0,1)
    If 
grass_brush_rnd 
           xEntityColor grass_terr
9912939
    
Else
           
xEntityColor grass_terr12318038
    
EndIf    

grasst1.grass_terr1 = New grass_terr1    
      grasst1
\grass_t1 xCopyEntity(grass_terr)
        .
xx1
      grasst1
\xx xVertexX(surf_terr1,Rnd(1,1682))*terr_x+xMeshWidth(terr1)
        .
yy1
        
.yy2
      grasst1
\yy xVertexY(surf_terr1,Rnd(1,1682))*terr_y+xMeshHeight(terr1)
        .
zz1
        
.zz2
      grasst1
\zz xVertexZ(surf_terr1,Rnd(1,1682))*terr_z+xMeshDepth(terr1)   
      
      If 
grasst1\xx > -5000 Goto xx1
      
If grasst1\yy 35000 Goto yy1 
      
If grasst1\yy 22000 Goto yy2
      
If grasst1\zz 120000 Goto zz1
      
If grasst1\zz Goto zz2

      xPositionEntity grasst1
\grass_t1grasst1\xxgrasst1\yygrasst1\zz
    Next
Next
End 
Function 

,где terr_x = 200, terr_y = 170, terr_z = 200 - scale значения меша(terr1) ( во-сколько раз увеличен )

Mr_F_ 30.12.2014 15:18

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
может лучше не по мешу а просто по карте высот? генеришь рандомную позицию в прямоугольнике, находишь её высоту и ставишь.

алсо пучки травы лучше по максимуму склеивать в единый меш, а то проц подавится.

MOrtAl44444 30.12.2014 15:24

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

Сообщение от Mr_F_ (Сообщение 291220)
может лучше не по мешу а просто по карте высот? генеришь рандомную позицию в прямоугольнике, находишь её высоту и ставишь.

алсо пучки травы лучше по максимуму склеивать в единый меш, а то проц подавится.

Хм, ща попробую....и не откажусь еще от идей))

MOrtAl44444 07.01.2015 00:08

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Протестируйте на FPS у себя пожалуйста )
В файле Settings.ini можно менять настройки.

1) Показатель FPS при ваших максимальных настройках
2) FPS при оптимальной настройке для вашего железа

Жду ваших советов по оптимизации...что следует исправить или добавить...баги

P.S. над гравитацией пока что особо не парился
http://dropmefiles.com/fHbSs

tirarex 07.01.2015 00:33

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Грузится долго , при стандартных настройках фпс 65-140.
Накрутил на максимум , 8-15 но трава прикольная.
Как я понял ты просто прячешь растения дальше небольшого радиуса ?

Вообще в примерах ксорса есть пример инстансинга , так же траву надо объединять в 1 меш.

Arton 07.01.2015 00:35

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

Сообщение от MOrtAl44444 (Сообщение 291385)
Протестируйте на FPS у себя пожалуйста )
В файле Settings.ini можно менять настройки.

1) Показатель FPS при ваших максимальных настройках
2) FPS при оптимальной настройке для вашего железа

Жду ваших советов по оптимизации...что следует исправить или добавить...баги

P.S. над гравитацией пока что особо не парился
http://dropmefiles.com/fHbSs

1) ~15
2) Оптимальные? Это сколько? Для меня оптимальный ФПС 60 - 75 (частота моего монитора).
Поставил настройки: 2, 1, 3000, и фпс стал ~60, я думал нашёл оптимальное значение, но пока заходил в глубь карты фпс падал, 48, 40, 35. В одну сторону повернёшься — 50, в другую 30, очень нестабильно.
При минимуме (по умолчанию), фпс <300, и камера стала быстрой.

CPU — AMD FX 6100 3.30GHz 6 core
GPU — Palit GF 450 GTS 1Gb
RAM — 4Gb
OS — Windows 7 64 SP1

P. S. Используй маску вместо альфы, трава с деревьями сливается. У хорса проблемы с мип-мапом в режиме маски (альфы?), по этому советую dds с настроенным лодом.
P. P. S. Ты юзаешь шейдер и текстуры грузятся им? Юзай dds, хз как там можно настроить мип-мап, проще текстуру схоронить.

MOrtAl44444 07.01.2015 00:44

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

Сообщение от tirarex (Сообщение 291388)
Как я понял ты просто прячешь растения дальше небольшого радиуса ?

Вообще в примерах ксорса есть пример инстансинга , так же траву надо объединять в 1 меш.

Да прячу
В 1 меш? а чтобы не нужные элементы меша скрывать - это нужно по чайлдам пробегать потом?

tirarex 07.01.2015 00:51

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Цитата:

Сообщение от MOrtAl44444 (Сообщение 291390)
Да прячу
В 1 меш? а чтобы не нужные элементы меша скрывать - это нужно по чайлдам пробегать потом?

В общем , лучшее решение - как в Minecraft.
Там все чанками , допустим 5х5 метров.
Погугли BlitzGrass , там уже все за тебя сделали , и достаточно качественно.
https://www.dropbox.com/s/eqye7v9jda...52.09.png?dl=0

MOrtAl44444 08.01.2015 18:57

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Вложений: 1
Добавил облака :)
Следующее создание норм текстуры для террайна

Цитата:

ну и елки поменять нужно

tirarex 08.01.2015 19:05

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
http://nobiax.deviantart.com/gallery...Packs?offset=0 Вот тут много бесплатной и качественной медии!

MOrtAl44444 08.01.2015 21:50

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Кто-нибудь пользовался командами xLoadTerrainTexture() и xTerrainTexture() ?

Чет я так и не разобрался как работают, а интересно....у меня он просто в черный цвет Терр красит и все

MOrtAl44444 09.01.2015 01:10

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Вложений: 1
Запилил текстуру.
Вопрос----Почему после xTerrainSplatting пропал туман??
Он ставится, но только на очень близком расстояние.


И еще один - Instancing работает с типами?

tirarex 09.01.2015 11:08

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
xTerrainSplatting Накладывает на террейн Splatting шейдер для смешивания текстур , разработчики туман в него не прописали.
Вот поэтому надо писать свои шейдеры что бы иметь полный контроль над объектами и их видом.

MOrtAl44444 09.01.2015 14:42

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Я не уверен, что шейдеры к террайну можно применять....это же в xors что-то иное чем ентити или мешь - или я не прав?

tirarex 09.01.2015 15:10

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Все познается методом пробы.

MOrtAl44444 11.01.2015 20:10

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Киньте пожалуйста "генератор случайных чисел" у кого есть или кто знает как сделать его.
Прочитал про разные алгоритмы так и недопер)
А то в xors'e слишком уж не очемный Rnd и Rand...часто одинаковые значения выводят, да и то в очень узком диапазоне

ABTOMAT 11.01.2015 20:48

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Ты используешь Ксорс вместе с Блицем?
Если да, то rnd() и rand() там блицевские и есть.
А одинаковые значения выходят потому, что каждый раз при старте приложения там одно и то же зерно генерации.
Чтобы было разное, устанавливай каждый раз при запуске своей программы другое зерно.
Проще всего использовать для этой цели время аптайма:
Код:

SeedRnd(Millisecs())

MOrtAl44444 11.01.2015 20:51

Ответ: Наложение нескольких текстур на загружаемый Mesh
 
Вложений: 1
Как сделать чтобы игрок четко проходил через 2ую позицию, а не срезал на искосок?


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

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