Gönderen Konu: Metaballs  (Okunma sayısı 10209 defa)

Metaballs

« : 18.03.2004 00:43:21 »
Hızlı düğmeleri aç

spritus

İleti: 933

Çevrimdışı
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://resident.tr-demoscene.info
evet, şu birbirine yapışan toplar.. bu efekti uzun süredir kodlamak istiyorum ama ne okuduğum tutoriallerden birşey anladım ne de mantığını bulabildim. biri çıkıp "aha şöyle böyle yapılır" dese ne iyi olurdu. severdim onu :)

Metaballs

« Yanıtla #1 : 18.03.2004 15:53:30 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Pışıııık... Yöntemi anlatiim de bu sene de partyde ez geç bizi dimi ehehe. Şaka bir yana biliyorum bu efektin nasıl yapıldığını ancak elimde örnek source code yok. Bir örnek codeladığımda Spaztica'nın açtığı efektler bölümüne yollarım. Yönteme gelince...

Aslında temelde çok basit bir mantık var. Ekranda dolaşan topların hepsinin birer mapi var mapleri çevresinde geniş bir blur alanı var. Örnek olarak background değeri 0 ise ve topların renk değerleri 255 ise çevrelerinde 255'den 0'a giden bir degrede alanı olduğunu düşün. Şimdi biz bu topları ekrana basarken filtreden geçiriyoruz. Yani diyoruz ki mesela 192-255 aralığını ana renk olarak bas, 128-192 aralığını biraz daha açık bir tonla bas v.s. gibi (aslında burada da bir renk geçişi olacak). Ancak 128'in altındaki değerleri göstermediğimizi varsayalım. Dolayısıyla toplar tek başlarına dolaşırken çevrelerinde çok fazla blur gözükmüyor. Ancak biz topların map değerlerini üst üste geldiği yerlerde topluyoruz.

Maplerin üst üste binen pixel değerleri 105 ve 93 olsun, normalde ikisi de gözükmezken üst üste gelip toplanınca 198 oluyor ve 192'den büyük olduğu için ana renk olarak gözüküyor. Sen ana renk ve alt renkleri istediğin kadar çoğaltabilir ya da level kullanmaksızın bir palet geçişi oluşturabilirsin. Ancak bildiğim kadarıyla birkaç level kullanıp daha sonra bir blur filtresinden geçirmek daha kaliteli sonuç veriyor.

Sıfır code örneği, full gevezelik... Umarım işine yarar.  ;)

Metaballs

« Yanıtla #2 : 20.03.2004 01:09:22 »
Hızlı düğmeleri aç

spritus

İleti: 933

Çevrimdışı
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://resident.tr-demoscene.info
skate sana while(1) cout>>"TNX" demek istiyorum. :)
bu efekti kullandığım yerde seni belirtmeyi unutmam.