2008-09-15 8 views
7

저는 서버에서 간단한 3D 장면을 빠르게 렌더링하고 HTTP를 통해 JPEG로 반환해야하는 애플리케이션을 개발 중입니다.서버 측 3D 렌더링 용 API

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

내 질문은 기술이 렌더링을 수행하는 데 사용하는 무엇에 관한 것입니다 : 기본적으로, 내가 좋아하는 뭔가를 수행하여, HTML 페이지에서 동적 3D 장면을 단순히를 포함하는 수 있어야합니다. 데스크톱 애플리케이션에서는 DirectX를 자연스럽게 사용하지만 수십 또는 수백 명의 사용자를위한 이미지를 동시에 만들 수있는 서버 측 애플리케이션에는 이상적이지 않을 수 있습니다. 이 경험이있는 사람이 있습니까? 이 애플리케이션에 이상적인 3D API가 있습니까? 처음부터 소프트웨어 렌더러를 작성하는 것이 더 나은가?

DirectX 또는 OpenGL 사용에 대한 주요 관심사는 가상화 된 서버 환경에서 제대로 작동하는지, 그리고 약간의 제어 권한이있는 일반적인 서버 하드웨어에서 제대로 작동하는지 여부입니다.

답변

5

RealityServer by mental images는 여기에 설명 된 내용을 정확하게 반영하도록 고안되었습니다. 자세한 내용은 제품 페이지 (다운로드 가능한 Developer Edition 포함)에서 확인할 수 있습니다.

RealityServer docs

+1

링크가 작동하지 않습니다. – Soviut

+0

http://RealityServer.com은 올바른 링크입니다. –

+0

이 사이트에 대한 승인이 필요합니다 – Atrahasis

4

ID 가장 좋은 방법은 멈추지 않고 서버에서 실행중인 Direct3D/OpenGL 앱을 사용하는 것입니다. 서버 페이지가 렌더링 응용 프로그램에 요청을 보내고 렌더링 응용 프로그램이 jpg/png/무엇이든지 돌려 보내도록합니다.

  • Direct3D를/OpenGL은 하드웨어의 장면을 렌더링하기 위해 느린 경우, 소프트웨어 솔루션
  • 으로 렌더링 응용 프로그램을 계속 실행 악화 될 것입니다, 당신은 텍스처, 후방 버퍼를 생성/파괴의 오버 헤드를 피할 수있다, 버텍스 버퍼 등을 사용할 수 있습니다. 100 초의 단순한 장면을 잠재적으로 렌더링 할 수 있습니다.

그러나 많은 서버에는 그래픽 카드가 없습니다. Direct3D는 소프트웨어에서 상당히 쓸모가 없습니다. (Ms의 에뮬레이트 된 장치가 있지만 효과를 테스트하는 데만 유용합니다.) 소프트웨어에서는 OpenGL을 사용하지 않았습니다.

0

API가 아니라 렌더러입니다. Povray? 또한 http 인터페이스가있는 것 같습니다 ...

0

서버 렌더링은 클라이언트 렌더링을 위해 클라이언트에 데이터 세트를 다운로드하는 속도가 너무 느릴 정도로 많은 수의 개체로 구성되어있는 경우에만 의미가 있습니다 렌더링은 실시간으로 진행될 것으로 예상되지 않습니다. 프로그레시브 씬 다운로드 (예 : 전경 개체 다운로드 및 렌더링 후 시점에서 거리를 기준으로 점진적으로 개체 다운로드 및 다시 렌더링)와 결합 된 jogl과 같은 것을 사용하면 클라이언트 측 렌더링이 너무 어렵지 않습니다.

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

+1

OP가 서버에서 렌더링하려고하는 이유는이 질문을 발견 한 이유와 비슷합니다. 서버에 업로드 된 장면에서 축소판 또는 프레임 그래브를 렌더링하려고합니다. – Soviut

+0

서버 측 렌더링의 또 다른 이유는 보안입니다 (클라이언트 측 렌더링으로 인해 데이터가 메모리에 남을 수 있습니다). 민감한 데이터를 장치로 전송하지 않으려면 서버 쪽 렌더링을 사용하십시오. – CantrianBear

0

일반 3D 렌더링을 고려할 때 Yafaray (http://www.yafaray.org/)를 먼저 선택하는 것이 좋습니다. 합리적으로 빠르며 결과는 훌륭합니다. 다른 소프트웨어 내에서 사용할 수 있습니다 (예 : 블렌더 3D 모델러. 라이센스는 LPGL입니다.

서버 측 소프트웨어는 파이썬으로 작성하는 일,하고 원하는 3D 장면은 과학적 데이터의 시각화 경우, MayaVi2 http://mayavi.sourceforge.net/ 조사, 또는하지 않을 경우 http://www.vrplumber.com/py3d.py

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

0

서버 아키텍처가 이미 Java 기반 인 경우 Java3D (https://java3d.dev.java.net/)를 사용할 수도 있습니다.

3D 렌더링 하드웨어에서 동시에 요구되는 많은 서버 프로세스를 다룰 때 소프트웨어 전용 렌더링 솔루션을 사용하지 않는 것이 좋습니다. .

1

당신은 (여기 POSIX 및 Windows 빌드를 사용) POV-선을 포장 할 수있다. PHP의 예 : here

<?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와 같은 템플릿 언어를 사용하여 자신의 카메라 좌표를 삽입 할 수 있습니다.

-2

체크 아웃 wgpu.net.

매우 도움이된다고 생각합니다.

+0

으로 링크가 변경되었습니다.이 서비스는 아직 시작되지 않았습니다. 설명서 또는 API가 없으며 기술 데모 만 제공됩니다. 어떤면에서 도움이 되었습니까? –

+0

웹상에 3D 모델을 넣고 사용자가 볼 수있게 해주는 솔루션을 찾고 있습니다. 예를 들어 구입 :). 우리 회사의 주요 요구 사항은 모델을 확보하는 것입니다. 나는 그 (것)들에게 몇몇 질문을 썼다. 내가 사용하거나 심지어 일부를 구입할 솔루션을 찾고 있는데 내 서버에서 호스트. 나는 가격에 관하여 생각해 본다. – Magdalena

+1

이 페이지는 더 이상 작동하지 않습니다. – paqogomez