emin2045

Unreal MVP
23 Haz 2020
169
1
75
28
Merhabalar! Nerede bir movement fonksiyonu olsa rinterp kullanılıyor. Tam olarak fiziksel veya diğer tüm şeyler açısından nasıl bir işlevi var öğrenmek istiyorum. Kullanmazsak ne gibi sorunlar çıkabilir?

-------------------------- Çözüldü

Örneğin A konumundan B konuma bir nesnenin gitmesini istiyorsunuz. SetActorLocation => B böyle bir mantığınız var. Eğer bir interpolasyon kullanmazsanız direk oraya gidiyor. Daha fazlası için bknz 2.yorum ve 4.yorum.
 
emin2045' Alıntı:
Merhabalar! Nerede bir movement fonksiyonu olsa rinterp kullanılıyor. Tam olarak fiziksel veya diğer tüm şeyler açısından nasıl bir işlevi var öğrenmek istiyorum? Kullanmazsak ne gibi sorunlar çıkabilir?

Rinterp bir interpolasyon fonksiyonudur. Sadece frotator ları interpolasyon yapar. Interpolasyon nedir. Uzun konu. Şuraya bakabilirsin.

https://tr.wikipedia.org/wiki/Lineer_interpolasyon

Bu fonksiyon lineer interpolasyon değildir spline interpolasyon dur. Bu nedir derseniz yine uzun konu

https://tr.wikipedia.org/wiki/Bağ_interpolasyonu

Sonuç olarak iki frorator düşün biri şu anki diğeri ise hedeflenen frotator. Yani biri current diğeri target rotation. Her tick atışında yavaş ve düzgün bir şekilde current yani şu anki durumdan hedef duruma yani dönüye geçmek istiyorsun. O zaman rinterp kullanman gerekir. Bu fonksiyona iki tick arasında geçen zaman olan deltatime ı  ve ne kadar hızlı dönmesini istediğini gösteren speed i de vermelisin.
Başka bir anlatımla mesela frotator(90,25,30) dönüş değerinden frotator(45,50,90) değerine döndürmek istiyorsun bir şeyi. Hadi bunu daha somutlastiralim. Bir korku oyunu yapıyoruz ve biz odaya girdigimiz de içerideki bir kafa heykeli bulunduğu yani dönmüş olduğu taraftan yavaş  ve korkunç bir şekilde bize doğru dönmesini ve bize bakmasını istiyoruz. Bunun toplam 2 Veya 3 saniye gibi bir surede tamamlanmasını istiyoruz. Tick fonksiyonunda current rotation  değerinden başlayarak sürekli o anki dönüş değerlerini besleriz. Target rot a da bizim bulunduğumuz rot değerini veririz. Deltatime  a tick ile gelen deltatime ı besleriz. Hızınada 2 yada 3 deriz. Bu node dan çıkan sonuç  her tick 'te eğer heykelin rotation ina verilirse mesela setactorrotation ile heykelin yavaşça bize döndüğü görülecektir.
Yani sonuç, bu fonksiyon kullanmazsak bir şey olacak bir şey değildir. Ihtiyacımız varsa kullanırız yoksa kullanmayız.
Not: interpolation çok çeşitli versiyonları vardır. Sadece bu değildir. Oyun programlama için mutlaka bilinmesi gereken bir matematik konusudur.
Kolay gelsin.
 
erginegider' Alıntı:
emin2045' Alıntı:
Merhabalar! Nerede bir movement fonksiyonu olsa rinterp kullanılıyor. Tam olarak fiziksel veya diğer tüm şeyler açısından nasıl bir işlevi var öğrenmek istiyorum? Kullanmazsak ne gibi sorunlar çıkabilir?

Rinterp bir interpolasyon fonksiyonudur. Sadece frotator ları interpolasyon yapar. Interpolasyon nedir. Uzun konu. Şuraya bakabilirsin.

https://tr.wikipedia.org/wiki/Lineer_interpolasyon

Bu fonksiyon lineer interpolasyon değildir spline interpolasyon dur. Bu nedir derseniz yine uzun konu

https://tr.wikipedia.org/wiki/Bağ_interpolasyonu

Sonuç olarak iki frorator düşün biri şu anki diğeri ise hedeflenen frotator. Yani biri current diğeri target rotation. Her tick atışında yavaş ve düzgün bir şekilde current yani şu anki durumdan hedef duruma yani dönüye geçmek istiyorsun. O zaman rinterp kullanman gerekir. Bu fonksiyona iki tick arasında geçen zaman olan deltatime ı  ve ne kadar hızlı dönmesini istediğini gösteren speed i de vermelisin.
Başka bir anlatımla mesela frotator(90,25,30) dönüş değerinden frotator(45,50,90) değerine döndürmek istiyorsun bir şeyi. Hadi bunu daha somutlastiralim. Bir korku oyunu yapıyoruz ve biz odaya girdigimiz de içerideki bir kafa heykeli bulunduğu yani dönmüş olduğu taraftan yavaş  ve korkunç bir şekilde bize doğru dönmesini ve bize bakmasını istiyoruz. Bunun toplam 2 Veya 3 saniye gibi bir surede tamamlanmasını istiyoruz. Tick fonksiyonunda current rotation  değerinden başlayarak sürekli o anki dönüş değerlerini besleriz. Target rot a da bizim bulunduğumuz rot değerini veririz. Deltatime  a tick ile gelen deltatime ı besleriz. Hızınada 2 yada 3 deriz. Bu node dan çıkan sonuç  her tick 'te eğer heykelin rotation ina verilirse mesela setactorrotation ile heykelin yavaşça bize döndüğü görülecektir.
Yani sonuç, bu fonksiyon kullanmazsak bir şey olacak bir şey değildir. Ihtiyacımız varsa kullanırız yoksa kullanmayız.
Not: interpolation çok çeşitli versiyonları vardır. Sadece bu değildir. Oyun programlama için mutlaka bilinmesi gereken bir matematik konusudur.
Kolay gelsin.
Timeline ile yapamaz mıyız peki?
 
emin2045' Alıntı:
erginegider' Alıntı:
Rinterp bir interpolasyon fonksiyonudur. Sadece frotator ları interpolasyon yapar. Interpolasyon nedir. Uzun konu. Şuraya bakabilirsin.

https://tr.wikipedia.org/wiki/Lineer_interpolasyon

Bu fonksiyon lineer interpolasyon değildir spline interpolasyon dur. Bu nedir derseniz yine uzun konu

https://tr.wikipedia.org/wiki/Bağ_interpolasyonu

Sonuç olarak iki frorator düşün biri şu anki diğeri ise hedeflenen frotator. Yani biri current diğeri target rotation. Her tick atışında yavaş ve düzgün bir şekilde current yani şu anki durumdan hedef duruma yani dönüye geçmek istiyorsun. O zaman rinterp kullanman gerekir. Bu fonksiyona iki tick arasında geçen zaman olan deltatime ı  ve ne kadar hızlı dönmesini istediğini gösteren speed i de vermelisin.
Başka bir anlatımla mesela frotator(90,25,30) dönüş değerinden frotator(45,50,90) değerine döndürmek istiyorsun bir şeyi. Hadi bunu daha somutlastiralim. Bir korku oyunu yapıyoruz ve biz odaya girdigimiz de içerideki bir kafa heykeli bulunduğu yani dönmüş olduğu taraftan yavaş  ve korkunç bir şekilde bize doğru dönmesini ve bize bakmasını istiyoruz. Bunun toplam 2 Veya 3 saniye gibi bir surede tamamlanmasını istiyoruz. Tick fonksiyonunda current rotation  değerinden başlayarak sürekli o anki dönüş değerlerini besleriz. Target rot a da bizim bulunduğumuz rot değerini veririz. Deltatime  a tick ile gelen deltatime ı besleriz. Hızınada 2 yada 3 deriz. Bu node dan çıkan sonuç  her tick 'te eğer heykelin rotation ina verilirse mesela setactorrotation ile heykelin yavaşça bize döndüğü görülecektir.
Yani sonuç, bu fonksiyon kullanmazsak bir şey olacak bir şey değildir. Ihtiyacımız varsa kullanırız yoksa kullanmayız.
Not: interpolation çok çeşitli versiyonları vardır. Sadece bu değildir. Oyun programlama için mutlaka bilinmesi gereken bir matematik konusudur.
Kolay gelsin.
Timeline ile yapamaz mıyız peki?
Yapabilirsin ama timeline ı şöyle düşün. Timeline programlama bilinmeyenler için yapılmış çok çok kolay bir yöntem. Muhtemelen timeline koduna baksak arka planda oda rinterp ve diger  versiyonlarını  kullanıyordur.
 Benim bir önceki örnekte anlattığım  şeyi timeline ile yapabilirsin. Ama frotator direk baglanamiyordu diye hatırlıyorum. Yani öyleyse yanına yine 3 5 node koymak zorunda kalırsın.btam hatırlayamıyorum şimdi.
Rinterp daha low level birşey. Programcıların kullandığı birşey. Timeline high  level birşey level designerlarin yani programlama bilmeyenlerin kullandığı birşey.
 Mesela işin biraz daha komplex olduğunu düşün. Belirli değerlerde event atman gerekse timeline içine event atamazsın örnegin. Senin kontrolünü kısıtlıyor.
Birde timeline tek sefer lik sonu olan olaylara daha uygun. Benim verdiğim örnekte öyle olduğu için çakıştı. Rinterp böyle bir sınırlama olmadan kodlanabilir.
 Mesela mechwarrior  gibi bir oyunu  ı düşün. Mech robotun belden üst kısmının sürekli hiç durmadan senin hedef aldigin noktaya dönmesi gerekiyor. Hemde bunu ağır ve avas şekilde yapması gerekiyor. Alt tarafının yani bacaklarının ise sürekli oyun boyunca ilerleme istikametine surekli olarak biraz da gecikerek yavaş yavaş dönmesi gerekiyor.(videolarını izleyebilirsin ) Bu durumda timeline kullanamasın mesela. Kullanabilsen de bir sekilde en az 5 kat fazla uğraşırsın. 
 Yani evet bazı durumlar için timeline da kullanılabilir. Bazı durumlarda  tek opsiyon rinterp kullanmak zorunda kalırsın. Kullanım şekil ve amaç ları farklı.