물리 엔진
Physics engine물리 엔진은 컴퓨터 그래픽, 비디오 게임 및 필름(CGI) 분야에서 사용되는 강체 역학(충돌 검출 포함), 연체 역학 및 유체 역학 등의 특정 물리적 시스템을 대략적으로 시뮬레이션하는 컴퓨터 소프트웨어입니다.주로 비디오 게임(일반적으로 미들웨어)에서 사용되며, 이 경우 시뮬레이션은 실시간으로 이루어집니다.이 용어는 고성능 과학 시뮬레이션과 같은 물리적 현상을 시뮬레이션하기 위한 소프트웨어 시스템을 설명하는 데 더 일반적으로 사용됩니다.
묘사
일반적으로 물리 엔진에는 실시간과 고정밀의 두 가지 클래스가 있습니다.고정밀 물리학 엔진은 매우 정밀한 물리학을 계산하기 위해 더 많은 처리 능력을 필요로 하며 보통 과학자나 컴퓨터 애니메이션 영화에 사용됩니다.비디오 게임 및 기타 대화형 컴퓨팅에 사용되는 실시간 물리 엔진은 게임이 적절한 속도로 반응할 수 있도록 간단한 계산과 낮은 정확도로 계산됩니다.
과학 엔진
![]() |
최초의 범용 컴퓨터 중 하나인 ENIAC는 매우 단순한 유형의 물리 엔진으로 사용되었다.다양한 각도와 화약으로 발사했을 때 미군이 어디에 다양한 질량의 포탄이 떨어질지 추정할 수 있도록 탄도표를 설계하는 데 사용되었으며, 바람에 의한 표류도 설명했습니다.그 결과는 한 번만 계산되었고, 포병 지휘관들에게 배포된 인쇄된 표로 정리되었다.
물리 엔진은 1980년대부터 슈퍼컴퓨터에 일반적으로 사용되어 왔으며, 여기서 입자는 순환을 보여주기 위해 결합된 힘 벡터를 할당받습니다.속도와 고정밀의 요구로 인해 벡터 프로세서라고 불리는 특수 컴퓨터 프로세서가 개발되어 계산이 빨라졌습니다.이 기법은 기상예보의 기상패턴 모델화, 레이스카를 포함한 공수선 또는 자동차 설계를 위한 풍동데이터, 히트싱크 개선을 위한 컴퓨터 프로세서의 열냉각 등에 사용할 수 있다.계산 부하가 높은 컴퓨팅 프로세스와 마찬가지로 시뮬레이션의 정확도는 시뮬레이션의 분해능 및 계산 정밀도와 관련이 있습니다. 시뮬레이션에서 모델링되지 않은 작은 변동은 예측 결과를 크게 바꿀 수 있습니다.
타이어 제조업체는 물리 시뮬레이션을 통해 다양한 유연성과 다양한 중량 하중의 새로운 타이어 소재를 사용하여 습기와 건조한 조건에서 새로운 타이어 트레드 유형이 어떻게 작동하는지 조사합니다.
게임 엔진
대부분의 컴퓨터 게임에서는 프로세서의 속도와 게임 플레이가 시뮬레이션의 정확성보다 더 중요합니다.따라서 실시간으로 결과를 내지만 일반적으로 약간의 근사치를 사용하여 실제 물리학을 복제하는 물리 엔진 설계가 이루어집니다.대부분의 경우 시뮬레이션은 실제 시뮬레이션이 아닌 "상시적으로 정확한" 근사치를 제공하도록 설계되어 있습니다.그러나 소스와 같은 일부 게임 엔진은 퍼즐이나 전투 상황에서 물리학을 사용합니다.이것은 예를 들어 물체의 운동량이 장애물을 넘어뜨리거나 가라앉는 물체를 들어올릴 수 있도록 더 정확한 물리학을 필요로 한다.
과거의 물리 기반 캐릭터 애니메이션은 속도가 빠르고 계산하기 쉽기 때문에 강체 역학만을 사용했지만, 현대의 게임과 영화에서는 부드러운 신체 물리학을 사용하기 시작했습니다.부드러운 신체 물리학은 입자 효과, 액체 및 천에도 사용됩니다.물 및 기타 액체뿐만 아니라 공기를 통한 화재 및 폭발의 흐름을 시뮬레이션하기 위해 제한된 유체 역학 시뮬레이션이 제공되기도 한다.
충돌 검출
게임 내 사물은 플레이어, 환경 및 서로 상호작용합니다.일반적으로 게임에서 대부분의 3D 객체는 두 개의 개별 메시 또는 모양으로 표현됩니다.그물 중 하나는 게임 내 플레이어가 볼 수 있는 매우 복잡하고 세부적인 형태입니다. 예를 들어, 우아한 곡선과 루프 형태의 손잡이가 있는 꽃병입니다.속도를 위해 두 번째 단순화된 눈에 띄지 않는 메쉬를 사용하여 물리 엔진에 물체를 표현함으로써 물리 엔진은 예시 꽃병을 단순한 실린더로 취급합니다.따라서 물리 엔진 모델은 실린더에 기반하고 핸들을 인식하지 못하기 때문에 막대기를 꽂거나 꽃병의 손잡이 구멍을 통해 발사체를 발사하는 것은 불가능합니다.물리 처리에 사용되는 단순화된 메쉬를 흔히 충돌 형상이라고 합니다.이것은 경계 상자, 구체 또는 볼록 선체일 수 있습니다.충돌 감지를 위한 최종 형상으로 경계 상자 또는 경계 구를 사용하는 엔진은 매우 단순한 것으로 간주됩니다.일반적으로 바운딩 박스는 충돌검출의 좁은 단계에서 메시 충돌검출에 비용이 많이 드는 메시가 이루어지기 전에 가능한 충돌의 수를 좁히기 위해 사용된다.
이산 충돌 검출의 정밀도의 또 다른 측면은 프레임레이트, 즉 물리학을 계산할 때 초당 모멘트의 수를 포함합니다.각 프레임은 다른 모든 프레임과 별도로 취급되며 프레임 간의 공간은 계산되지 않습니다.프레임 레이트가 낮고 빠르게 움직이는 작은 물체는 물체를 공간 내에서 원활하게 이동시키지 않고 각 프레임이 계산될 때 공간 내의 한 지점에서 다음 지점으로 순간이동하는 것처럼 보이는 상황을 일으킨다.충분히 빠른 속도로 이동하는 발사체는 목표물이 빠르게 이동하는 발사체의 계산된 프레임 사이의 간격에 맞도록 충분히 작을 경우 목표물을 놓치게 됩니다.Second Life가 발사체를 프레임의 간격보다 긴 보이지 않는 후행 꼬리가 있는 화살표로 표현하여 계산된 프레임 사이에 들어갈 수 있는 모든 개체와 충돌하는 것과 같은 다양한 기술을 사용하여 이 결함을 해결합니다.반면 Bullet이나 Havok과 같은 지속적인 충돌 감지에서는 이 문제가 발생하지 않습니다.
연질체 역학
경계 상자 기반 강체 물리학 시스템을 사용하는 대안으로 유한 요소 기반 시스템을 사용하는 것이 있습니다.이러한 시스템에서는 3D 객체의 3차원 볼륨 테셀레이션이 생성된다.테셀레이션은 인성, 가소성 및 볼륨 보존과 같은 물체의 물리적 특성 측면을 나타내는 다수의 유한 요소를 생성합니다.일단 구성되면, 유한 요소는 3D 객체 내의 응력을 모델링하기 위해 솔버에 의해 사용됩니다.응력은 높은 현실성과 독특성으로 파괴, 변형 및 기타 물리적 효과를 유도하는 데 사용될 수 있습니다.모델링된 요소의 수가 증가함에 따라 물리적 거동을 모델링하는 엔진의 능력도 증가합니다.3D 객체의 시각적 표현은 CPU 또는 GPU에서 실행되는 변형 셰이더를 사용하여 유한 요소 시스템에 의해 변경됩니다. 유한 요소 기반 시스템은 성능 오버헤드와 3D 아트 객체에서 유한 요소 표현을 만드는 도구가 부족하기 때문에 게임에서 사용하기에는 실용적이지 않았습니다.부피 테셀레이션을 신속하게 생성하는 고성능 프로세서와 도구를 통해 스타워즈부터 게임에 실시간 유한 요소 시스템이 사용되기 시작했습니다. Digital Molecular Matter를 사용하여 목재, 강철, 육질 및 식물의 변형 및 파괴 효과를 사용한 Force Unricled. 박사 [1]논문의 일부로 James O'Brien 박사가 개발한 알고리즘을 사용합니다.
브라운 운동
현실에서 물리학은 항상 활동적이다.힘이 서로 밀치면서 우주의 모든 입자에 브라운 운동 지터가 계속 발생한다.게임물리학 엔진에서는 이러한 일정한 액티브 정밀도는 CPU의 한정된 파워를 불필요하게 낭비하게 되어 프레임레이트 저하 등의 문제를 일으킬 수 있습니다.따라서 게임은 특정 시간 내에 특정 거리를 이동하지 않은 물체에 대한 물리 계산을 비활성화함으로써 물체를 "절전" 상태로 만들 수 있습니다.예를 들어 3D 가상세계 Second Life에서 물체가 바닥에 놓여 있고 물체가 약 2초 동안 최소 거리를 벗어나지 않으면 해당 물체에 대한 물리 계산이 비활성화되어 제자리에 고정됩니다.개체는 다른 활성 물리적 [2]개체와 충돌이 발생한 후 개체에 대한 물리적 처리가 다시 활성화될 때까지 고정된 상태로 유지됩니다.
패러다임
비디오 게임용 물리 엔진은 일반적으로 충돌 감지/충돌 응답 시스템과 시뮬레이션된 물체에 영향을 미치는 힘을 해결하는 역할을 하는 동적 시뮬레이션 구성 요소인 두 가지 핵심 구성 요소를 가지고 있습니다.최신 물리 엔진에는 유체 시뮬레이션, 애니메이션 제어 시스템 및 자산 통합 도구가 포함될 수도 있습니다.고체의 [3]물리적 시뮬레이션에는 세 가지 주요 패러다임이 있습니다.
- 패널티 방법. 여기서 상호작용은 일반적으로 질량 스프링 시스템으로 모델링됩니다.이 유형의 엔진은 변형 가능한 부드러운 차체 물리학에서 인기가 있습니다.
- 물리 법칙을 추정하는 구속 방정식이 해결되는 구속 기반 방법.
- 임펄스 기반 방법. 임펄스를 객체 상호작용에 적용합니다.
마지막으로, 상기 패러다임의 측면을 결합하는 하이브리드 방법이 가능하다.
제한 사항
물리 엔진 리얼리즘의 주요 한계는 알고리즘의 느린 수렴으로 인한 제약 분해능과 충돌 결과의 근사 결과입니다.너무 낮은 주파수로 계산한 충돌검출은 물체끼리 통과시켜 비정상적인 보정력으로 격퇴될 수 있다.반면에, 반력의 근사 결과는 전형적인 투영된 가우스 자이델 솔버의 느린 수렴으로 인해 비정상적인 바운스가 발생한다.자유로이 움직이는 복합물리 물체는 이 문제를 나타낼 수 있지만, 특히 물리적 베어링 표면이 능동적으로 움직이는 장력과 바퀴 달린 물체는 체인 링크에 영향을 미칠 가능성이 높습니다.정밀도가 높으면 위치 오류나 강제 오류는 줄어들지만 계산에 필요한 CPU 전력은 증가합니다.
물리처리장치(PPU)
물리 처리 장치(PPU)는 특히 비디오 게임의 물리 엔진에서 물리 계산을 처리하기 위해 설계된 전용 마이크로프로세서입니다.PPU와 관련된 계산의 예로는 강체 역학, 연체 역학, 충돌 감지, 유체 역학, 헤어 및 의류 시뮬레이션, 유한 요소 분석 및 물체의 파단 등이 포함될 수 있다.GPU가 메인 CPU를 대신해 그래픽 처리를 실시하는 것과 같이, 전용 프로세서는 컴퓨터의 CPU로부터 시간이 걸리는 태스크를 오프로드합니다.이 용어는 Ageia의 마케팅이 그들의 PhysX 칩을 소비자들에게 설명하기 위해 만든 것입니다.CPU-GPU 스펙트럼의 다른 몇몇 기술들은 이와 유사한 기능을 가지고 있지만, Ageia의 솔루션은 PPU로만 시스템 내에서 유일하게 설계, 마케팅, 지원 및 배치되었다.
GPGPU(그래픽 처리 장치)에서의 범용 컴퓨팅
물리처리를 위한 하드웨어 액셀러레이션은 일반적으로 그래픽스 프로세싱 유닛(GPGPU)의 범용 컴퓨팅으로 알려진 개념인 보다 일반적인 계산을 지원하는 그래픽스 프로세싱 유닛에 의해 제공됩니다.AMD 및 NVIDIA는 최신 그래픽 카드로 견고한 차체 다이내믹스 계산을 지원합니다.
NVIDIA의 GeForce 8 Series는 Quantum Effects Technology라는 GPU 기반의 Newtonian 물리 가속 기술을 지원합니다.NVIDIA는 [4]GPU에 낮은 API와 높은 수준의 API를 모두 제공하는 CUDA(Compute Unified Device Architecture) 테크놀로지를 위한 SDK 툴킷을 제공합니다.또한 AMD는 GPU에 Close to Metal(CTM)이라고 하는 유사한 SDK를 제공하고 있으며, 이 SDK는 얇은 하드웨어 인터페이스를 제공합니다.
PhysX는 사용 가능한 경우 GPGPU 기반 하드웨어 가속을 사용할 수 있는 물리 엔진의 예입니다.
엔진
실시간 물리 엔진
|
|
고정밀 물리 엔진
- VisSim - 선형 및 비선형 다이내믹스를 위한 시각적 시뮬레이션 엔진
「 」를 참조해 주세요.
- 게임 물리학
- 래그돌 물리학
- 프로시저 애니메이션
- 강체 역학
- 부드러운 차체 다이내믹스
- 물리 처리 장치
- 셀 마이크로프로세서
- 선형상보성 문제 임펄스/제약물리 엔진은 이러한 문제를 해결하기 위한 해결사를 필요로 한다.
- 유한 요소 분석
레퍼런스
- ^ "Graphical Modeling and Animation of Brittle Fracture". Graphics.eecs.berkeley.edu. Retrieved 2012-09-01.
- ^ "Doc:Manual/Game Engine/Logic/Object type/Rigid body - BlenderWiki". Wiki.blender.org. 2009-11-20. Retrieved 2010-08-16.
- ^ Erleben, Kenny; Sporring, Jon; Henriksen, Knud; Dohlmann, Henrik (2005). Physics-Based Animation.
- ^ "NVIDIA 8800 features page - Quantum Effects Technology". Nvidia.com. Retrieved 2010-08-16.
추가 정보
외부 링크
- "Physics Engines List". Database. Digital Rune. Mar 30, 2015 [2010]. Archived from the original on Mar 9, 2016.