Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Inverse Transform
#1
Inverse Transform Location ve Inverse Transform Direction arasındaki fark nedir?
Ara
Cevapla
#2
(13-09-2020, Saat: 11:19)emin2045 Adlı Kullanıcıdan Alıntı:  Inverse Transform Location ve Inverse Transform Direction arasındaki fark nedir?

    Birisi Location ın Inverse Transformunu alıyor diğeri ise Direction ın Inverse Transformunu alıyor. Location bir objenin uzayda nerede olduğunu gösteren vector. Direction ise belirsiz bir location dan uzayda her hangi bir yöne olan doğrultudur. Location kartezyen koordinat sistemine göre her türlü değeri alabilir. Ancak genel olarak Direction vektör uzunluğu her zaman 1 olarak hesaplanır ( Örneğin FVector(0.7f,0.7f,0.7f),  Matematiksel olarak bu şart değildir ancak oyun programcılığında işler bu şekilde çok daha kolay ilerler).

    Konuyu biraz daha açmamız gerekirse bir objenin transformunun oyun dünyasının (level)  0 noktasında olduğunu varsayalım ve her hangi bir oriyentasyon (dönü) verilmemiş olsun scale i ise 1 olsun. Bu  objeyi x te 10 y de 10 z de 10 birim hareket ettirdiğimizde (yani location ı FVector(10.0f,10.0f,10.0f,)) yaptığımızda ardından z ekseninde 90 derece döndürdüğümüzde (Yani FRotator(0.0f,0.0f,90.0f))  Cismin transformu şu şekilde oluşmuş olur FTransform( FVector(10.0f,10.0f,10.0f,), FRotator(0.0f,0.0f,90.0f), FScale(1.0f,1.0f1.0f) ). Bu şu demektir cismin ilk yani 0 daki transformunu bu transform ile çarparsak cismin yeni konumu doğrultusu amaçladığımız yere gelir. Inverse Transform ise bu Transform değerlerinin Matrix matematiğindeki tersi dir. Mesela nasıl ki bu transform belirli bir objenin locasyon rotasyon scale verilerini belirli bir konumdan diğer bir konuma çekiyorsa (bizim örneğimizde 0 dan 10 10 10 noktasına ve 90 derece z dönüsüne) bu transformun inverse ü bu hemen arkasından uygulansa obje eski yerine (bizim durumumuzda 0 a) yeniden dönecektir.
    Yine örneğimizde objenin bu yeni transformunda direction vectorunu alsak şöyle bir şey çıkacaktır FVector(0.0f, 1.0f, 0.0f). Sonuçta obje z ekseninde 90 derece döndü. Objenin oriyentasyonu World space te bu vector olur.
    Yine örneğimizden devam edecek olursak tüm bu rakamlar WorldSpace te hesaplandı. Bu objenin bir alt objesi olsa ya da componentı olsa bu alt obje için uzay yukarıdaki transfom konumuu 0 0 0 transformu kabul edilecek ve hesaplar bu yeni transformda yapılacak. Yani mesela bir alt objeyi bu objenin kendi konumundan 1 birim yukarı çeksek FVector(0.0f,0.0f,1.0f) çekmiş olacağız. Ancak dikkat ederseniz bu alt objenin world space teki konumu değil sadece göreceli (yani local space te) konumudur.
    Bu noktada Inverse Transform Location   verilen world spacete ifade edilmiş koordinatın local space te hangi vectore tekabül ettiğini karşılık geldiğini bulmak için kullanılabilir. Mesela yukarıdaki örnekte alt objenin world space te ifade edilmiş pozisyonu (location) nun local space te (yani parent objenin merkezine göre olan) ne olduğunu verir. Geriye direk bir location vectoru döndürür. 
   Inverse Transform Direction ise WorldSpace te ifade edilmiş bir Direction vectorunu world space ten local space çevirir. Mesela yukarıdaki örnekte alt objenin direction ı World Space te  FVector(0.0f, 1.0f, 0.0f) çıkarken LocalSpace e çevirdiğimizde FVector(0.0f, 0.0f, 0.0f) çıkacaktır. Çünkü alt obje parent-üst objeye göre hiç dönmemiştir.

   Not: Bu konuları anlayabilmek için Matrix ler ve Vector aritmetiğini biraz bilmek gerekiyor. Sadece belirli durumları baz alıp ezber yoluna da gidebilirsiniz ancak mantığını anlamanız elinize aldığınız her şeyi yapabilmenizde size büyük avantaj sağlayacaktır.
   Umarım yararlı olmuştur. 
    Kolay gelsin.
Ara
Cevapla
 


Hızlı Menü:


Unreal Engine Türkiye

This forum is community driven and supported by voluntary community members. It has nothing to do with Epic Games.

Bu site sadece destek amaçlıdır. Epic Games ile bir ilgisi yoktur.