Geometri Savaşlarından çözgü etkisini nasıl çoğaltırım?


12

Geometri Savaşları gibi oyunlarda gördüğünüz çözgü efektini elde etmeye çalışıyorum .

Çözgü efekti dahil Geometri Savaşlarının ekran görüntüsü

Birisi burada neler olduğunu açıklamaya yardımcı olabilir mi? Izgaranın z ekseni bir şekilde, herhangi bir şekilde, programcı tarafından manipüle gibi hissediyorum, ama gerçekten doğru çözgü etkisi elde etmek için bilinen bazı matematiksel denklem var mı?

Edit: Daha spesifik olmak gerekirse, ızgara eğri demek. Her şeyin nasıl negatif z eksenine doğru çekildiğini ve sonra sektiğini görün.


1
Hakkında eğilen arka plandan bahsediyor musunuz? Geometri Savaşları olduğu için , ekran görüntüsünde çok fazla kaos var, bu da bana bir süredir ne bahsettiğinizi anlatmaya çalışmamı sağladı.
Grace Note

Evet arka plan hakkında eğiliyor.
Joey Green

Yanıtlar:


12

Basit bir yay sisteminin 10 dakikalık bir uygulaması (ya da blogunda diyor ;)). Sistem birden çok çözgü ve şebekeyi bozan diğer şeyleri halledebilir.

Küçük ek ayrıntılar eklemek için güncellendi:

Birkaç ayrıntı daha. Eskiden Bizarre Creations web sitesinde yer alan bir röportajdan (bu site şirketin kapanması nedeniyle kayboldu) bir soru vardı:

S: Oyundaki en çarpıcı grafik özelliklerden biri “yerçekimi ızgarası” oyun alanı. Bunu nasıl bu kadar havalı yaptın; oyundaki her nesnenin kendi ağırlığı var mı? Izgara, her biri komşusu üzerinde az miktarda kuvvet uygulayan 60.000 noktadan oluşur. Simülasyonun kendisi, oyun nesnelerinden biri küçük bir itme yaptığında, bu kadar çok salınmasına neden olan stabilitenin kenarında oturur! Yalnızca birkaç tür nesne ızgarayı etkiler. Izgara sisteminin hesaplanması oldukça pahalı olduğundan, aslında ses sistemi ile birlikte ikinci çekirdek üzerinde çalışır (ilk çekirdek oyun ve parçacıklara adanmıştır, üçüncüsü sesi oluşturmak için kullanılır).


1

Bunu yapmak için "doğru" bir yol olup olmadığını bilmiyorum, ama muhtemelen sadece bir noktaya hesaplanan bir falloff ile uygulanan estetik açıdan hoş bir doğrusal dönüşüm.

Dolayısıyla, üzerinde çalıştığınız herhangi bir öğe için:

  • çözgü merkezine olan mesafeyi bul (d)
  • 1 - d / istediğiniz efektin maksimum mesafesini hesaplayın (yoğunluk için i)
  • [0-1] 'e kelepçeleyin
  • elemanı lerp ile dönüştürmek (kimlik, dönüşüm, i)

Iirc, Geometri savaşları, bazı elementlere çarpık bir çözgü olarak uygularken, parçacıklar gibi diğer elementlerin de "bozulmadan" sadece "kuvvet" ten etkilendiğini söyledi. Etkiyi düzgün bir şekilde örneklemek için yeterli köşeye sahip olduğunuzu varsayarak, bozulmayı bir tepe gölgeleyicisinde uygulayabilirsiniz. Alternatif olarak, ilk olarak bir ekran dışı arabelleğe etki etmesi gereken her şeyi oluşturabilir ve ardından sonuçları, bozulmamış tüm öğeleri üstüne eklemeden önce, distorsiyonu uyguladığınız güzel bir mozaikli dörtlü üzerine işleyebilirsiniz.

Dönüşüm gelince, ölçekleme size emme emiş verecektir. Doğru hatırlıyorsam, biraz dönme olacak bazı bükülmeler de vardı.

Wackier görünümlü efektler elde etmek için yoğunluk faktörü hesaplamaları ile meraklısı ve meraklısı alabilirsiniz. Örneğin, bir öğenin merkeze göre olan açısını (a) hesaplayabilir ve buna dahil olan faktörü hesaplayabilirsiniz. Cos (a) 'yı alın ve efektte radyal dalgalar yapabilirsiniz. Yapmak istediğiniz şey, kendinizi gerekli iskele koduyla kurmak ve daha sonra farklı faktör kombinasyonlarıyla denemeye gitmek.


Harika teşekkürler bunu deneyeceğim. Tanımladığınız algoritma temel olarak bir yay etkisi midir?
Joey Green

Hayır, zaman içinde nasıl değişeceğini tarif etmedim, bu yüzden bir bahar değil. Sadece peşinde olduğunuz bozulma şeklini nasıl alacağınızı anlattım. GW tarzında canlandırmak, zaman içinde i'yi modüle ederek başka bir faktör eklemeyi gerektirir. Her şeyi uygulamaya çalışın ve i'yi gevşetmek veya etkinizi yoğunlaştırmak için ölçeklendirebileceğiniz sizin için açık olmalıdır. Bu düzenleyici değerden bir sinüs dalgası geçirin ya da 1D yay gibi zıplayın ve her şeyi etkili bir şekilde zıplayın. Yine, etrafında değişken değişkenler olan bir koşum takımı olduğunda, deney arkadaşınız olacaktır.
Chris Subagio
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.