2017-04-27 10 views
0

질문 1 : 내 응용 프로그램에서 JsonLoader를 사용하여 약 65MB의 .js 형식으로 내 모델을로드하는 데 10 초 걸립니다. 그것은 우리를 위해 너무 길다. 큰 모델을로드하는 방법은 무엇입니까? 또는 더 나은 로더 또는 더 나은 포맷?ThreeJs에서 큰 모델을로드하는 가장 좋은 방법과 ThreeJs에서 캐시를 해제하는 방법

질문 2 : 제 경우에는 장면에서 모델을 제거하기 위해 remove() 함수를 사용했지만 캐시가 브라우저에서 즉시 해제되지 않습니다. 즉, 20 초 이상 소요됩니다. 내가 어떻게 할 수 있니? 이것은 내 코드입니다 : this.scene.remove (i); 나는 내 모델이다.

답변

0

JSON은 매우 무거운 형식입니다. OBJ 또는 glTF을 사용해보세요. THREE.js에는 각각의 예제에 대한 로더가 있습니다.

메모리 해제와 관련하여 가비지 수집을 사용하여 메모리를 해제하는 JavaScript에 고유합니다. (여기에 MDN article on JavaScript memory management이 있습니다.) Java와 마찬가지로이 문제는 "때때로 발생합니다."그래서 일어날 때까지 기다려야합니다.

+0

감사합니다. 나는 당신의 방법을 시도 할 것입니다. – JsonS

0

1 : 도 좋은 압축 형식이지만 단일 삼각형 메쉬로 제한됩니다. 따라서 전체 장면을 저장할 수는 없습니다. 그러나 매우 높은 압축률을 초래하는 손실 압축을 선택할 수도 있습니다. 예 three.js를 위해도 있습니다 https://threejs.org/examples/#webgl_loader_ctm

Q2 : 당신이 정말로 모델을 제거하려면 , 당신은 메모리에서 개체를 제거 지오메트리 객체에 dispose()를 호출해야합니다 (재료 및 질감 또한이 dispose 방법).

문서는 말 : https://threejs.org/docs/index.html#api/core/BufferGeometry

.dispose()

가 메모리에서 개체를 파기합니다.
응용 프로그램이 실행되는 동안 bufferGeometry가 제거되도록하려면이 함수를 호출해야합니다.

+0

'처분'으로 모든 텍스처와 재료를 지우는 것을 잊지 마십시오 :) – mjanisz1