OpenGL 충돌

2855 단어 openglgraphics
간단히 말해서 물체가 다른 물체와 접촉하면 충돌이 발생합니다. OpenGL은 다양한 충돌 감지 기술을 사용하여 프레임 속도를 유지하면서 장면에서 발생하는 충돌을 감지합니다. 가장 원시적인 것은 각 개체 또는 개체의 일부를 원, 사각형 및 점과 같은 단순한 모양으로 근사화하는 것입니다.

근사 기술



이것은 원 내부의 물체를 근사화하는 예입니다. 왼쪽에는 원으로 근사화된 두 개의 완전한 다각형을 볼 수 있고 오른쪽에는 작은 원 세트로 근사한 다각형의 일부를 볼 수 있습니다.

이미지: 닉 보빅 @ GAMASUTRA






완전한 개체
개체의 일부



두 개의 원이 서로 닿거나 겹치면 충돌이 발생합니다. 그러나 근사 기법에는 한 가지 문제가 있습니다. 단순한 형태로 근사화한 후 경계 형태가 서로 닿거나 겹칠 때 충돌이 발생한다. 그래서 위의 이미지에서 볼 수 있듯이 실제 폴리곤이 충돌하지 않아도 경계원이 겹쳐서 충돌합니다.

충돌 유형


  • 벽과의 충돌(벽 – 물체)
  • 개체 - 개체 충돌
  • 원 – 원
  • 직사각형 – 직사각형
  • 원 – 직사각형

  • 개체 - 점 충돌
  • 원 – 포인트
  • 직사각형 – 점




  • 원-원 충돌



    원과 다른 원 사이의 충돌을 감지하기 위해 원-원 충돌 알고리즘이 사용됩니다.

    반지름이 각각 r1과 r2인 두 개의 원을 상상해 보십시오.



    원의 두 중심점 사이의 거리를 d로 구하면 d = r1 + r2일 때 두 원이 서로 닿습니다. 그리고 그들은 d < r1 + r2 일 때 겹칩니다.



    따라서 원-원 충돌 알고리즘은 다음과 같이 정의할 수 있습니다.

    A collision of two circles happen when Radius 1 + Radius 2 > = Distance.
    


    AABB - AABB 충돌



    AABB는 "Axis-Aligned Bounding Box"의 약자입니다. 이는 장면의 기본 축에 정렬된 직사각형 모양을 의미합니다. 2D 장면을 사용하는 경우 기본 축은 X와 Y입니다.

    아래는 AABB로 둘러싸인 원형 개체의 예입니다.


    이미지: OpenGL 배우기

    충돌을 감지할 때 X축과 Y축을 모두 고려해야 합니다. 다음 두 AABB를 고려하십시오.



    위 이미지와 같이 상자의 X 범위와 Y 범위를 개별적으로 계산할 수 있습니다.

    어느 한 축에서 범위가 서로 축소되면 충돌이 발생합니다.


    이미지: 모질라 MDN

    위 이미지에서 X 범위가 겹치는 것을 볼 수 있습니다. 따라서 충돌이 발생합니다. Y축에서도 마찬가지입니다.

    지금까지 충돌, Circle-Circle 충돌 및 AABB 충돌에 대한 기본 사항에 대해 논의했습니다. 이것이 이 블로그의 전부입니다. 질문이나 의견이 있으시면 아래에 의견을 남겨주세요! 행복한 코딩!

    좋은 웹페이지 즐겨찾기