{"id":1265,"date":"2025-12-04T20:57:49","date_gmt":"2025-12-04T23:57:49","guid":{"rendered":"https:\/\/urutaudev.com.br\/?p=1265"},"modified":"2025-12-04T21:48:46","modified_gmt":"2025-12-05T00:48:46","slug":"what-can-you-create-with-threejs","status":"publish","type":"post","link":"https:\/\/urutaudev.com.br\/index.php\/2025\/12\/04\/what-can-you-create-with-threejs\/","title":{"rendered":"What can you create with Three.js"},"content":{"rendered":"<h2 style=\"font-size: 18pt; font-family: arial, helvetica, sans-serif;\">What can you create with Three.js<\/h2>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_1269\" aria-describedby=\"caption-attachment-1269\" style=\"width: 266px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1269 \" src=\"https:\/\/urutaudev.com.br\/wp-content\/uploads\/2025\/12\/you-create-with-threejs-2-300x300.png\" alt=\"What can you create with Three.js\" width=\"266\" height=\"266\" srcset=\"https:\/\/urutaudev.com.br\/wp-content\/uploads\/2025\/12\/you-create-with-threejs-2-300x300.png 300w, https:\/\/urutaudev.com.br\/wp-content\/uploads\/2025\/12\/you-create-with-threejs-2-150x150.png 150w, https:\/\/urutaudev.com.br\/wp-content\/uploads\/2025\/12\/you-create-with-threejs-2-768x767.png 768w, https:\/\/urutaudev.com.br\/wp-content\/uploads\/2025\/12\/you-create-with-threejs-2.png 901w\" sizes=\"auto, (max-width: 266px) 100vw, 266px\" \/><figcaption id=\"caption-attachment-1269\" class=\"wp-caption-text\">What can you create with Three.js<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<section>\n<h2><span style=\"font-family: arial, helvetica, sans-serif;\">Introdu\u00e7\u00e3o<\/span><\/h2>\n<p style=\"font-size: 14pt; font-family: arial, helvetica, sans-serif;\">Game com Three.js, explorando um pouco desta lib que ajuda na cria\u00e7\u00e3o de games e anima\u00e7\u00f5es usando o Javascript e que roda no navegador.<\/p>\n<p style=\"font-size: 14pt; font-family: arial, helvetica, sans-serif;\">Este post \u00e9 apenas um pequeno exemplo de um script de um game 3D usando apenas Javascript com o aucilixo da lib do Three.js!<br \/>\nCom a biblioteca Three.js podemos transformar o navegador em um verdadeiro palco para experi\u00eancias 3D incr\u00edveis.<br \/>\nUsar o Three.js para fazer Games \u00e9 s\u00f3 um exemplo divertido de como a web pode ganhar vida com luzes, sombras e efeitos interativos, tudo em tempo real.<\/p>\n<\/section>\n<p>&nbsp;<\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\"><strong><span style=\"font-size: 14pt;\">Voc\u00ea pode visualizar o jogo no link abaixo:<\/span><\/strong><\/span><\/p>\n<p><strong><span style=\"font-family: arial, helvetica, sans-serif; font-size: 12pt;\"><a href=\"https:\/\/urutaudev.com.br\/games\/game-treejs-site\">Game Exemplo com TreeJs<\/a>\u00a0<\/span><\/strong><\/p>\n<section>\n<h2><span style=\"font-family: arial, helvetica, sans-serif;\">Scripts utilizado (html):<\/span><\/h2>\n<div>\n<div>\n<div>\n<div>\n<p><code><code><\/code><\/code><\/p>\n<div>\n<div><code>&lt;!DOCTYPE html&gt;<\/code><\/div>\n<div><code>&lt;html lang=\"pt-BR\"&gt;<\/code><\/div>\n<div><code>&lt;head&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 &lt;meta charset=\"UTF-8\"&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 &lt;title&gt;O que voc\u00ea pode criar com Three.js \u2014 Experi\u00eancias 3D interativas na Web&lt;\/title&gt; \u00a0<\/code><\/div>\n<div><code>\u00a0 \u00a0 &lt;link rel=\"stylesheet\" href=\"css\/you-create-with-threejs.css\"&gt;<\/code><\/div>\n<div><code>&lt;\/head&gt;<\/code><\/div>\n<div><code>&lt;body&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 &lt;div id=\"canvas-container\"&gt;&lt;\/div&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 &lt;div class=\"overlay\"&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 &lt;div class=\"header\"&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;div class=\"logo\"&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;span&gt;Experience&lt;\/span&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;span&gt;Thoughts&lt;\/span&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;span&gt;Designs&lt;\/span&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/div&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/div&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 &lt;div class=\"content\"&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;h1 class=\"title\"&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 What can you create with &lt;strong&gt;Three.js&lt;\/strong&gt;?&lt;br&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Do &lt;strong class=\"impossible\"&gt;the Impossible&lt;\/strong&gt;!<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/h1&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;p class=\"description\"&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 With Three.js , Turn ideas into interactive experiences, where imagination becomes code and code becomes<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 reality.<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;\/p&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/div&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 &lt;div class=\"tags\"&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;a class=\"tag\"&gt;Html&lt;\/a&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;a class=\"tag\"&gt;Javascript&lt;\/a&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;a class=\"tag\"&gt;Treejs&lt;\/a&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 &lt;\/div&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 &lt;\/div&gt;<\/code><\/div>\n<div><code>&lt;\/body&gt;<\/code><\/div>\n<div><code>&lt;\/html&gt;<\/code><\/div>\n<\/div>\n<p><code><\/code><code><\/code><\/p>\n<\/div>\n<\/div>\n<\/div>\n<pre><\/pre>\n<\/div>\n<\/section>\n<p>&nbsp;<\/p>\n<h2><span style=\"font-family: arial, helvetica, sans-serif;\">Scripts utilizado (Javascript):<\/span><\/h2>\n<div>\n<pre><code><\/code><\/pre>\n<div>\n<div>\n<div>\u00a0 \u00a0 <code>&lt;script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/three.js\/r128\/three.min.js\"&gt;&lt;\/script&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 &lt;script&gt;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 let scene, camera, renderer, head, particles;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 let mouseX = 0, mouseY = 0;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 let targetRotationX = 0, targetRotationY = 0;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 let isDragging = false;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 let previousMouseX = 0;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 let previousMouseY = 0;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 let cameraRotationY = 0;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 let cameraRotationX = 0;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 function init() {<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ Scene<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 scene = new THREE.Scene();<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ Camera<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 camera = new THREE.PerspectiveCamera(75, window.innerWidth \/ window.innerHeight, 0.1, 1000);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 camera.position.z = 5;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ Renderer<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 renderer.setSize(window.innerWidth, window.innerHeight);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 renderer.setClearColor(0x000000, 0);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 document.getElementById('canvas-container').appendChild(renderer.domElement);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ Lighting<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const ambientLight = new THREE.AmbientLight(0xffffff, 0.5);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 scene.add(ambientLight);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const directionalLight1 = new THREE.DirectionalLight(0xff6b6b, 1);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 directionalLight1.position.set(5, 5, 5);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 scene.add(directionalLight1);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const directionalLight2 = new THREE.DirectionalLight(0x4ecdc4, 0.8);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 directionalLight2.position.set(-5, -5, 5);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 scene.add(directionalLight2);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const pointLight = new THREE.PointLight(0xffd700, 2, 50);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 pointLight.position.set(0, 3, 2);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 scene.add(pointLight);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 createHead();<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 createParticles();<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 document.addEventListener('mousemove', onMouseMove, false);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 document.addEventListener('mousedown', onMouseDown, false);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 document.addEventListener('mouseup', onMouseUp, false);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 window.addEventListener('resize', onWindowResize, false);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 animate();<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 }<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 function createHead() {<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const geometry = new THREE.SphereGeometry(1.5, 64, 64);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const positions = geometry.attributes.position;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 for (let i = 0; i &lt; positions.count; i++) {<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const x = positions.getX(i);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const y = positions.getY(i);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const z = positions.getZ(i);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 positions.setY(i, y * 1.1);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if (z &lt; 0) {<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 positions.setZ(i, z * 0.8);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const material = new THREE.MeshPhysicalMaterial({<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 color: 0x88ccff,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 metalness: 0.3,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 roughness: 0.1,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 transparent: true,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 opacity: 0.7,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 transmission: 0.5,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 thickness: 0.5,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 clearcoat: 1.0,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 clearcoatRoughness: 0.1,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 });<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 head = new THREE.Mesh(geometry, material);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 head.position.set(0.5, 0, 0);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 scene.add(head);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const brainGeometry = new THREE.SphereGeometry(1.2, 32, 32);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const brainMaterial = new THREE.MeshBasicMaterial({<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 color: 0xff9933,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 transparent: true,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 opacity: 0.6,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 });<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const brain = new THREE.Mesh(brainGeometry, brainMaterial);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 head.add(brain);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ Add glow effect<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const glowGeometry = new THREE.SphereGeometry(1.6, 32, 32);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const glowMaterial = new THREE.MeshBasicMaterial({<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 color: 0xff6600,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 transparent: true,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 opacity: 0.2,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 side: THREE.BackSide,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 });<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const glow = new THREE.Mesh(glowGeometry, glowMaterial);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 head.add(glow);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 }<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 function createParticles() {<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const geometry = new THREE.BufferGeometry();<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const particlesCount = 1000;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const positions = new Float32Array(particlesCount * 3);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 for (let i = 0; i &lt; particlesCount * 3; i++) {<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 positions[i] = (Math.random() - 0.5) * 20;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3));<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const material = new THREE.PointsMaterial({<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 color: 0xffffff,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 size: 0.05,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 transparent: true,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 opacity: 0.6,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 blending: THREE.AdditiveBlending,<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 });<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 particles = new THREE.Points(geometry, material);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 scene.add(particles);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 }<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 function onMouseMove(event) {<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if (isDragging) {<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ Calculate mouse movement delta<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const deltaX = event.clientX - previousMouseX;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const deltaY = event.clientY - previousMouseY;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ Update camera rotation based on drag<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 cameraRotationY += deltaX * 0.005;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 cameraRotationX += deltaY * 0.005;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ Limit vertical rotation<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 cameraRotationX = Math.max(-Math.PI \/ 4, Math.min(Math.PI \/ 4, cameraRotationX));<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 previousMouseX = event.clientX;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 previousMouseY = event.clientY;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } else {<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ Normal mouse follow behavior for head<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 mouseX = (event.clientX \/ window.innerWidth) * 2 - 1;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 mouseY = -(event.clientY \/ window.innerHeight) * 2 + 1;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 targetRotationY = mouseX * 0.5;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 targetRotationX = mouseY * 0.3;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 }<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 function onMouseDown(event) {<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 isDragging = true;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 previousMouseX = event.clientX;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 previousMouseY = event.clientY;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 document.body.style.cursor = 'grabbing';<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 }<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 function onMouseUp() {<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 isDragging = false;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 document.body.style.cursor = 'default';<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 }<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 function onWindowResize() {<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 camera.aspect = window.innerWidth \/ window.innerHeight;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 camera.updateProjectionMatrix();<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 renderer.setSize(window.innerWidth, window.innerHeight);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 }<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 function animate() {<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 requestAnimationFrame(animate);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ Update camera position based on rotation<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 const radius = 5;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 camera.position.x = radius * Math.sin(cameraRotationY) * Math.cos(cameraRotationX);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 camera.position.y = radius * Math.sin(cameraRotationX);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 camera.position.z = radius * Math.cos(cameraRotationY) * Math.cos(cameraRotationX);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 camera.lookAt(0.5, 0, 0);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ Smooth rotation following mouse when not dragging<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if (head &amp;&amp; !isDragging) {<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 head.rotation.y += (targetRotationY - head.rotation.y) * 0.05;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 head.rotation.x += (targetRotationX - head.rotation.x) * 0.05;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ Subtle floating animation<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 head.position.y = Math.sin(Date.now() * 0.001) * 0.1;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ Rotate particles slowly<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if (particles) {<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 particles.rotation.y += 0.0005;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 particles.rotation.x += 0.0002;<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 renderer.render(scene, camera);<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 }<\/code><\/div>\n<div><code>\u00a0 \u00a0 \u00a0 \u00a0 init();<\/code><\/div>\n<div><code>\u00a0 \u00a0 &lt;\/script&gt;<\/code><\/div>\n<\/div>\n<\/div>\n<pre><code>\r\n<\/code><\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\"><strong><span style=\"font-size: 14pt;\">Voc\u00ea pode visualizar o jogo no link abaixo:<\/span><\/strong><\/span><\/p>\n<p><strong><span style=\"font-family: arial, helvetica, sans-serif; font-size: 12pt;\"><a href=\"https:\/\/urutaudev.com.br\/layouts\/treejs-site-3d\/you-create-with-threejs.html\">Site TreeJs<\/a>\u00a0<\/span><\/strong><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-family: arial, helvetica, sans-serif;\"><strong><span style=\"font-size: 14pt;\">Deixo aqui um v\u00eddeo curto:<\/span><\/strong><\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><iframe loading=\"lazy\" title=\"Game com TreeJs #webdevelopment #portfolio #javascript\" width=\"800\" height=\"450\" src=\"https:\/\/www.youtube.com\/embed\/NqzUqsIZq3I?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<h2><\/h2>\n<p>&nbsp;<\/p>\n<p><iframe loading=\"lazy\" title=\"What can you create with Three.js  #webdevelopment #frontendcourse #javascript\" width=\"563\" height=\"1000\" src=\"https:\/\/www.youtube.com\/embed\/2tEWVrue1K0?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p>&nbsp;<\/p>\n<h2><\/h2>\n<h2><span style=\"font-family: arial, helvetica, sans-serif;\">Conclus\u00e3o<\/span><\/h2>\n<p><span style=\"font-size: 14pt; font-family: arial, helvetica, sans-serif;\">O Three.js mostra que criar jogos ou anima\u00e7\u00f5es 3D com poucas linhas de c\u00f3digo \u00e9 mais simples e acess\u00edvel do que parece.<br \/>\nCom um pouco de criatividade e curiosidade, qualquer pessoa pode transformar o seu site ou blog em um mundo cheio de luzes, cores e movimento.<br \/>\n<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"font-family: arial, helvetica, sans-serif; font-size: 14pt;\">C\u00f3digo fonte do jogo em Javascript:<\/span><\/h3>\n<p><span style=\"font-family: arial, helvetica, sans-serif; font-size: 12pt;\"><strong><a href=\"https:\/\/github.com\/JrDevCJ\/layout-sites\/blob\/main\/treejs-site-3d\/you-create-with-threejs.html\" target=\"_blank\" rel=\"noopener\">C\u00f3digo Fonte<\/a><\/strong><\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What can you create with Three.js &nbsp; &nbsp; Introdu\u00e7\u00e3o Game com Three.js, explorando um pouco desta lib que ajuda na<\/p>\n","protected":false},"author":1,"featured_media":1269,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[1],"tags":[29,57,26,173,18],"class_list":["post-1265","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-css","tag-css-tutorial","tag-javascript","tag-treejs","tag-tutorias"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>What can you create with Three.js - UrutauDev<\/title>\n<meta name=\"description\" content=\"With Three.js , Turn ideas into interactive experiences, where imagination becomes code and code becomes reality.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/urutaudev.com.br\/index.php\/2025\/12\/04\/what-can-you-create-with-threejs\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What can you create with Three.js - UrutauDev\" \/>\n<meta property=\"og:description\" content=\"With Three.js , Turn ideas into interactive experiences, where imagination becomes code and code becomes reality.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/urutaudev.com.br\/index.php\/2025\/12\/04\/what-can-you-create-with-threejs\/\" \/>\n<meta property=\"og:site_name\" content=\"UrutauDev\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-04T23:57:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-05T00:48:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/urutaudev.com.br\/wp-content\/uploads\/2025\/12\/you-create-with-threejs-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"901\" \/>\n\t<meta property=\"og:image:height\" content=\"900\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"C. Junior\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"C. Junior\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/index.php\\\/2025\\\/12\\\/04\\\/what-can-you-create-with-threejs\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/index.php\\\/2025\\\/12\\\/04\\\/what-can-you-create-with-threejs\\\/\"},\"author\":{\"name\":\"C. Junior\",\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/#\\\/schema\\\/person\\\/7e321618d23a158d5a42d5cfbdd99dd6\"},\"headline\":\"What can you create with Three.js\",\"datePublished\":\"2025-12-04T23:57:49+00:00\",\"dateModified\":\"2025-12-05T00:48:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/index.php\\\/2025\\\/12\\\/04\\\/what-can-you-create-with-threejs\\\/\"},\"wordCount\":250,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/index.php\\\/2025\\\/12\\\/04\\\/what-can-you-create-with-threejs\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/urutaudev.com.br\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/you-create-with-threejs-2.png\",\"keywords\":[\"css\",\"css tutorial\",\"javascript\",\"treejs\",\"tutorias\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/urutaudev.com.br\\\/index.php\\\/2025\\\/12\\\/04\\\/what-can-you-create-with-threejs\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/index.php\\\/2025\\\/12\\\/04\\\/what-can-you-create-with-threejs\\\/\",\"url\":\"https:\\\/\\\/urutaudev.com.br\\\/index.php\\\/2025\\\/12\\\/04\\\/what-can-you-create-with-threejs\\\/\",\"name\":\"What can you create with Three.js - UrutauDev\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/index.php\\\/2025\\\/12\\\/04\\\/what-can-you-create-with-threejs\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/index.php\\\/2025\\\/12\\\/04\\\/what-can-you-create-with-threejs\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/urutaudev.com.br\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/you-create-with-threejs-2.png\",\"datePublished\":\"2025-12-04T23:57:49+00:00\",\"dateModified\":\"2025-12-05T00:48:46+00:00\",\"description\":\"With Three.js , Turn ideas into interactive experiences, where imagination becomes code and code becomes reality.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/index.php\\\/2025\\\/12\\\/04\\\/what-can-you-create-with-threejs\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/urutaudev.com.br\\\/index.php\\\/2025\\\/12\\\/04\\\/what-can-you-create-with-threejs\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/index.php\\\/2025\\\/12\\\/04\\\/what-can-you-create-with-threejs\\\/#primaryimage\",\"url\":\"https:\\\/\\\/urutaudev.com.br\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/you-create-with-threejs-2.png\",\"contentUrl\":\"https:\\\/\\\/urutaudev.com.br\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/you-create-with-threejs-2.png\",\"width\":901,\"height\":900,\"caption\":\"What can you create with Three.js\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/index.php\\\/2025\\\/12\\\/04\\\/what-can-you-create-with-threejs\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/urutaudev.com.br\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What can you create with Three.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/#website\",\"url\":\"https:\\\/\\\/urutaudev.com.br\\\/\",\"name\":\"UrutauDev\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/urutaudev.com.br\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/#organization\",\"name\":\"UrutauDev\",\"url\":\"https:\\\/\\\/urutaudev.com.br\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/urutaudev.com.br\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/cropped-urutau-dev-logo.png\",\"contentUrl\":\"https:\\\/\\\/urutaudev.com.br\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/cropped-urutau-dev-logo.png\",\"width\":100,\"height\":84,\"caption\":\"UrutauDev\"},\"image\":{\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/urutaudev.com.br\\\/#\\\/schema\\\/person\\\/7e321618d23a158d5a42d5cfbdd99dd6\",\"name\":\"C. Junior\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e7df4c63012e2f6991311d4037bdc57752b996058cf1396747a7ab74e8ac032e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e7df4c63012e2f6991311d4037bdc57752b996058cf1396747a7ab74e8ac032e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e7df4c63012e2f6991311d4037bdc57752b996058cf1396747a7ab74e8ac032e?s=96&d=mm&r=g\",\"caption\":\"C. Junior\"},\"sameAs\":[\"http:\\\/\\\/urutaudev.com.br\",\"instagram.com\\\/urutautec\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC8pDLb5GaYBAoWwQkIzrhRw\"],\"url\":\"https:\\\/\\\/urutaudev.com.br\\\/index.php\\\/author\\\/urutaudev-com-br\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What can you create with Three.js - UrutauDev","description":"With Three.js , Turn ideas into interactive experiences, where imagination becomes code and code becomes reality.","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:\/\/urutaudev.com.br\/index.php\/2025\/12\/04\/what-can-you-create-with-threejs\/","og_locale":"en_US","og_type":"article","og_title":"What can you create with Three.js - UrutauDev","og_description":"With Three.js , Turn ideas into interactive experiences, where imagination becomes code and code becomes reality.","og_url":"https:\/\/urutaudev.com.br\/index.php\/2025\/12\/04\/what-can-you-create-with-threejs\/","og_site_name":"UrutauDev","article_published_time":"2025-12-04T23:57:49+00:00","article_modified_time":"2025-12-05T00:48:46+00:00","og_image":[{"width":901,"height":900,"url":"https:\/\/urutaudev.com.br\/wp-content\/uploads\/2025\/12\/you-create-with-threejs-2.png","type":"image\/png"}],"author":"C. Junior","twitter_card":"summary_large_image","twitter_misc":{"Written by":"C. Junior","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/urutaudev.com.br\/index.php\/2025\/12\/04\/what-can-you-create-with-threejs\/#article","isPartOf":{"@id":"https:\/\/urutaudev.com.br\/index.php\/2025\/12\/04\/what-can-you-create-with-threejs\/"},"author":{"name":"C. Junior","@id":"https:\/\/urutaudev.com.br\/#\/schema\/person\/7e321618d23a158d5a42d5cfbdd99dd6"},"headline":"What can you create with Three.js","datePublished":"2025-12-04T23:57:49+00:00","dateModified":"2025-12-05T00:48:46+00:00","mainEntityOfPage":{"@id":"https:\/\/urutaudev.com.br\/index.php\/2025\/12\/04\/what-can-you-create-with-threejs\/"},"wordCount":250,"commentCount":0,"publisher":{"@id":"https:\/\/urutaudev.com.br\/#organization"},"image":{"@id":"https:\/\/urutaudev.com.br\/index.php\/2025\/12\/04\/what-can-you-create-with-threejs\/#primaryimage"},"thumbnailUrl":"https:\/\/urutaudev.com.br\/wp-content\/uploads\/2025\/12\/you-create-with-threejs-2.png","keywords":["css","css tutorial","javascript","treejs","tutorias"],"articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/urutaudev.com.br\/index.php\/2025\/12\/04\/what-can-you-create-with-threejs\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/urutaudev.com.br\/index.php\/2025\/12\/04\/what-can-you-create-with-threejs\/","url":"https:\/\/urutaudev.com.br\/index.php\/2025\/12\/04\/what-can-you-create-with-threejs\/","name":"What can you create with Three.js - UrutauDev","isPartOf":{"@id":"https:\/\/urutaudev.com.br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/urutaudev.com.br\/index.php\/2025\/12\/04\/what-can-you-create-with-threejs\/#primaryimage"},"image":{"@id":"https:\/\/urutaudev.com.br\/index.php\/2025\/12\/04\/what-can-you-create-with-threejs\/#primaryimage"},"thumbnailUrl":"https:\/\/urutaudev.com.br\/wp-content\/uploads\/2025\/12\/you-create-with-threejs-2.png","datePublished":"2025-12-04T23:57:49+00:00","dateModified":"2025-12-05T00:48:46+00:00","description":"With Three.js , Turn ideas into interactive experiences, where imagination becomes code and code becomes reality.","breadcrumb":{"@id":"https:\/\/urutaudev.com.br\/index.php\/2025\/12\/04\/what-can-you-create-with-threejs\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/urutaudev.com.br\/index.php\/2025\/12\/04\/what-can-you-create-with-threejs\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/urutaudev.com.br\/index.php\/2025\/12\/04\/what-can-you-create-with-threejs\/#primaryimage","url":"https:\/\/urutaudev.com.br\/wp-content\/uploads\/2025\/12\/you-create-with-threejs-2.png","contentUrl":"https:\/\/urutaudev.com.br\/wp-content\/uploads\/2025\/12\/you-create-with-threejs-2.png","width":901,"height":900,"caption":"What can you create with Three.js"},{"@type":"BreadcrumbList","@id":"https:\/\/urutaudev.com.br\/index.php\/2025\/12\/04\/what-can-you-create-with-threejs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/urutaudev.com.br\/"},{"@type":"ListItem","position":2,"name":"What can you create with Three.js"}]},{"@type":"WebSite","@id":"https:\/\/urutaudev.com.br\/#website","url":"https:\/\/urutaudev.com.br\/","name":"UrutauDev","description":"","publisher":{"@id":"https:\/\/urutaudev.com.br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/urutaudev.com.br\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/urutaudev.com.br\/#organization","name":"UrutauDev","url":"https:\/\/urutaudev.com.br\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/urutaudev.com.br\/#\/schema\/logo\/image\/","url":"https:\/\/urutaudev.com.br\/wp-content\/uploads\/2023\/08\/cropped-urutau-dev-logo.png","contentUrl":"https:\/\/urutaudev.com.br\/wp-content\/uploads\/2023\/08\/cropped-urutau-dev-logo.png","width":100,"height":84,"caption":"UrutauDev"},"image":{"@id":"https:\/\/urutaudev.com.br\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/urutaudev.com.br\/#\/schema\/person\/7e321618d23a158d5a42d5cfbdd99dd6","name":"C. Junior","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/e7df4c63012e2f6991311d4037bdc57752b996058cf1396747a7ab74e8ac032e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e7df4c63012e2f6991311d4037bdc57752b996058cf1396747a7ab74e8ac032e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e7df4c63012e2f6991311d4037bdc57752b996058cf1396747a7ab74e8ac032e?s=96&d=mm&r=g","caption":"C. Junior"},"sameAs":["http:\/\/urutaudev.com.br","instagram.com\/urutautec","https:\/\/www.youtube.com\/channel\/UC8pDLb5GaYBAoWwQkIzrhRw"],"url":"https:\/\/urutaudev.com.br\/index.php\/author\/urutaudev-com-br\/"}]}},"_links":{"self":[{"href":"https:\/\/urutaudev.com.br\/index.php\/wp-json\/wp\/v2\/posts\/1265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/urutaudev.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/urutaudev.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/urutaudev.com.br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/urutaudev.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=1265"}],"version-history":[{"count":9,"href":"https:\/\/urutaudev.com.br\/index.php\/wp-json\/wp\/v2\/posts\/1265\/revisions"}],"predecessor-version":[{"id":1277,"href":"https:\/\/urutaudev.com.br\/index.php\/wp-json\/wp\/v2\/posts\/1265\/revisions\/1277"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/urutaudev.com.br\/index.php\/wp-json\/wp\/v2\/media\/1269"}],"wp:attachment":[{"href":"https:\/\/urutaudev.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=1265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/urutaudev.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=1265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/urutaudev.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=1265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}