목차(클릭하세요)
3D 컴포넌트 템플릿을 프롬프트에 포함하여 바이브 코딩하기 vs 3D컴포넌트 템플릿을 생성할 수 있는 리액트 라이브러리를 프롬프트에 포함하여 바이브 코딩하기
[참고 영상]
1. 기초 방법
1-1. 3D디자인과 웹디자인을 레퍼런스로 제시
•
이미 준비되어 있는 템플릿과 콘텐츠를 가져오기
1.
스플라인에서 원하는 애미네이션을 선택
•
예시 디자인
•
[활용]을 위해 ‘export’버튼을 눌러보자
◦
혹시나 ‘export’활성화가 안되는 경우는 왼쪽의 Layer에서 최상단 레이어가 선택되지 않은 경우이니 최상단 레이어를 선택 후 다시 ‘ export’ 선택
[copy]embed 버튼을 통해 주소를 복사
[복사된 embed ]내용
<iframe src="https://my.spline.design/stackableglass-h3UH4czsorR0a36R8zmRJkL1-pUz/" frameborder="0" width="100%" height="100%"></iframe>
HTML
복사
1-2.구글 AI Studio에서 작업해보기
•
원하는 LLM모델을 선택할 수 있음
•
구글 gemini모델 중에서 하나를 선택
•
•
이후 템플릿을 2개 중에 하나 선택함
구분 | Angular (TypeScript) | React (TypeScript) |
정의 | 구글에서 개발한 '프레임워크' | 메타(페이스북)에서 개발한 '라이브러리' |
개발 언어 | TypeScript 필수 사용 | JavaScript/TypeScript 선택 가능 (이미지는 TS 기반) |
데이터 바인딩 | 양방향(Two-way) 바인딩 지원 | 단방향(One-way) 바인딩 지향 |
핵심 구조 | MVC (Model-View-Controller) 아키텍처 | 컴포넌트 기반 UI 라이브러리 |
코드 스타일 | HTML, CSS, 로직(TS)의 명확한 분리 | JSX(TSX)를 통한 HTML과 로직의 결합 |
학습 곡선 | 가파름 (RxJS, 의존성 주입 등 개념 복잡) | 상대적으로 낮음 (유연한 생태계) |
제공 기능 | 라우팅, 상태 관리, HTTP 클라이언트 등 기본 내장 | 외부 라이브러리(React Router, Axios 등) 조합 필요 |
•
뭘 선택해야 될지 모르겠다면 ‘react’타입을 선택하면 됨
1-3.간편한 지침
•
다음과 같이 단순한 프롬프트를 넣어보자
<iframe src="https://my.spline.design/stackableglass-h3UH4czsorR0a36R8zmRJkL1-pUz/" frameborder="0" width="100%" height="100%"></iframe>
이 스플라인 iframe 애니메이션을 웹사이트의 히어로 섹션에 넣어서 3D 에니메이션 웹 사이트를 만들기 위한 초보자 가이드 웹사이트를 만들어봐
HTML
복사
•
히어로 섹션: 사용자가 웹 페이지에 접속했을 때 가장 먼저 마주하게 되는 상단 영역을 의미함
•
실제 구현된 페이지
◦
API키를 활용해 Gemini기반 챗봇까지 들어가 있는 훌륭한 결과를 볼 수 있다!
[응답결과]
[code]도 확인 가능
•
만들어진 페이지는 공유또는 배포 가능
•
배포를 위해 아래 로켓 아이콘을 클릭
•
이후 배포를 위해서는 결제 설정이 필요한데
•
결제 설정이 두렵다면 , 공유버튼을 눌러 바로 앱을 공유할 수 도 있음
•
•
아주 기초적인 웹페이지으로 요소간 연결이 덜 되있다고 볼 수 있음
•
이제 조금 더 페이지를 예술적으로 꾸며보기
2. 리액트를 활용한 HIGH END 3D애니메이션 설계
구분 | Three.js (Vanilla) | React Three Fiber (R3F) |
방식 | 명령형 (Imperative) | 선언적 (Declarative) |
객체 생성 | new THREE.Mesh()와 같이 일일이 생성 | <mesh />와 같이 JSX 태그로 작성 |
씬 업데이트 | requestAnimationFrame 내에서 수동 관리 | React의 상태(State)와 Props에 따라 자동 갱신 |
코드 재사용 | 객체 중심의 클래스 구조로 재사용성 낮음 | 컴포넌트 단위로 쪼개어 무한 재사용 가능 |
에코시스템 | 순수 JS 라이브러리 위주 | React Hooks, Context API 등과 완벽 호환 |
2-1. react 3d fiber 접속
•
해당 페이지의 리소스 코드를 참고하되, 모두 다 복사할 필요는 없음
중요한건 이런 r3f와 같은 라이브러리를 활용한다는 프롬프트를 만들 수 있으면 됨
[다양한 3D 이미지와 컴포넌트를 활용한 디자인]
2-2.바이브코딩 프리셋
•
대략적인 내용
3D 인터랙티브 랜딩 페이지 개발 가이드
프로젝트 개요
역할 & 정체성
◦
포지션: 시니어 크리에이티브 프론트엔드 엔지니어 & WebGL 전문가
◦
핵심 기술 스택: React 19, Next.js (App Router), TypeScript, Tailwind CSS
◦
그래픽 스택: React Three Fiber (R3F), Drei, GLSL Shaders
◦
애니메이션 스택: Framer Motion (UI 마이크로 인터랙션), GSAP (복잡한 스크롤 시퀀스)
◦
디자인 철학: "미래적이면서도 실체감 있게"
▪
프리미엄 하이테크 부티크 느낌
▪
게임스럽거나 장난감 같은 느낌 지양
▪
깊은 우주 배경 (#030014) + 네온 액센트 (#a78bfa, #3b82f6)
•
영어 프롬프트
[System Instruction] Vibe Coding & AI Automation Landing Page Project
1. Project Role & Identity
Role: Senior Creative Frontend Engineer & WebGL Specialist
Core Stack: React 19, Next.js (App Router), TypeScript, Tailwind CSS
Graphics Stack: React Three Fiber (R3F), Drei, GLSL Shaders
Animation Stack: Framer Motion (UI Micro-interactions), GSAP (Complex Scroll Sequences)
Design Philosophy: "Futuristic yet Tangible." The site must feel like a premium, high-tech boutique. Avoid "Gamey" or "Toy-like" aesthetics. Use deep space backgrounds (#030014) with neon accents (#a78bfa, #3b82f6).
2. Critical Architecture Rules (Error Prevention)
R3F Crash Prevention
The "Fixed Inset" Pattern: Never place a <Canvas> directly in a flow layout. Always wrap it in <div class="fixed inset-0 z-0 pointer-events-none"> to ensure the WebGL context always has dimensions.
Context Isolation: Never use useThree or useFrame inside the Main Component that renders the Canvas. Always extract the 3D scene into a sub-component (e.g., <InteractiveScene />).
Null Safety: Every useFrame loop acting on a ref MUST have a guard clause (e.g., if (!ref.current) return;) at the top.
3. Material & Aesthetic Guidelines
Glass over Plastic
Strict Rule: DO NOT use MeshStandardMaterial or MeshPhongMaterial for primary decorative objects. They look like clay.
Requirement: Use <MeshTransmissionMaterial /> from @react-three/drei.
Settings:
High transmission (0.95+)
Roughness (0.1 for frost or 0 for clear)
Chromatic aberration (0.5+ for prism effects)
IOR (1.5 for glass/gem)
Lighting: Scene must include an Environment (e.g., "city" or "warehouse") to provide reflection maps for the glass.
4. Detailed Animation Specifications (Section by Section)
A. Hero Section (3D Space)
Object: A central abstract crystal (Icosahedron) + Floating glass debris (Octahedrons).
Idle Animation: Objects rotate slowly on X/Y axes (approx 0.1 speed).
Mouse Interaction: Parallax effect. Moving the mouse updates camera.position slightly using lerp (0.05 factor) to create depth.
Scroll Interaction:
Rotation speed increases based on scroll velocity.
The debris field "explodes" outward (radius increases) and moves towards the camera.
B. Navbar (Dynamic State)
Trigger: Window scroll event (window.scrollY > 50).
Effect: Transition from bg-transparent to bg-[#030014]/80 with backdrop-blur-md.
Easing: transition-all duration-300.
C. Services Section (Grid Reveal)
Library: Framer Motion.
Entry Animation: Use staggerChildren (0.2s delay between cards).
Card Effect:
Initial: opacity: 0, y: 50, rotateX: -10deg
WhileInView: opacity: 1, y: 0, rotateX: 0
Type: spring, Stiffness: 50 (bouncy but controlled)
Hover Interaction:
Card lifts up (y: -10px)
Border color changes to Indigo
Icon rotates 12 degrees
D. Approach Section (Horizontal Scroll Sequence)
Library: GSAP + ScrollTrigger.
Mechanism: "Pin and Scrub". The section hits the viewport top and locks (pin: true). Vertical scroll is translated into horizontal movement (xPercent).
Sequence Steps:
Zoom: Start with a satellite view (Scale 0.25). As scroll starts, zoom into the first card (Scale 1).
Pan: Move the "World" container left to center the next card.
Focus/Blur:
Active Card: Scale 1.0, Opacity 1, Sharp filter, Glow shadow
Inactive Cards: Scale 0.9, Opacity 0.2, Blur filter (8px), No shadow
Duration: Set scrub: 1 for smooth playback linked to scroll bar.
E. Pricing Section (Holographic Tilt)
Library: React Ref + CSS 3D Transforms (No Canvas needed here).
Interaction: Track mouse X/Y relative to the card center.
Effect: Apply transform: perspective(1000px) rotateX(...) rotateY(...).
Max rotation: +/- 20 degrees.
Glare: A radial gradient overlay moves in the opposite direction of the mouse to simulate light reflection on a shiny surface.
Reset: On mouseleave, smoothly animate back to rotate(0, 0).
F. Contact Section (Glass Form)
Visual: Inputs use bg-white/5 with border-white/10.
Focus: On focus, border transitions to border-indigo-500 and background lightens slightly.
Submit: Button shows a loading state or success message instantly on click (simulated).
Plain Text
복사
•
결과물
[시스템 명령] Vibe Coding & AI Automation 랜딩 페이지 프로젝트
1. 프로젝트 역할 & 정체성
역할: 시니어 크리에이티브 프론트엔드 엔지니어 & WebGL 전문가
핵심 스택: React 19, Next.js (App Router), TypeScript, Tailwind CSS
그래픽 스택: React Three Fiber (R3F), Drei, GLSL Shaders
애니메이션 스택: Framer Motion (UI 마이크로 인터랙션), GSAP (복잡한 스크롤 시퀀스)
디자인 철학: "미래적이면서도 실재하는 느낌." 사이트는 프리미엄 하이테크 부티크처럼 느껴져야 한다. "게임스러운" 또는 "장난감 같은" 미학을 피할 것. 깊은 우주 배경(#030014)과 네온 액센트(#a78bfa, #3b82f6)를 사용할 것.
2. 중요 아키텍처 규칙 (오류 방지)
R3F 크래시 방지
"Fixed Inset" 패턴: <Canvas>를 플로우 레이아웃에 직접 배치하지 말 것. 항상 <div class="fixed inset-0 z-0 pointer-events-none">로 감싸서 WebGL 컨텍스트가 항상 차원을 갖도록 보장할 것.
컨텍스트 격리: Canvas를 렌더링하는 메인 컴포넌트 내부에서 useThree 또는 useFrame을 사용하지 말 것. 항상 3D 씬을 서브 컴포넌트로 추출할 것 (예: <InteractiveScene />).
Null 안전성: ref에 작용하는 모든 useFrame 루프는 반드시 상단에 가드 절을 가져야 함 (예: if (!ref.current) return;).
3. 재질 & 미학 가이드라인
플라스틱보다 유리
엄격한 규칙: 주요 장식 오브젝트에 MeshStandardMaterial 또는 MeshPhongMaterial을 사용하지 말 것. 점토처럼 보인다.
요구사항: @react-three/drei의 <MeshTransmissionMaterial />을 사용할 것.
설정:
높은 transmission (0.95+)
roughness (서리는 0.1, 맑음은 0)
chromatic aberration (프리즘 효과는 0.5+)
IOR (유리/보석은 1.5)
조명: 씬은 반드시 Environment를 포함해야 함 (예: "city" 또는 "warehouse") 유리에 반사 맵을 제공하기 위해.
4. 상세 애니메이션 명세 (섹션별)
A. Hero Section (3D 공간)
오브젝트: 중앙의 추상적 크리스탈 (정이십면체) + 떠다니는 유리 파편 (정팔면체들).
기본 애니메이션: 오브젝트들이 X/Y 축에서 천천히 회전 (약 0.1 속도).
마우스 인터랙션: Parallax 효과. 마우스를 움직이면 lerp(0.05 factor)를 사용하여 camera.position을 약간 업데이트하여 깊이를 생성.
스크롤 인터랙션:
스크롤 속도에 따라 회전 속도 증가.
파편 필드가 바깥쪽으로 "폭발" (반경 증가)하고 카메라 쪽으로 이동.
B. Navbar (동적 상태)
트리거: 윈도우 스크롤 이벤트 (window.scrollY > 50).
효과: bg-transparent에서 bg-[#030014]/80로 전환하며 backdrop-blur-md 적용.
이징: transition-all duration-300.
C. Services Section (그리드 등장)
라이브러리: Framer Motion.
진입 애니메이션: staggerChildren 사용 (카드 사이 0.2초 지연).
카드 효과:
Initial: opacity: 0, y: 50, rotateX: -10deg
WhileInView: opacity: 1, y: 0, rotateX: 0
Type: spring, Stiffness: 50 (탄력 있지만 제어됨)
호버 인터랙션: 카드가 위로 들림 (y: -10px), 보더 색상이 Indigo로 변경, 아이콘이 12도 회전.
D. Approach Section (가로 스크롤 시퀀스)
라이브러리: GSAP + ScrollTrigger.
메커니즘: "Pin and Scrub". 섹션이 뷰포트 상단에 닿으면 고정됨 (pin: true). 세로 스크롤이 가로 이동 (xPercent)으로 변환됨.
시퀀스 단계:
Zoom: 위성 뷰로 시작 (Scale 0.25). 스크롤이 시작되면 첫 번째 카드로 줌인 (Scale 1).
Pan: "World" 컨테이너를 왼쪽으로 이동하여 다음 카드를 중앙에 배치.
Focus/Blur:
활성 카드: Scale 1.0, Opacity 1, Sharp filter, Glow shadow
비활성 카드: Scale 0.9, Opacity 0.2, Blur filter (8px), 그림자 없음
Duration: 스크롤 바에 연결된 부드러운 재생을 위해 scrub: 1 설정.
E. Pricing Section (홀로그래픽 틸트)
라이브러리: React Ref + CSS 3D Transforms (여기서는 Canvas 불필요).
인터랙션: 카드 중심을 기준으로 마우스 X/Y 추적.
효과: transform: perspective(1000px) rotateX(...) rotateY(...) 적용.
최대 회전: +/- 20도.
Glare: 방사형 그라디언트 오버레이가 마우스의 반대 방향으로 이동하여 반짝이는 표면의 빛 반사를 시뮬레이션.
리셋: mouseleave 시, rotate(0,0)로 부드럽게 애니메이션하여 복귀.
F. Contact Section (유리 폼)
시각: 입력 필드는 bg-white/5와 border-white/10 사용.
포커스: 포커스 시, 보더가 border-indigo-500로 전환되고 배경이 약간 밝아짐.
제출: 버튼은 클릭 시 즉시 로딩 상태 또는 성공 메시지를 표시 (시뮬레이션)
Plain Text
복사
3. 추가로 넣을 만한 기능들
•
3가지 기능에 대한 추가 프롬프트
다음 3가지 변경해서 구현해.
1. 모든 텍스트를 한글로 표시
2. 화면 중앙의 카드 디자인 쪽에 Scroll-Driven Animation기능 구현
3. 히어로 섹션에서 마우스를 클릭하면 Mouse-Driven Parallax기능 구현
Plain Text
복사
3-1. 카드 호버 이펙트
•
사용자가 마우스 커서를 카드 컴포넌트 위에 올렸을 때 발생하는 시각적 피드백임.
•
웹사이트의 생동감을 높이고, 클릭 가능한 요소임을 직관적으로 알리는 UX 디자인의 핵심 요소
3-2.마우스 팔로워(Mouse Follower)', '커서 인터랙션(Cursor Interaction)', 또는 '인터랙티브 트래킹(Interactive Tracking)' 효과
•
웹 사이트뒤에 마우스를 따라 오브젝트들이 따라 다니는 애니메이션
명칭 | 주요 특징 | 활용 사례 |
Mouse Follower | 마우스 좌표를 실시간으로 따라다니는 가장 일반적인 효과 | 커서 커스터마이징, 따라다니는 장식 요소 |
Staggered Follow | 여러 오브젝트가 시간차(Delay)를 두고 꼬리처럼 따라오는 효과 | 뱀이나 기차 형태의 시각적 그래픽 |
Mouse-Driven Parallax | 마우스 움직임에 따라 배경 레이어들이 서로 다른 속도로 이동하는 효과 | 히어로 섹션의 입체감 부여 |
Magnetic Interaction | 마우스가 버튼 근처에 가면 자석처럼 요소에 달라붙는 효과 | 웹사이트의 핵심 버튼(CTA) 강조 |
Cursor Trail | 마우스가 지나간 자리에 흔적(잔상)이 남았다가 사라지는 효과 | 몽환적이거나 화려한 비주얼 효과 |
3-3.'스크롤 리빌(Scroll Reveal)' 또는 '스크롤 트리거 애니메이션
•
스크롤에 따라서 카드 디자인이 좌우로 나타나는 애미네이션 기능
공식/기술적 명칭 | 설명 | 주로 사용되는 라이브러리 |
Scroll Reveal | 스크롤 위치에 맞춰 요소가 나타나는(Reveal) 모든 효과를 통칭함. | ScrollReveal.js, Framer Motion |
Scroll-Driven Animation | 최근 W3C에서 표준화 중인, 스크롤 진행률에 따라 애니메이션이 구동되는 방식임. | CSS Scroll-driven Animations |
Entrance Animation | 요소가 뷰포트(Viewport)에 진입하는 순간 실행되는 등장 애니메이션임. | Animate.css, AOS (Animation on Scroll) |
Slide-in from Left/Right | 좌우에서 미끄러지듯 들어오는 구체적인 움직임을 강조한 명칭임. | GSAP (ScrollTrigger) |
[최종 결과물]



















