T ― Y

  • R3F(React-Three-Fiber)의 Plane Mesh를 주제로 평면 3D 오브젝트를 생성하고, 이를 활용한 인터랙션을 전시하는 페이지를 제작했습니다.
    이전의 Three.js 학습을 목표로 제작한 Particle Morphing 프로젝트를 구현하며 Vertices 기반의 인터랙션에 영감을 받아 제작하게 되었습니다.
  • Three.js Plane 메쉬의 정점(Vertices) 변형 애니메이션 구현 (R3F)
    • PlaneGeometry 메쉬를 생성하고 텍스처를 적용
    • Plane 버텍스 그리드를 생성하고 정점(vertices)의 z 축 위치를 실시간으로 변형하여 애니메이션 구현
    • Vertex와 Fragment 셰이더를 이용해 물결효과의 강도 · 속도 · 진폭을 설정하고, 컨트롤러를 통해 실시간으로 조절하며 시각적으로 확인 가능

Leva 컨트롤러를 통핸 강도, 속도, 진폭 조절

Plane Mesh의 와이어프레임 (버텍스 그리드)

  • 스크롤 기반 3D 메시 형태 오브젝트 형태 변형 (R3F, GSAP)

    • R3F(React-Three-Fiber)와 GSAP를 활용해 스크롤 위치에 따라 원통(Cylinder)에서 평면 형태로 부드럽게 변형

    • Cyliender Mesh의 정점(Vertices)을 스크롤에 따라 Plane 의 정점 위치로 변경하여 형태를 변형

    • 카메라 FOV와 캔버스 크기를 계산해 Plane 의 사이즈를 동적으로 설정

      wave-plane-transform.gif

  • 광원 반응효과: 화면의 하단에 스크롤 속도에 따라 광원 세기를 변화시켜 시각적 재미 요소를 추가

    • GSAP ScrollSmoother 를 활용하여 스크롤의 속도와 부드러움의 정도를 설정

    • 스크롤이 발생할 때, 스크롤의 속도에 따라 광원효과의 높이를 조절하여 역동적인 효과를 구현

    • 실제로 스크롤 방향이 순방향인 경우에만 광원효과를 노출

      wave-plane-light.gif