3js의 활성 장면을 json 객체로 변환해야합니다. 그러나 모델이 커짐에 따라 프로세스는 점점 더 많은 시간을 필요로합니다. 나도 같은 진행률 표시 줄을 표시 할 수 없습니다. 나는 3js 장면을 웹 작업자에게 보내고 작업자에게 json으로 변환하려고 시도했다. 그러나 저는 현장 객체를 작업자에게 보낼 수 없었습니다. 웹 작업자에게 세 장면을 보낼 수 있습니까? 또는 Object3d.toJSON()
에 대한 약속 기반 구현이 있습니까?웹 작업자에게 Object3d.toJSON() 작업을 오프로드 할 수 있습니까?
0
A
답변
4
웹 작업자에게 threejs 장면을 보낼 수 있습니까?
아니요. 작업자와의 데이터 교환은 ArrayBuffers와 구조적 복제 알고리즘을 사용하여 복사 할 수있는 것으로 제한됩니다. 그것은 매우 가능성이 높습니다. THREE 같은 객체에 대해서조차 작동하지 않을 것입니다. Scene 객체. 그러나 무엇을 시도 하든지 toJSON()과 같은 복잡성 순서로 된 모든 것이 모든 것을 노동자에게 가져 가야합니다.
Object3d.toJSON()에 대한 약속 기반 구현이 있습니까?
불행하게도 UI 스레드를 오랫동안 차단하지 않는 방식으로 동작시킬 수있는 방법은 없습니다.
그러나 대부분의 시간 (정확히 do you have huge texture-images maybe?)을 소비하고 대체 버전으로 THREE.Whatever.prototype.toJSON()
을 덮어 쓰면 이러한 것들을 현물 최적화하는 방법을 찾을 수 있습니다.
+0
네, 거대한 질감이 있습니다. json에 대한 이미지 내보내기를 피하기 위해 toJSON()을 수정하려고합니다. ;) 답변 주셔서 감사합니다. – HariV
약속 기반 솔루션은 도움이되지 않을 것입니다. 단지 지연을 넣을뿐입니다 (sic). 나는 당신의 질문을 다음과 같이 바꿔 줄 것을 제안한다. "어떻게'Object3d.toJSON' 작업을 웹 작업자에게 맡기거나 작은 부분으로 나누어 브라우저가 반응하는 동안 계속 반응 할 수있게 할 수 있을까요?" –
@ T.JCrowder, 어떻게 장면 개체를 작업자에게 보내지 않고 장면을 json으로 변환 할 수 있습니까? 여기서 나는 장면 개체를 작업자에게 보낼 수 없습니까? 어떤 방법을 제안 해 줄 수 있습니까? – HariV