Animation 01 – 3D 로봇 스크롤 애니메이션 3D Mini Robot Scroll Animation

3D 로봇 스크롤 애니메이션 / 3D + three.js + GSAP

심플솔루션
- 2025년 04월 03일
Demo

3D Model from Sketchfab

 

1) 3D 로봇 만들기

3D는 보통 블렌더를 가장 많이 사용합니다.
무료고 다운로드 받아서 설치 후 사용하면 됩니다.
그런데 조금 어렵습니다. 3D쪽으로 나갈게 아니면 너무 시간을 소비하는건 좋지 않은거 같아요.

웹에서 디자인용으로 사용하려면,
Vectary, Spline 같은 좀 더 쉬운 툴을 사용하는게 좋은데,
이건 glb, gltf 파일 export하려면 유료입니다.
저같으면 상업용 프로젝트에 3D를 디자인적 요소나 기능 설명 요소로 넣는다면,
Spline을 사용할거 같습니다.

Skechfab 에서 무료 오브젝트를 가져와서 사용하는 방법도 가능합니다.
( CC BY – 출처 표기 / 상업적 이용 가능 )

 

2) 3D 오브젝트 올리기

미디어 라이브러리는 glb, gltf 파일 등록이 안됩니다.
MIME 플러그인을 설치해서 glb, gltf파일을 등록합니다.

 

3) Three.js 불러오기

3D 자바스크립트 라이브러리인 Three.js 를 불러옵니다.

방법1) function.php 파일에 추가 ( 추천 )
방법2) CDN으로 불러오기

 

4) Canvas 넣기

워드프레스에 html 또는 code 모듈로 canvas를 원하는 위치에 넣습니다.

방법1) canvas 를 렌더링해서 자동으로 넣는 방법

<div id="three-container"> 

const renderer = new THREE.WebGLRenderer();
document.getElementById("three-container").appendChild(renderer.domElement);

방법2) canvas를 코딩으로 직접 넣는 방법

<canvas id="myCanvas"></canvas>

const canvas = document.getElementById("myCanvas");
const renderer = new THREE.WebGLRenderer({ canvas });

5) Three.js 기본설정

Scene 만들고, render 설정해주기

const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );

const renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );

scene 만들고, camera 설정
render size 설정하고 원하는 html에 canvas 삽입

 

6) glb 모델 불러오기

const loader = new THREE.GLTFLoader();

oader.load(
  '/wp-content/uploads/2025/04/model.glb', 
  function (gltf) {
    const model = gltf.scene;
    scene.add(model);
    model.position.set(0, 0, 0);
  }
);

위치가 안맞을 경우에는 div 박스 만들어서 안으로 넣고 위치 맞춰야 합니다.

 

7) 모델에 애니메이션 주기

gsap.to(model.position, {
      x: 100,             
      duration: 2,      
      ease: "power2.inOut",
      });

이런식으로 애니메이션 주면 됩니다.
원하는 위치에 왔을때 움직이게 하려면 scroll trigger 주고 애니메이션 주면 됩니다.

 

8) Orbit Control 사용해서 클릭해서 모델 움직임 효과 주기

const controls = new THREE.OrbitControls(camera, renderer.domElement);
controls.enableDamping = true;
controls.enableZoom = false;

카메라 움직임으로 마치 모델이 움직이는 효과를 줄 수 있습니다.

 

3D 모델을 이용한 다양한 인터랙티브한 디자인이 가능합니다.

댓글 남기기