Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.26;
Скачать: CL | DM;

Вниз

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 вся ветка

Текущий архив: 2006.03.26;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.059 c
2-1141893206
nsk3d
2006-03-09 11:33
2006.03.26
Экспорт в DLL


10-1115047338
KZPAPGSNZAARET
2005-05-02 19:22
2006.03.26
Регистрация сервера приложений


15-1141552539
Serg1981
2006-03-05 12:55
2006.03.26
Удаленное управление


9-1127015559
bulanov
2005-09-18 07:52
2006.03.26
Завершение загрузки текстур (GLScene)


15-1141502713
DesWind
2006-03-04 23:05
2006.03.26
"День сурка"