hippocamus
27 Nov 2007, 01:38
Я уже где только про это ни писал, но никто не хочет

этого видеть.
Кто сказал, что в героях нет полупрозрачности?
Через полупрозрачный флаг лодки просвечивает намеченный путь и водный ландшафт. Нельзя ли это как-то применить и на поле боя?
Имхо, если функция вывода полупрозрачныз спрайтов в экзэшнике существует, то можно её применить и там, где она не предусмотрена?
Тема ненадолго, я её удалю, как только получу ответ.
Griffit
27 Nov 2007, 02:38
хм а как насчет призрачных бягемотов?разве не прозрачные?\полез смотреть\
hippocamus
27 Nov 2007, 02:43
Нет. Там чередуются белые пиксели с прозрачными.
Добавлено ([mergetime]1196120611[/mergetime]):
Точнее там только белые пиксели. А имитация полупрозрачности делается как я написал.
Да, например при магии "молитва" используется полупрозрачность, но интересно было бы узнать как ставить определенный цвет полупрозрачным и устанавливать какого рода она будет.
hippocamus
27 Nov 2007, 10:53
Имхо, это тоже хард-код. Нужно чтобы специалисты изучили функцию, которая это делает.
тема интересная...молитва не прозрачна...как и страх и прочее...просто всё по кусочкам вылезает....а с лодкой может быть...
вроде карту помню делал..специально шоб лодка под горой проплывала...и она (хорошо это запомнил) - просвечивала сквозь гору....
Цитата(hippocamus @ 27 Nov 2007, 02:38)
Тема ненадолго, я её удалю, как только получу ответ.
Оптимист
Конечно, вопрос интересный. Но пока непонятно, где искать решение... :-\
easy-to-kill
29 Nov 2007, 12:58
Кстати никто не замечал что в свойствах существа, там где показывается его анимация тень рисуется полупрозрачная?
Добавлено ([mergetime]1196330338[/mergetime]):
А насчет того что бы юзать эту полупрозрачность.
Кто у нас хорошо знает DirectDraw?
Какая там функция для рисования одной поверхности на другой?
Какие она берет параметры?
Как надо изменить параметры(или какую функцию вызвать) что бы она рисовала с полупрозрачностью?
Имея эту инфу уже можно попробовать покопаться в екзешнике и что-то сделать.
Неясным остается другой вопрос.
Каким образом давать игре понять что ту или иную картинку надо рисовать с полупрозрачностью?
hippocamus
29 Nov 2007, 16:22
Можно создать таблицу флагов для существ, где будет прописано, какие полупрозрачны, какие нет. Но это грубо. По хорошему, к каждому должен быть msk-файл, где битовой картой будут отмечены полупрозрачные участки объекта.
2 easy-to-kill
к слову - проще реализовать свою ф-ю для контекста DirectDraw с перемножением пикселей
easy-to-kill
05 Dec 2007, 10:11
Вообщето я так и собираюсь делать
Функцию написать нефиг делать, вот только куда ее вставлять? А самое главное как?
Уже несколько дней пытаюсь найти в екзешнике место вызова функции Blt интерфейса IDirectDrawSurface,
которое и надо заменить на свою функцию да только ниче не получается.
И еще, если даже найти это место и написать функцию, то как ее присобачить к екзешнику?
И последнее. Даже если знать все это, неясной остается проверка на требуемость прозрачности, так как
при вызове функции Blt единственная информация которой можно располагать, это сама рисуемая картинка,
а из какого дефа она была вытянута неизвестно.
hippocamus
05 Dec 2007, 18:10
Значит, нужно отслеживать раньше... Вопрос такой: есть формат mng, поддерживает 8-битную полупрозрачность. Нельзя ввести его поддержку?
2 easy-to-kill
прозрачность в героях может быть реализована именно так как я указал в последнем посте, тогда искать код или вызовы каких-либо стандартных ф-й бессмысленно
easy-to-kill
07 Dec 2007, 07:16
Толи я чего-то не догоняю...
Может поподробнее обьяснишь?
geNNadiy
07 Dec 2007, 13:09
Как вариант прозрачность можно использовать через палитру.. конечно есть существенные ограничения, но для определенных целей вполне подойдет!

Примерно так выглядят первые 10 цветов в большинстве файлов Героев.
0 - полностью прозрачный (прозрачность 100%)
1 - прозрачность примерно 50% (обычно используется как тень существа)
4 - прозрачность примерно 75% (обычно не используется, либо используется как сглаживание тени)
5 - обводка существа при наведении (желтая линия)
6 и 7 - как бы одновреммено 1+5 и 4+5 соответсвенно
Комбинируя цвета под номерами 0, 1 и 4 можно добиться определенной прозрачности изображения!!
пример пожалуста...наглядный если можно
geNNadiy
07 Dec 2007, 13:27
Цитата(exx @ 07 Dec 2007, 13:26)
пример пожалуста...наглядный если можно
А существа на поле боя недостаточно наглядный пример ?? или тебе какой-то особый надо ?? я ж не знаю для какой цели ты хочешь использовать прозрачность и где именно!
вот дай если можешь какое нить доказательственное изображение..что монстр на поле боя просвечивается...)
Arseny
07 Dec 2007, 14:02
там будет просто тень, существо просвечиваться не будет.
geNNadiy
07 Dec 2007, 14:16
Цитата(exx @ 07 Dec 2007, 13:46)
вот дай если можешь какое нить доказательственное изображение..что монстр на поле боя просвечивается...)
сейчас чего-нибудь наваяю..
Цитата(Arseny @ 07 Dec 2007, 14:02)
там будет просто тень, существо просвечиваться не будет.
ну.. оно собственно из тени и будет состоять! как я и говорил прозрачность в этом случае будет иметь существенные ограничения!
Цитата(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
07 Dec 2007, 14:50
Сам не тестировал, некогда...
Temp.def (прямая ссылка)
Желающие должны переименовать файл в имя любого существа (например ZM64GD) и посмотреть в игре как оно и чего!!
hippocamus
07 Dec 2007, 23:36
Эта полупрозрачность обеспечит только полупрозрачный серый. Я же имею в виду полупрозрачность всех цветов - либо через битовую маску, либо, как это организовано в mng-формате, 8-битная полупрозрачность (как слои в Фотожопе).
geNNadiy
08 Dec 2007, 00:36
Цитата(hippocamus @ 07 Dec 2007, 23:36)
Эта полупрозрачность обеспечит только полупрозрачный серый. Я же имею в виду полупрозрачность всех цветов - либо через битовую маску, либо, как это организовано в mng-формате, 8-битная полупрозрачность (как слои в Фотожопе).
Я прекрасно понял о чем шла речь, но у меня возник вопрос зачем это нужно ?? Неужели есть такая большая необходимость в "просвечивющихся" объектах ??
Пы.Сы. ИМХО полупрозрачный серый лучше чем вообще никакого!
hippocamus
08 Dec 2007, 01:33
Гораздо красивее можно сделать всех призрачных существ, элементалей, новых существ и новые объекты.
geNNadiy
08 Dec 2007, 02:53
Цитата(hippocamus @ 08 Dec 2007, 01:33)
Гораздо красивее можно сделать всех призрачных существ, элементалей, новых существ и новые объекты.
Красивый объект не значит - прозрачный!! Думаю все мы любим Тройку не за её графический вид а за нечто большее.. и в принципе я понимаю что всегда хочется чего-то большего и лучшего, но считаю что это не самый принципиальный момент по улучшению игры.
Можно Хищника сделать или как его там...
Ну, для магий полупрозрачность столько значит
Кто не рисовал и у кого не обливалось сердце кровью что из за отсуствия полупрозрачности спец-эффекты становятся уродливыми, тот не поймет...
easy-to-kill
10 Dec 2007, 10:18
2 Bourn
Оказывается мы просто друг друга не поняли.
Мой вопрос был не о том КАК написать функцию.
Написать то я ее могу хоть 100 раз, хоть в С, хоть в Делфи, хоть в ассемблере, хоть машинным кодом сразу.
А дальше что?
Вот о чем был мой вопрос.
Что делать с уже написанной функцией?
Куда ее вставлять?
И что значат твои слова о том что "Если делать как я написал, то ничего искать не надо"?
Цитата(geNNadiy @ 08 Dec 2007, 02:53)
Цитата(hippocamus @ 08 Dec 2007, 01:33)
Гораздо красивее можно сделать всех призрачных существ, элементалей, новых существ и новые объекты.
Красивый объект не значит - прозрачный!! Думаю все мы любим Тройку не за её графический вид а за нечто большее..
ну дык тогда будут любить еще больше
Цитата
и в принципе я понимаю что всегда хочется чего-то большего и лучшего, но считаю что это не самый принципиальный момент по улучшению игры.
и это смотря видно для кого непринципиальный
hippocamus
10 Dec 2007, 18:31
2 Bisik
А в каком файле хранится анимация Молитвы?
gamecreator
10 Dec 2007, 20:50
ну открой реседит и в окне быстрого просмотра глянь. неужели руки отвалятся поискать?
Цитата(easy-to-kill @ 10 Dec 2007, 10:18)
И что значат твои слова о том что "Если делать как я написал, то ничего искать не надо"?
если точно я писал:
Цитата(Bourn @ 06 Dec 2007, 21:06)
прозрачность в героях может быть реализована именно так как я указал в последнем посте, тогда искать код или вызовы каких-либо стандартных ф-й бессмысленно
и это значит что найти по кодо-компиляции участок нереально, а вобще найти место где это находится я так думаю не сложно, я бы поискал в начале января, щас просто нет на это время, если это терпит то подожди, а пока попробуй чередовать вариант Генадия, хотя если я не ошибаюсь когда герой стоит за замком, и замок его закрывает, прозрачность работает...
hippocamus
10 Dec 2007, 23:56
2 Bisik
Можешь посмотреть, как делается магия. C10SPW.DEF (Молитва).
Нет там никакой полупрозрачности. А вот то, что видно лодку за препятствиями - это действительно есть.
easy-to-kill
11 Dec 2007, 14:39
Ну что ж. В принципе спешить некуда.
Кстати перечитав пост Геннадия у меня появилась идея насчет проверки на требуемость прозрачности.
По идее в 256-цветных БМП-шниках каждый элемент палитры состоит из 4 байт.
3 байта используются для хранения RGB составляющих цвета в то время как в четвертый(который не используется) можно записывать степень прозрачности этого цвета.
hippocamus
11 Dec 2007, 16:27
Всё это правильно. Можно. Можно вообще перекодировать def в mng, который ничем не хуже. ЕСЛИ МОЖНО ЗАМЕНИТЬ САМУ ФУНКЦИЮ ОТОБРАЖЕНИЯ. Так вот это меня и интересует.
easy-to-kill
11 Dec 2007, 16:44
ЗАМЕНИТЬ ТО ЕЕ МОЖНО. Вот только что для этого нужно?
А вот что :
1. Написать свою функцию.(Этим займусь я)
2.Найти место куда ее надо вставить.(Bourn написал что попробует в январе)
3.Собственно вставить функцию в нужное место по самые помидоры.(ну это уже дело техники)
easy-to-kill
01 Jan 2008, 04:13
Сорри что долго не обьявлялся. Болел ветрянкой.
ВСЕХ С НОВЫМ ГОДОМ
hippocamus
08 Jun 2008, 17:18
Покопался в ресурсах.
Что-то мне кажется, что полупрозрачность при применении заклинаний (а также другие эффекты - возможно - градиент, волны) задаётся в этом файле:
h3bitmap.lod\H3SHAD.IFR
Кто в этом разбирается - Боурн, Ирх - не могли бы вы посмотреть?
IQUARE
08 Jun 2008, 21:00
Цитата(Bisik @ 27 Nov 2007, 05:18)
Да, например при магии "молитва" используется полупрозрачность, но интересно было бы узнать как ставить определенный цвет полупрозрачным и устанавливать какого рода она будет.
Полупрозрачность, кажется, есть при заклинании "Телепорт". Юнит растворяется и появляется снова.
hippocamus
09 Jun 2008, 01:06
Разобранный мною файл в формате xls
http://slil.ru/25878949 В общем, почти всё понятно. Не могу понять назначение 1-й колонки. Ну и то заклинание, которое выделено коричневым.
Жёлтое - составные (из нескольких функций / дефов)
Белое - простые
Серое - части составных
Голубое - какое-то "векторное" (?)
Сине-серые - то же, но часть целого (?)
Baklajan
09 Jun 2008, 04:13
Полупрозрачность всего спрайта целиком на фоне поля боя или прочих объектов не требует никакой дополнительной информации внутри дефа. Цвета смешивает сам экзешник. Для реализации же полупрозрачности спрайта по зонам (каждый пиксель спрайта имеет произвольную степень прозрачности) нужно хранить внутри дефа не только сам спрайт, но и восьмибитную (лучше - шестнадцатибитную) маску полупрозрачности. Вот этого не было и не будет, вы думаете в NWC дураки сидят - делать тем же Ghost Dragons в полете прозрачность через "сеточку", а не при помощи маски? Как придумали формат без поддержки масок, так он и остался. Другое дело, что наверняка можно как-то изменить экзешник так, что по выставлению существу какого-либо специфического флажка оно будет целиком становиться равномерно прозрачным с фиксированной степенью смешения цвета для всех пикселов спрайта. А вот сделать дракона, у которого полупрозрачно лишь пламя, уже не получится.
Эффект полупрозрачности также может наблюдаться воочию при использовании заклинания Remove Obstacle. Когда сносишь им бревна да прочий мусор, они так красиво в воздухе растворяются...
hippocamus
09 Jun 2008, 09:57
Это понятно. Хотелось бы хотя бы равномерно-полупрозрачных призраков да элементалей.
А для зональной полупрозрачности easy-to-kill обещал написать поддержку отображения файлов формата mng, но, увы, исчез
Spartak
05 Aug 2008, 16:02
вопрос
а водоворот маны в данжене это полупрозрачность?
geNNadiy
05 Aug 2008, 16:08
Цитата(Spartak @ 05 Aug 2008, 15:02)
вопрос
а водоворот маны в данжене это полупрозрачность?
нет! в ДЕФе это строение прорисовано вместе с фоновой картинкой...
Правда вот при открытии пазла-загадки эффект подобен поэтапному просвечиванию... узнать бы как этот там реализовано!!
Docent Picolan
05 Aug 2008, 22:04
так же как и в заклинаниях..
hippocamus
05 Aug 2008, 22:09
Да, в заклинаниях. А также - попробуйте героем зайти за мельницу. Мельница станет полупрозрачной. Т.е. полупрозрачность есть, но вопрос - как заставить, скажем, юнита Wraight отображаться полупрозрачным?
зачем все это надо?
ну вообще было бы красива)
hippocamus
08 Aug 2008, 16:34
Чтобы вывести графику на новый уровень. Многие вещи не делаются потому,
Добавлено ([mergetime]1218202457[/mergetime]):
что без полупрозрачности некрасиво будет выглядеть.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.