Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Полупрозрачность в HMM
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III
Страницы: 1, 2, 3
hippocamus
Я уже где только про это ни писал, но никто не хочет idontno.gif этого видеть.

Кто сказал, что в героях нет полупрозрачности?
Через полупрозрачный флаг лодки просвечивает намеченный путь и водный ландшафт. Нельзя ли это как-то применить и на поле боя?

Имхо, если функция вывода полупрозрачныз спрайтов в экзэшнике существует, то можно её применить и там, где она не предусмотрена?

Тема ненадолго, я её удалю, как только получу ответ.
Griffit
хм а как насчет призрачных бягемотов?разве не прозрачные?\полез смотреть\
hippocamus
Нет. Там чередуются белые пиксели с прозрачными.

Добавлено ([mergetime]1196120611[/mergetime]):
Точнее там только белые пиксели. А имитация полупрозрачности делается как я написал.
Bisik
Да, например при магии "молитва" используется полупрозрачность, но интересно было бы узнать как ставить определенный цвет полупрозрачным и устанавливать какого рода она будет.
hippocamus
Имхо, это тоже хард-код. Нужно чтобы специалисты изучили функцию, которая это делает.
exx
тема интересная...молитва не прозрачна...как и страх и прочее...просто всё по кусочкам вылезает....а с лодкой может быть...
вроде карту помню делал..специально шоб лодка под горой проплывала...и она (хорошо это запомнил) - просвечивала сквозь гору....
Irh
Цитата(hippocamus @ 27 Nov 2007, 02:38)
Тема ненадолго, я её удалю, как только получу ответ.
Оптимист smile.gif

Конечно, вопрос интересный. Но пока непонятно, где искать решение... :-\
easy-to-kill
Кстати никто не замечал что в свойствах существа, там где показывается его анимация тень рисуется полупрозрачная?

Добавлено ([mergetime]1196330338[/mergetime]):
А насчет того что бы юзать эту полупрозрачность.

Кто у нас хорошо знает DirectDraw?
Какая там функция для рисования одной поверхности на другой?
Какие она берет параметры?
Как надо изменить параметры(или какую функцию вызвать) что бы она рисовала с полупрозрачностью?

Имея эту инфу уже можно попробовать покопаться в екзешнике и что-то сделать.

Неясным остается другой вопрос.
Каким образом давать игре понять что ту или иную картинку надо рисовать с полупрозрачностью?
hippocamus
Можно создать таблицу флагов для существ, где будет прописано, какие полупрозрачны, какие нет. Но это грубо. По хорошему, к каждому должен быть msk-файл, где битовой картой будут отмечены полупрозрачные участки объекта.
Bourn
2 easy-to-kill
к слову - проще реализовать свою ф-ю для контекста DirectDraw с перемножением пикселей
easy-to-kill
Вообщето я так и собираюсь делать
Функцию написать нефиг делать, вот только куда ее вставлять? А самое главное как?
Уже несколько дней пытаюсь найти в екзешнике место вызова функции Blt интерфейса IDirectDrawSurface,
которое и надо заменить на свою функцию да только ниче не получается.
И еще, если даже найти это место и написать функцию, то как ее присобачить к екзешнику?
И последнее. Даже если знать все это, неясной остается проверка на требуемость прозрачности, так как
при вызове функции Blt единственная информация которой можно располагать, это сама рисуемая картинка,
а из какого дефа она была вытянута неизвестно.
hippocamus
Значит, нужно отслеживать раньше... Вопрос такой: есть формат mng, поддерживает 8-битную полупрозрачность. Нельзя ввести его поддержку?
Bourn
2 easy-to-kill
прозрачность в героях может быть реализована именно так как я указал в последнем посте, тогда искать код или вызовы каких-либо стандартных ф-й бессмысленно
easy-to-kill
Толи я чего-то не догоняю...
Может поподробнее обьяснишь?
geNNadiy
Как вариант прозрачность можно использовать через палитру.. конечно есть существенные ограничения, но для определенных целей вполне подойдет!


Примерно так выглядят первые 10 цветов в большинстве файлов Героев.
0 - полностью прозрачный (прозрачность 100%)
1 - прозрачность примерно 50% (обычно используется как тень существа)
4 - прозрачность примерно 75% (обычно не используется, либо используется как сглаживание тени)
5 - обводка существа при наведении (желтая линия)
6 и 7 - как бы одновреммено 1+5 и 4+5 соответсвенно

Комбинируя цвета под номерами 0, 1 и 4 можно добиться определенной прозрачности изображения!!
exx
пример пожалуста...наглядный если можно
geNNadiy
Цитата(exx @ 07 Dec 2007, 13:26)
пример пожалуста...наглядный если можно

А существа на поле боя недостаточно наглядный пример ?? или тебе какой-то особый надо ?? я ж не знаю для какой цели ты хочешь использовать прозрачность и где именно!
exx
вот дай если можешь какое нить доказательственное изображение..что монстр на поле боя просвечивается...)
Arseny
там будет просто тень, существо просвечиваться не будет.
geNNadiy
Цитата(exx @ 07 Dec 2007, 13:46)
вот дай если можешь какое нить доказательственное изображение..что монстр на поле боя просвечивается...)

сейчас чего-нибудь наваяю..

Цитата(Arseny @ 07 Dec 2007, 14:02)
там будет просто тень, существо просвечиваться не будет.

ну.. оно собственно из тени и будет состоять! как я и говорил прозрачность в этом случае будет иметь существенные ограничения!
Bourn
Цитата(easy-to-kill @ 07 Dec 2007, 07:16)
Толи я чего-то не догоняю...
Может поподробнее обьяснишь?

знаком с линейной интерполяцией? это самая простая реализация прозрачности, а так вобще общий цвет будет равен
c=tv1*a+tv2*(1-a);
tv1 и tv2 - векторы цветов, т.е у них есть r,g и b свойства(операция выполняеться со всем вектором) далее насыщенность цвета это 1.0 иначе 0, число цвета меняеться в приделах от 0 до 1(может быть дробным), с a (прозрачностью) все тоже самое, только она - это просто 1 число, не вектор
с - тоже вектор, проделывая данную операцию для всех пикселей изображения получим нужную нам прозрачность...
geNNadiy
Сам не тестировал, некогда...
Temp.def (прямая ссылка)
Желающие должны переименовать файл в имя любого существа (например ZM64GD) и посмотреть в игре как оно и чего!!
hippocamus
Эта полупрозрачность обеспечит только полупрозрачный серый. Я же имею в виду полупрозрачность всех цветов - либо через битовую маску, либо, как это организовано в mng-формате, 8-битная полупрозрачность (как слои в Фотожопе).
geNNadiy
Цитата(hippocamus @ 07 Dec 2007, 23:36)
Эта полупрозрачность обеспечит только полупрозрачный серый. Я же имею в виду полупрозрачность всех цветов - либо через битовую маску, либо, как это организовано в mng-формате, 8-битная полупрозрачность (как слои в Фотожопе).

Я прекрасно понял о чем шла речь, но у меня возник вопрос зачем это нужно ?? Неужели есть такая большая необходимость в "просвечивющихся" объектах ??

Пы.Сы. ИМХО полупрозрачный серый лучше чем вообще никакого!
hippocamus
Гораздо красивее можно сделать всех призрачных существ, элементалей, новых существ и новые объекты.
geNNadiy
Цитата(hippocamus @ 08 Dec 2007, 01:33)
Гораздо красивее можно сделать всех призрачных существ, элементалей, новых существ и новые объекты.

Красивый объект не значит - прозрачный!! Думаю все мы любим Тройку не за её графический вид а за нечто большее.. и в принципе я понимаю что всегда хочется чего-то большего и лучшего, но считаю что это не самый принципиальный момент по улучшению игры.
Irh
Можно Хищника сделать или как его там...
Bisik
Ну, для магий полупрозрачность столько значит rolleyes.gif

Кто не рисовал и у кого не обливалось сердце кровью что из за отсуствия полупрозрачности спец-эффекты становятся уродливыми, тот не поймет...
easy-to-kill
2 Bourn
Оказывается мы просто друг друга не поняли.
Мой вопрос был не о том КАК написать функцию.
Написать то я ее могу хоть 100 раз, хоть в С, хоть в Делфи, хоть в ассемблере, хоть машинным кодом сразу.
А дальше что?
Вот о чем был мой вопрос.
Что делать с уже написанной функцией?
Куда ее вставлять?
И что значат твои слова о том что "Если делать как я написал, то ничего искать не надо"?
Morn
Цитата(geNNadiy @ 08 Dec 2007, 02:53)
Цитата(hippocamus @ 08 Dec 2007, 01:33)
Гораздо красивее можно сделать всех призрачных существ, элементалей, новых существ и новые объекты.

Красивый объект не значит - прозрачный!! Думаю все мы любим Тройку не за её графический вид а за нечто большее..

ну дык тогда будут любить еще большеcrazy.gif
Цитата
и в принципе я понимаю что всегда хочется чего-то большего и лучшего, но считаю что это не самый принципиальный момент по улучшению игры.

и это смотря видно для кого непринципиальный
hippocamus
2 Bisik
А в каком файле хранится анимация Молитвы?
gamecreator
ну открой реседит и в окне быстрого просмотра глянь. неужели руки отвалятся поискать?
Bourn
Цитата(easy-to-kill @ 10 Dec 2007, 10:18)
И что значат твои слова о том что "Если делать как я написал, то ничего искать не надо"?

если точно я писал:
Цитата(Bourn @ 06 Dec 2007, 21:06)
прозрачность в героях может быть реализована именно так как я указал в последнем посте, тогда искать код или вызовы каких-либо стандартных ф-й бессмысленно

и это значит что найти по кодо-компиляции участок нереально, а вобще найти место где это находится я так думаю не сложно, я бы поискал в начале января, щас просто нет на это время, если это терпит то подожди, а пока попробуй чередовать вариант Генадия, хотя если я не ошибаюсь когда герой стоит за замком, и замок его закрывает, прозрачность работает...
hippocamus
2 Bisik
Можешь посмотреть, как делается магия. C10SPW.DEF (Молитва).
Нет там никакой полупрозрачности. А вот то, что видно лодку за препятствиями - это действительно есть.
easy-to-kill
Ну что ж. В принципе спешить некуда.
Кстати перечитав пост Геннадия у меня появилась идея насчет проверки на требуемость прозрачности.
По идее в 256-цветных БМП-шниках каждый элемент палитры состоит из 4 байт.
3 байта используются для хранения RGB составляющих цвета в то время как в четвертый(который не используется) можно записывать степень прозрачности этого цвета.
hippocamus
Всё это правильно. Можно. Можно вообще перекодировать def в mng, который ничем не хуже. ЕСЛИ МОЖНО ЗАМЕНИТЬ САМУ ФУНКЦИЮ ОТОБРАЖЕНИЯ. Так вот это меня и интересует.
easy-to-kill
ЗАМЕНИТЬ ТО ЕЕ МОЖНО. Вот только что для этого нужно?
А вот что :
1. Написать свою функцию.(Этим займусь я)

2.Найти место куда ее надо вставить.(Bourn написал что попробует в январе)

3.Собственно вставить функцию в нужное место по самые помидоры.(ну это уже дело техники)
easy-to-kill
Сорри что долго не обьявлялся. Болел ветрянкой.
ВСЕХ С НОВЫМ ГОДОМ
hippocamus
Покопался в ресурсах.
Что-то мне кажется, что полупрозрачность при применении заклинаний (а также другие эффекты - возможно - градиент, волны) задаётся в этом файле:
h3bitmap.lod\H3SHAD.IFR

Кто в этом разбирается - Боурн, Ирх - не могли бы вы посмотреть?
IQUARE
Цитата(Bisik @ 27 Nov 2007, 05:18)
Да, например при магии "молитва" используется полупрозрачность, но интересно было бы узнать как ставить определенный цвет полупрозрачным и устанавливать какого рода она будет.

Полупрозрачность, кажется, есть при заклинании "Телепорт". Юнит растворяется и появляется снова.
hippocamus
Разобранный мною файл в формате xls

http://slil.ru/25878949

В общем, почти всё понятно. Не могу понять назначение 1-й колонки. Ну и то заклинание, которое выделено коричневым.

Жёлтое - составные (из нескольких функций / дефов)
Белое - простые
Серое - части составных
Голубое - какое-то "векторное" (?)
Сине-серые - то же, но часть целого (?)
Baklajan
Полупрозрачность всего спрайта целиком на фоне поля боя или прочих объектов не требует никакой дополнительной информации внутри дефа. Цвета смешивает сам экзешник. Для реализации же полупрозрачности спрайта по зонам (каждый пиксель спрайта имеет произвольную степень прозрачности) нужно хранить внутри дефа не только сам спрайт, но и восьмибитную (лучше - шестнадцатибитную) маску полупрозрачности. Вот этого не было и не будет, вы думаете в NWC дураки сидят - делать тем же Ghost Dragons в полете прозрачность через "сеточку", а не при помощи маски? Как придумали формат без поддержки масок, так он и остался. Другое дело, что наверняка можно как-то изменить экзешник так, что по выставлению существу какого-либо специфического флажка оно будет целиком становиться равномерно прозрачным с фиксированной степенью смешения цвета для всех пикселов спрайта. А вот сделать дракона, у которого полупрозрачно лишь пламя, уже не получится.

Эффект полупрозрачности также может наблюдаться воочию при использовании заклинания Remove Obstacle. Когда сносишь им бревна да прочий мусор, они так красиво в воздухе растворяются...
hippocamus
Это понятно. Хотелось бы хотя бы равномерно-полупрозрачных призраков да элементалей.

А для зональной полупрозрачности easy-to-kill обещал написать поддержку отображения файлов формата mng, но, увы, исчез sad.gif
Spartak
вопрос
а водоворот маны в данжене это полупрозрачность?
geNNadiy
Цитата(Spartak @ 05 Aug 2008, 15:02)
вопрос
а водоворот маны в данжене это полупрозрачность?

нет! в ДЕФе это строение прорисовано вместе с фоновой картинкой...

Правда вот при открытии пазла-загадки эффект подобен поэтапному просвечиванию... узнать бы как этот там реализовано!!
Docent Picolan
так же как и в заклинаниях..
hippocamus
Да, в заклинаниях. А также - попробуйте героем зайти за мельницу. Мельница станет полупрозрачной. Т.е. полупрозрачность есть, но вопрос - как заставить, скажем, юнита Wraight отображаться полупрозрачным?
Bourn
зачем все это надо?smile.gif
exx
ну вообще было бы красива)
hippocamus
Чтобы вывести графику на новый уровень. Многие вещи не делаются потому,

Добавлено ([mergetime]1218202457[/mergetime]):
что без полупрозрачности некрасиво будет выглядеть.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2026 IPS, Inc.