KR101694296B1 - 회전하는 공의 충돌 시뮬레이션 방법 - Google Patents
회전하는 공의 충돌 시뮬레이션 방법 Download PDFInfo
- Publication number
- KR101694296B1 KR101694296B1 KR1020110135907A KR20110135907A KR101694296B1 KR 101694296 B1 KR101694296 B1 KR 101694296B1 KR 1020110135907 A KR1020110135907 A KR 1020110135907A KR 20110135907 A KR20110135907 A KR 20110135907A KR 101694296 B1 KR101694296 B1 KR 101694296B1
- Authority
- KR
- South Korea
- Prior art keywords
- ball
- center point
- collision
- calculating
- ground
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
- A63F13/57—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
- A63F13/573—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game using trajectories of game objects, e.g. of a golf ball according to the point of impact
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/80—Special adaptations for executing a specific game genre or game mode
- A63F13/812—Ball games, e.g. soccer or baseball
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/80—Special adaptations for executing a specific game genre or game mode
- A63F13/816—Athletics, e.g. track-and-field sports
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/64—Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car
- A63F2300/643—Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car by determining the impact between objects, e.g. collision detection
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/64—Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car
- A63F2300/646—Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car for calculating the trajectory of an object
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/80—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game specially adapted for executing a specific type of game
- A63F2300/8011—Ball
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/10—Numerical modelling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/21—Collision detection, intersection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
본 발명은 가상 스포츠 게임(예 : 골프, 야구, 축구, 테니스)에서 회전하며 이동하는 공의 충돌 궤적을 시뮬레이션하는 방법에 관한 것이다. 이러한 본 발명의 바람직한 실시예에 따른 회전하는 공의 충돌 시뮬레이션 방법은, 회전하는 공의 충돌을 검출하는 단계; 공의 회전과 지면과의 마찰을 고려하여 공의 충돌 후 속도를 계산하는 단계; 공의 충돌 후 중심점을 계산하는 단계; 및 공이 굴러가고 멈추는 단계;를 포함하며, 상기 회전하는 공의 충돌을 검출하는 단계는, 공의 이전 위치에서의 중심점과 현재 위치에서의 중심점을 연결한 선분이 지면과 충돌하는지 검사하는 단계; 및 공의 하단부 벡터들을 생성하여 지면과 충돌하는지 검사하는 단계;를 포함한다.
Description
본 발명은 가상 스포츠 게임(예 : 골프, 야구, 축구, 테니스)에서 회전하며 이동하는 공의 충돌 궤적을 시뮬레이션하는 방법에 관한 것이다.
공을 이용하는 체감형 스포츠 게임의 핵심은 공의 이동 궤적을 계산하는 것이다. 공을 치거나 던지거나 차는 것에 의해 공의 이동이 시작되고 일정한 시간 후에는 지면으로 떨어지게 된다. 이때, 공의 속도, 방향, 회전, 공의 탄성 계수, 지면의 충돌 계수, 지면의 기울기에 따라 충돌 후에 튀어나가는 방향이 달라진다. 공은 몇 번 튀어오른 후에 구르기를 시작하는데, 공의 구름(rolling)은 지면의 마찰력, 지면의 기울기에 영향을 받는다.
종래의 물체의 충돌에 의한 충격(impulse)을 적용하는 강체 시뮬레이션은 상술한 바와 같은 다양한 충돌 특성에 대해 강한 회전에 의한 변화를 정확하게 표현하지 못하는 문제점이 있다. 특히, 구(sphere) 형상의 물체에 대해서 충격량을 계산할 때에는 공의 중심에서 충돌점까지의 벡터가 충돌한 면의 법선 벡터 방향(normal vector) 방향과 동일 선상에 있기 때문에 회전 힘이 "0"이 된다는 문제점이 있다. 기존에 공개된 기술 중에 공이 충돌했을 때 공이 튀어오르는 방향을 제시한 경우가 있지만, 이 역시 공에 강한 회전이 있는 경우에 대해서는 언급하고 있지 않다.
현재 많은 가상 스포츠 게임들이 있으나, 강체 시뮬레이션을 기반으로 하기 때문에 앞에서 언급한 바와 같이 공이 지면과 충돌 후에 튀어 오르는 궤적(bouncing trajectory)을 정확하게 시뮬레이션하는 부분은 부족하다. 특히, 골프와 같이 공의 속도가 빠르고 강한 회전이 있는 공에 대해서 충돌 후 튀어오르는 방향 및 속도의 계산은 쉽지 않다.
본 발명은 공과 지면의 충돌을 2단계로 검사하는 방법을 통해 정확한 충돌 지점을 찾는 방법을 제시하고, 충돌 시에 충격량 계산하고, 회전력 및 운동 마찰력을 적용하여 충돌 방향 및 속도를 결정하는 방법을 제시하고, 충돌 직후 충돌 지점과 충돌 방향을 고려하여 공의 중심점을 계산하는 방법을 제시하고, 공이 튀어오름 상태에서 구름(rolling) 상태로 변하기 위한 조건, 구름 상태에서 튀어오름 상태로 전이하기 위한 조건 및 구름 상태에서 정지 상태로 전이하기 위한 조건을 제시하는 것이다.
상기와 같은 목적을 달성하기 위한 본 발명의 바람직한 실시예에 따른 회전하는 공의 충돌 시뮬레이션 방법은, 컴퓨터 장치에 의해 수행되는 회전하는 공의 충돌 시뮬레이션 방법에 있어서, 프로세서가 상기 공의 이전 위치에서의 제 1중심점과 현재 위치에서의 제 2중심점을 연결한 선분이 지면과 충돌하는지 1차 검사하는 단계; 및 상기 프로세서가, 상기 1차 검사하는 단계에서 충돌이 있는 경우, 상기 공의 충돌 지점에서 상기 제 1 중심점 방향으로 미리 정한 거리만큼 이동한 위치를 제 3 중심점으로 계산하는 단계;상기 프로세서가 공의 운동량의 변화인 충격량을 계산하고, 상기 충격량을 이용하여 상기 충돌 후 공의 속도 및 회전을 계산하는 단계; 상기 프로세서가 상기 제 3 중심점, 상기 공의 충돌 후 상기 공의 속도 및 상기 회전을 이용하여 충돌직 후의 중심점인 제 4 중심점을 계산하는 단계; 및 상기 프로세서가 상기 공이 상기 제 1 중심점에서 상기 제 4 중심점으로 이동하는 모습을 표시하는 단계;를 포함하고, 상기 제 4 중심점을 계산하는 단계는, 상기 공의 제 1 중심점에서 상기 제 2 중심점까지의 거리와, 충돌 시 상기 제 3 중심점에서 상기 제 2 중심점까지의 거리의 비를 적용하여 충돌 후 공의 중심점인 상기 제 4 중심점을 계산하는 것을 특징으로 하는 회전하는 공의 충돌 시뮬레이션 방법.
그리고, 상기 공의 회전과 지면과의 마찰을 고려하여 공의 충돌 후 속도를 계산하는 단계에서는, 공의 충돌 후 방향 및 속도를 축 성분으로 구분하는 단계; 축 방향으로는 충격량 및 지면의 단단함 정도의 속성을 적용하여 계산하는 단계; 및 축 방향으로는 지면 마찰에 의한 속도 변화와 공의 회전에 의한 속도 변화를 적용하여 계산하는 단계; 를 포함한다. 그리고, 상기 공의 회전과 지면과의 마찰을 고려하여 공의 충돌 후 속도를 계산하는 단계에서는, 공의 충돌 전 회전과 공의 충돌 후 지면 마찰에 의한 회전을 고려한다. 그리고, 상기 공의 충돌 후 중심점을 계산하는 단계에서는, 공의 이전 위치에서 현재 위치까지의 거리와, 충돌 직후 공의 중심점에서 현재 위치까지의 거리의 비를 적용하여 충돌 후 공의 중심점을 계산한다.
그리고, 상기 공의 회전과 지면과의 마찰을 고려하여 공의 충돌 후 속도를 계산하는 단계에서는, 공의 충돌 후 방향 및 속도를 축 성분으로 구분하는 단계; 축 방향으로는 충격량 및 지면의 단단함 정도의 속성을 적용하여 계산하는 단계; 및 축 방향으로는 지면 마찰에 의한 속도 변화와 공의 회전에 의한 속도 변화를 적용하여 계산하는 단계; 를 포함한다. 그리고, 상기 공의 회전과 지면과의 마찰을 고려하여 공의 충돌 후 속도를 계산하는 단계에서는, 공의 충돌 전 회전과 공의 충돌 후 지면 마찰에 의한 회전을 고려한다. 그리고, 상기 공의 충돌 후 중심점을 계산하는 단계에서는, 공의 이전 위치에서 현재 위치까지의 거리와, 충돌 직후 공의 중심점에서 현재 위치까지의 거리의 비를 적용하여 충돌 후 공의 중심점을 계산한다.
상기와 같은 목적을 달성하기 위한 본 발명의 바람직한 다른 실시예에 따른 회전하는 공의 충돌 시뮬레이션 방법은, 공의 비행 상태에서 튐 상태로의 전이를 공의 충돌 여부로 결정하는 단계; 공의 튑 상태에서 구름 상태로의 전이를 공의 높이로 결정하는 단계; 공의 구름 상태에서 공의 멈춤 상태로의 전이를 공의 이동 속도 및 거리로 결정하는 단계; 및 공의 구름 상태에서 공의 튐 상태로의 전이를 공의 지면과의 거리로 결정하는 단계; 를 포함한다. 여기서, 공의 충돌 여부를 결정하는데 있어서, 공의 이전 위치에서의 중심점과 현재 위치에서의 중심점을 연결한 선분이 지면과 충돌하는지 검사하는 단계; 및 공의 하단부 벡터들()을 생성하여 지면과 충돌하는지 검사하는 단계; 를 수행한다.
상기와 같은 본 발명은, 고속으로 회전하는 공의 충돌 궤적을 정확하게 시뮬레이션할 수 있으며, 실제 필드에서 발생할 수 있는 다양한 공의 궤적 변화를 제공함으로써, 공을 활용한 스포츠 게임에서 사실감을 높이는 효과를 얻을 수 있다.
도 1은 본 발명에 따른 공의 충돌 시뮬레이션에 있어서 상태 변화의 예를 나타낸 도면.
도 2는 본 발명에 따른 공의 충돌 시뮬레이션에 있어서, 공과 지면의 2단계 충돌 검사의 예를 나타낸 도면.
도 3은 본 발명에 따른 공의 충돌 시뮬레이션에 있어서, 공의 2단계 충돌 검사를 위한 하단부 벡터 생성의 예를 나타낸 도면.
도 4는 본 발명에 따른 공의 충돌 시뮬레이션에 있어서, 공과 지면이 충돌할 때 충돌 후 방향을 계산하기 위한 기본 축의 예를 나타낸 도면.
도 5는 본 발명에 따른 공의 충돌 시뮬레이션에 있어서, 공이 지면을 따라 굴러갈 때 충돌 검사의 예를 나타낸 도면.
도 2는 본 발명에 따른 공의 충돌 시뮬레이션에 있어서, 공과 지면의 2단계 충돌 검사의 예를 나타낸 도면.
도 3은 본 발명에 따른 공의 충돌 시뮬레이션에 있어서, 공의 2단계 충돌 검사를 위한 하단부 벡터 생성의 예를 나타낸 도면.
도 4는 본 발명에 따른 공의 충돌 시뮬레이션에 있어서, 공과 지면이 충돌할 때 충돌 후 방향을 계산하기 위한 기본 축의 예를 나타낸 도면.
도 5는 본 발명에 따른 공의 충돌 시뮬레이션에 있어서, 공이 지면을 따라 굴러갈 때 충돌 검사의 예를 나타낸 도면.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예에 따른 공의 충돌 시뮬레이션 방법에 대하여 상세히 설명하면 다음과 같다.
도 1에는 본 발명에 있어서 공의 충돌 후 이동 궤적을 시뮬레이션하기 위한 상태 다이어그램을 도시하였다.
도 1을 참조하면, 공의 상태는 4가지로 구성되는데, 초기 공은 비행(Flight)하고 있다고 가정한다(S100). 공이 비행 상태에 있는 경우에는 공이 지면 등과 충돌하는지 검사한다(S110). 만약 공의 충돌이 발생하는 경우에 공은 튀어오르는(Bouncing) 상태가 된다(S200). 이때, 충돌 검사는 2단계 검사를 이용한다.
도 2에는 2단계 충돌 검사 및 충돌 직후 중심점 위치 이동에 대한 예를 도시하였다.
도 2를 참조하면, 1단계에서는 공의 이전 위치(P 1)와 현재 위치(P 2)를 이용하여 공의 중심점 P 1와 P 2를 연결하는 선분을 생성하고 선분 이 지면 등 주변 물체와 충돌하는지 검사한다. 만약, 선분 이 면과 교차를 하면 공이 물체와 충돌한 것임을 알 수 있다.
만약 1번째 단계에서 선분과 면이 교차하지 않는다면 2번째 단계 검사를 진행한다. 2번째 단계 검사에서는, 공의 중심점 P 1와 P 2를 연결하는 선분과 지면과의 충돌은 발생하지 않았지만 실제로 공은 부피가 있기 때문에 공의 중심점(P 2)에서 표면까지의 벡터들이 주변 환경과 충돌했는지 검사한다. 여기서, 지면 등은 굴곡이 존재하며, 주변의 장애물과의 충돌이 발생할 수 있기 때문에, P 2를 시작점으로 길이가 공의 반지름(R)인 벡터들을 생성하여 충돌 검출을 한다. 여기서, 벡터는 공의 하단부가 주변 장애물과 충돌했는지 검사하기 위한 샘플링된 벡터이다. 벡터는 도 3에 도시한 바와 같이 P 2를 원점으로 보았을 때 x축, -x축, z축, -z축을 기준으로 보간(interpolation)을 통해 중간 벡터를 생성하게 된다. xz평면에서 생성된 중간 벡터와 -y축과의 벡터의 보간을 통해 벡터를 생성할 수 있다. 이때, 중간에 생성하는 벡터는 공의 크기에 따라 개수를 조절할 수 있다. 도 3에서는 중간에 1개씩(t=0.5) 생성하고 있는 예를 위, 옆, 앞 시점에서 보여주고 있다. 필요한 경우 공의 상단부도 검사가 가능하다
선분과 면이 교차하는 지점을 찾아내었다면(즉, 1번째 단계에서 충돌이 검출되었다면), 이를 이용하여 공이 지면과 충돌하는 순간에서 공의 중심점 위치를 계산한다. 이는 충돌 이후 공의 정확한 위치를 찾기 위한 중간 단계라고 할 수 있다. 충돌 직후에 공의 중심점은 충돌 지점에서 P 1 방향으로 만큼 이동된 위치가 충돌하는 순간 공의 중심점(C 1)의 위치가 된다. 2번째 단계에서 충돌이 발생한 경우에는 P 2에서 P 2 방향으로 만큼 이동시키면 충돌하는 순간 공의 중심점의 위치(C 1)가 된다. 여기서, 한가지 더 고려해야 하는 사항은 충돌 직후 중심점(C 1)에서 P 2까지 남은 거리를 계산해주어야 부드러운 충돌 궤적을 만들 수 있다는 점이다. 선분 의 길이를 L 1, 충돌한 순간 공의 중심점(C 1)에서 P 2까지 거리를 L 2라고 하였을 때 두 선분의 길이의 비(t=L 2/L1)를 이용하여 충돌 후 공의 실제 중심점(C 2)을 계산한다. 충돌 최종 중심점(C 2) 위치는 충돌 후 방향과 속도를 알아야 계산이 가능하므로 충돌 후 속도와 방향이 결정되면 다시 언급하도록 한다.
충돌 순간 공의 중심점(C 1)이 구한 후에는 충격량(j)을 계산한다. 충격량은 어떤 시간 내의 운동량의 변화이다. 강체 시뮬레이션에서는 이러한 충격량을 이용하여, 두 물체가 충돌하였을 때의 충돌 후 속도와 회전을 계산한다. 충격량은 아래 수학식 1을 통해 구할 수 있다.
[수학식 1]
상기 수학식 1에서, 는 공의 탄성 계수이고, 는 공의 충돌 전 속도이며, 는 충돌 전 각속도이고, 는 공의 중심점에서 충돌점까지 벡터이며, N은 충돌한 위치에서 지면의 노말 벡터(normal vector)이고, 는 공의 질량이며, 는 관성 모멘트이다.
그러나, 공과 같은 구형(sphere)의 물체가 면과 충돌하는 경우에는 공의 중심에서 충돌 지점까지의 벡터()와 지면의 노말 벡터(N)가 동일 선상에 존재하기 때문에 회전에 의한 변화량이 "0"이 된다. 이는, 공의 회전에 의한 힘을 궤적 변화에 적용할 수 없다는 의미가 된다.
이를 해결하기 위해, 먼저, 공이 지면의 법선 벡터 방향으로 튀어오르는 성분과 지면의 접선 벡터 방향으로 진행하는 성분으로 분리한다. 이때, 기준 축은 도 4에 도시된 바와 같다. 축은 공이 위로 튀어오르는 성분을 의미하는 단위 벡터이며, 지면의 법선 벡터 방향과 일치한다. 실험에 의하면, 공은 회전과 관계없이 공의 탄성 및 지면의 탄성에 의해 튀어오르는 높이가 결정된다. 따라서, 공이 튀어오르는 속도를 계산하기 위해서는 아래 수학식 2와 같이 회전과 관계된 부분을 제거한 충격량만 사용한다.
[수학식 2]
[수학식 3]
[수학식 4]
충돌에 의한 마찰은 지면의 운동 마찰 계수 및 충격량과 연관되어 있으며, 이는 아래 수학식 5와 같이 나타낼 수 있다.
[수학식 5]
상기 수학식 5에서 는 마찰에 의한 속도이고, 는 지면의 운동 마찰 계수이며, j는 충격량이다. 마찰에 의한 속도는 공의 운동을 방해하는 성분이므로 공의 진행 방향과 반대 방향이 된다.
회전에 의한 속도 변화는 공의 회전 방향, 회전 속도에 따라 달라진다. 날아가는 공이 지면에 충돌하는 순간에 지면과의 마찰에 의해 공에 회전이 발생하는 경우에는 충돌 궤적에 영향을 미치지 않는다. 공이 마찰에 의해 발생하는 회전량()은 아래 수학식 6과 같이 구한다.
[수학식 6]
공의 회전이 충돌 후 속도에 영상을 미치는 경우는 충돌 전 공의 회전이 앞에서 언급한 지면 마찰에 의해 발생하는 회전보다 큰 경우이며, 이는 수식으로 나타내면 아래 수학식 7과 같다. 충돌 직전 공의 회전을 라고 하였을 때 상기 수학식 6에 의해 계산된 회전()과 비교하여 방향이 다른 경우에는 두 회전 값을 더한 값을 충돌 후 회전 값으로 설정한다. 이때, 인 경우에만 속도 변화에 영향을 주도록 하며, 그렇지 않은 경우에는 "0"이 된다.
[수학식 7]
두 회전축 방향이 같은 경우에는 두 회전 값의 차이만큼만 충돌 후 회전 값으로 설정한다. 이때도 인 경우에만 속도 변화에 영향을 주도록 하며, 그렇지 않은 경우에는 "0"이 된다.
상기 수학식들에 의해 충돌 후 최종 속도는 아래 수학식 8과 같이 구할 수 있다.
[수학식 8]
충돌 후 공의 방향 및 속도가 결정되면, 상기 이동된 중심점의 최종 위치(C 2)를 구할 수 있다. 이동 방향은 충돌 후 공의 방향()이며, 이동 거리(L')는 아래 수학식 9와 같이 계산한다.
[수학식 9]
상기 수학식 9에서 dt는 공의 위치가 P 1에서 P 2까지 이동한 시간, t는 앞에서 설명한 바와 같이 선분 의 길이와 충돌 직후 공의 중심점(C 1)에서 P 2까지 거리의 비율(0≤t≤1)을 의미한다.
상술한 바와 같은 방법을 사용하면 공의 회전에 의한 사실적이고 다양한 튀어오름 효과를 얻을 수 있다.(예 : 골프공의 백스핀에 의해 공이 뒤고 튀어오르는 현상)
공이 몇 번 튀어오른 후에는 굴러가거나 멈추게 된다. 튀어오름 상태에서 구름상태로 전이되는 조건은 충돌 후 공이 튀어오르는 높이(축 방향)로 정의하였다(S210). 상술한 바와 같이 충돌 후 공의 속도를 이용하여 공의 최고 높이(h)를 미리 계산할 수 있다. 아래 수학식 10은 공이 튀어오를 때 높이를 구하는 식이며, △t를 반복하여 최고 높이를 구할 수 있으며, 축 방향의 높이는 지면 노말 벡터와 내적을 통해 구할 수 있다.
[수학식 10]
공이 튀어오르는 높이(h')가 미리 정의된 높이보다 낮으면 공은 구름상태로 전이된다(S300).
공이 굴러갈 때 지면과의 충돌이 중요한 부분이다. 공이 지면을 파고들지 않으면서 지면의 곡면을 따라 자연스럽게 이동하도록 하기 위해서는 상술할 2단계 충돌 검사 중에 2번째 단계를 이용한다. 이는 지면에 굴곡이 있는 경우에 오르막 혹은 내리막에서도 충돌 지점을 정확하게 찾기 위함이다. 다소 차이점이 있다면, 아래 수학식 11에서와 같이 공이 이동하는 방향을 지면 법선 벡터의 반대 방향()으로 향하게 함으로써 공의 하단부가 지면과 항상 충돌이 발생하도록 유도한다는 점이다. 아래 수학식 11에서, 는 값이 아주 작은 상수이다. 이와 같이 중심점을 이동하면, 지면과의 충돌을 항상 검출할 수 있으며, 오르막이나 내리막과 같이 지면의 기울기가 변하는 경우에 대해서도 검출이 가능하다.
[수학식 11]
구름 마찰력은 공이 이동하는 방향과 반대로 발생하며, 지면의 경사에 의해 굴러가는 속력이 달라질 수 있다. 따라서, 공이 굴러갈 때의 속력은 구름 마찰력과 지면의 기울기를 고려하여 아래 수학식 12와 같이 구할 수 있다. 아래 수학식 12에서 는 지면의 기울기 각도, 은 구름 마찰계수이다.
[수학식 12]
충돌 검사에 의해 공이 지면과 충돌 검출이 되지 않았다면, 이는 공이 내리막 경사에 접어들었다는 의미이다. 이 경우에는, 아래쪽(-y축 방향)으로 일정 거리의 레이(ray)를 쏘아 지면과 충돌하는지 검사를 하게 된다. 만약 일정 거리 내에 지면과 충돌 지점을 찾지 못하는 경우에는(S310) 급경사에 이한 낙하를 의미하므로 다시 튀어오름(Bouncing) 상태로 전이시킨다(S200).
충돌 검사 후에, 상술한 충돌 위치 계산을 통해 공의 중심점을 조절하면 공은 항상 지면 위에서 구르는 것처럼 보인다. 굴러가는 공은 이동 거리가 보다 작아지면서 진행 방향 속도가 보다 작아지는 경우(S320) 멈춤 상태로 전이하게 되며 시뮬레이션 과정이 종료된다(S400).
본 발명에서는 회전하며 이동한 공의 충돌 후 튀어오르는 힘을 시뮬레이션하기 위해 공과 지면의 탄성 계수와 공의 회전량을 고려하였으며, 이후 굴러가는 동작으로 전이하고 멈추는 과정까지 표현함으로써 사실적인 공의 시뮬레이션이 가능하다. 본 발명에서 제시하는 방법은 공을 이용한 모든 스포츠 게임에 적용하는 것이 가능하다.
Claims (7)
- 컴퓨터 장치에 의해 수행되는 회전하는 공의 충돌 시뮬레이션 방법에 있어서,
프로세서가 상기 공의 이전 위치에서의 제 1중심점과 현재 위치에서의 제 2중심점을 연결한 선분이 지면과 충돌하는지 1차 검사하는 단계; 및
상기 프로세서가, 상기 1차 검사하는 단계에서 충돌이 있는 경우, 상기 공의 충돌 지점에서 상기 제 1 중심점 방향으로 미리 정한 거리만큼 이동한 위치를 제 3 중심점으로 계산하는 단계;
상기 프로세서가 공의 운동량의 변화인 충격량을 계산하고, 상기 충격량을 이용하여 상기 충돌 후 공의 속도 및 회전을 계산하는 단계;
상기 프로세서가 상기 제 3 중심점, 상기 공의 충돌 후 상기 공의 속도 및 상기 회전을 이용하여 충돌직 후의 중심점인 제 4 중심점을 계산하는 단계; 및
상기 프로세서가 상기 공이 상기 제 1 중심점에서 상기 제 4 중심점으로 이동하는 모습을 표시하는 단계;를 포함하고,
상기 제 4 중심점을 계산하는 단계는,
상기 공의 제 1 중심점에서 상기 제 2 중심점까지의 거리와, 충돌 시 상기 제 3 중심점에서 상기 제 2 중심점까지의 거리의 비를 적용하여 충돌 후 공의 중심점인 상기 제 4 중심점을 계산하는 것을 특징으로 하는 회전하는 공의 충돌 시뮬레이션 방법. - 제 1항에 있어서,
상기 프로세서가 상기 1차 검사하는 단계에서 충돌이 없는 경우 상기 공의 하단부 벡터들을 생성하여 상기 공의 하단부 벡터들이 상기 지면과 충돌하는지 2차 검사하는 단계; 및
상기 2차 검사하는 단계에서 충돌이 있는 경우, 상기 프로세서가 상기 제 2 중심점에서 상기 제 1 중심점 방향으로 h/cos만큼 이동시킨 위치를 제 3 중심점으로 계산하는 단계;
를 더 포함하는 것을 특징으로 하는 회전하는 공의 충돌 시뮬레이션 방법. - 삭제
- 컴퓨터 장치에 의해 수행되는 회전하는 공의 충돌 시뮬레이션 방법에 있어서,
프로세서가 공의 비행 상태에서 튐 상태로의 전이를 공의 충돌 여부로 결정하는 단계;
상기 프로세서가 공의 튐 상태에서 상기 공이 튀어오르는 높이가 미리 정한 높이보다 낮으면 공이 구름 상태로 전이된 것으로 결정하는 단계
상기 프로세서가 공의 구름 상태에서 멈춤상태로의 전이를 공의 이동 속도 및 거리로 결정하는 단계; 및
상기 프로세서가 공의 구름 상태에서 공의 튐 상태로의 전이를 공의 지면과의 거리로 결정하는 단계를 포함하고,
상기 튐 상태로의 전이를 공의 충돌 여부로 결정하는 단계는,
상기 프로세서가 상기 공의 이전 위치에서의 제 1중심점과 현재 위치에서의 제 2중심점을 연결한 선분이 지면과 충돌하는지 1차 검사하는 단계; 및
상기 프로세서가, 상기 1차 검사하는 단계에서 충돌이 있는 경우, 상기 공의 충돌 지점에서 상기 제 1 중심점 방향으로 미리 정한 거리만큼 이동한 위치를 제 3 중심점으로 계산하는 단계;
상기 프로세서가 공의 운동량의 변화인 충격량을 계산하고, 상기 충격량을 이용하여 상기 충돌 후 공의 속도 및 회전을 계산하는 단계; 및
상기 프로세서가 상기 제 3 중심점, 상기 공의 충돌 후 상기 공의 속도 및 상기 회전을 이용하여 충돌직 후의 중심점인 제 4 중심점을 계산하는 단계;
를 포함하는 것을 특징으로 하는 회전하는 공의 충돌 시뮬레이션 방법. - 삭제
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110135907A KR101694296B1 (ko) | 2011-12-15 | 2011-12-15 | 회전하는 공의 충돌 시뮬레이션 방법 |
US13/563,661 US20130158966A1 (en) | 2011-12-15 | 2012-07-31 | Method of collision simulation for spinning ball |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110135907A KR101694296B1 (ko) | 2011-12-15 | 2011-12-15 | 회전하는 공의 충돌 시뮬레이션 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130068613A KR20130068613A (ko) | 2013-06-26 |
KR101694296B1 true KR101694296B1 (ko) | 2017-01-24 |
Family
ID=48611048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110135907A KR101694296B1 (ko) | 2011-12-15 | 2011-12-15 | 회전하는 공의 충돌 시뮬레이션 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20130158966A1 (ko) |
KR (1) | KR101694296B1 (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8085188B2 (en) | 2004-07-02 | 2011-12-27 | Trackman A/S | Method and apparatus for determining a deviation between an actual direction of a launched projectile and a predetermined direction |
KR102408358B1 (ko) | 2009-01-29 | 2022-06-14 | 트랙맨 에이/에스 | 레이더 및 촬상 요소를 포함하는 조립체 |
US10186041B2 (en) | 2015-04-09 | 2019-01-22 | Electronics And Telecommunications Research Institute | Apparatus and method for analyzing golf motion |
US10102316B2 (en) * | 2015-12-15 | 2018-10-16 | Dassault Systemes Simulia Corp. | Virtual reality authoring method |
US10628537B2 (en) | 2016-04-12 | 2020-04-21 | Dassault Systemes Simulia Corp. | Simulation augmented reality system for emergent behavior |
JP6483056B2 (ja) * | 2016-06-10 | 2019-03-13 | 任天堂株式会社 | ゲーム装置、ゲーム制御方法およびゲームプログラム |
US10444339B2 (en) * | 2016-10-31 | 2019-10-15 | Trackman A/S | Skid and roll tracking system |
EP3619922B1 (en) * | 2017-05-04 | 2022-06-29 | Dolby International AB | Rendering audio objects having apparent size |
EP3435331A1 (en) * | 2017-07-25 | 2019-01-30 | Elio Lorenzoni | Assembly and method for managing a golf game |
US10885242B2 (en) * | 2017-08-31 | 2021-01-05 | Microsoft Technology Licensing, Llc | Collision detection with advanced position |
US11096006B1 (en) * | 2019-11-04 | 2021-08-17 | Facebook Technologies, Llc | Dynamic speech directivity reproduction |
KR102249738B1 (ko) * | 2020-09-29 | 2021-05-10 | 주식회사 골프존 | 가상 골프 시뮬레이션 장치 및 가상 골프 시뮬레이션 방법 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080293488A1 (en) * | 2007-05-21 | 2008-11-27 | World Golf Tour, Inc. | Electronic game utilizing photographs |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100634534B1 (ko) * | 2005-01-22 | 2006-10-13 | 삼성전자주식회사 | 3차원 그래픽스 환경 상에서의 충돌 처리 방법 및 장치 |
KR100984048B1 (ko) * | 2008-10-14 | 2010-09-30 | 한국전자통신연구원 | 파티클 유체 시뮬레이션에서의 강성체 상호작용 처리 방법 |
-
2011
- 2011-12-15 KR KR1020110135907A patent/KR101694296B1/ko active IP Right Grant
-
2012
- 2012-07-31 US US13/563,661 patent/US20130158966A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080293488A1 (en) * | 2007-05-21 | 2008-11-27 | World Golf Tour, Inc. | Electronic game utilizing photographs |
Non-Patent Citations (1)
Title |
---|
A. R. Penner. ‘The Run of a Golf Ball.’ Canadian Journal of Physics, Vol. 80, 2002, pp. 931-940.* |
Also Published As
Publication number | Publication date |
---|---|
US20130158966A1 (en) | 2013-06-20 |
KR20130068613A (ko) | 2013-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101694296B1 (ko) | 회전하는 공의 충돌 시뮬레이션 방법 | |
CN103143158B (zh) | 一种提高斯诺克台球击中率的方法 | |
Bjelica et al. | Repulsion of the futsal ball depending on the pressure in it | |
Bjelica et al. | Dependence of female ball in handball repulsion on the pressure within this sport | |
CN112423851B (zh) | 用于优化运动球发射的系统和方法 | |
KR20200085803A (ko) | 골프 공 추적 시스템 | |
Bjelica et al. | Dependence of basketball repulsion on the pressure within this sport | |
US10159885B2 (en) | Swing analysis system using angular rate and linear acceleration sensors | |
Bjelica et al. | Pressure dependence of handball repulsion within this sport | |
US10137347B2 (en) | Golf clubs and golf club heads having a sensor | |
KR20190031111A (ko) | 가상 테니스 시뮬레이션 시스템, 이에 이용되는 센싱장치 및 센싱방법 | |
Bjelica et al. | Dependence of Football Repulsion on the Pressure Within This Sport | |
Hong et al. | Unsteady aerodynamic force on a knuckleball in soccer | |
JP2017525521A (ja) | マルチセンサートラッキングシステムおよび方法 | |
CN105999677B (zh) | 一种可联网的便携式高尔夫模拟系统及模拟方法 | |
CN108579080A (zh) | 混合现实环境下实体球拍与虚拟球的交互实现方法及系统 | |
Bjelica et al. | Volleyball elastic properties depending on ball pressure | |
Cross | Calculations of groundstroke trajectories in tennis | |
Drane et al. | The behavior of golf ball putting on artificial turf | |
TWI764768B (zh) | 桌球軌跡預測方法及其系統 | |
Deprá et al. | Fluid mechanics analysis in volleyball services | |
CN114611175A (zh) | 一种台球运动的模拟方法、系统及电子设备 | |
Hong et al. | Aerodynamics of Knuckling Effect Shot Using Kick-robot. | |
KR100882597B1 (ko) | 체감형 게이트볼 게임시스템 | |
Okubo et al. | Estimation of rebound position in basketball |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |