Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
2-1141732958
pupapumQ
2006-03-07 15:02
2006.03.26
Программу в пуск


15-1141543203
Alex Konshin
2006-03-05 10:20
2006.03.26
9/11


4-1135966030
Dark Lord
2005-12-30 21:07
2006.03.26
Как удалить шрифт из системы по его названию?


15-1141390499
NightLord
2006-03-03 15:54
2006.03.26
Глюк или так и должно быть


4-1136582918
g-l-u-k
2006-01-07 00:28
2006.03.26
Получение PID





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский