Главная страница
    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.038 c
1-1140640342
Grief
2006-02-22 23:32
2006.03.26
Список библиотек процесса


2-1142227328
apl
2006-03-13 08:22
2006.03.26
FastReport 3


9-1126683287
Ricks
2005-09-14 11:34
2006.03.26
Пересечение прямоугольников


4-1136451039
ZZZ
2006-01-05 11:50
2006.03.26
Блокировка доступа к Flash устройству.


2-1141829973
Nsk3D
2006-03-08 17:59
2006.03.26
вставка в функцию





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский