2012-12-23 10 views
6

headless 서버 (독립형 서버, Amazon AWS 또는 이와 유사한 서버)에서 서버 측에서 three.js를 실행하는 방법이 있습니까?서버 측 대체 렌더링

현재 저는 사용자 브라우저가 WebGL을 지원하지 않을 때 캔버스 렌더링 (성능상의 이유로 와이어 프레임)으로 돌아갑니다. 이것은 실시간 상호 작용에 충분하지만 앱이 이해하기 쉽도록하려면 사용자는 조명, 그림자, 후 처리 등이 포함 된 적절하게 렌더링 된 버전을 멋진 대기 시간과 함께 볼 수 있어야합니다.

그래서 ... 기능적인 three.js 인스턴스를 사용하여 서버 측 서비스를 만들 수 있습니까? 클라이언트는 여전히 tree.js 캔버스 와이어 프레임 렌더링을 사용하지만, 말하자면 ... 비활성 상태 인 경우 AJAX를 통해 서버 측 서비스에서 전체 렌더링을 요청하고 간단히 이미지로 오버레이합니다.

현재 응용 프로그램, 라이브러리 또는 그러한 것들을 허용 할 수있는 것들이 있습니까? (headless, 바람직하게는 Linux 서버에서 기능적 javascript + webgl + three.js, GPU가 적음)?

PhantomJS은 마음에 온다,하지만 분명히 아직 WebGL을 지원하지 않습니다 문제에 http://code.google.com/p/phantomjs/issues/detail?id=273

또는 어떤 다른 방법을? GPU와 표준 크롬/파이어 폭스 인스턴스로 전체 데스크톱 컴퓨터를 프로그래밍 방식으로 제어하는 ​​경로는 가능한 한 느껴지고 허술한 반면 소프트웨어 전용 솔루션이 있으면 정말 거기에 가고 싶지 않습니다. 이 스레드에서

답변

9

는, 구글이 메사를 사용하여 크롬 테스트를 실행할 수 있습니다 (스위치 --use-gl=osmesa를 통해 문제 97675 참조). 최신 메사의 소프트웨어 래스터 라이저는 LLVM을 사용하여 쉐이더를 변환하고 CPU에서 실행을 에뮬레이션하는 것을 포함하여 상당히 고급입니다. 첫 번째 모험은 메사 (Mesa)를 건축하고 Chromium을 건축 한 다음 함께 묶는 것입니다.

참고로 이것은 (가까운 장래에) PhantomJS 자체에 대한 계획이기도합니다. 특히 Qt는 그 방향으로 이동합니다. 즉, 자체 래스터 엔진 대신 Mesa/LLVMpipe 만 사용하기 때문입니다. The numbers 실제로 좋게 보입니다. 더 나아가 오프라인이 아닌 애니메이션 단일 샷 캡처의 경우 성능이 만족스럽지 않을 것입니다.

+0

이것은 정확히 내가 찾고있는 것입니다 (더 쉽게 사용할 수있는 옵션이없는 경우). 나는 Mesa 렌더러에 대한 Chromium 지원을 알지 못했습니다. PhantomJS에서 작업 할 경우 성공했으면 좋겠습니다. :) – yaku

+0

@yaku 메사 렌더러로 Chromium을 실행할 수 있었습니까? – frank

+0

@frank 아니, 내가하지 않았다. 할 수 없다는 말은 아니지만, 거대한 소프트웨어를 구축하고 조정하는 데 많은 경험이 없다는 것입니다. PhantomJS 또는 다른 기존 솔루션이 WebGL을 지원하는 경우 언제든지 다시 시도해보십시오. – yaku

1

일부 입력 : https://github.com/mrdoob/three.js/issues/2182

는 특히이 demo은 nodejs를 사용하여 서버 측에서 일부 이미지를 생성하는 방법을 보여줍니다.

감사합니다, 니코의 QA 인프라에서

+1

불행하게도 그것은 본다. 전체 WebGLRenderer 기능을 찾고 있는데, 가속화되지 않고 소프트웨어로 렌더링되었지만 (약 1FPS이면 충분합니다). 어떻게 든 node.js (또는 phantomjs)를 osmesa 나 llvmpipe (?)와 같은 소프트웨어 OpenGL 렌더러와 함께 사용하게 만드는 것이 길일지도 모르겠다. 그러나 나는 그것을 어디에서 시작해야할지 모르겠다. – yaku

0

아래 링크는 AWS의 문제를 해결하지는 못하지만 힌트를 제공 할 것입니다. 나는 유사한 아키텍처 응용 프로그램 작업과이 예제에서 함께하고

: 그것은 CanvasRenderer 단지처럼

Multiplayer game with realtime socket.io

My original question on similar architecture

+1

견적서를 보내주십시오. 연결된 페이지가 변경되면 응답이 무효화 될 수 있으므로 참조 링크의 필수 부분입니다. – DavidPostill

관련 문제