계산이 느리게 진행되는 슬로우 모션에서 충돌이 발생합니까?


11

충돌이 발생 하는 많은 레이싱 게임 ( 예 : 번 아웃 파라다이스 )에서 게임 플레이는 자동으로 슬로우 모션으로 전환되고 충돌이 완료 될 때까지 느린 순서로 진행됩니다.

나는 항상 이것이 효과라고 생각했다. 충돌의 일부를 놓치고 싶지 않습니다! 그러나 내 친구 중 한 명이 최근에 충돌이 발생할 때 엄청난 처리 속도가 필요하지 않도록하기 위해이 작업을 수행 할 것을 제안했습니다.

이제는 실제로 다른 방향으로 생각합니다. 충돌이 발생하면 많은 세부 사항이 슬로우 모션으로 표시되므로 컴퓨팅 및 렌더링 파이프 라인에 오버 헤드가 있다고 확신합니다.

맞습니까?

슬로우 모션 장면이 CPU / GPU 사용량을 늘리거나 줄입니까?

답변:


4

고정 된 시간 간격으로 물리 시뮬레이션을 실행하는 경우 (필요한 경우), 슬로우 모션은 프레임 당 계산이 더 적기 때문에 물리 시뮬레이션에 적은 부하를가합니다.

초당 200 회 업데이트로 물리를 실행한다고 가정 해 봅시다. 예 : 0.005시뮬레이션 시간의 초 마다 하나의 업데이트 . 초당 50 회의 업데이트로 게임을 실행하면 렌더 업데이트 당 4 개의 물리 업데이트가 발생합니다. 이제 게임을 슬로우 모션으로 실행하면 시뮬레이션 시간이 느려집니다. 따라서 게임이 여전히 초당 50 회의 업데이트 ( 0.02시뮬레이션 시간의 초)로 실행되지만 월드를 슬로우 모션 (반으로 말해 보자)으로 표시하는 경우 한 프레임은 0.01시뮬레이션 시간의 초 와 같습니다 . 따라서 렌더링 된 프레임 당 2 개의 물리 업데이트 만 있습니다. 렌더링 된 프레임 당 더 적은 물리 계산을 의미합니다.

따라서 렌더링 된 프레임 당 CPU 사용량의 관점에서 살펴보면 슬로우 모션 중 물리 시뮬레이션 속도를 높이도록 선택하지 않는 한 슬로우 모션의 CPU 사용량이 줄어 듭니다. 프레임 당 GPU로드는 물론 일정합니다.

한 번의 충돌 기간 동안 누적 CPU / GPU 부하에 대해 묻는다면 , 물리 시뮬레이션은 슬로우 모션 또는 정상 속도와 동일합니다. 더 많은 프레임을 렌더링하므로 GPU로드가 높아집니다.


첫 번째 단락에서는 GPU로드가 더 높다는 것을 설명합니다. GPU의로드는 프레임 속도와 직접적으로 관련되어 상대적으로 일정하거나 잘 표현되어 있어야합니다 (장면의 내용이 변경되지 않는다고 가정).
notlesh

그는 충돌 당 더 높았 지만 충돌이 오래 지속되기 때문 이라고 말했다 . 첫 번째 단락의 마지막 문장이 말합니다.
MichaelHouse

나는 평균적으로 부하가 거의 동일하게 유지되어야한다고 생각합니다. 코드는 동일한 구절을 통해 진행되므로 거의 동일한 하중을 갖게됩니다. 특수한 경우, 충돌 해결이 아마도 어떤 종류의 시간 단계 요소와 함께 작동하기 때문에 전체 충돌 기간 동안 관찰 된 슬로우 모션 사례에서 CPU의 부하가 실제로 더 높을 것이라고 생각합니다. 는 슬로우 모션에서 훨씬 더 작아지고 (번역 결과가 더 작아짐) 프레임 당 충돌이 감지 될 가능성이
높아져

나는 이것이 바로 지금 생각할 수있는 것이므로 그것을 대답으로 추가하지 않고 있으며 그것을 백업 할 슬로우 모션 시스템에 대한 데이터 나 실제 경험이 없다. : P
TravisG

2
@ Byte56 문제는 "슬로우 모션 장면이 CPU / GPU 사용량을 증가 시킵니까?"입니다. 이것은 [거의] 확실히 충돌 당이 아니라 시간당 사용을 의미합니다. 따라서 GPU가 진행되는 한 대답은 변경되지 않는다고 생각합니다. 첫 단락이 무엇을 전달하려고하는지 명확하지 않기 때문에 나는 이것을 내 놓는다.
notlesh

3

이다 가능한 이런 경우가 될 수있다. GPU 충돌에 대해 물리를 수행하지 않는 한, 쪼그리고 앉는 것을 의미합니다. 그러나 물리학 자체의 관점에서 보면 가능합니다.

여러 신체의 움직임을 시뮬레이션하는 경우 매우 예측 가능한 방식으로 움직이는 경향이 있습니다. 힘과 힘장 (즉, 중력)은 쉽게 예측할 수 있습니다. 물건이 움직이는 곳이 빠르게 계산됩니다.

한 가지가 다른 것을 칠 때까지 물리학에서 당신은 소위 타임 슬라이스를 가지고 있습니다. 이것은 물리 시스템의 실행이 다루는 시간입니다. 타임 슬라이스가 1/30 초 (물리 업데이트의 경우 30fps)를 차지하는 경우 각 물리 업데이트는 객체를 33.3 밀리 초 미래로 이동합니다.

물체가 충돌하지 않으면 33.3ms의 시작에서 끝으로 이동할 수 있습니다. 그렇게하는 물리학은 간단하며 수세기 동안 잘 알려져 있습니다. 순 힘의 가속도를 결정하고 타임 슬라이스의 가속도를 물체에 적용한 후 새로운 속도로 이동하면됩니다 (참고 : 정확도를 높이려면 더 복잡 할 수 있습니다).

문제는 객체가 충돌 할 때입니다. 갑자기 이제는 처음에 한 번이 아니라 타임 슬라이스 에서 물리력을 처리해야합니다 . 물리 프레임 내에서 객체가 두 번 또는 세 충돌 하면 다시 계산해야하는 물리 계산이 더 많아집니다.

한 번의 슬라이스로 많은 충돌이 발생하면 실제로 프레임 속도를 죽일 수 있습니다. 그러나 시간 조각의 크기가 줄어들면 시간 조각 내의 여러 충돌 가능성이 줄어 듭니다. Forza 및 Gran Turismo와 같은 고급 레이싱 시뮬레이션은 놀라운 프레임 속도로 물리 시스템을 실행합니다. 물리 업데이트 중 하나가 최대 300 + fps를 얻는다고 생각합니다.

슬로우 모션은 그와 동등한 효과입니다. 보정을 위해 렌더링 프레임 속도를 높이 지 않고 물리 타임 슬라이스를 줄이면 세계가 느려집니다. 따라서 타임 슬라이스 내에서 여러 번의 충돌이 발생할 가능성이 훨씬 줄어 듭니다.

그렇기 때문에 이와 같은 게임이 슬로우 모션으로 진행되는 이유는 의심 스럽다. 일반적으로 시각적 감각과 드라마틱 한 프리젠 테이션에 적합합니다. 이러한 물리 시스템은 일반적으로 성능 측면에서 처리 할 수 ​​있습니다.


1

우선, 이것은 성능상의 이유가 아니라 시각 효과를 위해 수행됩니다.

물리 무거운 게임에서 성능을 처리하는 표준 방법은 객체의 수를 조정하고 객체의 복잡성을 조정하며 시뮬레이션 설정과 성능 사이에서 조정하기 위해 엔진 설정으로 바이올린을 조정하는 것입니다. 문제가 있다면 가장 중요하지 않은 기능이라고 생각하는 것을 버립니다.

그러나 업계는 지난 15 년 동안 매우 현실적인 자동차 게임을 해왔으며, 현대 컴퓨터에서는 3 륜으로 스케일을 조정하여 작업을 수행 할 필요가 없습니다.

문제 :
충돌로 인해 추가 작업이 발생할 수 있으며, 게임의 특성에 따라 얼마나 많은 영향을 받는지, 더 자세한 물리 엔진은 다른 부품 사이에 작은 충돌이 많이 발생하여 필요한 계산이 크게 증가 할 수 있습니다 . 그러나 물리가 스케일링 될 때이를 고려해야합니다. 그래도 충돌을 처리 할 수있는 좋은 물리를 얻는 것은 문제가되지 않습니다.

물리 시뮬레이션을 더 느리게 실행하여 슬로우 모션을 얻으면 부하가 비례하여 떨어집니다. 그러나 슬로우 모션 및 실시간 물리학에 대한 요구 사항이 다르므로 레이싱 속도에서 물건이 발생할 때 정밀도가 낮아질 수 있습니다. 플레이어가 물리 엔진이 잘못되었다는 것을 인식하지 않는 한 큰 문제는 아니며 슬로우 모션으로 인해 미끄러짐을 훨씬 쉽게 잡을 수 있으므로 슬로우 모션의 정밀도 요구 사항이 높아집니다.

두 가지 요구 사항을 모두 충족하도록 조정 된 동일한 물리를 사용하도록 선택할 수 있습니다. 이 솔루션에는 추가 처리 성능이 필요하지만 구현하기 쉽고 최신 컴퓨터를 완벽하게 실행할 수 있습니다.

물리 설정을 전환하는 것은 더 복잡하지만, 잠재적으로 몇 가지 화려한 충돌을 일으킬 수 있으며, 정밀도를 높일 수있을뿐만 아니라,보다 사실적인 방식으로 깨지는 더 세부적인 것을 위해 자동차의 물리 모델을 전환 할 수도 있습니다. 이 모드는 물리 모드에서 일반 모드와 거의 같은 양의 CPU 시간을 사용하여 끝내야합니다. 둘 다 동일한 minspec 구성에서 실행되도록 크기가 조정 되었기 때문입니다.

중간 단계는 가변 단계 물리 엔진을 사용하는 것입니다. 일반적으로 시뮬레이션 속도를 늦출 때 정확도가 높아져 문제의 적어도 일부를 해결합니다. 가변 단계 물리를 사용하지 않는 다른 이유가 있지만 가변 단계는 여전히 업계에서 일반적입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.