inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Web tương tác 3D bắt đầu với Three.js

Animation cơ bản

setAnimationLoop 위치가...

99

aska120

1 câu hỏi đã được viết

0

현재 애니메이션 기본 수업부터 scale까지 봤는데,

setAnimationLoop 가 draw 안에 등록되서 매번 반복으로 실행되는것 같은데,

화면갱신에 관련된 render만 반복시키고

setAnimationLoop는 바깥에서 한번만 등록하는게 옳은 방법이 아닌가 하고 의문이 드는데 어떤게 맞는건가요?

동작은 둘다 똑같이 되긴 합니다.

 

const draw = () => {
 /*
메쉬 애니메이션 처리 코드 들어갈 위치
...
*/

  renderer.render(scene, camera);
}

renderer.setAnimationLoop(draw);

blender 인터랙티브-웹 three.js

Câu trả lời 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

aska120님께서 질문하신 부분에 대해 설명드리겠습니다. setAnimationLoop는 WebGL 기반 애플리케이션에서 매우 중요한 함수로, 주로 애니메이션을 매 프레임마다 업데이트하기 위해 사용됩니다.

renderer.setAnimationLoop(draw);를 사용하면, draw 함수가 매 프레임마다 호출되면서 화면 갱신과 애니메이션 처리가 일어나게 됩니다. 이 방식은 애니메이션 루프를 WebGL API가 적절히 관리하도록 해서 효율성을 높입니다. 이를 이용하면 브라우저가 최적화된 방식으로 빈도 조절(ex. 탭이 비활성화된 경우 프레임을 멈춤)할 수 있게 해주므로 보다 동적이고 부드러운 사용자 경험을 제공할 수 있습니다.

setAnimationLoopdraw 바깥에서 설정하나요?

  • 최적화된 루프 관리: WebGL 자체가 제어하는 업데이트 루프를 활용합니다.
  • 관리용이: 하나의 장소에서 애니메이션 루프를 시작해, 코드의 흐름을 쉽게 파악할 수 있습니다.

setAnimationLoopdraw 함수 내부에 존재할 필요는 없습니다. setAnimationLoop는 기본적으로 한 번만 호출하여 루프를 설정하는 것이 일반적입니다. 해당 루프 내부에서 렌더링을 반복적으로 호출하여, 애니메이션이나 화면 갱신을 처리합니다.

이런 방식은 애니메이션 최적화와, 시스템 자원을 효율적으로 사용하기에 유리합니다.

관련한 질문과 답변 링크: 동작 방식에 대한 이해

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

box3.position.x 위치

0

38

1

리액트/next.js와 같이 사용하는 강의 계획은 없으신가요?

0

81

1

소스코드 파일이 강의랑 같나요?

0

119

2

materials 배열에 있는 top, bottom ... 들에 대해서

0

118

0

gltf 포맷 사용

0

243

1

점프 애니메이션 stop

0

127

2

사양에 따른 다른 결과

0

112

1

중복 질문 삭제

0

160

1

혹시 이 빛의 범위를 조절할 수 있는 방법이 있나요?

0

124

1

gltf.scene.children 이 없는데도 모델이 화면에 떠요

0

101

2

GLF파일 export한 후에 three.js에서 렌더링 된 모델에는 텍스처 적용이 안되어있습니다..!

0

160

1

일반 유리, 강화 유리 강의에서 Glass 객체의 position X를 -1, 1로 설정한 이유를 모르겠어요

0

77

0

그림자가 다르게 표현됩니다

0

138

1

얼굴 그릴 때 붓이 깔끔하게 칠해지지 않고 얼룩덜룩해요

0

135

1

블렌더 texture paint 시 미러모드

0

164

0

DragControls의 인자값을 바꾸지 않았는데 에러가 안떠요!

0

104

1

blender 에서 색칠하기 편 Texter paint slot추가없음

0

966

2

fin 버전도 그냥 실행이 안돼요

0

289

2

자바스크립트 실행이 안되는 것 같아요

0

380

1

모니터 해상도에 따라 mesh의 크기가 변할 수 있나요?

0

238

1

live server와 localhost:8080

0

345

1

material에 canvas 를 texture 로 넣는방법이 궁금해요

0

270

1

모바일 조이스틱은 어떻게 만들 수 있을까요?

0

208

1

징검다리 예제에서 SpotLight가 동작 오류

0

303

2