Three.js 3D: Claude Code 활용 가이드
three.js 3d: Claude Code 활용. 실용적인 팁과 코드 예시를 포함합니다.
Three.js 3D개발をClaude Code로 가속화하기
Three.jsはWebGL/WebGPUを扱いやすくラップした3D라이브러리です。3Dビジュアライゼーション、製品미리보기、インタラクティブ体験など幅広い用途に使えます。Claude Codeを활용すれば、3Dプ로그ラミング特有の複雑な数学やAPIも효율적으로扱えます。
基本シーンの구축
> Three.jsでライティング付きの基本シーン를 생성해줘。
> OrbitControlsでカメラ操作もできるようにして。
import * as THREE from 'three';
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
// シーン・カメラ・レンダラー
const scene = new THREE.Scene();
scene.background = new THREE.Color(0x1a1a2e);
const camera = new THREE.PerspectiveCamera(
75, window.innerWidth / window.innerHeight, 0.1, 1000
);
camera.position.set(5, 5, 5);
const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFSoftShadowMap;
document.body.appendChild(renderer.domElement);
// コントロール
const controls = new OrbitControls(camera, renderer.domElement);
controls.enableDamping = true;
// ライティング
const ambientLight = new THREE.AmbientLight(0x404040, 0.5);
scene.add(ambientLight);
const directionalLight = new THREE.DirectionalLight(0xffffff, 1);
directionalLight.position.set(10, 10, 5);
directionalLight.castShadow = true;
scene.add(directionalLight);
// 객체
const geometry = new THREE.TorusKnotGeometry(1, 0.3, 128, 32);
const material = new THREE.MeshStandardMaterial({
color: 0x6366f1,
metalness: 0.5,
roughness: 0.2,
});
const torusKnot = new THREE.Mesh(geometry, material);
torusKnot.castShadow = true;
scene.add(torusKnot);
// 床
const floorGeometry = new THREE.PlaneGeometry(20, 20);
const floorMaterial = new THREE.MeshStandardMaterial({ color: 0x333333 });
const floor = new THREE.Mesh(floorGeometry, floorMaterial);
floor.rotation.x = -Math.PI / 2;
floor.position.y = -2;
floor.receiveShadow = true;
scene.add(floor);
// 애니메이션ループ
function animate() {
requestAnimationFrame(animate);
torusKnot.rotation.x += 0.01;
torusKnot.rotation.y += 0.005;
controls.update();
renderer.render(scene, camera);
}
animate();
React Three Fiberで宣言的3D개발
> React Three Fiberで製品미리보기컴포넌트を作って。
> モデルの回転、ズーム、マテリアル전환를 구현해줘。
import { Canvas, useFrame } from '@react-three/fiber';
import { OrbitControls, Environment, useGLTF } from '@react-three/drei';
import { useRef, useState } from 'react';
import * as THREE from 'three';
function ProductModel({ color }: { color: string }) {
const meshRef = useRef<THREE.Mesh>(null);
const { scene } = useGLTF('/models/product.glb');
useFrame((state) => {
if (meshRef.current) {
meshRef.current.rotation.y =
Math.sin(state.clock.elapsedTime * 0.3) * 0.2;
}
});
return (
<mesh ref={meshRef}>
<primitive object={scene} />
<meshStandardMaterial color={color} />
</mesh>
);
}
export default function ProductViewer() {
const [color, setColor] = useState('#6366f1');
return (
<div style={{ height: '500px' }}>
<Canvas camera={{ position: [0, 2, 5], fov: 50 }}>
<ambientLight intensity={0.5} />
<spotLight position={[10, 10, 10]} angle={0.15} />
<ProductModel color={color} />
<OrbitControls
enablePan={false}
minDistance={3}
maxDistance={10}
/>
<Environment preset="studio" />
</Canvas>
<div className="flex gap-2 mt-4 justify-center">
{['#6366f1', '#ef4444', '#22c55e'].map((c) => (
<button
key={c}
onClick={() => setColor(c)}
style={{ backgroundColor: c, width: 32, height: 32 }}
/>
))}
</div>
</div>
);
}
シェーダーの커스터마이징
> グラデーション애니메이션のカスタムシェーダーを作って。
// vertexShader
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
// fragmentShader
uniform float uTime;
varying vec2 vUv;
void main() {
vec3 color1 = vec3(0.388, 0.400, 0.945);
vec3 color2 = vec3(0.933, 0.267, 0.267);
float mixer = sin(vUv.y * 3.14 + uTime) * 0.5 + 0.5;
vec3 color = mix(color1, color2, mixer);
gl_FragColor = vec4(color, 1.0);
}
성능최적화
Claude Code에3Dシーンの성능改善を依頼할 수 있습니다。
> 3Dシーンの성능を최적화して。
> ジオメトリの통합、LOD、インスタンシングを検討して。
主な최적화ポイントはジオメトリの結合(BufferGeometryUtils.mergeGeometries)、InstancedMesh에 의한同一객체の効率描画、テクスチャアトラスの使用です。
정리
Three.jsとClaude Codeの組み合わせで、複雑な3Dシーンの구축やシェーダー개발を효율적으로進められます。Canvas개발가이드や애니메이션구현도 참고하세요.
Three.js의 상세 정보는Three.js공식 문서를 참고하세요.
Claude Code 워크플로우를 한 단계 업그레이드하세요
지금 바로 Claude Code에 복사해 쓸 수 있는 검증된 프롬프트 템플릿 50선.
이 글을 작성한 사람
Masa
Claude Code를 적극 활용하는 엔지니어. 10개 언어, 2,000페이지 이상의 테크 미디어 claudecode-lab.com을 운영 중.
관련 글
Claude Code로 리팩토링을 자동화하는 방법
Claude Code를 활용해 코드 리팩토링을 효율적으로 자동화하는 방법을 알아봅니다. 실전 프롬프트와 구체적인 리팩토링 패턴을 소개합니다.
Claude Code로 사이드 프로젝트 개발 속도를 극대화하는 방법 [예제 포함]
Claude Code를 활용해 개인 프로젝트 개발 속도를 획기적으로 높이는 방법을 알아봅니다. 실전 예제와 아이디어부터 배포까지의 워크플로를 포함합니다.
Complete CORS Configuration Guide: Claude Code 활용 가이드
complete cors configuration guide: Claude Code 활용. 실용적인 팁과 코드 예시를 포함합니다.