경일게임아카데미 멀티 디바이스 메타버스 플랫폼 개발자 양성과정 20220714 - 최서연 2022/04/04~2022/12/13

Jinho Lee·2022년 7월 15일
0

경일 메타버스 20220714 15주차 4일 수업내용. 유니티 - 공간

몸 상태가 말이 아니었기에, 동기인 최서연의 도움으로 필기를 복사받았다.
온전히 내 필기가 아니기에 감안하여 읽자.

  • 벡터 수학

벡터 - 2022. 07. 15 - 최서연

  • forward vector
    • Transform.forward
    • 어떤 오브젝트 기준으로 y 축이다.
  • Vector3(유니티 제공)
    • 정적 변수(월드 좌표에 해당)
      • back
      • down
      • forward : z
      • left
      • right
      • up
      • zero: 0, 0, 0 (제로 벡터)
      • one: 단위 벡터
    • 변수
      • magnitude: 벡터의 크기
      • normalized: 정규화
      • sqrMagnitude: 벡터 크기의 제곱. (시간이 오래 걸림. 그래서 magnitude를 보통 씀)
      • x, y, z: 벡터의 각 요소 값. 인덱스로 접근할 수도 있음(vector[0] == vector.x)
    • 생성자
      • new Vector: 새로운 벡터를 생성한다
    • 연산자
      • 스칼라곱, 더하기 빼기 가능
    • 정적 함수
      • Angle(Vector3 from , Vector3 to):from에서 to까지의 기울기
      • Cross() : 외적(cross product)
        • 이진호 별첨 : Cross(a, b) -> b X a 의 계산 결과
      • Dot() : 내적
      • Distance: 두 벡터 간의 거리(== magnitude)
      • Max: 두 벡터 중 큰 크기를 갖는 벡터
      • Min: 두 벡터 중 작은 크기를 갖는 벡터
      • Normalize: 정규화(==normalize)
      • Project: 한쪽으로 사영한 벡터를 얻는다.
        • 내적한 것을 벡터로 얻는것과 비슷…. 걍 이런 느낌 히히
      • Reflect: 반사 벡터
      • Lerp: 선형 보간
      • Slerp: 구형 선형 보간(부드러운 움직임을 위해 사용)
  • Quaternion(4원수)
    • 4가지 요소를 갖는 수
    • 나온 이유: 짐벌락
      • 기존 translate에 있는 회전 값은 오일러 값임.
      • 그래서 x 축 기울기만큼 움직이고, y축 기울기만큼 움직이고, z축 기울기만큼 움직임.
      • 문제점: 짐벌락 DirectX9 오일러 회전과 쿼터니언 회전
        • 어떤 축이 잠기는 것
        • 어떤 축이 90도 가면 두 축이 합쳐질 수 있다. 그럼 축이 3개에서 2개로 변함. (함께 움직임)
      • 회전된 결과 값을 한번에 얻기 위해 4차원으로 넘어감
        • 상세 내용은 넘 어려웡 넘경
          • 이진호 별첨 : 쿼터니언은 벡터로 표현하자면, w, x, y, z의 네 성분을 가진 벡터이다.
          • q = w + x i + y j + z * k
          • 여기서 i, j, k는 허수 성분이다.
    • 회전할때 사용함
    • 문제점: 넘 복잡함
    • 스크립트에서 회전 처리를 다루는 경우 Quaternion을 사용해야한다
    • 오일러 각을 전혀 사용하지 않고도 회전을 조정할 수 있다.
    • 회전 생성
      • Quaternion.LookRotation: 바라보기 위한 회전값을 생성
        • LookAt에서는 이것을 받아 직접 회전까지 한다
      • Quaternion.Angle:
      • Quaternion.AngleAxis:
      • Quaternion.FromToRotation:
    • Transform에서 제공하는 함수를 사용할 수 있다
      • transform.RotateAround
      • transform.Rotate
    • 오일러 각을 중간에 사용하고, 끝에는 쿼터니언으로 변경해야 한다.
      • 쿼터니언을 직접 수정해서는 안된다!!!

0개의 댓글