2013-08-30 2 views
3

Three.js에서 올바른 객체 사용법에 대한 지침을 찾고 있습니다. 스트림에서 많은 양의 데이터를 읽고 애플리케이션 전체의 메모리에 데이터를 저장하지 않고도 렌더링 할 수 있습니다. 일생.Three.js로 스트림을 그리기

제 생각에 평범한 WebGL에서 이것은 gl_drawArray을 통해 이루어 지겠지만, Three.js 개체는이 동작을 나타 냅니까? 나는 ParticleSystem로 전달하기 전에 Geometry 노드에 모든 점을 배치 할 필요가로

ParticleSystem 개체를 사용

는, 데이터가 메모리에 배치됩니다, 그래서 나는이 적합하다 생각하지 않습니다.

도움을 주셔서 감사합니다.


편집 : 가 나는 몇 백만 x,y,z 항목을 읽고 공간에서 점으로 각 항목을 표시 할 필요가 명확합니다. 내가 지금 사용하고이 과정은 (짧은)입니다 :

var geometry = new THREE.Geometry(); 

while(hasMoreData){ 
    var vertex = new THREE.Vector3(x,y,z); 
    geometry.vertices.push(vertex); 
} 
sphere = new THREE.ParticleSystem(geometry, shaderMaterial); 
scene.add(sphere); 

이 프로세스를 사용하여 데이터가 기하 오브젝트를 구축 지속으로 내 메모리 소비가 약 1GB의 간다. 이 데이터를 메모리에서 지속시키지 않고 파일에서 읽는 방법이 있습니까?

+0

스트리밍하는 데이터의 종류에 대해 좀 더 자세히 설명해 주시겠습니까? 애니메이션의 여러 프레임? 사이에 버퍼를 지우지 않고 렌더 된 대형 모델의 기하학 하위 집합? gl_drawArray가 해결할 스트리밍 문제를 해결하기 위해 머리를 감쌀 수는 없습니다 ... 아마도 조금 더 설명 할 수 있다면 3 가지 방법을 찾아내는 데 도움이 될 수 있습니다. 당신의 개념적 접근. –

+0

Thanks @ Paul-Jan, 더 많은 정보를 담은 원본 게시물을 업데이트했습니다. – BlackBox

답변

3

이 스레드가 더 이상 대답을 얻지 못할 가능성이있는 경우, 되돌려 놓은 해결책은 THREE.Geometry 대신 THREE.BufferGeometry을 사용하여 GPU 메모리가 대신 사용됩니다. 이 접근 방식을 사용하면 약 300MB의 추가 메모리가 GPU에서 사용되어 RAM에서 사용 된 1GB보다 더 바람직합니다.

그러나 GPU 성능이 다른 접근 방식에 비해 FPS가 높기 때문에 다른 입력을 환영합니다.

+0

이 작업을 수행하는 데 사용한 코드를 보는 것이 매우 유용 할 것입니다. 사용할 수 있습니까? – foobarbecue

관련 문제