문제

저는 서버에서 간단한 3D 장면을 빠르게 렌더링한 다음 HTTP를 통해 JPEG로 반환해야 하는 응용 프로그램을 작업 중입니다.기본적으로 다음과 같은 작업을 수행하여 HTML 페이지에 동적 3D 장면을 간단히 포함할 수 있기를 원합니다.

<img src="http://www.myserver.com/renderimage?scene=1&x=123&y=123&z=123">

제 질문은 렌더링을 수행하는 데 어떤 기술을 사용해야 하는지에 관한 것입니다.데스크톱 응용 프로그램에서는 자연스럽게 DirectX를 사용하겠지만, 수십 또는 수백 명의 사용자를 위한 이미지를 동시에 생성하는 서버 측 응용 프로그램에는 적합하지 않을 수도 있습니다.누구든지 이것에 대한 경험이 있습니까?이 애플리케이션에 이상적인 3D API(무료로 사용 가능)가 있습니까?소프트웨어 렌더러를 처음부터 작성하는 것이 더 낫습니까?

DirectX 또는 OpenGL 사용에 대한 나의 주요 관심사는 그것이 가상화된 서버 환경에서 잘 작동할 것인지, 그리고 그것이 일반적인 서버 하드웨어(제가 거의 제어할 수 없는)에서 적합한 것인지 여부입니다.

도움이 되었습니까?

해결책

Mental Images의 RealityServer는 여기에 설명된 작업을 정확하게 수행하도록 설계되었습니다.자세한 내용은 제품 페이지(다운로드 가능한 Developer Edition 포함)에서 확인할 수 있습니다.

RealityServer 문서

다른 팁

가장 좋은 방법은 서버에서 Direct3D/OpenGL 앱을 멈추지 않고 실행하는 것입니다.그런 다음 서버 페이지가 렌더링 앱에 요청을 보내고 렌더링 앱이 jpg/png/무엇이든 다시 보내도록 합니다.

  • Direct3D/OpenGL이 하드웨어에서 장면을 렌더링하는 데 속도가 느리면 모든 소프트웨어 솔루션이 더 나빠질 것입니다.
  • 렌더링 앱을 계속 실행하면 텍스처, 백버퍼, 정점 버퍼 등을 생성/파괴하는 오버헤드를 피할 수 있습니다.단순한 장면을 초당 100번 렌더링할 수도 있습니다.

그러나 많은 서버에는 그래픽 카드가 없습니다.Direct3D는 소프트웨어에서 거의 쓸모가 없으며(Ms의 에뮬레이트된 장치가 있지만 효과 테스트에만 유용함) 소프트웨어에서 OpenGL을 사용해 본 적이 없습니다.

Pov-ray를 래핑할 수 있습니다(여기서는 POSIX 및 Windows 빌드 사용).PHP 예:

<?php
chdir("/tmp");
@unlink("demo.png");
system("~janus/.wine/drive_c/POV-Ray-v3.7-RC6/bin/pvengine-sse2.exe /render demo.pov /exit");
header("Content-type: image/png");
fpassthru($f = fopen("demo.png","r"));
fclose($f);
?>

demo.pov 사용 가능 여기.

Jinja2와 같은 템플릿 언어를 사용하여 자신만의 카메라 좌표를 삽입할 수 있습니다.

API라기보다는 렌더러입니다. 포브레이?도 존재하는 것 같다 http 상호 작용...

Java3D(https://java3d.dev.java.net/) 이는 서버 아키텍처가 이미 Java 기반인 경우 우아한 솔루션이 될 것입니다.

또한 가능하다면 소프트웨어 전용 렌더링 솔루션을 사용하는 것이 좋습니다. 3D 렌더링 하드웨어에 동시에 요구되는 많은 서버 프로세스를 처리하는 것은 많은 작업처럼 들립니다.

야파라이(http://www.yafaray.org/)는 일반적인 3D 렌더링을 위해 고려해야 할 첫 번째 선택이 될 수 있습니다.상당히 빠르고 결과도 훌륭해 보입니다.다른 소프트웨어 내에서 사용할 수 있습니다.블렌더 3D 모델러.라이센스는 LPGL입니다.

서버 측 소프트웨어가 Python으로 작성되었고 원하는 3D 장면이 과학 데이터의 시각화라면 MayaVi2를 살펴보십시오. http://mayavi.sourceforge.net/, 그렇지 않은 경우 다음에서 찾아보세요. http://www.vrplumber.com/py3d.py

널리 인기 있는 POV-Ray를 제안하는 사람들은 이것이 API를 제공하는 라이브러리나 어떤 종류의 엔터티도 아니라는 점을 깨달아야 합니다.서버 측 프로세스는 텍스트 장면 파일을 작성하고, 올바른 옵션으로 POV-Ray를 실행하기 위한 새 프로세스를 실행하고, 결과 이미지 파일을 가져와야 합니다.특정 애플리케이션에 대해 설정하기 쉽고 다른 렌더러보다 POV-Ray에 대한 전문 지식이 더 많다면 그렇게 하십시오!

서버 측 렌더링은 클라이언트 렌더링을 위해 클라이언트에 설정된 데이터 다운로드가 너무 느리고 렌더링이 실시간으로 수행되지 않을 것으로 예상되는 등 장면이 엄청난 수의 객체로 구성된 경우에만 의미가 있습니다.다음과 같은 것을 사용하면 클라이언트 측 렌더링이 그리 어렵지 않습니다. 조깅 프로그레시브 장면 다운로드와 결합(예:전경 개체를 다운로드하고 렌더링한 다음 시점으로부터의 거리에 따라 개체를 점진적으로 다운로드하고 다시 렌더링합니다.

서버 측 렌더링을 실제로 수행하려면 웹 서버 부분과 렌더링 부분을 두 대의 컴퓨터로 분리하여 각각 해당 작업에 맞게 최적으로 구성할 수 있습니다(렌더러에는 OpenGL 카드, 최소 HD 및 충분한 RAM이 있고 서버에는 많은 양의 RAM이 있음). 빠른 디스크, 많은 RAM, 백업 및 OpenGL 없음).서버에 GPU가 없기 때문에 가상화된 서버에서 하드웨어 렌더링을 수행할 수 있을지 매우 의심됩니다.

확인해 보세요 wgpu.net.

나는 그것이 매우 도움이 된다고 생각한다.

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