Форум: "Media";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
Вниз3D painting Найти похожие ветки
← →
!Trinix © (2005-10-23 19:15) [0]Здравствуйте, мастера!
Я создаю редактор к моей игре. Сейчас работю над терраином, который поддерживает карту высот. И вот, что меня интересует, как сделать такую кисть, которая рисует не какой-нибудь цвет, а рисует по текстуре. А так же, мне необходимо, чтобы края сливались с фоном (как в фотошопе). Прошу вас помогите мне, и я буду очень благодарен, если у вас есть какой-нибудь подобный пример.
Плюс к этому подскажите, как определять размеры текстуры, так одним словом. Главное это кисть.
← →
Antonn © (2005-10-23 19:26) [1]можно и по текстуре. пройди сюда и скачай модуль http://kladovka.net.ru/index.cgi?pid=list&rid=252
добавь в него эту процедурку:procedure CopyPrepareMaskColor(_B_in,_B_out: TBitmap; _x,_y:integer; Color:Tcolor; _transparent:integer);
var x, y, x_cor,y_cor,x_corS,y_corS: Integer; RowOut,RowIn: PRGBArray;
_r,_b,_g:integer; rc1, bc1, gc1:byte;
begin
if _x<0 then x_corS:=abs(_x) else x_corS:=0;
if _y<0 then y_corS:=abs(_y) else y_corS:=0;
if (_x+_B_in.Width)>_B_out.Width then x_cor:=_x+_B_in.Width-_B_out.Width else x_cor:=0;
if (_y+_B_in.Height)>_B_out.Height then y_cor:=_y+_B_in.Height-_B_out.Height else y_cor:=0;
rc1:=GetRValue(Color); gc1:=GetGValue(Color); bc1:=GetBValue(Color);
for y:=y_corS to _B_in.Height-1-y_cor do begin
RowOut:= _B_out.ScanLine[y+_y];
RowIn:= _B_in.ScanLine[y];
for x:=x_corS to _B_in.Width-1-x_cor do begin
_r:= trunc(RowOut[x+_x].rgbtRed+(((rc1-RowOut[x+_x].rgbtRed)/100)*(RowIn[x].rgbtRed*100/255))*(_transparent/100));
_g:= trunc(RowOut[x+_x].rgbtGreen+(((gc1-RowOut[x+_x].rgbtGreen)/100)*(RowIn[x].rgbtGreen*100/255))*(_transparent/100));
_b:= trunc(RowOut[x+_x].rgbtBlue+(((bc1-RowOut[x+_x].rgbtBlue)/100)*(RowIn[x].rgbtBlue*100/255))*(_transparent/100));
if _r>255 then _r:=255; if _r<0 then _r:=0;
if _g>255 then _g:=255; if _g<0 then _g:=0;
if _b>255 then _b:=255; if _b<0 then _b:=0;
RowOut[x+_x].rgbtRed:=_r;
RowOut[x+_x].rgbtGreen:=_g;
RowOut[x+_x].rgbtBlue:=_b;
end;
end
end;
теперь про использование: Нужна текстурка _B_in(bmp,24bit), _B_out - то, куда выводишь(на которую накладываешь), _x,_y - координаты, далее цвет заполнения(clred, например) и прозрачность.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.049 c