Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

Compose Transform bug?

One of these 2 possibilities should give me out the same rotation as defined in the New Var 0 Variable but none of them does. Is this a bug or what other possibility is there?alt text

I also tried comparing the direction vectors, they were different as well.

Product Version: UE 4.15
sdfsdfgdfgdfd.jpg (134.2 kB)
more ▼

asked Apr 25 '17 at 03:13 PM in Using UE4

avatar image

930 98 139 195

avatar image alleysark Apr 25 '17 at 05:38 PM

Transform A represents QST(A) that is Q(A)xS(A)xPx-Q(A) + T(A), where Q(A) is quaternion of A, S(A) is scale of A, and T(A) is translation of A


Combining two transforms A and B is: AxB = QST(AxB)

Q(AxB) = Q(B)xQ(A)

S(AxB) = S(A)xS(B)

T(AxB) = Q(B)xS(B)xT(A)x-Q(B) + T(B)


Inverse transform of A is: QST(~A), where ~A is inverse of A

Q(~A) = Q(~A)

S(~A) = 1.f/S(A)

T(~A) = - (Q(~A)xS(~A)xT(A)xQ(A))


Convert transform A into relative transform of P is: ~P x A

Scale = S(A)/S(P)

Rotation = Q(A) x Q(~P)

Translation = T(A)-S(A)/S(P) x [Q(A)xQ(~P)xT(P)xQ(P)xQ(~A)]

(See TransformVectorized.h for more informations)


P: ActorTransform A: NewVar0

So, the above graph represents this equations: top node

{~P x A} x P

Q = Q(P) x {Q(A) x Q(~P)} = Rotate 'the rotation of A' by amount of P

S = {S(A)/S(P)}xS(P)

T = Q(P)xS(P)x{T(A)-S(A)/S(P) x [Q(A)xQ(~P)xT(P)xQ(P)xQ(~A)]}x-Q(P) + T(P)


and bottom node: P x {~P x A}

Q = {Q(A) x Q(~P)} x Q(P) = Q(A)

S = S(P)x{S(A)/S(P)}

T = {Q(A) x Q(~P)}x{S(A)/S(P)}xT(P)x-{Q(A) x Q(~P)} + T(A)-S(A)/S(P) x [Q(A)xQ(~P)xT(P)xQ(P)xQ(~A)]


So.. bottom node should give us the same rotation as defined in NewVar0. I did not test that blueprint.

avatar image Davision Apr 25 '17 at 06:26 PM

Thanks for writing this all up! Blueprint does not have any Quaternion and I have never worked with Quaternion, also this is a bit much for me to compose with my simple Blueprint brain but I try :)

So what you are saying is the bottom Print in that graph should print me the New Var 0 Rotation value? Because it is definitely not. What I want is rotation from world to local and then local to world which should give me then the same initial rotation value Meaning: A is New Var 0, ~P x A = N, {~P x N} x P = (rotation same as New Var 0)? (No clue what the ~ means)

There is a Combine Rotations node and a Invert Rotation node in Blueprint, might I better of trying it to do with that instead?

(comments are locked)
10|2000 characters needed characters left

0 answers: sort voted first
Be the first one to answer this question
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question