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
#Three.js
#3D
#WebGL
#frontend
Related Posts
Use Cases
Use Cases
Claude Code로 리팩토링을 자동화하는 방법
Claude Code를 활용해 코드 리팩토링을 효율적으로 자동화하는 방법을 알아봅니다. 실전 프롬프트와 구체적인 리팩토링 패턴을 소개합니다.
Use Cases
Use Cases
Claude Code로 사이드 프로젝트 개발 속도를 극대화하는 방법 [예제 포함]
Claude Code를 활용해 개인 프로젝트 개발 속도를 획기적으로 높이는 방법을 알아봅니다. 실전 예제와 아이디어부터 배포까지의 워크플로를 포함합니다.
Use Cases
Use Cases
Complete CORS Configuration Guide: Claude Code 활용 가이드
complete cors configuration guide: Claude Code 활용. 실용적인 팁과 코드 예시를 포함합니다.