TextureStage и Terrain
|
|
DrEmerido | Дата: Понедельник, 16.05.2011, 13:09 | Сообщение # 1 |
Рядовой
Группа: Пользователи
Сообщений: 9
Награды: 0
Репутация: 0
Статус: Offline
| Добрый день. Я на вашем форуме новенький. Вопрос в следующем: Необходимо натянуть на рельеф несколько текстур исходя из альфа-канала. Если кто сталкивался с такой проблемой и решил ее, пожалуйста помогите советом.
|
|
| |
ninth | Дата: Понедельник, 16.05.2011, 16:43 | Сообщение # 2 |
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
| Не совсем понял что значит исходя из альфа канала. Тебе нужно просто наложить несколько текстур с альфой друг на друга или... Подозреваю что хочешь использовать маску наложения? Т.е. указывать где какую текстуру накладывать с помощь другой тестуры-маски. Если да, то где-то видел вариант - могу поискать. Сразу оговорюсь что работать это будет через шейдеры.
|
|
| |
DrEmerido | Дата: Понедельник, 16.05.2011, 16:54 | Сообщение # 3 |
Рядовой
Группа: Пользователи
Сообщений: 9
Награды: 0
Репутация: 0
Статус: Offline
| Да, если можно с примером. Я в 3Д новичок, и по поводу этой проблемы уже бьюсь 3 дня. Буду очень благодарен. PS: И вообще какие еще есть варианты мульти-текстурирования и какой вариант лучше с точки зрения реализации/ресурсоемкости?
Сообщение отредактировал DrEmerido - Понедельник, 16.05.2011, 17:07 |
|
| |
serg-kkz | Дата: Понедельник, 16.05.2011, 18:11 | Сообщение # 4 |
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
| Вот если ты имел ввиду это, а по маске мне самому интересно знать. В моём примере лишняя строка layer2.setColor(Vec4(1, 0, 0, 1))
ООП -
Сообщение отредактировал serg-kkz - Понедельник, 16.05.2011, 18:49 |
|
| |
DrEmerido | Дата: Понедельник, 16.05.2011, 18:47 | Сообщение # 5 |
Рядовой
Группа: Пользователи
Сообщений: 9
Награды: 0
Репутация: 0
Статус: Offline
| Нет, это то все понятно. Нужно достичь следующего: есть 4 картинки: 2 текстуры и 2 маски. текстуры накладываются на некий объект по эти маскам и разделены на слои с возможностью изменения их порядка.
|
|
| |
serg-kkz | Дата: Понедельник, 16.05.2011, 19:05 | Сообщение # 6 |
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
| Я понял о чем ты, парядок можно и в этом примере поменять.
ООП -
|
|
| |
ninth | Дата: Понедельник, 16.05.2011, 19:12 | Сообщение # 7 |
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
| Здесь пример с шейдером Используется 8 текстур (в папке data ): http://narod.ru/disk/13093796001/TerrainMultitex.zip.html default.png - карта высот default_l.png - теневая карта default_c.png - Базовый цвет default_d.png - Маска. Для экономии ресурсов используются все 4 канала (RGBA) - каждый в качестве самостоятельной маски. По ним накладываются текстуры деталировки: grayRock.png hardDirt.png bigRockFace.png shortGrass.png з.ы. При старте ничго не увидите т.к. Камера находится в 0 0 0 - надо стандартным управлением отодвинуть камеру, а так результат примерно следующий: з.з.ы. Мультитекстуры - штука довольно ресурсоёмкая так что злоупотреблять ими не стоит - по возможности их лучше собирать в одну.
|
|
| |
serg-kkz | Дата: Понедельник, 16.05.2011, 19:20 | Сообщение # 8 |
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
| в demomaster, че то такое видел... или... другое?
ООП -
|
|
| |
DrEmerido | Дата: Понедельник, 16.05.2011, 19:43 | Сообщение # 9 |
Рядовой
Группа: Пользователи
Сообщений: 9
Награды: 0
Репутация: 0
Статус: Offline
| спасибо большое. хотя если я правильно понял... если нужно больше 4 текстур то нужно писать другой шейдер...? ps. Посоветуйте пожалуйста ресурс или книгу по шейдерам.
Сообщение отредактировал DrEmerido - Понедельник, 16.05.2011, 21:38 |
|
| |
dis_node | Дата: Понедельник, 16.05.2011, 22:18 | Сообщение # 10 |
Лейтенант
Группа: Пользователи
Сообщений: 56
Награды: 0
Репутация: 2
Статус: Offline
| Извиняюсь еси туплю, но в мануале 'мультитекстуринг' изложен без шейдеров TextureStage+альфа+приоритет, врубать шейдеры это уже гламур). Для альфы маска не обязательна я через .png грузил.
Сообщение отредактировал dis_node - Понедельник, 16.05.2011, 22:21 |
|
| |
DrEmerido | Дата: Понедельник, 16.05.2011, 22:21 | Сообщение # 11 |
Рядовой
Группа: Пользователи
Сообщений: 9
Награды: 0
Репутация: 0
Статус: Offline
| Ты его сам делал...? Если делал, пример в студию. Потому как у меня ничего не получилось...(
Сообщение отредактировал DrEmerido - Понедельник, 16.05.2011, 22:26 |
|
| |
ninth | Дата: Вторник, 17.05.2011, 00:27 | Сообщение # 12 |
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
| Quote (serg-kkz) в demomaster, че то такое видел... или... другое? Возможно ) В демомастере много чего есть, но что касается данного конкретного примера, то он с оффорума. Кстати, там он позиционировался как загрузка в панду моделей, сделанных в EarthSculptor. Quote (dis_node) врубать шейдеры это уже гламур) В данном случае - нет. Без шейдера не получится. Здесь не чистый мультитекстуринг. Суть процесса - на модель накладывается сначала обычная текстура (colormap), после чего поверху затайливается текстурами детализации, но текстуры детализации выводятся по маске в качестве которой взят один из каналов ещё одной текстуры. Quote (DrEmerido) нужно писать другой шейдер...? Да - минус данного способа в этом, но на самом деле не уверен, что реально потребуется больше 4-х текстур, т.к. совсем мелкую детализацию (например несколько лежащих под кустом листиков) лучше выполнять декалями или чем-то подобным. Показанный же способ используется для детализации больших площадей ландшафта. По книгам, к сожалению, ничего не могу подсказать - сам когда потребовалось собирал по кускам инфу из разных статей. Могу лишь сказать что: 1. Используется язык Cg так что если что ищи инфу именно по нему 2. Панда имеет свою специфику - по этому поводу стоит заглянуть в раздел шейдеров мануала на офф сайте 3. Шейдеры - это по большей части алгебра векторов и матриц, так что если думаешь серьёзно их копать, то стоит так же запастись соотв. литературой. Ну а в общем случае обычно можно найти готовый шейдер и допилить под свои нужды не сильно углубляясь в матан. )
|
|
| |
serg-kkz | Дата: Вторник, 17.05.2011, 10:50 | Сообщение # 13 |
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
| Quote (DrEmerido) Посоветуйте пожалуйста ресурс или книгу по шейдерам 3D-ландшафты в реальном времени на С++ и DirectX9, автор: Грег Снук. Хотя панда DirectX не любит, но в будущем… Там изложены все аспекты в том числе и шейдер. Книга на русском языке.
ООП -
|
|
| |
DrEmerido | Дата: Вторник, 17.05.2011, 12:54 | Сообщение # 14 |
Рядовой
Группа: Пользователи
Сообщений: 9
Награды: 0
Репутация: 0
Статус: Offline
| ninth, спасибо за содержательный ответ. serg-kkz, если верить инфе: если писать шейдеры на Cg то они должны хорошо работать на современных видеокартах из под директа.
|
|
| |
serg-kkz | Дата: Вторник, 17.05.2011, 16:48 | Сообщение # 15 |
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
| DrEmerido, какой? В мануале же по панде сказано поддержка DirectX у них на последнем месте. Шейдер передаётся панде с ожидаемыми инструкциями. Если они не поддерживаются 3D двигом, то видео карта их не получит ведь двиг их должен передать на языке низкого уровня, Cg это уже язык высокого уровня.
ООП -
|
|
| |