Pengantar 3D WebGL di Browser: Three.js Scene, Kamera & GLTF
Merakit Kanvas 3D Interaktif, Mengatur Pencahayaan & Optimasi Offscreen Pause
01. Target Pembelajar & Prasyarat
Web developer yang ingin menambahkan dimensi 3D ke dalam website.
02. Kompetensi Konseptual (Level 1ā2)
- āMenjelaskan koordinat ruang 3D (X, Y, Z) dan frustum kamera perspektif.
03. Kompetensi Praktis & Artefak Nyata (Level 3ā4)
- āMembuat scene Three.js yang memuat model GLTF lokal dan berhenti merender saat keluar dari viewport.
04. Aplikasi Nyata & Verifikasi
Penerapan Industri: Komponen ruang kerja 3D Hermes (#hermes-3d-canvas) di Z-Automation.
Metode Verifikasi: Memeriksa penggunaan GPU di Chrome Task Manager sebelum dan sesudah scroll keluar viewport.
Mengapa Subjek Ini Krusial dalam Rekayasa Nyata?
Pelajari fondasi grafika komputer di browser: Scene, PerspectiveCamera, WebGLRenderer, pemuatan model .glb lokal, dan pembersihan memori GPU.
Dalam lingkungan produksi, kegagalan memahami batas-batas arsitektur sistem sering kali menyebabkan bug yang sulit dilacak, pemborosan biaya komputasi, atau antarmuka yang lambat bagi pengguna.
Bagaimana Sistem Sebenarnya Bekerja di Tingkat Protokol
Tritunggal Three.js: Scene, Camera, Renderer
Untuk merender dunia 3D, Anda membutuhkan tiga pilar: 1) Scene (panggung tempat objek diletakkan), 2) Camera (mata virtual yang melihat panggung), dan 3) Renderer (mesin yang menerjemahkan geometri dan cahaya menjadi piksel pada elemen `<canvas>`).
Alur Arsitektur Sistem Otonom & Runtime
Pesan bahasa alami diterima melalui antarmuka web atau webhook chat.
{
"input": "Berapa estimasi biaya pembuatan landing page bisnis?"
}Koreksi Asumsi Umum vs Realitas Rekayasa
āMenampilkan objek 3D di browser pasti membuat baterai laptop boros dan berat.ā
Dengan membatasi devicePixelRatio ke 1.75 dan mematikan render saat elemen keluar dari layar (offscreen pause), WebGL sangat efisien.
Implementasi Langkah-demi-Langkah
Hasil akhir yang diharapkan: Kanvas Three.js yang merender kubus berputar dan berhenti saat di-scroll keluar.
lab-b2-m4/ āāā three-scene.html
1Membuat Scene Three.js Teroptimasi
Inisialisasi renderer dengan pembatasan pixel ratio.
| 1 | <!DOCTYPE html> |
| 2 | <html> |
| 3 | <head><style>body { margin: 0; background: #07080A; } canvas { display: block; }</style></head> |
| 4 | <body> |
| 5 | <canvas id="c"></canvas> |
| 6 | <script type="module"> |
| 7 | import * as THREE from 'https://cdn.jsdelivr.net/npm/three@0.187.0/build/three.module.js'; |
| 8 | |
| 9 | const canvas = document.querySelector('#c'); |
| 10 | const renderer = new THREE.WebGLRenderer({ canvas, antialias: true, alpha: true }); |
| 11 | renderer.setPixelRatio(Math.min(window.devicePixelRatio, 1.75)); |
| 12 | renderer.setSize(window.innerWidth, window.innerHeight); |
| 13 | |
| 14 | const scene = new THREE.Scene(); |
| 15 | const camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 0.1, 100); |
| 16 | camera.position.z = 4; |
| 17 | |
| 18 | const geometry = new THREE.BoxGeometry(); |
| 19 | const material = new THREE.MeshBasicMaterial({ color: 0x1A2FFB, wireframe: true }); |
| 20 | const cube = new THREE.Mesh(geometry, material); |
| 21 | scene.add(cube); |
| 22 | |
| 23 | function animate() { |
| 24 | requestAnimationFrame(animate); |
| 25 | cube.rotation.x += 0.01; |
| 26 | cube.rotation.y += 0.01; |
| 27 | renderer.render(scene, camera); |
| 28 | } |
| 29 | animate(); |
| 30 | </script> |
| 31 | </body> |
| 32 | </html> |
Kubus kawat biru berputar di atas latar obsidian.
Mengantisipasi Masalah Umum & Tantangan Ekstensi
Tambahkan IntersectionObserver untuk memanggil cancelAnimationFrame saat canvas tidak terlihat.
Uji Kompetensi Mandiri & Verifikasi Hasil
Standar kelulusan Z-Automation mewajibkan skor minimum 80 / 100 Poin dengan komponen Implementasi Praktis minimal 21 / 35 Poin (60%). Jawab soal diagnostik dan centang hasil pengujian praktis Anda.
BAGIAN A // PERTANYAAN DIAGNOSTIK KONSEPTUAL & TEKNIS (40 POIN)
01.Mengapa kita harus membatasi 'renderer.setPixelRatio(Math.min(window.devicePixelRatio, 1.75))'?
BAGIAN B // DAFTAR PERIKSA HASIL IMPLEMENTASI PRAKTIS (35 POIN ā MIN. 21 POIN)
Centang item di bawah ini hanya jika Anda telah menjalankan kode di komputer Anda dan mengamati output yang benar: