The Diary
Дневникът на Jul
<- Дневника
Добавяне на коментар
Понеделник, 12 Февруари 2007
Едно от малкото ми развлечения напоследък е един стар проект от лятото, симулация на огън, който не гори просто нагоре а може да гори навсякъде. Тоест по нормалите на повърхността от която гори го искам аз. Измислих как да направя това. За да изчисля нормалите или поне най-силния градиент в 8те основни направления използвам флтър на Собел. Това е прост едноизмерен филтър, който за всяка точка от картината изчислява разликата от лявата и дясната съседна точка и същото за вертикала. Така при резки смени в интензитета той дава високи стойности а при липса на промени дава ниски. Освен това по знака на разликата човек може да определи и дали прехода е от светло към тъмно или обратно. НА тази основа и с комбинирането на резултатите от хоризонталния и вертикалния филтър може да се изчисли градиента във всяка една точка. И така да се направи рекурсивно карта на нормалите за една черно бяра картина. После просто се гнерира пламък за всяка бяла точка и се пуска да гори по посока на градиента си. Генерирането е просто - взема се усреднената стойност на пиксела плюс три негови съседа, падащи се зад посоката на пламъка в неговото незабавно обкръжение (примерно за пламък нагоре се взема долен ляв, долен центрамен и долен десен съсед) прибавя се случайна малка стойност и това е новата стойност на пламъка (1 значи максимално горещ и с увеличаване на стойност изстива - аз ползвам стойността като индекс в палитра с преливащи цветове от бяло през жълто към червено после към черно и накрая едвам видима сиво лилава ивица за псевдо хало. И това е цялата философия. Естествено има доста детайли и не съм съвсем готов, но принципно идеята е това. Утре ще ви опиша и как съм намислил да симулирам вятър раздухващ огъня.
[ Добави коментар ]Добавяне на коментар
Comments, texts and pictures not signed by me are property of their respective owners.
(c) 2003-2005 by Georgi Chorbadzhiyski. Some rights reserved.
Страницата е генерирана от Glog v3.50