충돌 검출

Collision detection

충돌 검출은 두 개 이상의 물체의 교차점을 검출하는 계산상의 문제입니다.충돌 검출은 컴퓨터 지오메트리의 고전적인 문제이며, 주로 컴퓨터 그래픽, 컴퓨터 게임, 컴퓨터 시뮬레이션, 로봇 공학 및 컴퓨터 물리학 등 다양한 컴퓨팅 분야에서 응용되고 있습니다.충돌 감지 알고리즘은 2D [1]및 3D 객체에서 작동하는 것으로 나눌 수 있습니다.

개요

당구공이 서로 부딪히는 것은 충돌 감지 과학에서 적용할 수 있는 전형적인 예이다.

물리 시뮬레이션에서는 당구 치기 등의 실험을 실시합니다.튀는 당구공의 물리학은 단단한 신체 움직임과 탄성 충돌산하에 잘 알려져 있다.상황에 대한 초기 설명이 제공되며, 당구대와 공에 대한 매우 정확한 물리적 설명과 함께 모든 공의 초기 위치가 제공됩니다.큐볼에 가해지는 힘(아마도 선수가 큐스틱으로 공을 때릴 때 생기는 힘)이 주어진다면, 우리는 컴퓨터 프로그램으로 모든 공의 궤적, 정확한 움직임, 그리고 궁극적인 휴식 장소를 계산하고 싶다.이 게임을 시뮬레이션하는 프로그램은 여러 부분으로 구성되며, 그 중 하나는 당구공 사이의 정확한 충격을 계산하는 역할을 한다.이 특별한 예는 또한 조건이 좋지 않은 으로 판명되었습니다. 즉, 계산에서 작은 오류가 발생해도 당구공의 최종 위치에 급격한 변화가 발생합니다.

비디오 게임은 몇 가지 중요한 차이점을 가지고 있지만 비슷한 요구 사항을 가지고 있습니다.컴퓨터 시뮬레이션은 가능한 한 정확하게 실제 물리학을 시뮬레이션해야 하지만, 컴퓨터 게임은 허용 가능한 방식으로 실시간으로 강력하게 실제 물리학을 시뮬레이션해야 합니다.결과 시뮬레이션이 게임 플레이어를 만족시키는 한 타협은 허용됩니다.

컴퓨터 시뮬레이션에서의 충돌 감지

물리적 시뮬레이터는 충돌 시 반응하는 방식이 다릅니다.일부는 물질의 부드러움을 사용하여 힘을 계산하고, 실제와 같이 다음 시간 단계에서 충돌을 해결합니다.일부 재료는 연성이 낮기 때문에 CPU 부하가 매우 높습니다.일부 시뮬레이터는 선형 보간법으로 충돌 시간을 추정하고 시뮬레이션을 롤백하며 보다 추상적인 보존법칙으로 충돌을 계산한다.

일부는 선형 보간법(뉴턴의 방법)을 반복하여 시뮬레이션의 나머지 부분보다 훨씬 높은 정밀도로 충돌 시간을 계산한다.충돌 검출은 시간 일관성을 이용하여 항공 교통 관제 등 CPU 수요 증가 없이 시간 스텝을 보다 세밀하게 진행할 수 있습니다.

비탄성 충돌 후 특수 상태의 슬라이딩 및 정지 상태가 발생할 수 있으며, 예를 들어 오픈 다이내믹스 엔진은 구속조건을 사용하여 이를 시뮬레이션합니다.구속조건은 관성을 회피하고 불안정성을 회피합니다.장면 그래프로 휴식 구현함으로써 드리프트를 회피할 수 있다.

즉, 물리적 시뮬레이터는 일반적으로 두 가지 방법 중 하나로 작동하며, 여기서 충돌은 후행(충돌 발생 후) 또는 선행(충돌 발생 전)으로 감지된다.posti와 priori의 구별에 가세해, 현대의 거의 모든 충돌 검출 알고리즘은 알고리즘의 계층 구조로 분류된다.종종 postori와 priori아닌 "discrete"와 "continuous"라는 용어가 사용됩니다.

사후(이산) 대 선행(연속)

후자의 경우 물리적 시뮬레이션을 작은 단계씩 진행하여 어떤 물체가 교차하고 있는지 또는 눈에 띄게 교차하는 것으로 간주되는지 확인합니다.각 시뮬레이션 단계에서 교차하는 모든 물체의 목록이 생성되고 충돌을 설명하기 위해 이러한 물체의 위치와 궤적이 "고정"됩니다.이 방법은 일반적으로 충돌의 실제 순간을 놓치고 실제로 발생한 후에만 충돌을 포착하기 때문에 후행이라고 불립니다.

선험적 방법에는 물리체의 궤적을 매우 정밀하게 예측할 수 있는 충돌 검출 알고리즘이 있다.충돌의 원인은 정밀하게 계산되며, 실제 물체는 결코 상호 침투하지 않습니다.이것은 충돌 검출 알고리즘이 물리적인 본체의 설정을 갱신하기 전에 충돌의 인스턴스를 계산하기 때문에 priori라고 불립니다.

postori 방법의 주요 이점은 다음과 같다.이 경우 충돌 검출 알고리즘은 무수한 물리 변수를 인식할 필요가 없습니다.단순한 물리 물체 목록이 알고리즘에 공급되고 프로그램은 교차하는 물체의 목록을 반환합니다.충돌 감지 알고리즘은 마찰, 탄성 충돌 또는 더 나쁜 비탄성 충돌 및 변형 가능한 물체를 이해할 필요가 없습니다.또한 사후 알고리즘은 사전 알고리즘보다 사실상 1차원 단순하다.priori 알고리즘priori 문제에는 없는 시간 변수를 처리해야 합니다.

한편, 사후 알고리즘은, 교집합(물리적으로 올바르지 않은)을 수정할 필요가 있는 「고정」단계에서 문제를 일으킵니다.또한 이산 단계가 너무 크면 충돌이 감지되지 않아 충분히 빠르거나 작으면 다른 물체를 통과할 수 있습니다.

priori 알고리즘의 장점은 충실도와 안정성 향상입니다.물리적 시뮬레이션을 충돌 감지 알고리즘에서 분리하는 것은 어렵지만 완전히 불가능한 것은 아닙니다.그러나 가장 단순한 경우를 제외하고, 두 물체가 충돌할 시기를 미리 결정하는 문제(일부 초기 데이터가 주어짐)는 닫힌 형태의 해결책이 없다. 즉, 일반적으로 수치 루트 파인더가 관련된다.

탁자에 놓여 있는 꽃병과 같이 일부 물체는 정지해 있는 상태, 즉 충돌하고 있지만 튕겨져 나가지도 않고 상호 침투하지도 않습니다.모든 경우 정지 접점에는 특별한 처리가 필요합니다.두 물체가 충돌(후방)하거나 슬라이드(선행)하고 상대 운동이 임계값 미만일 경우 마찰이 발생하여 두 물체가 장면 그래프의 같은 가지에 배치됩니다.

최적화

여러 물체에 대한 명백한 충돌 감지 방법은 매우 느립니다.물론 모든 개체를 다른 개체와 비교하는 것은 작동하지만 개체 가 너무 많은 경우에는 사용할 수 없습니다.복잡한 형상을 가진 물체끼리 서로 얼굴을 대조함으로써 명백한 방식으로 확인하는 것 자체가 매우 느립니다.따라서,[2] 문제를 가속화하기 위해 상당한 연구가 적용되었다.

시간적 일관성을 이용하다

많은 어플리케이션에서 물리 바디의 설정은 1단계에서 다음 단계로 거의 변경되지 않습니다.많은 물체는 전혀 움직이지 않을 수 있습니다.알고리즘은 이전 시간 단계에서 수행된 계산을 현재 시간 단계에서 재사용할 수 있도록 설계되어 계산 완료 시간을 단축할 수 있습니다.

충돌 검출의 대략적인 수준에서 목표는 잠재적으로 교차할 수 있는 개체의 쌍을 찾는 것입니다.그 쌍들은 더 많은 분석이 필요할 것이다.이를 위한 초기 고성능 알고리즘은 Ming C에 의해 개발되었습니다. 캘리포니아 대학교 버클리[1]의 Lin은 현장에 있는 모든 n개의 물체에 대해 축 정렬 경계 상자를 사용할 것을 제안했습니다.

각 박스는 1× 2 × 3 [ 1, × [ , 2 × [ , 3 { I _ {\ I _ { 3 } { b _1} \ I _ { times }의 곱으로 됩니다.경계 박스의 충돌 검출을 위한 일반적인 알고리즘은 스위프프루닝이다. × 2× 3 \ I \ I _ { } \ _ { } j 1 × J \ times J _ { \ times J_} \ times , , 、 I _ 1 \ I _ { } i i i i i i i i i1 observe1 i1 합니다.한 스텝에서 다음 스텝으로 (\})가 교차할 가능성이 매우 높습니다.나는 교차한다.마찬가지로 이전 시간 단계에서 교차하지 않으면 교차하지 않을 가능성이 매우 높습니다.

따라서 프레임에서 프레임으로 교차하는 간격을 추적하는 것으로 문제를 줄일 수 있습니다.간격 리스트는 3개(축마다 1개씩) 있으며, 모든 리스트의 길이는 동일합니다(각 리스트의 길이는 상자의 개수인 길이n{n각 목록에서 각 간격은 목록의 다른 모든 간격과 교차할 수 있습니다.따라서 각 목록에 대해 n × n n M ( i){ M 0과 1이 . { 와 j{ j 교차하지 않으면 1입니다.

이 가정에 따르면 간격 목록과 관련된 M(\ M은 기본적으로 한 단계씩 변경되지 않습니다.이를 이용하기 위해 간격 목록은 실제로는 라벨이 지정된 엔드포인트 목록으로 유지됩니다.목록의 각 요소에는 간격의 끝점 좌표와 해당 간격을 식별하는 고유한 정수가 있습니다.다음으로 좌표별로 목록을 정렬하고 M(\ M 업데이트합니다.실제로 경계 상자의 구성이 한 단계에서 다음 단계로 크게 변경되지 않는다면 이 알고리즘이 비교적 빠르게 작동한다는 것을 믿는 것은 그리 어렵지 않습니다.

천 시뮬레이션과 같은 변형 가능한 보디의 경우, 아래에서 설명한 것처럼 보다 구체적인 쌍별 프루닝 알고리즘을 사용할 수 없을 수 있으며, n-body 프루닝 알고리즘이 최선의 방법입니다.

씬(scene)에서 물리체의 속도에 상한을 둘 수 있는 경우 초기 거리와 시간 스텝의 크기에 따라 객체 쌍을 가지치기할 수 있습니다.

쌍방향 프루닝

추가 조사를 위해 한 쌍의 신체 부검을 하고 나면 충돌 여부를 좀 더 주의 깊게 확인해야 합니다.그러나 많은 응용 프로그램에서 개별 개체(너무 변형되지 않는 경우)는 주로 삼각형인 더 작은 원시 집합으로 설명됩니다. , , , n \ S = { 1} , _ { , \ , _ { } 、 , , , \ T = { T _} , { _ , , . , .

모든 모든 ({k})의 충돌을 확인하는 것은 당연한 일이지만, 여기에는 n 비교가 되므로 매우 비효율적입니다.가능하면 플루닝 알고리즘을 사용하여 확인해야 하는 삼각형 쌍의 수를 줄이는 것이 좋습니다.

가장 널리 사용되는 알고리즘 패밀리는 계층적 경계 볼륨 방식으로 알려져 있습니다.전처리 단계에서는 각 오브젝트(이 에서는 S T에 대해 경계 볼륨의 계층을 계산합니다. 각 단계에서 S와해야 할 때 계층적 경계 볼륨을 사용하여 고려 중인 삼각형의 쌍을 줄입니다.많은 [citation needed]경우 구가 바람직하지 않다고 지적되어 왔지만, 단순화를 위해 경계 구를 사용한 예를 제시하겠습니다.

E{\ E 삼각형 집합인 경우 {\ B를 미리 계산할 수 있습니다.( ) \ B ( )b b 、B () \ ( E )는E ( \ E )를 완전히 포함하는 구체이며 가능한 한 가정합니다.

미리 B할 수 있습니다. 이 두 구가 교차하지 않으면(그리고 매우 테스트하기 쉽지만), S style ST(\T 모두 n-body pruning 알고리즘보다 훨씬 낫지 않습니다.

,2 , , m { , E_{2} ,\, 삼각형의 집합이라면L () : 1, 2,… , / L할 수 있습니다. {},2},\2}} R () : = m/ +1 , , - , m \ 1},\E_{mS 및 T(\displaystyle T에 대해 이를 할 수 있으며 S , S 계산할 수 있습니다.unding 구는B)\ B(보다 훨씬 작습니다.또, 예를 들면 SS가 교차하지 않는 경우는, 「 B체크하지 않습니다. ) { L ( )}

사전 계산으로 각 물리적 본체(삼각형 세트로 표시됨)를 2진수 트리로 재귀 분해할 수 있습니다. 여기서 각 N N은 삼각형 세트를 나타내고 두 개의 하위 노드 N(\ L R R은 트리의 각 노드에서 각각 L을 나타냅니다.B ( B (를 사전에 계산할 수 있습니다.

한 쌍의 객체가 충돌하는지 테스트해야 할 때 해당 경계 구면 트리를 사용하여 여러 쌍의 삼각형을 제거할 수 있습니다.

B ( T) \ B( T ) \ displaystyle B ( ) 정렬된 경계 상자를 선택하면 AAB를 얻을 수 있습니다.BTree 방향의 경계선 트리를 OBBTree라고 합니다.기본 개체가 변경되면 일부 트리는 더 쉽게 업데이트할 수 있습니다.일부 트리는 단순한 삼각형 대신 스플라인과 같은 고차 원시 요소를 수용할 수 있습니다.

정확한 쌍방향 충돌 감지

프루닝이 완료되면 정확한 충돌 검출을 확인하기 위해 여러 쌍의 후보가 남습니다.

기본적인 관찰은 분리된 두 의 볼록한 물체에 대해 한 물체는 완전히 그 평면의 한쪽에 있고 다른 물체는 그 평면의 반대쪽에 있도록 우주에서 평면을 찾을 수 있다는 것입니다.이를 통해 볼록 물체에 대한 매우 빠른 충돌 감지 알고리즘을 개발할 수 있습니다.

이 영역의 초기 작업에는 "분리 평면" 방법이 포함되었습니다.두 삼각형은 기본적으로 세 개의 정점을 통과하는 평면으로 분리할 수 없는 경우에만 충돌합니다.즉, 삼각형이 2}, 6 , k{ v { , v _ { j } , v _ { k}、 3개의 정점을 모두 통과하는 평면을 찾아 이 평면이 분리 평면인지 확인합니다.이러한 평면이 분리 평면일 경우 삼각형은 분리된 것으로 간주됩니다.반면 평면을 분리하는 평면이 없으면 삼각형이 교차하는 것으로 간주됩니다.그런 비행기는 스무 대 있다.

삼각형이 동일 평면일 경우 이 테스트는 완전히 성공적이지 않습니다.예를 들어 삼각 모서리에 수직인 평면을 추가하여 문제를 전체적으로 해결할 수 있습니다.다른 경우에는 평면과 만나는 물체도 다른 각도에서 만나야 하므로 전체 충돌 감지에서 충돌을 찾을 수 있습니다.

이후 더 나은 방법이 개발되었습니다.볼록 다면체 두 개체의 표면에서 가장 가까운 점을 찾는 데 매우 빠른 알고리즘을 사용할 수 있습니다.Ming C의 초기 작업. Lin[3] 선형 프로그래밍에서 심플렉스 알고리즘의 변형을 사용했습니다.Gilbert-Johnson-Keerthi 거리 알고리즘이 이 접근방식을 대체했습니다.이러한 알고리즘은 이전 충돌 검사의 시작점과 함께 사용할 경우 정지된 물체 또는 느리게 움직이는 물체 쌍에 반복적으로 적용되면 일정한 시간에 근접합니다.

이 모든 알고리즘 작업의 최종 결과는 일반적인 PC와 게임 콘솔에서 수천 개의 움직이는 물체에 대해 효율적으로 충돌 감지를 수행할 수 있다는 것입니다.

선행 프루닝

관련된 오브젝트의 대부분이 비디오게임의 일반적인 경우와 같이 고정되어 있는 경우에는 사전연산을 사용하여 실행속도를 높일 수 있습니다.

여기서 프루닝은 n-body 프루닝과 쌍방향 프루닝 양쪽에서도 바람직하지만 알고리즘은 기초가 되는 물리 시스템에서 사용되는 동작의 유형과 시간을 필요로 합니다.

정확한 쌍별 충돌 검출에 관한 한 이는 궤적에 크게 의존하며 충돌 순간을 계산하기 위해 거의 숫자 루트 검색 알고리즘을 사용해야 합니다.

예를 들어 시간 1 () , () , 3 ( ) { { v { ) 、 _ {) } ( ) 5( ) , ( )、 { { v _ 4 }앞서 언급한 차선.하지만, 이 20대의 비행기는 모두 시간 내에 추적할 수 있기 때문에 우리는 더 잘 할 수 있다.(u , ,w )P (, ,w ) { R ( \ \ {} ^ { , , ,, , , , , 、 v p p p p p p p p , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , v{ , , , , , ,각 평면을 3개의 정점에 대해 추적해야 하며, 이는 추적에 60개의 값을 제공합니다.이러한 60개의 함수에 루트 파인더를 사용하면 두 개의 주어진 삼각형과 두 개의 주어진 궤적에 대한 정확한 충돌 시간이 생성됩니다.여기서 정점의 궤적이 tt에서 다항식으로 가정될 경우, 최종 60개의 함수는 사실상 입방체 다항식이며, 이 예외적인 경우 입방체의 근에 대한 공식을 사용하여 정확한 충돌 시간을 찾을 수 있다.일부 수치 분석가는 입방체의 근에 대한 공식을 사용하는 것이 다항식에 [citation needed]루트 파인더를 사용하는 것만큼 수치적으로 안정적이지 않다고 제안합니다.

공간 파티션

대체 알고리즘은 8진수, 이진수 공간 파티션(또는 BSP 트리) 및 기타 유사한 접근 방식을 포함하는 공간 파티션 우산 하에 그룹화됩니다.공간을 여러 개의 단순한 셀로 분할하고 두 개체가 동일한 셀에 없는 것으로 표시될 경우 교차점을 확인할 필요가 없습니다.BSP 트리는 사전 계산이 가능하기 때문에 게임 내 벽이나 고정된 장애물을 처리하는 데 매우 적합합니다.이러한 알고리즘은 일반적으로 위에서 설명한 알고리즘보다 오래되었습니다.

경계 상자

대부분의 경우 경계 상자(또는 경계 볼륨)는 2D 직사각형 또는 3D 입체이지만 다른 모양도 가능합니다.비디오 게임에서의 바운딩 박스는 때때로 히트박스라고 불린다.경계 다이아몬드, 최소 경계 평행사변형, 볼록 선체, 경계 원 또는 경계 공, 경계 타원은 모두 시도했지만, 경계 [4]상자는 단순성 때문에 여전히 가장 인기가 있습니다.경계 박스는 일반적으로 충돌 검출의 초기(프루닝) 단계에서 사용되므로 경계 박스가 겹치는 객체만 상세하게 비교할 필요가 있습니다.

삼각형 중심 세그먼트

삼각형 메쉬 객체는 3D 바디 모델링에서 일반적으로 사용됩니다.일반적으로 충돌 함수는 삼각형 대 삼각형 절편 또는 망사와 연관된 경계 형상입니다.삼각형의 중심은 연필 끝에서 균형을 잡을 수 있는 질량 위치의 중심입니다.시뮬레이션은 물리 파라미터에 중심치수만 추가하면 된다.개체와 대상 모두에 중심점이 지정되면 이 두 점을 연결하는 선분을 정의할 수 있습니다.

삼각형의 중심 위치 벡터는 정점의 위치 벡터의 평균입니다.따라서 정점에 데카르트 좌표1, , ){ }, (, y, 2){(3, , 3){ z_{1})이 있는 경우, ( + + ), ( 1 + + 3) )\ { ( 1} + _ { + 3 } , { \ { { , { } , { } , \ { \ frac { { 1

다음은 두 3D 점 사이의 선분 거리에 대한 입니다. c ( - )2+ ( 2 - ) +( 2 - 1)2 { {} ={ (1}^{21}^{{11}}^{{{1}}^2}^{{{{{}}}}}^{{{}}}}}^{{{{{{}}}}}}}}}}

여기서 세그먼트의 길이/거리는 세그먼트의 조정 가능한 "히트" 기준 크기입니다.객체가 가까워지면 길이가 임계값까지 감소합니다.삼각형 구는 효과적인 지오메트리 테스트가 됩니다.중심을 중심으로 하는 구형의 크기는 삼각형의 모든 정점을 포함하도록 지정할 수 있습니다.

비디오 게임

비디오 게임은 매우 제한된 컴퓨팅 시간을 여러 태스크로 나눠야 합니다.이러한 자원 제한과 비교적 원시적인 충돌 감지 알고리즘의 사용에도 불구하고 프로그래머는 게임에서 사용할[citation needed] 수 있는 신뢰할 수 있는 시스템을 만들 수 있었습니다.

오랫동안, 비디오 게임은 치료해야 할 개체의 수가 매우 제한적이었기 때문에 모든 쌍을 확인하는 것은 문제가 되지 않았다.2차원 게임에서는 하드웨어가 화면의 [5]스프라이트 간에 겹치는 픽셀을 효율적으로 검출하여 보고할 수 있었습니다.다른 경우에는 화면을 타일처럼 타일처럼 타일처럼 타일로 묶는 것만으로 충분하며, 쌍으로 체크할 때는 히트박스라고 불리는 바운딩 직사각형이나 원을 사용하여 충분히 정확한 것으로 간주합니다.

3차원 게임은 n nbody 프루닝을 위해 분할 방법을 사용했으며, 오랫동안 쌍으로 체크하기 위해 실제 3D 객체당 하나 또는 몇 개의 구를 사용했습니다.현실을 면밀히 시뮬레이션하려는 게임을 제외하고는 정확한 체크는 매우 드물다.그렇다고 해서 모든 경우에 정확한 수표가 사용되는 것은 아닙니다.

게임은 실제 물리학을 모방할 필요가 없기 때문에 안정성은 그다지 문제가 되지 않습니다.거의 모든 게임은 후방 충돌 감지를 사용하며 충돌은 매우 간단한 규칙을 사용하여 해결되는 경우가 많습니다.예를 들어, 캐릭터가 벽에 삽입되면 마지막으로 알려진 양호한 위치로 다시 이동할 수 있습니다.일부 게임에서는 캐릭터가 벽에 박히기 전에 이동할 수 있는 거리를 계산하여 그 거리까지만 이동할 수 있습니다.

많은 경우 비디오 게임의 경우 환경과의 충돌 검출을 위해 캐릭터를 점으로 근사하는 것으로 충분하다.이 경우 바이너리 공간 파티션 트리는 실행 가능하고 효율적이며 단순한 알고리즘을 제공하여 점이 환경에 포함되어 있는지 여부를 확인합니다.이러한 데이터 구조는 캐릭터가 지면을 따라 달릴 때 "휴식 위치" 상황을 우아하게 처리하는 데도 사용할 수 있습니다.캐릭터 간의 충돌과 발사체 및 위험과의 충돌은 별도로 처리한다.

강력한 시뮬레이터는 어떤 입력에도 합리적인 방식으로 반응하는 시뮬레이터입니다.예를 들어 고속 레이스카 비디오 게임을 상상하면 시뮬레이션 단계마다 레이스 트랙을 따라 상당한 거리를 주행할 수 있습니다.선로에 얕은 장애물(예: 벽돌 벽)이 있는 경우, 차량이 완전히 이를 뛰어넘을 가능성은 거의 없으며, 이는 매우 바람직하지 않습니다.다른 경우에서는 사후 알고리즘이 필요로 하는 "수정"이 올바르게 구현되지 않아 캐릭터를 벽에 가둘 수 있는 버그가 발생하고 캐릭터가 벽을 통과하도록 허용되며 치명적인 바닥 없는 독이 있을 수도 있고 없을 수도 있는 끝없는 공허에 빠질 수도 있습니다.때로는 "검은 지옥", "푸른 지옥" 또는 "녹색 지옥"이라고도 합니다.n 지배적인 색상.이는 고장난 충돌 감지 및 물리적 시뮬레이션 시스템의 특징입니다.빅 릭스: Over the Road Racing은 충돌 감지 시스템이 실패하거나 누락될 수 있는 악명 높은 게임의 예입니다.

히트박스

개체의 히트박스를 제어하는 기어헤드의 디버깅 대화 상자
위 화면에서 제어되는 기어헤드 장난감의 히트박스

히트박스는 실시간 충돌 감지를 위해 비디오 게임에서 일반적으로 사용되는 보이지 않는 모양입니다. 경계 상자의 한 종류입니다.이는 종종 직사각형(2D 게임) 또는 큐보이드(3D)로, 모델이나 스프라이트와 같은 눈에 보이는 물체의 한 점에 부착되어 따라갑니다.원형 또는 타원형 모양도 일반적이지만 여전히 "상자"라고 불립니다.애니메이션 물체는 움직임의 [6][unreliable source?]정확성을 보장하기 위해 각 움직이는 부분에 히트박스를 부착하는 것이 일반적입니다.

히트박스는 캐릭터가 펀치나 총알에 맞는 것과 같은 "단방향" 충돌을 감지하는 데 사용됩니다.인간과 AI가 항상 변화하는 히트박스의 위치를 관리하는 데 어려움을 겪기 때문에 피드백(예: 벽에 부딪힘)과의 충돌을 감지하기에 적합하지 않다. 이러한 충돌은 일반적으로 훨씬 더 단순한 축 정렬 경계 상자로 처리된다.플레이어는 "히트박스"라는 용어를 사용하여 이러한 유형의 상호작용을 나타낼 수 있습니다.

하트박스는 "손상을 입히는 물체"와 "손상을 입히는 물체"를 구분하는 데 사용되는 관련 용어입니다.예를 들어, 공격은 공격자의 펀치 주변의 히트박스가 상대의 몸에 있는 히트박스 중 하나와 연결되어 있을 때만 착지할 수 있으며, 반면 상대편 히트박스가 충돌하면 플레이어가 타격을 교환하거나 취소하게 되고 상대편 히트박스는 서로 상호작용하지 않습니다."히트박스"와 "하트박스"의 정의를 뒤집은 게임도 있고, "히트박스"를 사용하는 게임도 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Teschner, M.; Kimmerle, S.; Heidelberger, B.; Zachmann, G.; Raghupathi, L.; Fuhrmann, A.; Cani, M.-P.; Faure, F.; Magnenat-Thalmann, N.; Strasser, W.; Volino, P. (2005). "Collision Detection for Deformable Objects". Computer Graphics Forum. 24: 61–81. doi:10.1111/j.1467-8659.2005.00829.x. S2CID 1359430.
  2. ^ Jaume, J; Galli, R; Mas, R; Mascaro-Oliver, M (1995) (1995). "Real-time Collision Checking for 3D Object Positioning in Sparse Environments". Image Processing for Broadcast and Video Production. Workshops in Computing. Image Processing for Broadcast and Video Production; Springer-Verlag. pp. 216–225. doi:10.1007/978-1-4471-3035-2_18. ISBN 978-3-540-19947-2.{{cite book}}: CS1 maint: 여러 이름: 작성자 목록(링크)
  3. ^ Lin, Ming C (1993). "Efficient Collision Detection for Animation and Robotics (thesis)" (PDF). University of California, Berkeley. Archived from the original (PDF) on 2014-07-28.
  4. ^ Caldwell, Douglas R. (2005-08-29). "Unlocking the Mysteries of the Bounding Box". US Army Engineer Research & Development Center, Topographic Engineering Center, Research Division, Information Generation and Management Branch. Archived from the original on 2012-07-28. Retrieved 2014-05-13.
  5. ^ "Components of the Amiga: The MC68000 and the Amiga Custom Chips" (Reference manual) (2.1 ed.). Chapter 1. Archived from the original on 2018-07-17. Retrieved 2018-07-17. Additionally, you can use system hardware to detect collisions between objects and have your program react to such collisions.
  6. ^ "Hitbox". Valve Developer Community. Valve. Retrieved 18 September 2011.

외부 링크