OpenGL과 3D 애니메이션 소프트웨어에서의 렌더링의 차이점


16

OpenGL을 사용하면 "실시간"60 FPS로 매우 놀라운 결과물을 렌더링 할 수 있습니다. 그러나 Maya 또는 3ds Max에서 같은 장면의 비디오를 만들려고하면 해상도와 FPS가 같더라도 렌더링하는 데 훨씬 더 오래 걸립니다.

이 두 가지 렌더링 유형이 동일한 결과에 대해 서로 다른 시간이 걸리는 이유는 무엇입니까?

참고 : 예, 3D 애니메이션 소프트웨어가 실시간으로 수행 할 수있는 것보다 훨씬 뛰어난 이미지를 생성 할 수 있다는 것을 알고 있습니다. 그러나이 질문에 대해 나는 동등한 복잡성의 장면을 언급하고 있습니다.


1
짧은 대답은 OpenGL이 단축키를 사용한다는 것입니다.
user253751

답변:


9

가장 큰 차이점은 비디오 게임에서 OpenGL을 사용하면 기본적으로 장면의 어느 부분을 보는지를 결정하는 래스터 화 라는 프로세스가 있다고 가정 해 보겠습니다 .

실시간으로 경험할 수 있도록 속도가 빨라야합니다.

따라서 알고리즘은 몇 가지 간단한 단계를 수행합니다.

  • 장면의 특정 부분이 내 시야에 있는지 확인

    절두체 컬링

  • 깊이 버퍼를 사용하여 나중에 렌더링해야하는 무언가가 앞에 있는지 확인하십시오.

    깊이 버퍼

  • 우리가 찾은 물건을 주문하다

  • 화면에 투사하여 그 립니다
  • 텍스처 / 쉐이더 / 조명 / ...을 기반으로 음영 처리

반면에 렌더링 소프트웨어 (Blender / Max / Maya / ...)는 일종의 레이트 레이싱을 사용합니다.

더 높은 수준의 사실감을 얻기 위해 더 많은 수학이 필요합니다. 기본적으로 동일한 방식으로 작동합니다.

  • 카메라와 이미지 평면을 생성합니다
  • 각 픽셀을 통해 하나의 광선 (또는 여러 샘플 광선)을 촬영
  • 광선이 장면에서 어떤 것을 쳤는지 확인하십시오
  • 가장 가까운 히트는 최종적으로 픽셀에 그려지는 것입니다 (깊이 버퍼와 같이).
  • 주어진 점에 대한 빛을 계산 가벼운 계산

....

레이트 레이싱이 시작되는 지점이기 때문에 여기에 나열을 중단합니다.

점이 맞았는지 확인하는 대신, 대부분의 레이트 레이서가 이제 계산을 시작합니다.

  • 표면이 투과하는 빛의 양
  • 반사되는 빛의 양
  • 광원에 부딪 칠 때까지 적중 지점에서 장면으로 새로운 광선을 투사

장면의 특정 지점의 빛을 계산하는 데 사용할 수있는 다양한 리얼리즘의 기술이 많이 있습니다.

TL; DR 요점은 광선 추적기가 조명이 올 때 대부분 물리적으로 정확하려고 시도하므로 픽셀 당 수행해야 할 계산이 더 많으며 (때로는 수천 개의 광선을 쏘는 경우도 있음) 게임의 속도는 더 간단한 조명 계산과 사실적으로 보이게하는 많은 쉐이더 트릭으로 화면의 더 큰 덩어리를 그립니다.


7

사과와 오렌지를 비교하고 있습니다

게임은 모델링 앱의 뷰 포트와 같습니다. 렌더링에 뷰포트를 사용할 수 있으며 동일한 60fps 속도를 얻을 수 있습니다.

Maya 또는 3DS Max와 같은 모델링 소프트웨어에서 매우 우수한 실시간 그래픽을 얻을 수없는 이유는 없습니다. 많은 게임과 동등한 결과. 게임과 마찬가지로 뷰포트 쉐이더가 있습니다. 프레임을 디스크에 최대한 빨리 청크하는 뷰포트 렌더링 옵션도 있습니다 (마야에서 30fps로 풀 HD 렌더링을 수행했습니다). 제공된 소프트웨어 레이트 레이서 사용을 중지하기 만하면됩니다.

그래도 약간의 차이가 있습니다. 가장 큰 차이점은 사용자가 게임 개발자만큼 물건을 최적화하지 않는다는 것입니다 (최적화는 책의 모든 트릭을 사용합니다). 둘째, 유연성이 필요하기 때문에 애니메이션 프리미티브가 CPU에서 작동합니다. 게임에서 최적화를 할 여유가 있습니다. 전체적으로 당신은 당신 옆에 프로그래밍 팀이 없다는 것에 대해 지불합니다.

실제로 많은 것들이 사전 계산되어 왔기 때문에 더 잘 정리되지는 않았습니다. 간접 조명을 굽는 것은 매일 구운 결과를 능가합니다.

레이트 레이서가 왜 더 느린가요?

그들은 그렇지 않습니다. 하나는 광선 추적기에서 더 많은 작업을 수행하는 경향이 있습니다. 기능별로 계산주기가 훨씬 느리지 않습니다. 예를 들어 2 차 광선을 투사하기 위해 광선 추적기가 필요하지 않습니다 (이 경우 수명 반사는 광선 추적기가 형상을 없애거나로드하지도 않습니다. 실제로 mental ray는 그렇게합니다). 일반적으로 그렇게하기가 쉽지 않기 때문에 광선 추적기의 분명한 장점입니다. 경우에 따라 CPU에서 실행되도록 구성 할 수도 있습니다. 그들은 다른 것들에 최적화되어 있습니다.

  1. 프레임뿐만 아니라 모든 데이터를 디스크에 데이터 방출 대부분의 게임 속도를 즉시 깨뜨릴 수있는 것.

  2. 일반적인 하드웨어 작업. GPU를 최적화하면 GPU가 특정 작업에 훨씬 빠릅니다. 그러나 모든로드에서 작동하지는 않습니다. 실제로 인텔 CPU는 일반적으로 GPU보다 컴퓨팅 속도가 빠릅니다. GPU는 CPU와 크게 평행을 이루고 있습니다. GPU에 머무르고 전송을 최소화하고 GPU 아키텍처에 최적화하면 아키텍처가 승리합니다.

따라서 유연성과 사용 편의성을 지불합니다. 그러나 그렇습니다. Maya와 Max는 극도의 노년층으로 고통 받고 있습니다. 그래서 그들은 더 빠를 수 있습니다.

TL; DR 차이점은 대부분 최적화 (트릭을 많이 읽는 것)와 사용 가능한 외부 리소스에 있습니다.

추신 : 이것은 물리적으로 더 정확하기 때문에 오해가 있습니다. 그것은 물론 일 수 있지만 광선 추적기는 본질적으로 일반적인 게임이나 다른 계산보다 본질적으로 더 정확하지 않습니다. 실제로 많은 게임에서 정말 좋은 모델을 사용하지만 많은 모델러에서는 그렇지 않습니다.

* http://www.graphics.cornell.edu/~bjw/mca.pdf 참조


2
미안하지만, 그것은 명백한 잘못입니다. OpenGL과 DirectX는 본질적으로 정확한 레이트 레이싱보다 빠른 근사치를 사용합니다. 가속화 된 3D 그래픽의 핵심은 사실 성과 속도 사이에서 균형을 유지하는 알고리즘을 가지고 있으며, 게임, CAD 등과 같은 대부분의 실제 용도에 충분히 적합합니다.
IMil

2
@IMil OpenGL은 레이트 레이싱에 사용될 수 있습니다. 문제의 하드웨어에 최적화되어 있기 때문에 더 빠릅니다. 그러나 Maya는 광선 추적을하지 않아도됩니다. Maya와 Max는 게임만큼 openGL과 directX를 사용할 수 있습니다. Mayas (및 3ds) 뷰포트는 opengl 또는 directX (선택)입니다. 특정 병렬 처리로드에서 프로세서가 느리다는 사실은 또 다른 것입니다. 그래서 대답은 유효합니다. maya의 표준 설정은 표준 스캔 라인보다 더 현실적이지 않습니다.
joojaa

5

실시간 미리보기

VFX 측면에서 작업하면서 프로덕션 렌더링이 아닌 실시간 뷰포트 미리보기에 대해 이야기하는 경우 Maya 및 3DS Max는 일반적으로 OpenGL (또는 DirectX와 거의 동일)을 사용합니다.

VFX 애니메이션 소프트웨어와 게임의 주요 개념 차이 중 하나는 그들이 만들 수있는 가정 수준입니다. 예를 들어 VFX 소프트웨어에서 아티스트가 수십만에서 수백만 다각형에 이르는 단일의 매끄러운 문자 메시를로드하는 것은 드문 일이 아닙니다. 게임은 단순하고 최적화 된 메쉬 (각각 수천 개의 삼각형)의 보트로 구성된 대형 장면에 가장 최적화되는 경향이 있습니다.

생산 렌더링 및 경로 추적

또한 VFX 소프트웨어는 실시간 미리보기가 아니라 광선이 실제로 한 번에 하나씩 시뮬레이션되는 프로덕션 렌더링에 중점을 둡니다. 실시간 미리보기는 종종 고품질 프로덕션 결과의 "미리보기"일뿐입니다.

게임은 최근 실시간 피사계 심도, 부드러운 그림자, 확산 반사 등과 같은 많은 효과를 근사화하는 아름다운 일을하고 있지만 근사치 근사 범주에 있습니다 (예 : 확산에 대한 모호한 큐브 맵) 실제로 광선을 시뮬레이션하는 대신 반사).

함유량

이 주제로 돌아와서 VFX 소프트웨어와 게임 간의 컨텐츠 가정은 크게 다릅니다. VFX 소프트웨어의 주요 초점은 가능한 모든 종류의 컨텐츠를 생성 할 수 있도록하는 것입니다 (실제로는 거의 근접하지는 않지만 이상적입니다). 게임은 훨씬 더 무거운 가정으로 콘텐츠에 중점을 둡니다 (모든 모델은 수천 개의 삼각형 범위에 있어야 함, 노멀 맵은 가짜 세부 사항에 적용되어야 함) 장비 및 장력 맵 등).

이러한 가정으로 인해 게임 엔진은 종종 프러스 텀 컬링과 같은 가속 기술을보다 쉽게 ​​적용하여 높은 대화식 프레임 속도를 유지할 수 있습니다. 그들은 일부 내용이 정적 일 것이라고 미리 가정 할 수 있습니다. VFX 소프트웨어는 컨텐츠 제작에있어 훨씬 높은 수준의 유연성을 감안할 때 이러한 가정을 쉽게 만들 수 없습니다.

더 나은 게임

이것은 논란의 여지가 있지만 게임 산업은 VFX 소프트웨어보다 훨씬 유리한 산업입니다. 단일 게임에 대한 예산은 수억 달러에이를 수 있으며 몇 년마다 차세대 엔진을 계속 출시 할 수 있습니다. 그들의 R & D 노력은 놀라 울뿐 아니라 수백 개의 게임 타이틀이 항상 출시됩니다.

반면에 VFX 및 CAD 소프트웨어는 수익성이 거의 없습니다. R & D는 종종 학계에서 일하는 연구원들에 의해 아웃소싱되며, 많은 업계에서 종종 새로운 것처럼 마치 몇 년 전에 출판 된 기술을 구현합니다. 따라서 AutoDesk와 같은 대규모 회사의 VFX 소프트웨어는 최신 AAA 게임 엔진만큼 "최첨단"이 아닌 경우가 많습니다.

또한 레거시가 훨씬 길어지는 경향이 있습니다. 예를 들어 Maya는 17 년 된 제품입니다. 그것은 많이 개조되었지만 핵심 아키텍처는 여전히 동일합니다. 이는 Quake 2를 가져와 2015 년까지 계속 업데이트하고 업데이트하는 것과 유사 할 수 있습니다. 이러한 노력은 훌륭 할 수 있지만 언리얼 엔진 4와 일치하지 않을 수 있습니다.

TL; DR

어쨌든, 그것은 주제의 그 측면에서 약간 가져갑니다. 뷰포트 또는 프로덕션 렌더링의 실시간 미리보기에 대해 이야기하고 있는지 알 수 없으므로 두 가지를 모두 다루려고했습니다.


또한 시간 문제입니다. 60fps로 렌더링하고 적절한 결과를 얻을 수 있다고해도 최적화하기 위해 거의 패닝되지 않습니다. 프레임 당 3 분이 걸리고 렌더링하는 데 200 개의 프레임이 있다고 가정하십시오. 셰이더 라이터를 고용하고 최적화하면 60fps를 얻을 수 있지만 하루나 이틀 정도는 시간이 걸립니다. 그러나 3 분에 200 프레임은 10 시간 만 소요되므로 비용을 절약 할 수 있습니다. 실제로 더 많은 하드웨어를 구입하는 것이 더 저렴하고 걱정하지 않아도됩니다. 게임은 단순히이 방법을 사용할 수 없습니다.
joojaa

@joojaa 또한 조금 더 복잡합니다. 마야를 위해 정말 좋은 실시간 셰이더를하는 것만으로도 최소한 1 년 정도 걸릴 수 있습니다. 경험이 많은 셰이더 개발자 (더 적은 게인)에서도 노드 렌더링 시스템의 유연성은 프로덕션 렌더링을 목표로하기 때문입니다. 이러한 범용 셰이더 노드를 UE 4의 효과 범위를 캡처하는 실시간 셰이딩 시스템으로 변환하려면 리버스 엔지니어링 사고 방식과 새로운 종류의 GLSL / HLSL 코드 생성 기술 (메타 프로그래밍 시스템과 같은)이 필요합니다. 예 :
Dragon Energy

@joojaa UE 4의 셰이더 엔진은 대략적으로 추정되는 PBR 마인드 셋 (Disney PBR 셰이더의 매우 작은 서브셋)을 직접 대상으로합니다. 그들은 머지 않아 Maya의 머티리얼 시스템 (레이트 레이싱을 위해 설계된)과 같은 것으로 시작하는 대신, 빠른 실시간 목적을 위해 머티리얼 시스템을 설계했습니다. 가장 밝은 UE 4가 VP 2.0에서 작동 했더라도 이러한 종류의 작업을 수행하지 않는 디자인에 대해 동일한 결과를 얻으려면 몇 년 동안 밤낮으로 노력해야했습니다.
Dragon Energy

하지만 VFX 앱에 파이프 라인이있는 경우에도 각 장면마다 추가 최적화가 필요할 수 있습니다. Maya 사용자가 UDK에서 렌더링 할 수없는 이유는 없습니다 (예 : 동일한 쉐이더 개발 플랫폼).
joojaa

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