Когда-то мне дали один скрипт для замены фона на зеленый и обработки краев при рендере. То есть, чтобы края объекта/модели не смешивались с фоном.
plugin renderEffect SpriteRender
name:"SpriteRender"
classID:#(0xb7aa794c, 0xc3bd78ab)
(
parameters main rollout:params
(
)
rollout params "Anonimous"
(
)
on apply bmp do
(
for h=0 to (bmp.height-1) do
(
local sline = getPixels bmp [0,h] bmp.width
for i=1 to sline.count do
if sline[i].a > 0 then
( if sline[i].a <255.5 do
(
local F = (255.0 / sline[i].a) as float
sline[i].r = (sline[i].r * F)
sline[i].g = (sline[i].g * F)
sline[i].b = (sline[i].b * F)
)
)
else sline[i] = green
setPixels bmp [0,h] sline
)
)
)
Но мне не нравится, как скрипт преобразовывает края на мелких спрайтах. По сравнению с рендером при отключенном антиалиасинге ― края в модели намного "тоньше", чем при рендеринге с скриптом (как бы получается чёрная кайма/окаймление по контору спрайта).
Мне сказали, что можно отрегулировать скрипт, но не сказали как.
P.S. Надеюсь, я понятливо описал суть поставленного вопроса.
Скрипт по факту делает картинку из Premultiplied в Straight Alpha, а вам что нужно? Что вы регулировать собрались?
Хотите рендерить с включенным antialising но что бы края спрайта были как без antialising?
plugin renderEffect SpriteRender
name:"SpriteRender"
classID:#(0xb7aa794c, 0xc3bd78ab)
(
parameters main rollout:params
(
)
rollout params "Anonimous"
(
)
on apply bmp do
(
for h=0 to (bmp.height-1) do
(
local sline = getPixels bmp [0,h] bmp.width
for i=1 to sline.count do
(
if sline[i].a < 255.5 and sline[i].a > 140 then
(
local F = (255.0 / sline[i].a) as float
sline[i].r = (sline[i].r * F)
sline[i].g = (sline[i].g * F)
sline[i].b = (sline[i].b * F)
)
else sline[i] = green
)
setPixels bmp [0,h] sline
)
)
)
Держите. Дополнительно регулировать можно изменив значение = 140 это цвет alpha канала. Тоесть, если alpha значение в диапазоне между 0 и 140 то точка закрашивается в зеленый цвет.
Уменьшите прозрачность тени в рендере, что бы alpha у тени была менее прозрачной.
Можно доработать скрипт или метод визуализации что бы получалось как вам нужно, но это уж оплачиваемая работа. Если нужно, можете связаться со мной contact(at)veda3d.com.
Royal GhostМожно доработать скрипт или метод визуализации что бы получалось как вам нужно, но это уж оплачиваемая работа. Если нужно, можете связаться со мной contact(at)veda3d.com.
Спасибо. Буду иметь в виду.
А Вы, я так понял, профессиональный дизайнер?
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Солдат_ТОДД
Erik945
Солдат_ТОДД
plugin renderEffect SpriteRender name:"SpriteRender" classID:#(0xb7aa794c, 0xc3bd78ab) ( parameters main rollout:params ( ) rollout params "Anonimous" ( ) on apply bmp do ( for h=0 to (bmp.height-1) do ( local sline = getPixels bmp [0,h] bmp.width for i=1 to sline.count do if sline[i].a > 0 then ( if sline[i].a <255.5 do ( local F = (255.0 / sline[i].a) as float sline[i].r = (sline[i].r * F) sline[i].g = (sline[i].g * F) sline[i].b = (sline[i].b * F) ) ) else sline[i] = green setPixels bmp [0,h] sline ) ) )Но мне не нравится, как скрипт преобразовывает края на мелких спрайтах. По сравнению с рендером при отключенном антиалиасинге ― края в модели намного "тоньше", чем при рендеринге с скриптом (как бы получается чёрная кайма/окаймление по контору спрайта).Мне сказали, что можно отрегулировать скрипт, но не сказали как.
P.S. Надеюсь, я понятливо описал суть поставленного вопроса.
Royal Ghost
Скрипт по факту делает картинку из Premultiplied в Straight Alpha, а вам что нужно? Что вы регулировать собрались?
Хотите рендерить с включенным antialising но что бы края спрайта были как без antialising?
Солдат_ТОДД
Royal Ghost
plugin renderEffect SpriteRender name:"SpriteRender" classID:#(0xb7aa794c, 0xc3bd78ab) ( parameters main rollout:params ( ) rollout params "Anonimous" ( ) on apply bmp do ( for h=0 to (bmp.height-1) do ( local sline = getPixels bmp [0,h] bmp.width for i=1 to sline.count do ( if sline[i].a < 255.5 and sline[i].a > 140 then ( local F = (255.0 / sline[i].a) as float sline[i].r = (sline[i].r * F) sline[i].g = (sline[i].g * F) sline[i].b = (sline[i].b * F) ) else sline[i] = green ) setPixels bmp [0,h] sline ) ) )Держите. Дополнительно регулировать можно изменив значение = 140 это цвет alpha канала. Тоесть, если alpha значение в диапазоне между 0 и 140 то точка закрашивается в зеленый цвет.Солдат_ТОДД
Royal Ghost
Можно доработать скрипт или метод визуализации что бы получалось как вам нужно, но это уж оплачиваемая работа. Если нужно, можете связаться со мной contact(at)veda3d.com.
Солдат_ТОДД
А Вы, я так понял, профессиональный дизайнер?