저는 three.js를 사용하기 시작했습니다. three.js 메인 웹 사이트에서 찾은 코드 조각을 사용하여 테스트를 수행했습니다.for 루프의 각 반복에서 three.js 기하학 렌더링을 강제 실행하려고 시도했습니다.
나는 내가 만든 방정식에 따라 루프 내에서 위치가 바뀌는 입자를 나타내는 기하학적 집합 (구)을 가지고 있습니다. 나는 이러한 종류의 코드를 통해 각 반복을 렌더링하기 위해 노력 :
function simulate() {
for (var j = 0 ; j < Nb ; j++) {
// update the geometries positions
...
render();
}
}
하지만 렌더링은, 대신이 모든 반복을 거쳐 시행 하였다 완료되지 않은, simulate
animate
기능을 입력 할 때
function animate() {
render();
requestAnimationFrame(animate);
}
실제로 크롬 브라우저의 자바 스크립트 콘솔에서 단계적으로 진행하면 렌더링이 수행됩니다.
function simulate() {
for (var j = 0 ; j < Nb ; j++) {
this.internalRenderingLoop = function() {
// update the objects shapes and locations
...
render();
requestAnimationFrame(this.internalRenderingLoop);
}
}
}
하지만이 중 하나가 작동하지 않았다 : 나는, 내 루프 내에서 그런 식으로 requestAnimationFrame
을 사용할 수 있도록
requestAnimationFrame
두 통화 사이의 충돌이
Uncaught Error: TYPE_MISMATCH_ERR: DOM Exception 17
그래서 질문이 이어지는이 :이 내 simulate
함수에서 각 반복에서 렌더링을 강제 할 수있는 방법을 또는 내 코드를 리팩토링해야하나요 있도록 각 호출 형상을 업데이트하려면 animate
또는 render
함수에서 위치를 업데이트 하시겠습니까?
그래도'animate'을 사용할 수 있습니까? 마우스 움직임을 사용하여 시뮬레이션의 최종 결과를 중심으로 회전 할 수 있기를 원합니다. – RockridgeKid
나는 그것이 무엇이든간에 (애니메이션이나 시뮬레이션은 중요하지 않은) 동일한 렌더링 루프 함수에서 모든 것을 갖는 것이 가장 좋을 것이라고 생각합니다. 시뮬레이션 코드를 animate()로 옮길 수 있고, if (j == Nb) {return; }'do'if (j
yaku
괜찮아! 그렇게 잘 작동합니다. 감사. – RockridgeKid