{"id":39060,"date":"2026-02-13T14:30:39","date_gmt":"2026-02-13T11:30:39","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/"},"modified":"2026-02-13T14:30:39","modified_gmt":"2026-02-13T11:30:39","slug":"three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/","title":{"rendered":"Three.js&#8217;e Ba\u015flang\u0131\u00e7 Rehberi: Web&#8217;de 3D D\u00fcnyas\u0131na Ad\u0131m At\u0131n"},"content":{"rendered":"<h2>Three.js&#8217;e Ba\u015flang\u0131\u00e7 Rehberi: Web&#8217;de 3D D\u00fcnyas\u0131na Ad\u0131m At\u0131n<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz web teknolojileri, statik sayfalar\u0131n \u00f6tesine ge\u00e7erek kullan\u0131c\u0131lara zengin ve etkile\u015fimli deneyimler sunma potansiyeli ta\u015f\u0131yor. Bu potansiyelin en heyecan verici alanlar\u0131ndan biri de hi\u00e7 \u015f\u00fcphesiz 3D grafikler. Web taray\u0131c\u0131lar\u0131 \u00fczerinde \u00fc\u00e7 boyutlu sahneler olu\u015fturmak, animasyonlar yapmak ve interaktif deneyimler sunmak i\u00e7in geli\u015ftirilen k\u00fct\u00fcphaneler aras\u0131nda Three.js, pop\u00fclerli\u011fi ve kullan\u0131m kolayl\u0131\u011f\u0131 ile \u00f6ne \u00e7\u0131k\u0131yor. Bu rehber, Three.js d\u00fcnyas\u0131na ad\u0131m atmak isteyen herkes i\u00e7in kapsaml\u0131 bir ba\u015flang\u0131\u00e7 noktas\u0131 sunmay\u0131 hedefliyor.<\/p>\n<h3>Three.js Nedir ve Neden Kullanmal\u0131y\u0131z?<\/h3>\n<p>Three.js, taray\u0131c\u0131 tabanl\u0131 3D grafikler olu\u015fturmak ve g\u00f6r\u00fcnt\u00fclemek i\u00e7in kullan\u0131lan, a\u00e7\u0131k kaynakl\u0131, hafif ve g\u00fc\u00e7l\u00fc bir JavaScript k\u00fct\u00fcphanesidir. WebGL API&#8217;sini daha eri\u015filebilir ve kullan\u0131m\u0131 kolay bir aray\u00fczle sararak, geli\u015ftiricilerin karma\u015f\u0131k 3D kavramlar\u0131yla u\u011fra\u015fmak yerine yarat\u0131c\u0131l\u0131klar\u0131na odaklanmalar\u0131n\u0131 sa\u011flar. Mimari g\u00f6rselle\u015ftirmelerden \u00fcr\u00fcn tan\u0131t\u0131mlar\u0131na, interaktif oyunlardan veri g\u00f6rselle\u015ftirmelerine kadar geni\u015f bir yelpazede kullan\u0131labilir.<\/p>\n<h4>WebGL ve Three.js \u0130li\u015fkisi<\/h4>\n<p>WebGL (Web Graphics Library), herhangi bir eklentiye ihtiya\u00e7 duymadan web taray\u0131c\u0131lar\u0131nda 3D grafikler olu\u015fturmak i\u00e7in kullan\u0131lan bir JavaScript API&#8217;sidir. Ancak WebGL ile do\u011frudan \u00e7al\u0131\u015fmak, d\u00fc\u015f\u00fck seviyeli programlama bilgisi ve karma\u015f\u0131k matematiksel hesaplamalar gerektirir. \u0130\u015fte burada Three.js devreye girer. Three.js, WebGL&#8217;in karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 soyutlayarak, geli\u015ftiricilerin sahne, kamera, \u0131\u015f\u0131kland\u0131rma, geometri ve malzeme gibi y\u00fcksek seviyeli kavramlarla \u00e7al\u0131\u015fmas\u0131na olanak tan\u0131r. K\u0131sacas\u0131, Three.js, WebGL&#8217;i kullanmay\u0131 \u00e7ok daha kolay ve h\u0131zl\u0131 hale getiren bir soyutlama katman\u0131d\u0131r.<\/p>\n<h4>Temel Avantajlar\u0131<\/h4>\n<ul>\n<li><strong>Kolay \u00d6\u011frenilebilirlik:<\/strong> JavaScript bilen herkesin rahatl\u0131kla adapte olabilece\u011fi bir yap\u0131ya sahiptir.<\/li>\n<li><strong>Geni\u015f Topluluk ve Dok\u00fcmantasyon:<\/strong> Aktif bir toplulu\u011fa ve kapsaml\u0131 bir dok\u00fcmantasyona sahiptir, bu da sorun \u00e7\u00f6zmeyi ve \u00f6\u011frenmeyi kolayla\u015ft\u0131r\u0131r.<\/li>\n<li><strong>Performans:<\/strong> WebGL&#8217;in g\u00fcc\u00fcn\u00fc kullanarak modern taray\u0131c\u0131larda y\u00fcksek performansl\u0131 3D deneyimleri sunar.<\/li>\n<li><strong>Esneklik:<\/strong> \u00c7ok \u00e7e\u015fitli 3D nesneleri, malzemeleri, \u0131\u015f\u0131kland\u0131rmalar\u0131 ve animasyonlar\u0131 destekler.<\/li>\n<li><strong>Eklenti Gerektirmez:<\/strong> Taray\u0131c\u0131da yerel olarak \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in herhangi bir ek yaz\u0131l\u0131m veya eklenti y\u00fcklemeye gerek yoktur.<\/li>\n<\/ul>\n<h4>Kullan\u0131m Alanlar\u0131<\/h4>\n<p>Three.js&#8217;in kullan\u0131m alanlar\u0131 hayal g\u00fcc\u00fcn\u00fczle s\u0131n\u0131rl\u0131d\u0131r. En yayg\u0131n kullan\u0131m senaryolar\u0131ndan baz\u0131lar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li>Etkile\u015fimli \u00fcr\u00fcn g\u00f6r\u00fcnt\u00fcleyicileri ve konfig\u00fcrat\u00f6rleri<\/li>\n<li>Mimari ve i\u00e7 mekan g\u00f6rselle\u015ftirmeleri<\/li>\n<li>Web tabanl\u0131 oyunlar ve sim\u00fclasyonlar<\/li>\n<li>Veri g\u00f6rselle\u015ftirmeleri (grafikler, haritalar)<\/li>\n<li>Sanal ve art\u0131r\u0131lm\u0131\u015f ger\u00e7eklik (VR\/AR) deneyimleri<\/li>\n<li>Sanatsal enstalasyonlar ve portf\u00f6y siteleri<\/li>\n<\/ul>\n<h3>Temel Three.js Bile\u015fenleri<\/h3>\n<p>Bir Three.js sahnesi olu\u015fturmak i\u00e7in birka\u00e7 temel bile\u015fene ihtiyac\u0131m\u0131z vard\u0131r. Bu bile\u015fenler, bir 3D d\u00fcnyas\u0131n\u0131 tan\u0131mlayan yap\u0131 ta\u015flar\u0131d\u0131r.<\/p>\n<h4>Sahne (Scene)<\/h4>\n<p>Sahne, 3D d\u00fcnyam\u0131z\u0131n kapsay\u0131c\u0131s\u0131d\u0131r. \u0130\u00e7ine t\u00fcm nesnelerimizi (modeller, \u0131\u015f\u0131klar, kameralar vb.) yerle\u015ftirdi\u011fimiz yerdir. Bir sahne olmadan hi\u00e7bir \u015fey g\u00f6r\u00fcnt\u00fcleyemeyiz.<\/p>\n<pre><code class=\"language-javascript\">const scene = new THREE.Scene();<\/pre>\n<p><\/code><\/p>\n<h4>Kamera (Camera)<\/h4>\n<p>Kamera, sahneyi hangi a\u00e7\u0131dan ve nas\u0131l g\u00f6rece\u011fimizi belirler. Three.js'te farkl\u0131 kamera t\u00fcrleri bulunur, ancak en yayg\u0131n kullan\u0131lan\u0131 <code>PerspectiveCamera<\/code>'d\u0131r. Bu kamera, insan g\u00f6z\u00fcn\u00fcn d\u00fcnyay\u0131 alg\u0131lad\u0131\u011f\u0131 gibi perspektif bir g\u00f6r\u00fcn\u00fcm sunar.<\/p>\n<pre><code class=\"language-javascript\">const camera = new THREE.PerspectiveCamera(75, window.innerWidth \/ window.innerHeight, 0.1, 1000);\n\/\/ \u0130lk parametre: G\u00f6r\u00fc\u015f alan\u0131 (FOV)\n\/\/ \u0130kinci parametre: En boy oran\u0131\n\/\/ \u00dc\u00e7\u00fcnc\u00fc parametre: Yak\u0131n k\u0131rpma d\u00fczlemi (near clipping plane)\n\/\/ D\u00f6rd\u00fcnc\u00fc parametre: Uzak k\u0131rpma d\u00fczlemi (far clipping plane)\ncamera.position.z = 5; \/\/ Kameray\u0131 geriye do\u011fru 5 birim ta\u015f\u0131\n<\/pre>\n<p><\/code><\/p>\n<h4>Renderer (Olu\u015fturucu)<\/h4>\n<p>Renderer, sahne ve kamera taraf\u0131ndan tan\u0131mlanan 3D d\u00fcnyas\u0131n\u0131 al\u0131p, bunu 2D piksel verilerine d\u00f6n\u00fc\u015ft\u00fcrerek taray\u0131c\u0131da g\u00f6r\u00fcnt\u00fclenmesini sa\u011flayan bile\u015fendir. Genellikle <code>WebGLRenderer<\/code> kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-javascript\">const renderer = new THREE.WebGLRenderer();\nrenderer.setSize(window.innerWidth, window.innerHeight); \/\/ Renderer boyutunu ayarla\ndocument.body.appendChild(renderer.domElement); \/\/ Olu\u015fturulan canvas'\u0131 HTML'e ekle\n<\/pre>\n<p><\/code><\/p>\n<h4>Geometri ve Malzeme (Geometry & Material)<\/h4>\n<p>3D nesneler, bir geometri ve bir malzemeden olu\u015fur. Geometri, nesnenin \u015feklini (noktalar, kenarlar, y\u00fczeyler) tan\u0131mlar. Malzeme ise nesnenin y\u00fczey \u00f6zelliklerini (renk, doku, parlakl\u0131k, saydaml\u0131k) belirler.<\/p>\n<pre><code class=\"language-javascript\">const geometry = new THREE.BoxGeometry(1, 1, 1); \/\/ 1x1x1 boyutunda bir k\u00fcp geometrisi\nconst material = new THREE.MeshBasicMaterial({ color: 0x00ff00 }); \/\/ Ye\u015fil renkli temel malzeme\nconst cube = new THREE.Mesh(geometry, material); \/\/ Geometri ve malzemeyi birle\u015ftirerek bir k\u00fcp nesnesi olu\u015ftur\nscene.add(cube); \/\/ K\u00fcp\u00fc sahneye ekle\n<\/pre>\n<p><\/code><\/p>\n<h3>\u0130lk Three.js Uygulaman\u0131z\u0131 Olu\u015fturma<\/h3>\n<p>\u015eimdi \u00f6\u011frendi\u011fimiz temel bile\u015fenleri bir araya getirerek basit bir Three.js uygulamas\u0131 olu\u015ftural\u0131m. Bu uygulama, ekranda d\u00f6nen ye\u015fil bir k\u00fcp g\u00f6sterecek.<\/p>\n<h4>Gerekli Kurulumlar<\/h4>\n<p>Three.js'i kullanmak i\u00e7in bir HTML dosyas\u0131 ve bir JavaScript dosyas\u0131na ihtiyac\u0131m\u0131z var. Three.js k\u00fct\u00fcphanesini projemize dahil etmenin en kolay yolu CDN (Content Delivery Network) kullanmakt\u0131r. HTML dosyan\u0131z\u0131n <code><body><\/code> etiketinin kapan\u0131\u015f\u0131ndan hemen \u00f6nce a\u015fa\u011f\u0131daki script etiketini ekleyin:<\/p>\n<pre><code class=\"language-html\"><script type=\"module\">\n    import * as THREE from 'https:\/\/unpkg.com\/three\/build\/three.module.js';\n    \/\/ Three.js kodunuz buraya gelecek\n<\/script>\n<\/pre>\n<p><\/code><\/p>\n<h4>Temel Sahne Kurulumu ve K\u00fcp Ekleme<\/h4>\n<p>HTML dosyan\u0131zda yukar\u0131daki script blo\u011funun i\u00e7ine a\u015fa\u011f\u0131daki JavaScript kodunu ekleyerek ilk sahnenizi olu\u015fturabilirsiniz:<\/p>\n<pre><code class=\"language-javascript\">import * as THREE from 'https:\/\/unpkg.com\/three\/build\/three.module.js';\n\n\/\/ 1. Sahneyi Olu\u015ftur\nconst scene = new THREE.Scene();\n\n\/\/ 2. Kameray\u0131 Olu\u015ftur\nconst camera = new THREE.PerspectiveCamera(75, window.innerWidth \/ window.innerHeight, 0.1, 1000);\ncamera.position.z = 5;\n\n\/\/ 3. Renderer'\u0131 Olu\u015ftur\nconst renderer = new THREE.WebGLRenderer();\nrenderer.setSize(window.innerWidth, window.innerHeight);\ndocument.body.appendChild(renderer.domElement);\n\n\/\/ 4. Geometri ve Malzeme Olu\u015ftur (K\u00fcp i\u00e7in)\nconst geometry = new THREE.BoxGeometry(1, 1, 1);\nconst material = new THREE.MeshBasicMaterial({ color: 0x00ff00 }); \/\/ Ye\u015fil k\u00fcp\nconst cube = new THREE.Mesh(geometry, material);\nscene.add(cube); \/\/ K\u00fcp\u00fc sahneye ekle\n\n\/\/ 5. Animasyon D\u00f6ng\u00fcs\u00fc\nfunction animate() {\n    requestAnimationFrame(animate); \/\/ Taray\u0131c\u0131ya bir sonraki kareyi \u00e7izmesini s\u00f6yle\n\n    cube.rotation.x += 0.01; \/\/ K\u00fcp\u00fc x ekseninde d\u00f6nd\u00fcr\n    cube.rotation.y += 0.01; \/\/ K\u00fcp\u00fc y ekseninde d\u00f6nd\u00fcr\n\n    renderer.render(scene, camera); \/\/ Sahneyi kameradan render et\n}\n\nanimate(); \/\/ Animasyon d\u00f6ng\u00fcs\u00fcn\u00fc ba\u015flat\n\n\/\/ Pencere boyutland\u0131\u011f\u0131nda rendereri ve kameray\u0131 g\u00fcncelle\nwindow.addEventListener('resize', () => {\n    camera.aspect = window.innerWidth \/ window.innerHeight;\n    camera.updateProjectionMatrix();\n    renderer.setSize(window.innerWidth, window.innerHeight);\n});\n<\/pre>\n<p><\/code><\/p>\n<p>Bu kod blo\u011fu, taray\u0131c\u0131n\u0131zda d\u00f6nen ye\u015fil bir k\u00fcp g\u00f6r\u00fcnt\u00fcleyecektir. <code>animate<\/code> fonksiyonu, taray\u0131c\u0131n\u0131n her yenileme d\u00f6ng\u00fcs\u00fcnde \u00e7a\u011fr\u0131lan bir d\u00f6ng\u00fcd\u00fcr ve burada nesnelerin pozisyonlar\u0131n\u0131, rotasyonlar\u0131n\u0131 veya di\u011fer \u00f6zelliklerini g\u00fcncelleyerek animasyonlar olu\u015ftururuz.<\/p>\n<h3>Etkile\u015fim ve Animasyon Ekleme<\/h3>\n<p>Statik bir 3D sahne olu\u015fturmak g\u00fczeldir, ancak Three.js'in ger\u00e7ek g\u00fcc\u00fc, etkile\u015fim ve animasyon yeteneklerinde yatar. Kullan\u0131c\u0131lar\u0131n sahneyle etkile\u015fime girmesini ve nesnelerin hareket etmesini sa\u011flayabiliriz.<\/p>\n<h4>Kamera Kontrolleri (OrbitControls)<\/h4>\n<p>Kullan\u0131c\u0131lar\u0131n sahneyi fare veya dokunmatik ekranla d\u00f6nd\u00fcrmesini, yak\u0131nla\u015ft\u0131rmas\u0131n\u0131 ve kayd\u0131rmas\u0131n\u0131 sa\u011flamak i\u00e7in Three.js'in <code>OrbitControls<\/code> mod\u00fcl\u00fcn\u00fc kullanabiliriz. Bu, kullan\u0131c\u0131 deneyimini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r.<\/p>\n<pre><code class=\"language-javascript\">import { OrbitControls } from 'https:\/\/unpkg.com\/three\/examples\/jsm\/controls\/OrbitControls.js';\n\n\/\/ ... (Sahne, kamera, renderer kurulumu) ...\n\nconst controls = new OrbitControls(camera, renderer.domElement);\n\/\/ controls.enableDamping = true; \/\/ Daha p\u00fcr\u00fczs\u00fcz hareket i\u00e7in\n\/\/ controls.dampingFactor = 0.25;\n\nfunction animate() {\n    requestAnimationFrame(animate);\n\n    \/\/ controls.update(); \/\/ enableDamping kullan\u0131yorsan\u0131z bunu \u00e7a\u011f\u0131rman\u0131z gerekir\n\n    renderer.render(scene, camera);\n}\nanimate();\n<\/pre>\n<p><\/code><\/p>\n<h4>Nesneleri Canland\u0131rma (Animation Loop)<\/h4>\n<p>Yukar\u0131daki k\u00fcp \u00f6rne\u011finde g\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi, <code>requestAnimationFrame<\/code> kullanarak bir animasyon d\u00f6ng\u00fcs\u00fc olu\u015ftururuz. Bu d\u00f6ng\u00fc i\u00e7inde nesnelerin \u00f6zelliklerini (pozisyon, rotasyon, \u00f6l\u00e7ek) zamanla de\u011fi\u015ftirerek animasyonlar yarat\u0131r\u0131z. \u00d6rne\u011fin, bir nesneyi bir y\u00f6r\u00fcnge etraf\u0131nda d\u00f6nd\u00fcrmek veya belirli bir y\u00f6ne hareket ettirmek i\u00e7in her karede bu \u00f6zellikleri g\u00fcncelleyebiliriz.<\/p>\n<h4>Kullan\u0131c\u0131 Etkile\u015fimleri (Mouse Olaylar\u0131)<\/h4>\n<p>Three.js, fare t\u0131klamalar\u0131 veya fare hareketleri gibi kullan\u0131c\u0131 etkile\u015fimlerini alg\u0131lamak i\u00e7in <code>Raycaster<\/code> nesnesini kullan\u0131r. Bu sayede, sahnedeki belirli bir nesneye t\u0131klan\u0131p t\u0131klanmad\u0131\u011f\u0131n\u0131 kontrol edebilir ve buna g\u00f6re tepkiler verebiliriz. \u00d6rne\u011fin, bir k\u00fcpe t\u0131kland\u0131\u011f\u0131nda rengini de\u011fi\u015ftirebiliriz.<\/p>\n<pre><code class=\"language-javascript\">const raycaster = new THREE.Raycaster();\nconst mouse = new THREE.Vector2();\n\nfunction onMouseMove(event) {\n    \/\/ Fare koordinatlar\u0131n\u0131 normalle\u015ftir (-1 ile +1 aras\u0131)\n    mouse.x = (event.clientX \/ window.innerWidth) * 2 - 1;\n    mouse.y = - (event.clientY \/ window.innerHeight) * 2 + 1;\n}\n\nwindow.addEventListener('mousemove', onMouseMove, false);\n\nfunction animate() {\n    requestAnimationFrame(animate);\n\n    \/\/ Raycaster'\u0131 g\u00fcncelle ve kesi\u015fen nesneleri bul\n    raycaster.setFromCamera(mouse, camera);\n    const intersects = raycaster.intersectObjects(scene.children);\n\n    \/\/ Kesi\u015fen nesneler varsa, \u00f6rne\u011fin rengini de\u011fi\u015ftir\n    if (intersects.length > 0) {\n        if (intersects[0].object.material.color.getHex() !== 0xff0000) {\n            intersects[0].object.material.color.set(0xff0000); \/\/ K\u0131rm\u0131z\u0131 yap\n        }\n    } else {\n        \/\/ Kesi\u015fme yoksa orijinal rengine d\u00f6nd\u00fcr\n        \/\/ Bu k\u0131s\u0131m, t\u00fcm nesnelerin orijinal rengini tutmay\u0131 gerektirir\n        \/\/ Basitlik ad\u0131na burada atlanm\u0131\u015ft\u0131r, ancak ger\u00e7ek uygulamalarda y\u00f6netilmelidir.\n    }\n\n    renderer.render(scene, camera);\n}\n<\/pre>\n<p><\/code><\/p>\n<h3>I\u015f\u0131kland\u0131rma ve G\u00f6lgeler<\/h3>\n<p>Ger\u00e7ek\u00e7i bir 3D sahne olu\u015fturman\u0131n olmazsa olmaz\u0131 \u0131\u015f\u0131kland\u0131rmad\u0131r. I\u015f\u0131klar, nesnelerin nas\u0131l g\u00f6r\u00fcnd\u00fc\u011f\u00fcn\u00fc, g\u00f6lgelerin nas\u0131l d\u00fc\u015ft\u00fc\u011f\u00fcn\u00fc ve sahnenin genel atmosferini belirler. Three.js \u00e7e\u015fitli \u0131\u015f\u0131k t\u00fcrleri sunar.<\/p>\n<h4>I\u015f\u0131k T\u00fcrleri<\/h4>\n<p>Three.js'te yayg\u0131n olarak kullan\u0131lan \u0131\u015f\u0131k t\u00fcrleri \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>AmbientLight (Ortam I\u015f\u0131\u011f\u0131):<\/strong> Sahnedeki t\u00fcm nesneleri e\u015fit \u015fekilde ayd\u0131nlat\u0131r, g\u00f6lge olu\u015fturmaz. Genel bir ayd\u0131nlatma sa\u011flar.<\/li>\n<li><strong>DirectionalLight (Y\u00f6nl\u00fc I\u015f\u0131k):<\/strong> G\u00fcne\u015f \u0131\u015f\u0131\u011f\u0131 gibi, belirli bir y\u00f6nden gelen paralel \u0131\u015f\u0131k demetlerini sim\u00fcle eder. G\u00f6lgeler olu\u015fturabilir.<\/li>\n<li><strong>PointLight (Nokta I\u015f\u0131\u011f\u0131):<\/strong> Bir ampul gibi, tek bir noktadan her y\u00f6ne yay\u0131lan \u0131\u015f\u0131\u011f\u0131 sim\u00fcle eder. G\u00f6lgeler olu\u015fturabilir.<\/li>\n<li><strong>SpotLight (Spot I\u015f\u0131\u011f\u0131):<\/strong> Bir el feneri gibi, konik bir \u0131\u015f\u0131k demeti yayar. G\u00f6lgeler olu\u015fturabilir ve hedeflenebilir.<\/li>\n<li><strong>HemisphereLight (Yar\u0131m K\u00fcre I\u015f\u0131\u011f\u0131):<\/strong> G\u00f6ky\u00fcz\u00fc ve yer gibi iki farkl\u0131 renkte \u0131\u015f\u0131k kayna\u011f\u0131 sa\u011flar, d\u0131\u015f mekan sahneleri i\u00e7in idealdir.<\/li>\n<\/ul>\n<pre><code class=\"language-javascript\">const ambientLight = new THREE.AmbientLight(0x404040); \/\/ Yumu\u015fak beyaz ortam \u0131\u015f\u0131\u011f\u0131\nscene.add(ambientLight);\n\nconst directionalLight = new THREE.DirectionalLight(0xffffff, 1); \/\/ Beyaz y\u00f6nl\u00fc \u0131\u015f\u0131k\ndirectionalLight.position.set(5, 10, 7);\nscene.add(directionalLight);\n<\/pre>\n<p><\/code><\/p>\n<h4>G\u00f6lgeleri Etkinle\u015ftirme<\/h4>\n<p>G\u00f6lgeler, 3D sahnelerin derinli\u011fini ve ger\u00e7ek\u00e7ili\u011fini art\u0131ran kritik bir unsurdur. Three.js'te g\u00f6lgeleri etkinle\u015ftirmek i\u00e7in renderer, \u0131\u015f\u0131k ve g\u00f6lge olu\u015fturan nesnelerde baz\u0131 ayarlamalar yapmam\u0131z gerekir.<\/p>\n<ol>\n<li><strong>Renderer'da G\u00f6lgeleri Etkinle\u015ftir:<\/strong>\n<pre><code class=\"language-javascript\">renderer.shadowMap.enabled = true;<\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>I\u015f\u0131k Kayna\u011f\u0131nda G\u00f6lgeleri Etkinle\u015ftir:<\/strong> (DirectionalLight, PointLight, SpotLight i\u00e7in)\n<pre><code class=\"language-javascript\">directionalLight.castShadow = true;<\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>G\u00f6lge Yapan Nesnelerde G\u00f6lgeleri Etkinle\u015ftir:<\/strong>\n<pre><code class=\"language-javascript\">cube.castShadow = true; \/\/ Bu nesne g\u00f6lge yaps\u0131n<\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>G\u00f6lge Alan Nesnelerde G\u00f6lgeleri Etkinle\u015ftir:<\/strong> (Genellikle zemin)\n<pre><code class=\"language-javascript\">plane.receiveShadow = true; \/\/ Bu nesne g\u00f6lge als\u0131n<\/pre>\n<p><\/code>\n    <\/li>\n<\/ol>\n<h4>Ger\u00e7ek\u00e7i G\u00f6r\u00fcn\u00fcmler \u0130\u00e7in \u0130pu\u00e7lar\u0131<\/h4>\n<ul>\n<li>Birden fazla \u0131\u015f\u0131k kayna\u011f\u0131 kullanarak sahnenizi daha dinamik hale getirin.<\/li>\n<li>Farkl\u0131 \u0131\u015f\u0131k renkleri ve yo\u011funluklar\u0131 ile atmosfer yarat\u0131n.<\/li>\n<li>G\u00f6lgeleri do\u011fru bir \u015fekilde ayarlamak, sahnenin derinli\u011fini ve nesnelerin konumunu daha iyi anlaman\u0131z\u0131 sa\u011flar.<\/li>\n<li>Fiziksel Tabanl\u0131 \u0130\u015fleme (PBR) malzemeleri (<code>MeshStandardMaterial<\/code> veya <code>MeshPhysicalMaterial<\/code>) kullanarak \u0131\u015f\u0131\u011f\u0131n nesnelerle daha ger\u00e7ek\u00e7i etkile\u015fimini sa\u011flay\u0131n.<\/li>\n<\/ul>\n<h3>Doku ve Malzemelerle \u00c7al\u0131\u015fma<\/h3>\n<p>Nesnelerin sadece tek bir renkte olmas\u0131 genellikle yeterli de\u011fildir. Dokular ve geli\u015fmi\u015f malzemeler kullanarak nesnelerimize detay, ger\u00e7ek\u00e7ilik ve karakter katabiliriz.<\/p>\n<h4>Temel Malzeme T\u00fcrleri<\/h4>\n<p>Three.js, farkl\u0131 g\u00f6rsel \u00f6zelliklere sahip \u00e7e\u015fitli malzeme t\u00fcrleri sunar:<\/p>\n<ul>\n<li><strong>MeshBasicMaterial:<\/strong> En basit malzemedir. I\u015f\u0131ktan etkilenmez, d\u00fcz bir renkte veya dokuyla g\u00f6r\u00fcn\u00fcr.<\/li>\n<li><strong>MeshLambertMaterial:<\/strong> I\u015f\u0131ktan etkilenir, ancak parlakl\u0131k (specular) \u00f6zelli\u011fi yoktur. D\u00fc\u015f\u00fck performansl\u0131 cihazlar i\u00e7in iyi bir se\u00e7enektir.<\/li>\n<li><strong>MeshPhongMaterial:<\/strong> I\u015f\u0131ktan etkilenir ve parlakl\u0131k \u00f6zelli\u011fi vard\u0131r. Metalik veya parlak y\u00fczeyler i\u00e7in uygundur.<\/li>\n<li><strong>MeshStandardMaterial \/ MeshPhysicalMaterial:<\/strong> Fiziksel Tabanl\u0131 \u0130\u015fleme (PBR) prensiplerine dayan\u0131r. Ger\u00e7ek\u00e7i \u0131\u015f\u0131k etkile\u015fimleri ve detayl\u0131 y\u00fczey \u00f6zellikleri (metaliklik, p\u00fcr\u00fczl\u00fcl\u00fck, \u015feffafl\u0131k) sunar. Modern ve ger\u00e7ek\u00e7i sahneler i\u00e7in tercih edilir.<\/li>\n<\/ul>\n<h4>Doku (Texture) Uygulama<\/h4>\n<p>Dokular, bir resmin 3D nesnenin y\u00fczeyine kaplanmas\u0131d\u0131r. Bu, nesnelere detay, renk ve desen eklemenin en yayg\u0131n yoludur.<\/p>\n<pre><code class=\"language-javascript\">const textureLoader = new THREE.TextureLoader();\nconst texture = textureLoader.load('path\/to\/your\/image.jpg');\n\nconst materialWithTexture = new THREE.MeshBasicMaterial({ map: texture });\nconst cubeWithTexture = new THREE.Mesh(geometry, materialWithTexture);\nscene.add(cubeWithTexture);\n<\/pre>\n<p><\/code><\/p>\n<p>Bir nesneye birden fazla doku uygulayarak (\u00f6rne\u011fin, renk dokusu, normal harita, p\u00fcr\u00fczl\u00fcl\u00fck haritas\u0131) \u00e7ok daha ger\u00e7ek\u00e7i g\u00f6r\u00fcn\u00fcmler elde edebiliriz.<\/p>\n<h4>PBR (Fiziksel Tabanl\u0131 \u0130\u015fleme) Kavram\u0131<\/h4>\n<p>PBR, \u0131\u015f\u0131\u011f\u0131n fiziksel d\u00fcnyada malzemelerle nas\u0131l etkile\u015fime girdi\u011fini sim\u00fcle eden bir render metodolojisidir. <code>MeshStandardMaterial<\/code> ve <code>MeshPhysicalMaterial<\/code>, bu prensipleri uygulayarak metaliklik, p\u00fcr\u00fczl\u00fcl\u00fck, yans\u0131t\u0131c\u0131l\u0131k gibi parametrelerle ger\u00e7ek\u00e7i y\u00fczeyler olu\u015fturman\u0131za olanak tan\u0131r. Bu, \u00f6zellikle oyunlar ve mimari g\u00f6rselle\u015ftirmeler gibi y\u00fcksek kaliteli grafiklerin istendi\u011fi uygulamalarda kritik \u00f6neme sahiptir.<\/p>\n<h3>Performans Optimizasyonu ve \u0130pu\u00e7lar\u0131<\/h3>\n<p>Karma\u015f\u0131k 3D sahneler olu\u015ftururken performans\u0131 g\u00f6z \u00f6n\u00fcnde bulundurmak \u00f6nemlidir. Ak\u0131c\u0131 bir kullan\u0131c\u0131 deneyimi i\u00e7in optimizasyon teknikleri uygulamak gerekebilir.<\/p>\n<h4>Geometri ve Malzeme Y\u00f6netimi<\/h4>\n<ul>\n<li><strong>Geometrileri Birle\u015ftirme:<\/strong> Ayn\u0131 malzemeye sahip birden fazla k\u00fc\u00e7\u00fck nesneyi tek bir geometriye birle\u015ftirerek \u00e7izim \u00e7a\u011fr\u0131s\u0131 (draw call) say\u0131s\u0131n\u0131 azalt\u0131n.<\/li>\n<li><strong>BufferGeometry Kullan\u0131m\u0131:<\/strong> Three.js'in modern ve daha verimli <code>BufferGeometry<\/code> s\u0131n\u0131flar\u0131n\u0131 tercih edin.<\/li>\n<li><strong>Malzeme Payla\u015f\u0131m\u0131:<\/strong> M\u00fcmk\u00fcn oldu\u011funca ayn\u0131 malzemeyi birden fazla nesne i\u00e7in kullan\u0131n. Her nesne i\u00e7in yeni bir malzeme olu\u015fturmak yerine, ayn\u0131 malzeme \u00f6rne\u011fini yeniden kullan\u0131n.<\/li>\n<li><strong>Gereksiz Geometrilerden Ka\u00e7\u0131nma:<\/strong> Sahnenizde g\u00f6r\u00fcnmeyen veya \u00e7ok k\u00fc\u00e7\u00fck olan nesnelerin geometrilerini basitle\u015ftirin veya kald\u0131r\u0131n.<\/li>\n<\/ul>\n<h4>Bellek Kullan\u0131m\u0131n\u0131 Azaltma<\/h4>\n<ul>\n<li><strong>Nesneleri Temizleme:<\/strong> Sahneden kald\u0131rd\u0131\u011f\u0131n\u0131z nesnelerin geometrilerini, malzemelerini ve dokular\u0131n\u0131 <code>dispose()<\/code> metoduyla bellekten temizleyin. Bu, \u00f6zellikle dinamik olarak nesne ekleyip \u00e7\u0131kard\u0131\u011f\u0131n\u0131z uygulamalarda \u00f6nemlidir.<\/li>\n<li><strong>Doku Boyutlar\u0131:<\/strong> Dokular\u0131n boyutlar\u0131n\u0131 optimize edin. Gereksiz yere y\u00fcksek \u00e7\u00f6z\u00fcn\u00fcrl\u00fckl\u00fc dokular kullanmaktan ka\u00e7\u0131n\u0131n.<\/li>\n<\/ul>\n<h4>LOD (Level of Detail)<\/h4>\n<p>LOD, kameradan uzakla\u015ft\u0131k\u00e7a nesnelerin daha basit versiyonlar\u0131n\u0131 g\u00f6r\u00fcnt\u00fcleyerek performans\u0131 art\u0131ran bir tekniktir. Three.js'in <code>LOD<\/code> s\u0131n\u0131f\u0131 ile bunu kolayca uygulayabilirsiniz. Yak\u0131ndaki nesneler detayl\u0131, uzaktaki nesneler ise daha az detayl\u0131 geometrilerle render edilir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Three.js, web \u00fczerinde 3D grafikler olu\u015fturmak i\u00e7in inan\u0131lmaz derecede g\u00fc\u00e7l\u00fc ve esnek bir ara\u00e7t\u0131r. Bu rehber, Three.js'in temel kavramlar\u0131n\u0131, bile\u015fenlerini ve ilk uygulaman\u0131z\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m g\u00f6stererek size bir ba\u015flang\u0131\u00e7 noktas\u0131 sunmay\u0131 ama\u00e7lad\u0131. Sahne, kamera, renderer, geometri, malzeme, \u0131\u015f\u0131kland\u0131rma ve animasyon gibi temel ta\u015flar\u0131 anlad\u0131\u011f\u0131n\u0131zda, hayal g\u00fcc\u00fcn\u00fcz\u00fc kullanarak s\u0131n\u0131rs\u0131z 3D deneyimleri yaratmaya ba\u015flayabilirsiniz. Web'in gelece\u011fi 3D ve etkile\u015fimli deneyimlerle \u015fekilleniyor, Three.js bu gelece\u011fin kap\u0131lar\u0131n\u0131 aralayan anahtarlardan biri. \u015eimdi s\u0131ra sizde; kodlamaya ba\u015flay\u0131n ve kendi 3D d\u00fcnyalar\u0131n\u0131z\u0131 in\u015fa edin!<\/p>\n<h3>SSS (S\u0131k Sorulan Sorular)<\/h3>\n<h4>Three.js'e alternatif k\u00fct\u00fcphaneler var m\u0131?<\/h4>\n<p>Evet, Three.js'e alternatif olarak Babylon.js, PlayCanvas gibi k\u00fct\u00fcphaneler ve Unity WebGL, Unreal Engine WebGL gibi oyun motorlar\u0131n\u0131n web \u00e7\u0131kt\u0131lar\u0131 bulunmaktad\u0131r. Her birinin kendine g\u00f6re avantajlar\u0131 ve kullan\u0131m senaryolar\u0131 vard\u0131r.<\/p>\n<h4>Three.js karma\u015f\u0131k oyunlar i\u00e7in uygun mu?<\/h4>\n<p>Three.js, taray\u0131c\u0131 tabanl\u0131 basit ve orta karma\u015f\u0131kl\u0131ktaki oyunlar i\u00e7in olduk\u00e7a uygundur. Ancak \u00e7ok y\u00fcksek grafik kalitesi ve fizik sim\u00fclasyonu gerektiren AAA seviyesi oyunlar i\u00e7in genellikle Unity veya Unreal Engine gibi tam te\u015fekk\u00fcll\u00fc oyun motorlar\u0131 tercih edilir. Three.js ile de etkileyici oyunlar geli\u015ftirilebilir, ancak bu daha fazla manuel optimizasyon ve \u00f6zel kodlama gerektirebilir.<\/p>\n<h4>Three.js \u00f6\u011frenirken s\u0131k kar\u015f\u0131la\u015f\u0131lan zorluklar nelerdir?<\/h4>\n<p>Ba\u015flang\u0131\u00e7ta koordinat sistemleri, matris d\u00f6n\u00fc\u015f\u00fcmleri ve \u0131\u015f\u0131kland\u0131rma prensipleri gibi 3D kavramlar\u0131n\u0131 anlamak zorlay\u0131c\u0131 olabilir. Ayr\u0131ca, performans optimizasyonu ve bellek y\u00f6netimi, karma\u015f\u0131k sahnelerde \u00f6nemli hale gelen konulard\u0131r. D\u00fczenli pratik ve topluluktan destek almak bu zorluklar\u0131n \u00fcstesinden gelmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h4>Three.js ile VR\/AR uygulamalar\u0131 geli\u015ftirebilir miyim?<\/h4>\n<p>Evet, Three.js WebXR API'si ile entegrasyon sa\u011flayarak sanal ger\u00e7eklik (VR) ve art\u0131r\u0131lm\u0131\u015f ger\u00e7eklik (AR) uygulamalar\u0131 geli\u015ftirmenize olanak tan\u0131r. Taray\u0131c\u0131 tabanl\u0131 VR\/AR deneyimleri olu\u015fturmak i\u00e7in ideal bir k\u00fct\u00fcphanedir.<\/p>\n<h4>Daha fazla kaynak ve \u00f6\u011frenme materyali nerede bulabilirim?<\/h4>\n<p>Three.js'in resmi dok\u00fcmantasyonu (threejs.org), GitHub deposu, \u00f6rnekler ve aktif topluluk forumlar\u0131 harika kaynaklard\u0131r. Ayr\u0131ca, Udemy, Coursera gibi platformlarda bir\u00e7ok kurs ve YouTube'da \u00f6\u011fretici videolar bulunmaktad\u0131r. Codepen veya Glitch gibi platformlarda ba\u015fkalar\u0131n\u0131n projelerini incelemek de ilham verici olabilir.<\/p>\n","protected":false},"excerpt":{"rendered":"Three.js, taray\u0131c\u0131 tabanl\u0131 3D grafikler olu\u015fturmak ve g\u00f6r\u00fcnt\u00fclemek i\u00e7in kullan\u0131lan, a\u00e7\u0131k kaynakl\u0131, hafif ve g\u00fc\u00e7l\u00fc bir JavaScript k\u00fct\u00fcphanesi&#8230;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-39060","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Three.js&#039;e Ba\u015flang\u0131\u00e7 Rehberi: Web&#039;de 3D D\u00fcnyas\u0131na Ad\u0131m At\u0131n - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Three.js&#039;e Ba\u015flang\u0131\u00e7 Rehberi: Web&#039;de 3D D\u00fcnyas\u0131na Ad\u0131m At\u0131n\" \/>\n<meta property=\"og:description\" content=\"Three.js, taray\u0131c\u0131 tabanl\u0131 3D grafikler olu\u015fturmak ve g\u00f6r\u00fcnt\u00fclemek i\u00e7in kullan\u0131lan, a\u00e7\u0131k kaynakl\u0131, hafif ve g\u00fc\u00e7l\u00fc bir JavaScript k\u00fct\u00fcphanesi...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-13T11:30:39+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Three.js&#8217;e Ba\u015flang\u0131\u00e7 Rehberi: Web&#8217;de 3D D\u00fcnyas\u0131na Ad\u0131m At\u0131n\",\"datePublished\":\"2026-02-13T11:30:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/\"},\"wordCount\":2322,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/\",\"name\":\"Three.js'e Ba\u015flang\u0131\u00e7 Rehberi: Web'de 3D D\u00fcnyas\u0131na Ad\u0131m At\u0131n - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-13T11:30:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Three.js&#8217;e Ba\u015flang\u0131\u00e7 Rehberi: Web&#8217;de 3D D\u00fcnyas\u0131na Ad\u0131m At\u0131n\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Three.js'e Ba\u015flang\u0131\u00e7 Rehberi: Web'de 3D D\u00fcnyas\u0131na Ad\u0131m At\u0131n - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/","og_locale":"tr_TR","og_type":"article","og_title":"Three.js'e Ba\u015flang\u0131\u00e7 Rehberi: Web'de 3D D\u00fcnyas\u0131na Ad\u0131m At\u0131n","og_description":"Three.js, taray\u0131c\u0131 tabanl\u0131 3D grafikler olu\u015fturmak ve g\u00f6r\u00fcnt\u00fclemek i\u00e7in kullan\u0131lan, a\u00e7\u0131k kaynakl\u0131, hafif ve g\u00fc\u00e7l\u00fc bir JavaScript k\u00fct\u00fcphanesi...","og_url":"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-13T11:30:39+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"14 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Three.js&#8217;e Ba\u015flang\u0131\u00e7 Rehberi: Web&#8217;de 3D D\u00fcnyas\u0131na Ad\u0131m At\u0131n","datePublished":"2026-02-13T11:30:39+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/"},"wordCount":2322,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/","url":"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/","name":"Three.js'e Ba\u015flang\u0131\u00e7 Rehberi: Web'de 3D D\u00fcnyas\u0131na Ad\u0131m At\u0131n - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-13T11:30:39+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/three-jse-baslangic-rehberi-webde-3d-dunyasina-adim-atin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Three.js&#8217;e Ba\u015flang\u0131\u00e7 Rehberi: Web&#8217;de 3D D\u00fcnyas\u0131na Ad\u0131m At\u0131n"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39060","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=39060"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39060\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=39060"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=39060"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=39060"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}