ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JoyOfVEX: DAY17-3 (2023. 3. 2)
    STUDY: TWA후디니 랭글러 2기 Beginner 2023. 3. 8. 20:49

     

    VEX의 즐거움🤗: Day 17-3

    quaternion의 다양한 예제를 실습하였다. 이제껏 배워온 함수들도 활용하면서 회전값에 대한 다양한 효과를 확인하였다. 사실 quaternion을 이해하기 위해 수학적 개념을 꼭 알 필요는 없다고 하셨지만 개인적으로는 좀 궁금했고, 영어를 잘하는 것도 아니고 수학을 잘하는 것도 아니다 보니 용어도 그렇고 단어가 주는 수학적 개념도 없다보니 관성적으로 따라하고만 있는 것 같아서 찾아보았다. 방향을 가진 좌표(3차원)인 vector와 물리적인 크기를 나타내는 scalar로 구성된 사원수(quaternion). 3차원 공간에서의 회전이 축-각 회전, 오일러 각 회전..... 아무튼 그래서 행렬도 필요하고, 오일러도 필요하고, 숫자도 4개가 필요하고.. 그렇다고 한다!😂😂

     

     

    Day17-3 요약

    각도를 활용한 직관적인 회전값 주기

    - radians(chf("angle"))

    - angle 파라미터에 각도값(degree)을 입력해주면 알아서 radians으로 인식한다.

     

    랜덤하게 회전값 주기

    - rand()

    - noise() ⬅ 예측 가능한 패턴으로 랜덤하게 움직이는 애니메이션이 가능하다.

     

    얼만큼 회전할것인지 조절하기 위해 회전값을 변수 @A로 만들고 축에 곱하여 quaternion의 함수값으로 활용하여 orient를 구한다.

     

    fit(), trunc(), chramp() 등으로 효과를 꾸며줄 수 있다.

    @A 결과값을 @P.y에도 적용시켜 높이값도 줄 수 있다.

     

    euliertoquaternion(변수, 회전순서)에서 회전 순서 활용 방법

    - x, y, z축의 회전순서가 중요해지는 때가 온다.

    0: x➡y➡z

    1: x➡z➡y

    2: y➡x➡z

    3: y➡z➡x

    4: z➡x➡y

    5: z➡y➡x

     


    (지난시간에 이어..)

    (5) orient 값을 mix해 주는 방법: slerp()

    - lerp(  ): 첫번째, 두번째 input의 정보를 amount(0과 1사이의 값)로 섞어준다. 즉, amount에 해당하는 값이 된다.

    ① ( float, float, float(amount) )

    ② ( vector, vector amount )

           e.g. lerp(0, 10, 0.1) ➡ 1

                  10 : x = 1 : 0.1   ∴ x = 1

     

    - orient에 적용할 때 같은 개념인 slerp()를 활용한다.

    - slerp( vector4, vector4, float(amount) )

    - orient의 영향을 받지 않고 transform 노드를 활용 할 때: ^orient로 해당 효과 제거

     

    01
    attribute wrangle에서 작성한 orient의 영향받기 전후. (transform 노드의 위치는 attribute wrangle 아래에 연결되어 있다)

     

     

    (6) orient 값 끼리의 곱, 효과의 중첩: quaternion multiply ➡ qmultiply()

    회전값을 갖는 각기 다른 변수가 각각 orient 기능을 수행한다. 즉, 중첩이 가능하다.

    - 각각 x, y, z축을 기준으로 회전하는 3개의 변수를 quaternion으로 회전값을 구하고, qmultiply로 orient를 구한다.

     

     

    각각의 축을 기준으로 회전하는 애니메이션의 중첩

     

     

    댓글

Copyright ⓒ 오후