문제

최근에 시뮬레이션 및 게임 개발을 위해 일부 물리 엔진을 비교했습니다. 일부는 무료이고 일부는 OpenSource이고 일부는 상업적입니다 (1은 매우 상업적인 $$$$). Havok, Ode, Newton (일명 Oxnewton), Bullet, Physx 및 "Raw"Build-In Physics의 일부 3D 엔진.

어떤 단계에서 나는 결론이나 질문에 나왔습니다. GPU 처리로 인해 놀라운 성능 (필요한 경우)을 사용할 수 있다면 Nvidia Physx 이외의 것을 사용해야하는 이유는 무엇입니까? 향후 NVIDIA 카드를 사용하면 일반 CPU 생성 단계와 무관하게 추가 개선을 기대할 수 있습니다. SDK는 무료이며 Linux에서도 사용할 수 있습니다. 물론 그것은 약간의 공급 업체 잠금 장치이며 OpenSource가 아닙니다.

당신의 견해 나 경험은 무엇입니까? 지금 개발을 시작한다면 위의 것에 동의 하시겠습니까?

건배

도움이 되었습니까?

해결책

면책 조항 : 나는 Physx를 사용한 적이 없습니다. 저의 전문적인 경험은 Bullet, Newton 및 Ode로 제한됩니다. 이 세 가지 중 Ode는 멀리 떨어져 있습니다. 가장 수치 적으로 안정적이고 다른 두 개는 성숙도 문제가 있습니다 (유용한 조인트가 구현되지 않은 법적 조인트/모터 조합은 정의되지 않은 방식으로 작동합니다. & c).

귀하는 귀하의 질문에서 공급 업체 잠금 문제를 암시했지만 반복 할 가치가 있습니다. Physx를 유일한 물리학 솔루션으로 사용하면 AMD 카드를 사용하는 사람들이 게임을 실행할 수 없습니다 (예, 할 수 있다는 것을 알고 있습니다. 일하기 위해 만들어집니다, 그러나 그것은 NVIDIA의 공식적이거나 지원되지 않습니다). 이 주위의 한 가지 방법은 ODE를 사용하여 AMD 카드가있는 시스템에서 장애 조치 엔진을 정의하는 것입니다. 이것은 작동하지만 작업량을 두 배로 늘립니다. 공통 인터페이스 뒤에있는 두 엔진의 차이점을 숨기고 게임 물리 코드의 대부분을 한 번 쓸 수 있다고 생각하는 것은 매혹적입니다. 접촉 마찰 및 회복과 같은 물건에 대한 값을 결정하는 물리 엔진. 이러한 값은 물리 엔진에서 일관된 의미를 갖지 않으며 (대부분) 공식적으로 도출 할 수 없으므로 실험을 통해 잘 생기고 재생 가능한 값을 찾고 있습니다. Physx Plus Failover를 사용하면 모든 Scut 작업을 두 번 수행합니다.

더 높은 수준에서, 나는 스트림 처리 API가 아직 완전히 구워 졌다고 생각하지 않으며, 최소한 고객의 반응이 인텔의 Larrabee가 사람들을 형성하는 방법을 최소한 할 때까지 한 사람을 꺼려하는 것을 꺼려 할 것입니다. 디자인.

Physx가 고급 게임 개발을위한 명백한 선택으로 보는 것과는 거리가 멀지 만 AMD 카드를 가진 사람들이 플레이어 기반의 상당 부분을 차지한다고 생각하지 않는 한 피해야한다고 말하고 싶습니다. 두 개의 물리 엔진을 테스트하기에 충분한 코딩 및 QA 인력이 있어야합니다 (회사가 부유하다면 Havok에 대해 좋은 말을 들었습니다). 또는 스트리밍 물리학만이 당신을 만족시킬 수 있도록 성능 요구가있는 물리 게임을 설계했다면,이 경우 밴드를 시작하고 무어의 법칙이 1 년 동안 그 일을하도록 조언합니다. 또는 두 개.

다른 팁

2013 년 초반 업데이트 답변 : 나는 Big Three OS : Linux, OS X, MS를 고려하는 것을 개발합니다. 또한 Big Three Physic 라이브러리 인 Physx, Havok, Bullet도 개발합니다.

Physx와 관련하여 최근 에이 글을 쓰는 시점에서 최신 화신이 3.2.2 인 테스트를 수행했습니다. 제 생각에는 Nvidia는 도서관의 효과를 실제로 줄였습니다. 가장 큰 것은 강체에 대한 가속도가 부족하다는 것입니다. LIB는 입자와 천을 가속화합니다. 그것들조차도 일반적인 강체와 인터페이스하지 않습니다. NVIDIA는 GPU 가속화 된 앱을 추진하는 거대한 마케팅 드라이브를 가지고 있기 때문에 물리 시뮬레이션 인 큰 구동력으로 과학적 계산에 중점을두고 있기 때문에이 작업을 수행했습니다.

그래서 물리의 왕에 대한 나의 기대는 Sim이 Physx, Havok 및 총알이되지만 실제로는 반대를 봅니다. Bullet은 OpenCL 지원 샘플링으로 LIB 2.8.1을 출시했습니다. 총알은 관대 한 라이센스가있는 비교적 작은 LIB입니다. 그들의 목표는 완전히 통합 된 OpenCl 강성 바디 가속도로 릴리스 3을 갖는 것입니다.

의견의 일부는 여러 코드 경로에 대해 이야기합니다. 내 의견은 이것이 너무 큰 거래가 아니라는 것입니다. 최소한의 하드 코드 지원 (대부분 스레딩 및 OS 특정 코드를 사용하지 않음, C ++ 및 STD LIB 템플릿 사용)로 3 개의 OS를 지원합니다. 물리 라이브러리에서도 비슷합니다. 공유 라이브러리를 사용하고 공통 인터페이스를 추상화합니다. 물리학은 크게 변하지 않기 때문에 괜찮습니다.) 여전히 시뮬레이션 환경을 설정하고, 개체를 관리하고, 환경에서 반복을 렌더링하고, 완료되면 정리해야합니다. 나머지는 플래시이며 여가에 구현됩니다.

주류 라이브러리에서 OpenCL의 출현으로 (Nvidia Cuda는 매우 가깝습니다 - Bullet OpenCl 데모 참조) 물리 플러그인 작업이 줄어 듭니다.

따라서 처음부터 시작하여 물리 모델링 과만 관련이 있습니까? 당신은 총알로 잘못 갈 수 없습니다. 소규모의 유연한 라이센스 (무료), Big Three OS 및 GPU 솔루션에 걸쳐 크로스 플랫폼이 될 생산 준비 오프플에 매우 가깝습니다.

행운을 빕니다 !

당신은 이것을 흥미롭게 찾을 수 있습니다 :

http://www.xbitlabs.com/news/video/display/20091001171332_amd_nvidia_physx_will_be_irrelevant.html

그것은 편견이 있습니다 ... 그것은 기본적으로 AMD와의 인터뷰입니다 ... 그러나 당신의 경우에 고려할 가치가 있다고 생각하는 몇 가지 요점을 만듭니다.

David Seiler가 지적한 문제로 인해, 미래의 물리 엔진을 어느 정도 전환하는 것은 큰/극복 할 수없는 문제 일 수 있습니다 ... 특히 게임 플레이가 물리에 단단히 묶인 경우.

따라서 지금 엔진에서 하드웨어 가속화 된 물리학을 원한다면 Physx를 찾으십시오. 그러나이 기사에서 AMD에 의해 가정 된 것과 같은 솔루션을 사용할 수 있습니다 (절대적으로 절대적으로 ~ 할 것이다 그러나 그들은 아직 여기에 없습니다), 당신은 불쾌한 선택에 직면하게 될 것입니다.

1) 엔진을 다시 작성하여 (새로운 크로스 플랫폼 하드웨어 가속화 된 물리 엔진의 이름 삽입) 게임의 역학을 나쁜 방식으로 변경할 수 있습니다.

2) AMD 사용자를 완전히 무시하는 Physx 만 계속 사용하십시오.

3) Physx가 AMD GPU (Blech ...)에서 작업하도록하십시오.

CPU 물리 엔진을 폴백으로 사용한다는 David의 아이디어 외에도 (작업의 두 번 작업을 수행하고 동일하게 작동하지 않는 2 개의 엔진을 생산) 다른 옵션은 순수한 CPU 물리학을 사용하는 것입니다.

그러나 OpenCL과 같은 것들이 주류가되면 ODE/BULLET/KIN이 통합하기 시작할 수 있습니다 ... iOW는 지금 ODE/BULLET/KIN으로 코딩하면 "아마도"무료 "에 대한 GPU 가속도를 얻을 수 있습니다. 나중에 (코드 변경 없음). GPU 버전 (나비 효과와 부동 소수점 구현의 차이로 인해 피할 수없는 문제)과는 여전히 약간 다르게 행동하지만 적어도 ODE/BULLET/KIN 커뮤니티가 귀하와 협력하여 그 차이를 줄일 수 있습니다. .

이것이 내 추천입니다. 현재 CPU 만 사용하는 오픈 소스 물리 라이브러리를 사용하고 OpenCL, Cuda, ATI의 스트림 언어 등을 통해 GPU를 사용하기를 기다릴 때까지 기다릴 때 성능이 빠르게 비명을 지르며, 그렇습니다. 두통을 저장하십시오.

미래의 GFX 카드의 가상의 이점은 모두 좋고 좋지만 추가 CPU 코어의 미래 이점도있을 것입니다. 미래의 GFX 카드가 항상 물리학에 대한 여분의 용량을 가질 것이라고 확신 할 수 있습니까?

그러나 아마도이 경우 약간 모호하지만 성능이 전부가 아니기 때문일 것입니다. 타사 도서관과 마찬가지로 앞으로 몇 년 동안 해당 코드를 지원하고 업그레이드해야 할 수도 있으며 인터페이스가 합리적이며 문서가 좋으며 귀하의 기능이 있는지 확인하려고합니다. 필요하다.

더 안정적인 방정식 해결 등을 제공하는 일부 API와 같은 수학적 우려가있을 수도 있지만 전문가에게 의견을 남겨 둘 것입니다.

나는 사용했다 송시 그리고 지금 사용합니다 물리. 물리 장면을 더 쉽게 만들고 (내 개인적인 의견) 더 현실적으로 보이지만에 대한 적절한 문서는 없습니다. 물리; 실제로 문서는 거의 없습니다. 반면에, 송시 오픈 소스이며 많은 문서, 튜토리얼 등이 있습니다. PS : GPU 가속을 사용하는 것은 저와 동료들을 크게 돕고 있습니다. 우리는 사용 중입니다 꼭대기 파괴와 물리 입자.

Physx는 Nonvidia 카드와 함께 작동하며 가속화되지 않습니다. 다른 엔진과 같은 위치에 두십시오. 문제는 하드웨어 물리학 가속으로 만 작동하는 물리적 시뮬레이션이있는 경우입니다.

모든 코드가 엄청나게 부유 할 수 있다면,이를 위해 가십시오!

다른 모든 것에 대해 GPU는 부적절하게 부적절합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top