plotme77

Yeni üye
1 Haz 2015
8
0
0
(77) Yalova
Merhaba Arkadaşlar. Birş Şeyi Merak Ediyorum Oda Mevsim.
Unreal Engine 4 mevsim olayını destekliyor mu?.

Bide Belli bir Zaman Geçtikten Sonra Modellerin Otomatik Olarak Değişmesi,
Örnek Vermek Gerekirse;
 01/01/2000(Oyun zamanı bir deste görmüştüm) Tarihindeki bir tane çim modeli normal yeşil ama zaman ilerledikçe (aya göre) 01/05/2000 de çim sararmış ve yine zaman ilerledikçe 01/9/2000 gibi bi tarihte çimin üzerine kar varmış gibi modelleri değiştirebiliyor muyuz? blueprint'le yada C++'a.

Şimdiden Cevaplarınız İçin Teşekkür Ederim.
 
Oyun motorlarının böyle bir şeyi kapsamasını beklemek yanlış olur. Bunu sağlamak geliştiricilere kalmış. Bunu sağlamak için ilgili materyalleri dinamikleştirebilmek ve sistem bu dinamiğin uyumlu çalışmasını sağlamak gerekir.

Kısa bir beyin fırtınası ile neler yapılabileceği üç aşağı beş yukarı aşağıdaki gibi olsa gerek:

1. Tarih/Saat Sistemi
Sistemin kalbini oluşturan şey tarih/saat sistemi olsa gerek. Gerçek zamanlama sistemine (saniye, dakika, saat, gün, hafta, ay, yıl...vb) uygun ve ölçeklenebilir bir zaman sistemi oluşturmak gerekir. Tarih zamanına göre mevisimin karakteristiklerini çıkarıp, sistemi de fazla yormamamak için örneğin her güne dair, saat tam 00:00 mevsimle tutarlı rastgele bir hava koşulu oluşturmak gerekir. Elbette gün dönümü için ana ışık kaynağının (muhtemelen Directional Light) açılarının doğru bir biçimde ayarlanması gerekir.

2. Dinamik Materyaller
İlgili materyallerin olabildiğince dinamik olması gerekir. Örneğin çim materyali doku resmi ile beraber bir de çarpan olarak renk içerebilir. Renk dinamik verilir ve mevisimine göre uygun sarı-yeşil tonlarında geçiş yapılır, Material Instance Dynamic kullanılarak bu değerler oyun içerisinde sürekli olarak değiştirilir. Ağaç yaprakları ve hatta gövdeleri de benzer bir tutuma sokulabilir.

3. Kar İçin Decal
Kar yağışı için Decal olmazsa olmazdır diye düşünüyorum.

4. Dinamik Hava Koşulları
Dinamik hava koşulları; bulut, kar ve yağmur yağışı, ışık miktarı gibi bir çok şeyin dinamik olarak geliştirici tarafından ayarlanması gerekir.

5. Bazı Nesnelerin Gerektiğinde Yok Olması
Bazı nesneler gerektiğinde yok olması veya küçülmesi gerekir. Bunları da ilgili zaman aralıklarında Scale3D ve Hide kullanarak yapmak mümkün.

Sonuç olarak sistemin geliştirici tarafından oluşturulması gerekir. Bunun gerçeğe yakın olması geliştiricinin yeteneklerine ve hayalgücüne kalmış. Buradaki bir diğer problem de performansı göz önünde bulundurmak. Gerçekçiliği arttırmak için buradaki işlemlerinin bir kısmının (başta zaman akışı) Tick gibi her frame yada neredeyse her frame denetlenmesi gerekir. Ancak sararma gibi olaylar ana zaman döngüsünde örneğin her saat başı gibi bir aralıkla güncellenirse daha verimli olur ama bu güncellemede sararma miktarı da oyuncunun gözle farkedemeyeceği kadar az olmalıdır. Mevsimsel değişikliklerle ilgili olaylar da olay tabanlı bir biçimde her gün yada belki her haftaya kadar indirgenebilir. Performans için yapılabilecek şeylerden bir tanesi de işlem yükünün mümkün olabildiğince CPU üzerinden alınıp GPU'ya verilmesi (yani Blueprint yada C++ değil de doğrudan Materyal/Shader kodu üzerinde hesaplama yapmak) olacaktır.
 
Bahsettiğiniz şeyi elbette yapabilirsiniz. Öncelikle yapmanız gereken şey bir Parameter Collection ve bunun içinde 4(kaç mevsim geçişi istiyorsanız) adet Scalar Collection Parameter oluşturmak. Ardından mevsim değişiminden etkilenecek olan her objenin materyalinde her hava şartı için texture'larınızı hazırlayıp bunları Lerp ile sıraya dizmeniz gerekli. Sonra da yaratmış olduğunuz Collection parametreleri bu Lerp'lerin alfa girişine bağlayacaksınız. En sonunda da level BP(veya güneş ve atmosfer için bir actor BP kullanıyorsanız onun içinde) oyundaki zamana göre bu parametreleri sırasıyla 0'dan 1'e geçireceksiniz. Materyal içindeki Lerp sıralaması biraz karışık, onu test ederek kendiniz bulacaksınız artık.

Çimler büyüsün/küçülsün istiyorsanız yine bu collection parametrelerini kullanıp materyaldeki World Position Offset girişinden faydalanıp modellerin boyutunu da ayarlayabilirsiniz.
 
cahitburak' Alıntı:
2. Dinamik Materyaller
İlgili materyallerin olabildiğince dinamik olması gerekir. Örneğin çim materyali doku resmi ile beraber bir de çarpan olarak renk içerebilir. Renk dinamik verilir ve mevisimine göre uygun sarı-yeşil tonlarında geçiş yapılır, Material Instance Dynamic kullanılarak bu değerler oyun içerisinde sürekli olarak değiştirilir. Ağaç yaprakları ve hatta gövdeleri de benzer bir tutuma sokulabilir.

3. Kar İçin Decal
Kar yağışı için Decal olmazsa olmazdır diye düşünüyorum.

5. Bazı Nesnelerin Gerektiğinde Yok Olması
Bazı nesneler gerektiğinde yok olması veya küçülmesi gerekir. Bunları da ilgili zaman aralıklarında Scale3D ve Hide kullanarak yapmak mümkün.

2.Material Instance yerine collection parameter kullanmak her açıdan daha iyi bu tür sistemler için. Tek bir parametre ile o parametreyi barındıran tüm materyalleri aynı anda değiştirebiliyorsunuz.

3.Kar için materyal içerisinde normal map veya bir heightmap'ten faydalanarak If node'u ile de gerçekçi kar birikmesi/erimesi yapmak mümkün.

5.Foliage için yine en iyi yöntem worldpositionoffset ten faydalanmak materyal içerisinde.
 
Jacky' Alıntı:
cahitburak' Alıntı:
2. Dinamik Materyaller
İlgili materyallerin olabildiğince dinamik olması gerekir. Örneğin çim materyali doku resmi ile beraber bir de çarpan olarak renk içerebilir. Renk dinamik verilir ve mevisimine göre uygun sarı-yeşil tonlarında geçiş yapılır, Material Instance Dynamic kullanılarak bu değerler oyun içerisinde sürekli olarak değiştirilir. Ağaç yaprakları ve hatta gövdeleri de benzer bir tutuma sokulabilir.

3. Kar İçin Decal
Kar yağışı için Decal olmazsa olmazdır diye düşünüyorum.

5. Bazı Nesnelerin Gerektiğinde Yok Olması
Bazı nesneler gerektiğinde yok olması veya küçülmesi gerekir. Bunları da ilgili zaman aralıklarında Scale3D ve Hide kullanarak yapmak mümkün.

2.Material Instance yerine collection parameter kullanmak her açıdan daha iyi bu tür sistemler için. Tek bir parametre ile o parametreyi barındıran tüm materyalleri aynı anda değiştirebiliyorsunuz.

3.Kar için materyal içerisinde normal map veya bir heightmap'ten faydalanarak If node'u ile de gerçekçi kar birikmesi/erimesi yapmak mümkün.

5.Foliage için yine en iyi yöntem worldpositionoffset ten faydalanmak materyal içerisinde.

Sonradan düşününce 5. madde çok mantıklı değil gerçekten de. İşine ehlinin bakış açısıyla bakmanın ayrı bir faydası var. Zaten bu CPU/GPU önerisine de ters.

Material Parameter Collection da çok kullanışlı bu durumlar için yalnız MPCnin temel amacı bu dinamik parametreleri bir arada toplamak zaten. Öyle yada böyle MaterialInstance oluşturmak gerekiyor diye biliyorum.
 
cahitburak' Alıntı:
Material Parameter Collection da çok kullanışlı bu durumlar için yalnız MPCnin temel amacı bu dinamik parametreleri bir arada toplamak zaten. Öyle yada böyle MaterialInstance oluşturmak gerekiyor diye biliyorum.

Material Instance'ların aksine MPC'lar içindeki parametreyi barındıran tüm materyalleri etkilediği için Dynamic MI yaratıp her objeye referansta bulunmak gerekmiyor. Bir nevi global parametre. İstenilen BP içinden erişilip değer verilebiliniyor. Vektör collection parameter kullanarak karakter yerini belirleyip çim, çiçek, vs. gibi objeleri oyuncu ile etkileşime bile sokabilirsiniz(yine worldpositionoffset'ten faydalanarak tabi.) Post process materyalleri(Blendables) için de aynı şey geçerli.
 
Jacky' Alıntı:
cahitburak' Alıntı:
Material Parameter Collection da çok kullanışlı bu durumlar için yalnız MPCnin temel amacı bu dinamik parametreleri bir arada toplamak zaten. Öyle yada böyle MaterialInstance oluşturmak gerekiyor diye biliyorum.

Material Instance'ların aksine MPC'lar içindeki parametreyi barındıran tüm materyalleri etkilediği için Dynamic MI yaratıp her objeye referansta bulunmak gerekmiyor. Bir nevi global parametre. İstenilen BP içinden erişilip değer verilebiliniyor. Vektör collection parameter kullanarak karakter yerini belirleyip çim, çiçek, vs. gibi objeleri oyuncu ile etkileşime bile sokabilirsiniz(yine worldpositionoffset'ten faydalanarak tabi.) Post process materyalleri(Blendables) için de aynı şey geçerli.

Evet şimdi inceledim de ben onları sadece parametreleri bir araya toplamak için sanıyordum, hiç kullanmamıştım. Yeni ve önemli bir şey öğrendim, teşekkürler.

https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/ParameterCollections/index.html
Dökümantasyonda da aynı şekilde kar miktarı, parçalanma ve ıslaklık gibi konulara örnek olarak vermiş.