Three.js ve React

Selim KURT
3 min readJul 30, 2024

--

Three.js Nedir?

Three.js, web tarayıcılarında 3D grafikler oluşturmak için kullanılan bir JavaScript kütüphanesidir. WebGL’nin üzerine bir katman ekleyerek, 3D modelleri, animasyonları ve etkileşimli grafik sahnelerini oluşturmayı ve yönetmeyi kolaylaştırır. Three.js, geometriler, ışıklar, materyaller, kameralar ve diğer grafik bileşenleri gibi temel unsurları sağlar, bu da geliştiricilere zengin 3D deneyimler yaratmada yardımcı olur.

React ile Three.js Kullanımı

React ve Three.js’i birlikte kullanmak, 3D grafiklerle zengin etkileşimli uygulamalar geliştirmeyi mümkün kılar. Bu entegrasyon genellikle, React bileşenleri içinde Three.js sahnelerini işlemek ve yönetmek için kullanılır. İşte React ile Three.js kullanımıyla ilgili temel bir örnek:

  1. Three.js ve React’i Kurulum:

Öncelikle, React projesi kurulur ve Three.js paketi eklenir:

npx create-react-app my-threejs-app
cd my-threejs-app
npm install three
  1. React Bileşeninde Three.js Kullanımı:
import React, { useRef, useEffect } from 'react';
import * as THREE from 'three';

const ThreeScene = () => {
const mountRef = useRef(null);

useEffect(() => {
// Scene, Camera ve Renderer oluşturma
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);

mountRef.current.appendChild(renderer.domElement);

// Geometri ve Materyal oluşturma
const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);

camera.position.z = 5;

// Animasyon döngüsü
const animate = function () {
requestAnimationFrame(animate);

cube.rotation.x += 0.01;
cube.rotation.y += 0.01;

renderer.render(scene, camera);
};

animate();

return () => {
mountRef.current.removeChild(renderer.domElement);
};
}, []);

return <div ref={mountRef}></div>;
};

export default ThreeScene;
Yukarıdaki kodta oluşturulan şekil

Bu örnekte, basit bir küp (cube) oluşturulup ekrana render ediliyor ve sürekli döndürülüyor. useRef ve useEffect hook'ları ile Three.js bileşenlerinin yaşam döngüsü yönetiliyor.

Three.js’in Avantajları

  • Etkileşimli ve Zengin 3D Deneyimler: Three.js, tarayıcı tabanlı 3D grafikler için kapsamlı bir API sağlar, bu da etkileşimli ve etkileyici deneyimler yaratmayı kolaylaştırır.
  • Geniş Topluluk ve Kaynaklar: Three.js, geniş bir topluluğa sahiptir ve birçok örnek, dökümantasyon ve üçüncü parti eklentiler mevcuttur.
  • React Entegrasyonu: React ile kolayca entegre edilebilir, bu da bileşen tabanlı bir yapı sunar ve yeniden kullanılabilirliği artırır.

Three.js’in Dezavantajları

  • Performans: Karmaşık 3D sahneler ve animasyonlar, performans sorunlarına neden olabilir. Özellikle mobil cihazlarda dikkatli optimizasyon gerekebilir.
  • Öğrenme Eğrisi: Three.js ve 3D grafiklerin genel konseptlerini anlamak başlangıçta zor olabilir, özellikle 3D matematik ve grafik render kavramlarına yabancı olanlar için.
  • Tarayıcı Uyumluluğu: WebGL desteklemeyen eski tarayıcılar veya cihazlarda çalışmaz.

React ve Three.js’i kullanarak, modern web uygulamalarında etkileyici ve etkileşimli 3D içerik oluşturmak mümkündür. Ancak, performans ve uyumluluk konularına dikkat etmek önemlidir.

Okuduğunuz için teşekkürler

Her zaman gelişmek için yer olduğunu anlıyorum. Lütfen düşüncelerinizi paylaşmaktan çekinmeyin.

--

--

Selim KURT
Selim KURT

Written by Selim KURT

Software Developer - Mobile & Web Developer #react #reactnative #nextjs #frontend #digitaltransformation #javascript

No responses yet