물리 엔진
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
물리 엔진은 물체의 움직임과 상호 작용을 시뮬레이션하는 소프트웨어로, 초기에는 탄도 계산과 같은 과학 기술 계산에 사용되었다. 1980년대부터 슈퍼컴퓨터에서 계산 유체 역학 모델링에 활용되었으며, 현재는 게임, 영화, 시뮬레이션 등 다양한 분야에서 사용된다. 실시간 물리 엔진은 게임 플레이를 위해 실제 물리 현상을 단순화하며, 고정밀 물리 엔진은 과학 연구 및 애니메이션 제작에 사용된다. 물리 엔진은 충돌 감지, 충돌 응답, 동역학 시뮬레이션 등의 구성 요소를 가지며, PPU, GPGPU를 통해 성능을 향상시키기도 한다.
더 읽어볼만한 페이지
- 컴퓨터 물리 엔진 - CUDA
CUDA는 엔비디아에서 개발한 GPU 기반 병렬 컴퓨팅 플랫폼으로, 연산 집약적인 작업을 가속화하며 다양한 프로그래밍 언어를 지원하고 3D 그래픽, 동영상 변환 등 여러 분야에 활용된다. - 컴퓨터 물리 엔진 - 언리얼 엔진
언리얼 엔진은 에픽게임즈에서 개발한 게임 엔진으로, 게임 개발을 넘어 영화, 건축 등 다양한 분야에서 활용되며, C++ 및 블루프린트 비주얼 스크립팅 시스템을 통해 게임 로직을 구현하고, 최근에는 Verse라는 새로운 스크립트 언어가 도입되었다. - 비디오 게임 개발 - 게임 서버
게임 서버는 온라인 게임에서 게임 로직 실행과 플레이어 간 상호작용을 관리하는 핵심 시스템으로, 운영 주체와 방식에 따라 게임 회사 직접 운영 방식과 사용자 직접 운영 방식으로 나뉘며, 성능, 안정성, 비용 면에서 장단점을 가진 다양한 형태로 구현될 수 있다. - 비디오 게임 개발 - 비디오 게임 봇
비디오 게임 봇은 사용자의 조작을 대신하거나 플레이어 수를 보충하기 위해 사용되는 프로그램이며, 게임 밸런스를 해치고 부정적인 측면이 존재하여 한국 온라인 게임에서 심각한 문제가 되기도 한다. - 컴퓨터 그래픽스 - 딥페이크
딥페이크는 인공지능 기술을 활용하여 영상이나 이미지를 조작, 합성하여 실제와 구별하기 어렵게 만드는 기술이며, 가짜 뉴스, 명예훼손, 신원 위장 등 다양한 문제점을 야기한다. - 컴퓨터 그래픽스 - 엔비디아
엔비디아는 1993년 설립된 미국의 반도체 회사로, GeForce 256을 통해 GPU라는 용어를 대중화하고 딥러닝 기술 발전에 힘입어 인공지능 및 자율주행 분야에서 시장을 선도하며 성장하여 2024년 6월에는 시가총액 세계 1위 기업에 올랐다.
| 물리 엔진 - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 개요 | |
![]() | |
| 종류 | 소프트웨어 |
| 분야 | 물리 시뮬레이션 |
| 설명 | 물리 시스템의 근사적 시뮬레이션을 위한 소프트웨어 |
2. 역사
2. 1. 초기: 과학 기술 계산
최초의 범용 컴퓨터 중 하나인 ENIAC은 매우 단순한 형태의 물리 엔진으로 사용되었다. ENIAC은 다양한 질량의 포탄을 다양한 각도와 화약량으로 발사했을 때, 바람에 의한 편류까지 고려하여 포탄이 어디에 떨어질지 예측하는 탄도 계산표를 설계하는 데 사용되었다. 결과는 단 한 번만 계산되었으며, 포병 지휘관에게 배포되는 인쇄된 표로 정리되었다.물리 엔진은 1980년대부터 슈퍼컴퓨터에서 계산 유체 역학 모델링을 수행하기 위해 일반적으로 사용되었으며, 여기서 입자는 순환을 나타내기 위해 결합된 힘 벡터를 할당받는다. 속도와 높은 정밀도 요구 사항으로 인해 계산을 가속화하기 위해 벡터 프로세서라고 하는 특수 컴퓨터 프로세서가 개발되었다. 이러한 기술은 기상 예측의 기상 패턴, 항공기, 수중선 또는 경주용 자동차를 포함한 자동차 설계를 위한 풍동 데이터, 방열판 개선을 위한 컴퓨터 프로세서의 열 냉각을 모델링하는 데 사용할 수 있다. 컴퓨팅의 많은 계산 관련 프로세스와 마찬가지로 시뮬레이션의 정확도는 시뮬레이션의 해상도와 계산의 정밀도와 관련이 있다. 시뮬레이션에서 모델링되지 않은 작은 변동은 예측된 결과를 크게 변경할 수 있다.
타이어 제조업체는 새로운 타이어 트레드 유형이 습하고 건조한 조건에서 어떻게 작동하는지, 다양한 유연성의 새로운 타이어 재료를 사용하고, 다양한 수준의 무게 하중에서 어떻게 작동하는지 조사하기 위해 물리 시뮬레이션을 사용한다.
2. 2. 발전: 엔터테인먼트 분야로의 확장
대부분의 컴퓨터 게임에서 프로세서 속도와 게임 플레이가 시뮬레이션의 정확도보다 더 중요하여, 실제 세계의 물리 현상을 단순화하거나 근사치로 재현하는 물리 엔진 설계가 이루어졌다.[2] 하지만 소스와 같은 일부 게임 엔진은 퍼즐이나 전투 상황에서 물체의 운동량 등을 더 정확하게 계산하여 활용한다.[2]과거에는 물리 기반 캐릭터 애니메이션에서 강체 동역학만 사용했지만, 현대 게임과 영화에서는 연성체 물리를 사용하기 시작했다.[2] 연성체 물리는 입자 효과, 액체 및 천에도 사용된다.[2] 제한적인 형태의 유체 역학 시뮬레이션은 물과 기타 액체, 그리고 공기를 통한 불과 폭발의 흐름을 시뮬레이션하기 위해 때때로 제공된다.[2]
스타 워즈: 포스 언리쉬드 (2008)에서는 Digital Molecular Matter 기술을 사용하여 나무, 강철 등의 파괴 및 변형 효과를 구현했다.[2]
2. 3. 대한민국에서의 발전
3. 종류
3. 1. 실시간 물리 엔진
대부분의 컴퓨터 게임에서는 프로세서 속도와 게임 플레이가 시뮬레이션의 정확도보다 더 중요하다. 이 때문에 실제 세계의 물리 현상을 단순화하고 근사치를 사용하여 물리 엔진을 설계한다. 소스 (게임 엔진), 하복, PhysX 등은 퍼즐이나 전투 상황에서 물리 현상을 활용한다.게임 내 객체는 플레이어, 환경 및 서로 상호 작용하는데, 일반적으로 게임 내 대부분의 3D 객체는 두 개의 개별 메시 또는 모양으로 표현된다. 이 중 하나는 플레이어에게 보이는 매우 복잡하고 상세한 모양이고, 다른 하나는 속도 향상을 위해 사용되는 단순화된 보이지 않는 메시로, 물리 엔진에서 객체를 단순한 형태로 취급할 수 있도록 한다. 물리 처리에 사용되는 단순화된 메시는 충돌 감지를 위한 경계 상자, 구 또는 볼록 껍질일 수 있다.
프레임 속도가 낮거나 객체가 빠르게 움직이는 경우, 객체가 공간을 부드럽게 이동하지 않고 순간이동하는 것처럼 보이는 문제가 발생할 수 있다. 이를 해결하기 위해 ''Second Life''에서는 발사체에 보이지 않는 꼬리를 추가하는 방법을 사용하기도 한다. Bullet, Havok과 같은 연속적인 충돌 감지 방식을 사용하는 엔진도 있다.
3. 2. 고정밀 물리 엔진
고정밀 물리 엔진은 과학자와 컴퓨터 애니메이션 영화 제작자가 사용하며, 매우 정밀한 물리를 계산하기 위해 더 많은 처리 능력을 필요로 한다. VisSim은 선형 및 비선형 역학을 위한 시각 시뮬레이션 엔진이다.4. 구성 요소 및 기술
4. 1. [[충돌 감지]] 및 [[충돌 응답]]
게임 내 객체는 플레이어, 환경 및 서로 상호 작용한다. 일반적으로 게임 내 대부분의 3D 객체는 두 개의 개별 메시 또는 모양으로 표현된다. 이 중 하나는 게임에서 플레이어에게 보이는 매우 복잡하고 상세한 모양이며, 다른 하나는 단순화된 보이지 않는 메시로, 물리 엔진에서 객체를 표현하는 데 사용된다. 예를 들어, 물리 엔진은 꽃병을 단순한 실린더로 취급할 수 있다. 따라서 물리 엔진 모델이 실린더를 기반으로 하고 핸들을 인식하지 못하기 때문에 막대나 발사체를 꽃병의 핸들 구멍에 삽입하는 것은 불가능하다. 물리 처리에 사용되는 단순화된 메시는 종종 충돌 형상이라고 하며, 경계 상자, 구 또는 볼록 껍질일 수 있다.충돌 감지를 위한 최종 모양으로 경계 상자 또는 경계 구를 사용하는 엔진은 매우 단순한 것으로 간주된다. 일반적으로 경계 상자는 비용이 많이 드는 메시 대 메시 충돌 감지가 충돌 감지의 좁은 단계에서 수행되기 전에 가능한 충돌 수를 좁히기 위해 광범위한 단계 충돌 감지에 사용된다.
불연속적인 충돌 감지에서 정밀도의 또 다른 측면은 프레임 속도, 즉 물리 계산이 초당 이루어지는 시간의 순간 수와 관련이 있다. 각 프레임은 다른 모든 프레임과 분리되어 처리되며 프레임 간의 공간은 계산되지 않는다. 낮은 프레임 속도와 작고 빠르게 움직이는 객체는 객체가 공간을 부드럽게 이동하지 않고 공간의 한 지점에서 다른 지점으로 순간이동하는 것처럼 보이는 상황을 유발한다. 이러한 결함을 극복하기 위해 다양한 기술이 사용된다. 예를 들어, ''Second Life''는 계산된 프레임 사이에 맞을 수 있는 모든 객체와 충돌하도록 프레임 간의 간격보다 긴 보이지 않는 꼬리가 있는 화살표로 발사체를 표현한다. 반대로 Bullet 또는 Havok과 같은 연속적인 충돌 감지는 이러한 문제를 겪지 않는다.
4. 2. [[동역학 시뮬레이션]]
물리 엔진은 일반적으로 두 가지 핵심 구성 요소, 즉 충돌 감지/충돌 응답 시스템과 시뮬레이션된 객체에 영향을 미치는 힘을 해결하는 역할을 하는 동역학 시뮬레이션 구성 요소를 갖는다.[4] 현대적인 물리 엔진은 또한 유체 시뮬레이션, 애니메이션 제어 시스템 및 자산 통합 도구를 포함할 수 있다.[4]고체 물리 시뮬레이션에는 세 가지 주요 패러다임이 있다.[4]
- 페널티 방식은 상호 작용이 일반적으로 질량-스프링 시스템으로 모델링된다. 이러한 유형의 엔진은 변형 가능한 또는 연성체 물리에 널리 사용된다.
- 제약 기반 방식은 물리 법칙을 추정하는 제약 방정식을 푼다.
- 임펄스 기반 방식은 객체 상호 작용에 임펄스를 적용한다. 그러나 이것은 실제로 시스템 전체에 임펄스를 전파하는 반복적 솔버와 결합된 제약 기반 방식의 특별한 경우일 뿐이다.
마지막으로, 위의 패러다임의 측면을 결합하는 하이브리드 방식이 가능하다.[4]
4. 3. 기타
물리 엔진은 일반적으로 두 가지 핵심 구성 요소, 즉 충돌 감지/충돌 응답 시스템과 시뮬레이션된 객체에 영향을 미치는 힘을 해결하는 역할을 하는 동역학 시뮬레이션 구성 요소를 갖는다. 현대적인 물리 엔진은 또한 전산 유체 역학(유체 시뮬레이션), 애니메이션 제어 시스템 및 자산 통합 도구를 포함할 수 있다.[4] 고체 물리학 시뮬레이션에는 세 가지 주요 패러다임이 있다.[4]- 페널티 방식은 상호 작용이 일반적으로 질량-스프링 시스템으로 모델링된다. 이러한 유형의 엔진은 변형 가능한 또는 연성체 물리에 널리 사용된다.
- 제약 기반 방식은 물리 법칙을 추정하는 제약 방정식을 푼다.
- 임펄스 기반 방식은 객체 상호 작용에 임펄스를 적용한다. 그러나 이것은 실제로 시스템 전체에 임펄스를 전파하는 반복적 솔버와 결합된 제약 기반 방식의 특별한 경우일 뿐이다.
마지막으로, 위의 패러다임의 측면을 결합하는 하이브리드 방식이 가능하다.
5. 물리 시뮬레이션 패러다임
물리 엔진은 일반적으로 두 가지 핵심 구성 요소, 즉 충돌 감지/충돌 응답 시스템과 시뮬레이션된 객체에 영향을 미치는 힘을 해결하는 역할을 하는 동역학 시뮬레이션 구성 요소를 갖는다.[4] 현대적인 물리 엔진은 또한 유체 시뮬레이션, 애니메이션 제어 시스템 및 자산 통합 도구를 포함할 수 있다.[4] 고체 물리학 시뮬레이션에는 세 가지 주요 패러다임이 있다.[4]
- 페널티 방식은 상호 작용이 일반적으로 질량-스프링 시스템으로 모델링된다. 이러한 유형의 엔진은 변형 가능한 또는 연성체 물리에 널리 사용된다.
- 제약 기반 방식은 물리 법칙을 추정하는 제약 방정식을 푼다.
- 임펄스 기반 방식은 객체 상호 작용에 임펄스를 적용한다. 그러나 이것은 실제로 시스템 전체에 임펄스를 전파하는 반복적 솔버와 결합된 제약 기반 방식의 특별한 경우일 뿐이다.
마지막으로, 위의 패러다임의 측면을 결합하는 하이브리드 방식이 가능하다.
6. 한계
물리 엔진의 사실성은 알고리즘의 느린 수렴으로 인해 제약 조건 해결 및 충돌 결과가 근사적으로 나타난다는 한계가 있다.[3] 너무 낮은 빈도로 충돌 감지가 계산되면 객체가 서로 통과한 후 비정상적인 수정력으로 밀려날 수 있다.[3] 반력의 근사적 결과는 비정상적인 반동을 유발할 수 있는데, 이는 전형적인 투영 가우스-자이델 솔버의 느린 수렴 때문에 발생한다.[3]
이러한 문제는 자유롭게 움직이는 복합 물리 객체에서 나타날 수 있으며, 특히 높은 장력 하의 체인 링크나 물리적인 베어링 표면을 가진 바퀴 달린 객체에 큰 영향을 준다.[3] 더 높은 정밀도는 위치/힘 오차를 줄이지만, 계산에 더 많은 CPU 성능을 필요로 한다.[3]
실제 세계에서는 브라운 운동으로 인해 물리학이 항상 활성화되어 있지만, 게임 물리 엔진에서는 이러한 정밀도가 불필요하게 CPU 성능을 낭비하여 프레임 속도 감소를 야기할 수 있다.[3] 따라서 게임은 특정 시간 동안 움직이지 않은 물체의 물리 계산을 비활성화하여 "절전 모드"로 전환하는 방식을 사용하기도 한다.[3] 예를 들어, 3D 가상 세계 세컨드 라이프에서는 물체가 바닥에 놓여 있고 약 2초 동안 최소 거리를 벗어나지 않으면 물리 계산이 비활성화되어 고정된다.[3]
7. 물리 처리 장치 (PPU)
물리 처리 장치(PPU)는 물리 계산을 전담하는 마이크로프로세서이다. 특히 비디오 게임의 물리 엔진에서 물리 계산을 처리하도록 설계되었다. PPU와 관련된 계산의 예로는 강체 동역학, 연성체 역학, 충돌 감지, 유체 역학, 머리카락 및 의류 시뮬레이션, 유한 요소 해석, 물체의 파괴 등이 있다.
이 아이디어는 특수 프로세서가 컴퓨터의 CPU에서 시간이 많이 걸리는 작업을 오프로드하는 방식이며, 이는 GPU가 주 CPU 대신 그래픽 작업을 수행하는 방식과 유사하다. Ageia의 PhysX 칩이 대표적인 예시이며, 이 용어는 Ageia의 마케팅에서 자사의 PhysX 칩을 소비자에게 설명하기 위해 만들어졌다. CPU-GPU 스펙트럼의 여러 다른 기술은 이와 몇 가지 공통 기능을 가지고 있지만, Ageia의 솔루션은 PPU로 ''전적으로'' 설계, 마케팅, 지원 및 시스템 내에 배치된 유일한 완전한 솔루션이었다.
8. 그래픽 처리 장치에서의 범용 컴퓨팅 (GPGPU)
그래픽 처리 장치에서의 범용 컴퓨팅 (GPGPU)은 물리 프로세싱을 위한 하드웨어 가속을 지원하며, 이는 그래픽 처리 장치(GPU)에서 더 일반적인 계산을 지원하는 개념이다.[5] AMD와 NVIDIA는 최신 그래픽 카드에서 강체 역학 계산을 지원한다.
NVIDIA의 GeForce 8 시리즈는 ''퀀텀 효과 기술''이라는 GPU 기반 뉴턴 물리학 가속 기술을 지원한다. NVIDIA는 GPU에 대한 로우 레벨 및 하이 레벨 API를 모두 제공하는 CUDA (Compute Unified Device Architecture) 기술을 위한 SDK 툴킷을 제공한다.[5] AMD는 자사의 GPU를 위해 얇은 하드웨어 인터페이스를 제공하는 Close to Metal(CTM)이라는 유사한 SDK를 제공한다.
PhysX는 GPGPU 기반 하드웨어 가속을 활용할 수 있는 물리 엔진의 한 예시이다.
9. 주요 물리 엔진 목록
- 라이브러리
- * Box2D
- * 하복
- * 불릿
- * ODE
- * [http://home.iae.nl/users/starcat/dynamo/ 다이나모]
- * [http://springhead.info/ 스프링헤드]
- 애플리케이션
- * 알고두
- * 리지드칩스
9. 1. 실시간 물리 엔진
;오픈 소스- Advanced Simulation Library - 오픈 소스 하드웨어 가속 멀티 물리학 시뮬레이션 소프트웨어이다.
- Box2D
- Bullet
- Chipmunk physics engine - 2D 물리 엔진이다.
- Jolt Physics[6] - Horizon Forbidden West 물리 엔진이다.
- Newton Game Dynamics
- Open Dynamics Engine
- PAL (Physics Abstraction Layer) - 여러 물리 엔진을 지원하는 균일한 API이다.
- PhysX
- Project Chrono - 멀티 물리학 애플리케이션을 위한 오픈 소스 시뮬레이션 엔진이다.
- Siconos - 접촉, 충격 및 쿨롱 마찰이 있는 기계 시스템의 모델링 및 시뮬레이션이다.
- SOFA (Simulation Open Framework Architecture)
- Tokamak physics engine
;퍼블릭 도메인
- Phyz (Dax Phyz) - 2.5D 물리 시뮬레이터/에디터.
;클로즈 소스/제한적 무료 배포
- Digital Molecular Matter
- Havok
- Epic Games의 Chaos
- CMLabs Simulations의 Vortex
- Algoryx Simulation AB의 AGX Multiphysics
- Algoryx Simulation AB의 Algodoo
- Valve Corporation의 Rubikon
9. 1. 1. 오픈 소스
- Advanced Simulation Library - 오픈 소스 하드웨어 가속 멀티 물리학 시뮬레이션 소프트웨어이다.
- Box2D
- Bullet
- Chipmunk physics engine - 2D 물리 엔진이다.
- Jolt Physics[6] - Horizon Forbidden West 물리 엔진이다.
- Newton Game Dynamics
- Open Dynamics Engine
- PAL (Physics Abstraction Layer) - 여러 물리 엔진을 지원하는 균일한 API이다.
- PhysX
- Project Chrono - 멀티 물리학 애플리케이션을 위한 오픈 소스 시뮬레이션 엔진이다.
- Siconos - 접촉, 충격 및 쿨롱 마찰이 있는 기계 시스템의 모델링 및 시뮬레이션이다.
- SOFA (Simulation Open Framework Architecture)
- Tokamak physics engine
9. 1. 2. 퍼블릭 도메인
Phyz (Dax Phyz) - 2.5D 물리 시뮬레이터/에디터.9. 1. 3. 클로즈 소스/제한적 무료 배포
- Digital Molecular Matter
- Havok
- Epic Games의 Chaos
- CMLabs Simulations의 Vortex
- Algoryx Simulation AB의 AGX Multiphysics
- Algoryx Simulation AB의 Algodoo
- Valve Corporation의 Rubikon
9. 2. 고정밀 물리 엔진
VisSim은 선형 및 비선형 역학을 위한 시각 시뮬레이션 엔진이다. 고정밀 물리 엔진 라이브러리에는 Box2D, 하복(Havok), 불릿(Bullet), ODE(Open Dynamics Engine) 등이 있다. [http://home.iae.nl/users/starcat/dynamo/ 다이나모](DynaMo)와 [http://springhead.info/ 스프링헤드](Springhead)도 고정밀 물리 엔진에 포함된다. 관련 애플리케이션으로는 알고두(Algodoo)와 리지드칩스(RigidChips)가 있다.10. 활용
참조
[1]
서적
Game Physics Engine Development
https://books.google[...]
CRC Press
2007-03-07
[2]
웹사이트
Graphical Modeling and Animation of Brittle Fracture
http://graphics.eecs[...]
Graphics.eecs.berkeley.edu
2012-09-01
[3]
웹사이트
Doc:Manual/Game Engine/Logic/Object type/Rigid body - BlenderWiki
http://wiki.blender.[...]
Wiki.blender.org
2009-11-20
[4]
서적
Physics-Based Animation
2005
[5]
웹사이트
NVIDIA 8800 features page - Quantum Effects Technology
http://www.nvidia.co[...]
Nvidia.com
2010-08-16
[6]
Github
Jolt Physics GitHub Repository
https://github.com/j[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
