Unity - Bezier Curve에 대해서 학습해보자.

2023. 8. 31. 13:33·엔진, 프레임워크/Unity

Bezier Curve의 원리

유니티뿐만 아니라, 컴퓨터 그래픽에서 부드러운 곡선의 구현을 위해서 많이 사용된다. 그래서 해당 내용을 Unity 카테고리에 적을까 Math 카테고리에서 작성할까 고민을 하다가 Unity에서 구현하는 방법을 가지고 Bezier Curve를 소개할 예정이라 Unity 카테고리에 작성을 한다.

 

베지어 커브(Bezier Curve)는 선분에서 얻는 점을 가지고 구현을 할 수 있다. 1차 베지어 커브부터 N차 베지어 커브까지의 값을 구할 수 있는데, 해당하는 수식들은 아래와 같다.

 

1차 베지어 커브

B(t)= (1−t)P0​+tP1​

2차 베지어 커브

B(t)= (1−t)[(1−t)P0​+tP1​]+t[(1−t)P1​+tP2​]=(1−t)2P0​+2(1−t)tP1​+t2P2​

3차, 4차 수식부터는 수식들이 복잡해지므로 수학적인 모습을 강조할 것 같아서 글을 줄인다. 단순하게 유니티에서 구현하는 방법보다 수학적인 접근이 흥미롭다면 게시글 하단의 링크를 참고하길 바란다.

 

유니티에서 구현한 베지어 커브

위에서 선분에서 얻는 점을 가지고 구현을 할 수 있다고 간략하게 설명을 했는데, 이 부분은 시각적으로 표현하면서 설명을 한다면 조금 더 이해하기 편하다.

 

먼저 선분 하나를 가지고 1차 베지어 커브를 구현해보자

위 사진에서 존재하는 T는 해당 선분에서 나아간 비율을 표현하는 수치다. 0.01부터 1.00까지 표현되는 것이 기본적이다. 1차 베지어 커브에서는 단순하게 나아간 비율을 표현할 뿐, 확인할 수 있는 점이 적으므로 다른 선을 그어보자.

기존에 상단으로 그어진 선분을 선분 A라고 명칭을 하고, 같은 Y축에 위치한 선분을 선분 B라고 명칭하자. 또, 선분 A에서 움직이는 검은 점을 점 A로, 선분 B에서 움직이는 검은 점은 점 B로 명칭하자. 선분 B에도 선분 A와 같이 선분의 비율을 나타내는 T를 가지고 점 A와 점 B를 통해서 시각적으로 표현했다.

 

1차 베지어 커브를 소개할 때에는 점 A를 보면서 1차 베지어 커브라고 명칭했으나, 2차 베지어 커브는 점 A와 점 B를 뜻하는 것이 아니다.

점 A와 점 B를 가지고 하나의 선분을 그어주자. 이는 선분 C라고 명칭한다. 선분 C는 점 A와 점 B의 위치에 따라서 자연스럽게 움직이게 된다. 

선분 C를 지나치는 점을  통해서 2차 베지어 커브를 확인할 수 있었다

 

 

참고 게시글 : https://blog.naver.com/kyuniitale/40022945907

참고 유튜브 : https://youtu.be/aVwxzDHniEw?si=yWQzaOtvlPl9ajZa

'엔진, 프레임워크 > Unity' 카테고리의 다른 글

[인프런] 따라하면서 배우는 고박사의 유니티 하이퍼캐주얼게임 시리즈 01 후기  (1) 2024.03.22
UI에서 Particle System 추가하는 방법 - Raw Image & Render Texture  (1) 2023.11.12
Unity - AnimationCurve를 사용해보자.  (0) 2023.08.28
Unity Lifecycle  (0) 2023.06.24
[UI Toolkit] 2. UI Builder가 아닌 UXML로 만들기  (0) 2023.05.18
'엔진, 프레임워크/Unity' 카테고리의 다른 글
  • [인프런] 따라하면서 배우는 고박사의 유니티 하이퍼캐주얼게임 시리즈 01 후기
  • UI에서 Particle System 추가하는 방법 - Raw Image & Render Texture
  • Unity - AnimationCurve를 사용해보자.
  • Unity Lifecycle
태역
태역
  • 태역
    RYULAB
    태역
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 언어
        • C
        • C++
        • C#
      • 엔진, 프레임워크
        • Unity
        • Unreal
        • Electron
      • 공부 N
        • 디자인 패턴
        • 수학
        • CS
        • Git
        • 알고리즘 N
        • 자료구조
      • 코테
        • 프로그래머스
        • 백준
      • 독서
        • Effective C#
        • CLR via C#
        • 뇌를 자극하는 윈도우즈 시스템 프로그래밍
        • 오브젝트
        • CSAPP
        • OSTEP
      • 프로젝트
        • Unity
      • 개발 일지
        • 퓨처리티
        • 골든타임
      • 활동
        • 게임잼 후기
        • 게임제작동아리 브릿지
        • 크래프톤 정글
        • 기타
      • 기타
  • 블로그 메뉴

    • 링크

    • 공지사항

      • 2024 04 17
    • 인기 글

    • 태그

      인프런 #인프런강의후기 #게임개발 #게임개발강의 #인강후기 #강의후기 #게임개발자 #인프런강의
      오블완
      티스토리챌린지
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    태역
    Unity - Bezier Curve에 대해서 학습해보자.
    상단으로

    티스토리툴바