tr-demoscene

the scene => coding => teori => Konuyu başlatan: horselogy - 26.07.2009 19:59:06

Başlık: şu efekt nasıl yapılıyor?
Gönderen: horselogy - 26.07.2009 19:59:06
http://www.pouet.net/screenshots/11765.gif şu ekran görüntüsündeki efekti yapmak istiyorum. 2 boyutlu dalgalanan su efekti. internette aradım ama bulamadım belki adını tam bilmediğimdendir. Bu efekt ne diye anılır? ve nasıl yapılır? şöyle kısa bir tarif alsam sanki yapıcam kendim :)
Başlık: şu efekt nasıl yapılıyor?
Gönderen: fredi - 26.07.2009 20:11:07
still image'dan tam olarak düşündüğüm efekt olup olmadığını anlamadım ama, tahmin ettiğim şeyse arkaplan olarak bir adet su görseli (üzerinde karanın yansımasıyla beraber) koyulup onun üzerine de scanline hareket ettirilerek yapılabiliyor sanırım.
Başlık: şu efekt nasıl yapılıyor?
Gönderen: horselogy - 26.07.2009 22:42:41
e bu açıklama da çok basit oldu hiç birşey anlamadım :)
Başlık: şu efekt nasıl yapılıyor?
Gönderen: fredi - 26.07.2009 22:47:31
Alıntı yapılan: horselogy;21091
e bu açıklama da çok basit oldu hiç birşey anlamadım :)


peki, o aman şöyle bir link vereyim daha iyi anlaşılabilir http://ercanaltug.blogspot.com/2008/09/flash-maske-ile-su-efektleri.html
Başlık: şu efekt nasıl yapılıyor?
Gönderen: Ragnor - 26.07.2009 23:01:44
Abi yanlış hatırlamıyorsam o basit bir sinüs efekti idi ya. Aslında fredinin söylediği gibi ama verdiği örnekte dalga düz ilerliyor. Bu efektte sinüs dalgası şeklinde idi. Fakat ekranın ortasında daha küçük bir sinüs dalgası, ekranın altına indikçe sinüs dalgasının boyutu büyüyor. Yüzde %80 ihtimalle Anes  %20 ihtimalle Spritus kodlamıştır efekti. Görürlerse onlar daha iyi açıklar sanırım.
Başlık: şu efekt nasıl yapılıyor?
Gönderen: spritus - 26.07.2009 23:49:31
selam;
efekti ben kodladım.
orjinal adı lake olan efektin yapısı da ragnor'un dediği gibi basit. efekt kabaca, resmi ekrana basan trace rutinin içinde y eksenine sinüs uygulayarak elde ediliyor diyebiliriz. fake kod ile izah edersek :

Kod: [Seç]

loop
{
 n++
 for x=1 to picWidth
 {
  for y=1 to picHeight
  {
   pixel (x, y, picture(x, [B]sin(y+n)[/B]))
  }
 }
}


koyu kısım olayın en önemli noktası. onu silip y yazsaydık ekrana sadece resmi düz basacaktı.

qbasic ile yazdığım çalışır örnek:

Kod: [Seç]

SCREEN 13
DIM RESIM(79, 94), COSMAP(30)

FOR n = 0 TO 30
 COSMAP(n) = COS(n * 3.14 / 15)
NEXT

FOR X = 0 TO 78
FOR Y = 0 TO 93
 RESIM(X, Y) = X XOR Y
 PSET (X + 120, Y), X XOR Y
NEXT
NEXT

CLOSE 1

DO
n = n - 1
F = .1
FOR Y = 0 TO 93
F = F + .002
FOR X = 0 TO 78
 c = 93 - Y + COSMAP(ABS(Y / F + n) MOD 30) * 5
 IF c > 93 THEN c = 93
 IF c < 0 THEN c = 0
 PSET (120 + X, 95 + Y), RESIM(X, c)
NEXT
NEXT

xx:
X = INP(&H3DA)
IF (X AND 8) = 1 THEN GOTO xx
IF (X AND 8) = 0 THEN GOTO xx

LOOP UNTIL INKEY$ <> ""
Başlık: şu efekt nasıl yapılıyor?
Gönderen: horselogy - 27.07.2009 13:14:49
bende yaptım şimdi ehe :D (mutluluk hormonu)

Teşekkürler açıklamalar için :D