Перейти к контенту

Работа с текстурами


LeDemon

Рекомендуемые сообщения

Всем текстурщикам и начинающим осваивать это дело привет.

Ребята, кто бампы создает, вопрос к вам. Кто-то пробовал для генерирования карты нормалей использовать nDo2? Если кто пробовал, скажите, как оно вам по сравнению с CrazyBump и/или другими плагинами и утилитами.

Скачал сегодня. Возможно, самая приятная вещь за день, не считая солнечной погоды и поцелуя девочки  :P

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

c57d8f0c86.png

Поделиться этим сообщением


Ссылка на сообщение

@SAM61, ясно, спасибо. А основу карты нормалей с помощью 3д Макса получаешь?

c57d8f0c86.png

Поделиться этим сообщением


Ссылка на сообщение

Всем привет и с Днем великой Победы! 

Тут Tris пару своих новых уроков по текстурам скинул. Может кому пригодится.

 

 

Замечу, что уроки рассчитаны для модмейкеров Unity. Напомню, в Сталкере нормали инвертированные по сравнению с нормалями в видео.

 

 

c57d8f0c86.png

Поделиться этим сообщением


Ссылка на сообщение

@Ezio_Auditore900, а зачем тебе мип-мапы убирать? А вообще, открываешь в ФШ, сохраняешь с параметром No MIP maps

c57d8f0c86.png

Поделиться этим сообщением


Ссылка на сообщение

@Megalodon, и в CSS, и в CSG спекуляр карта находится на альфа-канале карты с нормал мапой. Текстуру нужно обернуть. Придется создать временный Альфа 2 или же новый документ. В любом случае, у меня есть подарок для всех тех, кому хочется на автомате конвертировать нормал карты в формат Сталкер-бампа:

 

http://www.amk-team.ru/forum/index.php?showtopic=1481&p=853995

Изменено пользователем FantomICW

c57d8f0c86.png

Поделиться этим сообщением


Ссылка на сообщение

@HellRatz, хочешь сказать, ты карту нормалей прописал как бамп? Бамп в Сталкере "зеленый":

R - карта блика

GBA - перевернутая карта нормалей

c57d8f0c86.png

Поделиться этим сообщением


Ссылка на сообщение

@2clip, вот-вот, тоже искал год назад(

Никто не отозвался, увы.


Но, мне кажется, смысл урока сведется к тому, что текстуре нужно применить несколько фильтров, включая шум, размытие и резкость. Присмотрись 

http://4put.ru/pictures/max/101/310658.jpg

c57d8f0c86.png

Поделиться этим сообщением


Ссылка на сообщение

 

 

зачем собственно такой тутор нужен?

Я был просто уверен, что кто-то задаст этот вопрос :)

Мне было интересно увидеть эту методику, какой бы давности или надобности не был этот урок. Давно умею делать пластик какими-то своими методами, как и дерево и бетонную поверхность. С бампами была та же история - научился делать бампы по единственной на то время правильной статье от Лафугикса, но потом еще долгое время бродил по форумам, сайтам в поисках дополнительной информации. Многое познается в сравнении, не так ли? 

 

 

если администрация одобрит такую тему

Я - не Администрация, но, уверен, что тебе бы сказали спасибо ;)

Хотя, по сути, конкретно данная тема и предназначена для ответов на вопросы по текстурированию и для сбора годных уроков.

c57d8f0c86.png

Поделиться этим сообщением


Ссылка на сообщение

Вообще, лог вызывается из src/editors/ECore/editor/ImageManager.cpp. Это исходники ЗП. Было бы хорошо, если кто-то из разбирающихся в движке/C++ почитал бы код.

//------------------------------------------------------------------------------
// создает игровую текстуру
//------------------------------------------------------------------------------
bool CImageManager::MakeGameTexture(LPCSTR game_name, u32* data, const STextureParams& tp)
{
VerifyPath(game_name);
    // fill texture params
// compress
    u32 w4= tp.width*4;
    int res = DXTCompress(game_name, (u8*)data, 0, tp.width, tp.height, w4, (STextureParams*)&tp, 4);
    if (1!=res){
     FS.file_delete(game_name);
        switch(res){
        case 0: ELog.DlgMsg (mtError,"Can't make game texture '%s'.",game_name); break;
        case -1000: ELog.Msg (mtError,"Invalid gloss mask '%s'.",game_name); return true;
        }
return false;
    }
    R_ASSERT((res==1)&&FS.file_length(game_name));
    return res==1;
}
bool CImageManager::MakeGameTexture(ETextureThumbnail* THM, LPCSTR game_name, u32* load_data)
{
VerifyPath(game_name);
    // flip
    u32 w = THM->_Width();
    u32 h = THM->_Height();
    u32 w4= w*4;
// remove old
    FS.file_delete (game_name);
    AnsiString game_name2  = ChangeFileExt(game_name,"#.dds");
    FS.file_delete (game_name2.c_str());


    U32Vec  ext_data;
    if ((THM->m_TexParams.type==STextureParams::ttBumpMap)&&(THM->m_TexParams.ext_normal_map_name.size()))
    {
     bool e_res = true;
        LPCSTR e_name = THM->m_TexParams.ext_normal_map_name.c_str();
        ETextureThumbnail*  NM_THM = xr_new<ETextureThumbnail>(e_name);
        if (NM_THM->_Format().type==STextureParams::ttNormalMap)
        {
       if (NM_THM->_Format().fmt==STextureParams::tfRGBA)
            {
             u32 _w,_h;
                if (!LoadTextureData(e_name,ext_data,_w,_h))
                {
                    ELog.DlgMsg (mtError,"Can't load special normal map texture '%s'.",e_name);
                    e_res = false;
                }else if ((_w!=w)||(_h!=h))
                {
                    ELog.DlgMsg (mtError,"Invalid load special normal map size '%s'. It should be [%dx%d]",e_name,w,h);
                    e_res = false;
                }
         }else{
                ELog.DlgMsg (mtError,"Invalid special normal map format '%s'. It should be '32 bit (8:8:8:8)'",e_name);
                e_res = false;
            }
        }else{
            ELog.DlgMsg (mtError,"Invalid special normal map type '%s'. It should be 'NormalMap'",e_name);
            e_res = false;
        }
        xr_delete (NM_THM);
        if (false==e_res) return false;
    }
    // compress
    
    int res  = DXTCompress(game_name, (u8*)load_data, (u8*)(ext_data.empty()?0:ext_data.begin()), w, h, w4, &THM->m_TexParams, 4);
    if (1!=res){
     if (-1000!=res){ //. Special for Oles (glos<10%) 
            FS.file_delete (game_name);
            FS.file_delete (game_name2.c_str());
        }
        switch(res){
        case 0: ELog.DlgMsg (mtError,"Can't make game texture '%s'.",THM->m_SrcName.c_str()); break;
        case -1000: ELog.Msg (mtError,"Invalid gloss mask '%s'.",THM->m_SrcName.c_str()); return true;
        }
return false;
    }
    R_ASSERT((res==1)&&FS.file_length(game_name));
    return res==1;
}

 

 

 

 

Изменено пользователем FantomICW

c57d8f0c86.png

Поделиться этим сообщением


Ссылка на сообщение

@V92, чаще даже в отсутствии thm текстуры террейна.

Изменено пользователем FantomICW

c57d8f0c86.png

Поделиться этим сообщением


Ссылка на сообщение

@V92, конвертируй текстуру в tga  и открывай в Image Editor в СДК. Так точно не ошибешься, если thm-файл кривой. Просто с нуля создашь. Там в настройках текстуры главное - выставить тип Terrain

c57d8f0c86.png

Поделиться этим сообщением


Ссылка на сообщение

 

 

маске этот тип вовсе не нужен

Собственно, я говорил про текстуру terrain_лока, а не terrain_лока_mask.

c57d8f0c86.png

Поделиться этим сообщением


Ссылка на сообщение

@V92, про карту локации тоже хотел бы узнать...

Касательно бампа, что имеется ввиду под словом "стеклянный"?

Invalid gloss mask выдает, напоминаю, тогда, когда спекуляр "слишком темный", по меркам движка. Но это никак не влияет на бамп.

Обычно визуальные дефекты бампа заключаются в корявой нормал мапе.

Изменено пользователем FantomICW

c57d8f0c86.png

Поделиться этим сообщением


Ссылка на сообщение

@V92, частично дело в карте нормалей. Запекать карту нормалей можно с другими настройками, резкости розбавить, меньше разводов.

К тому же, диффуз-текстура сама не очень...

Кстати, бамп# имеется?

 

P.S.

На скрине могу что-то не так увидеть, недоглядеть - комп в ремонте, смотрю с телефона.

Изменено пользователем FantomICW

c57d8f0c86.png

Поделиться этим сообщением


Ссылка на сообщение

Для НПС, многих худ-объектов, оружия, девайсов со сложной разверткой желательно, вообще, нормали запекать 3д-редакторах. Или же нужно рисовать карты высот на уровне бога бампов. Или же быть каким-нибудь Доместосом :D

CrazyBump - довольно гибкая прога, хоть я и рекомендую всем nDo2. "Оспа", скорее, - проблема карты высот, а не самого CB.

c57d8f0c86.png

Поделиться этим сообщением


Ссылка на сообщение

@Scarabay, к каждой текстуре нужен "свой подход". Есть некоторые советы, которые довольно часто можно юзать. 

Ну, к примеру, простые карты высот можно так сделать:

1. Копируем диффуз на два верхних слоя.

2. Тот, что ниже, обесцвечиваем. 

3. Тот, что выше, инвертируем, обесцвечиваем, если надо. Режим наложения - Перекрытие (Overlay). Можно поиграть с настройкой прозрачности.

4. Если надо сделать текстуру более гладкой и равномерной, берем кисточку с светло-серым оттенком и уменьшенной непрозрачностью (до ~30% обычно). Красим на нижнем слое из тех двух.

5. Отдельно можно создать слой для кистей и прочего.

  • Согласен 2
  • Полезно 1

c57d8f0c86.png

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...