Наложение нескольких текстур на загружаемый Mesh
Вложений: 4
Помогите пожалуйста. 3 дня мучаюсь над этим вопросом, уже все учебники, статьи и примеры пересмотрел - ни один из них не подходит.
:::::: КОД :::::: ;загружаем Mesh mesh = xloadmesh("mesh.3ds") ;вызываем функцию текстурирования mesh_texture_splatting() Скажите суть метода, какие команды потребуется или может у кого-то алгоритм есть )) Например нам дана вот такая маска и каждый цвет на ней ссответствует определенной текстуре. ->->-> |
Ответ: Наложение нескольких текстур на загружаемый Mesh
Вложений: 12
Или нам даны maps и textures.
Где map (карта гор, карта_травы, карта_еще травы, карта_еще гор, карта нормалей) А где textures( разные текстурки рисующие по белому цвету на maps) + ну еще в добавок можно текстуру Detail |
Ответ: Наложение нескольких текстур на загружаемый Mesh
Пиксельный шейдер в том состоянии в каком он сейчас в студию!
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
Если тебе дать готовый шейдер, ты начнешь задавать много много вопросов.
Начни с малого:
Код:
static float4 Colorka : COLOR0; |
Ответ: Наложение нескольких текстур на загружаемый Mesh
Я думаю, что если дать мне полный шейдер, то у меня как раз не возникнет вопросов)) Он будет исчерпан...когда написал пост я потом что и делал читал про шейдеры и изучал семплы .... так что Please me help
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
Цитата:
Его нужно написать под конкретно твою задачу. Станет ли кто-то это делать за тебя? Вряд ли. Что конкретно тебе непонятно? Как прочитать пиксель из текстуры? Как их смешать? Пусть у нас будет какая-то "подложка" — диффузина, которая есть всегда, в любом месте меша. Например пусть это будет текстура скалы. Потом у нас есть другие текстуры - травы, грязи, ещё чего-нибудь. У нас информация о распределении текстур хранится в цветной кляксе. В кляксе 4 канала: RGBA. То есть максимум мы можем раскрасить наш меш в 4 текстуры + подложка, которая есть всегда. Аналогия в Фотошопе (если знаком): подложка — Background-слой, остальные слои — текстуры, их ластиком подтёрли в местах где нужно и наложили друг на друга. Делаем в шейдере вектор4. В нём мы будем хранить результат. В него сразу записываем данные из текстуры-подложки. Потом смешиваем его с первой текстурой. Пусть её "интенсивность" обозначается красным каналом из кляксы. Берём значение R из кляксы. Умножаем на него значение прочитанное из первой текстуры. Умножаем на (1-R) значение подложки. Складываем. Записываем в наш вектор4. Потом смешиваем со второй текстурой. Пусть её "интенсивность" хранится в канале G кляксы. Читаем оттуда G, умножаем на него тексель второй текстуры. На (1-G) умножаем значение, того, что у нас получилось перед этим. Складываем, помещаем в наш вектор результата. Аналогично делаешь с каналами B и A если таковые нужны. Как сделать больше текстур? Решать можно по-разному, проще всего сделать ещё одну "кляксу" для хранения интенсивности ещё текстур. Хотя сначала сделай с четырьмя чтоб работало, потом двигайся дальше. В итоге у тебя должен получиться в векторе4 правильно смешанный цвет из всех текстур. Применяешь его как будто пиксель прочитанный из текстуры. Вот тебе полный алгоритм как делать. Возьми и делай. Задавай вопросы в конкретных местах если не получается. |
Ответ: Наложение нескольких текстур на загружаемый Mesh
Цитата:
(хотя я так понял, ты решил разжевать для понятности его смысл) |
Ответ: Наложение нескольких текстур на загружаемый Mesh
Вложений: 1
Упрощенный способ автомата.
Дорабатывай как тебе надо,набросал за 5 минут. |
Ответ: Наложение нескольких текстур на загружаемый Mesh
Код:
diffuse=(tex2D(Stex1S, input.texCoords)*diffuse.r)+(tex2D(Stex2S, input.texCoords)*diffuse.g)+(tex2D(Stex3S, input.texCoords)*diffuse.b),1; |
Ответ: Наложение нескольких текстур на загружаемый Mesh
Я не заморачивался с кодом , там все можно переделать на много лучше и как сказал автомат , с 4 текстурами.
Гугли тему Tetxure Splatting. |
Ответ: Наложение нескольких текстур на загружаемый Mesh
http://habrahabr.ru/post/180743/
Вот тут кстати описан хороший принцип как сделать ещё более продвинуто. Но, как говорится, совершенству нет предела. Начни с малого и далее вноси улучшения до той степени до какой посчитаешь нужным. |
Ответ: Наложение нескольких текстур на загружаемый Mesh
Цитата:
не собирался делать работу за ТСа, но вы меня вынуждаете: Код:
float3 mask = tex2D(texMask, texCoords); |
Ответ: Наложение нескольких текстур на загружаемый Mesh
Что не так или я уже в глаза долблюсь!!)
-- Шейдер -- Цитата:
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
Проверяй шейдер на ошибки через tv3d.
|
Ответ: Наложение нескольких текстур на загружаемый Mesh
Проверка шейдера sFXe.7z
Тестер сказал что шейдер рабочий. Упаковывай код в сообщение в соответствующие теги. Последний Хорс с примерами. Э, не ту ссылку дал на семплы https://yadi.sk/d/npgfRfwlcjhST, думаю — что-то так мало. P. S. Хорс в лог тоже может писать ошибки шейдера. |
Часовой пояс GMT +4, время: 11:03. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot