Rumah hujung hadapan web tutorial js Tiga.js dan Babylon.js: Perbandingan kerangka webgl

Tiga.js dan Babylon.js: Perbandingan kerangka webgl

Feb 23, 2025 am 11:24 AM

Three.js and Babylon.js: a Comparison of WebGL Frameworks

mata teras

    Three.js dan Babylon.js adalah kedua-dua rangka kerja WebGL yang kuat yang menyediakan pemaju web dengan asas abstrak untuk mencipta karya WebGL yang kaya dengan ciri-ciri seperti logo animasi dan permainan 3D interaktif sepenuhnya.
  • Three.js (bermula pada tahun 2009) bertujuan untuk mewujudkan grafik dan animasi 3D yang dipertingkatkan dengan GPU dengan penghantar berasaskan web, menjadikannya alat yang ideal untuk animasi web sejagat. Babylon.js (yang dilancarkan oleh Microsoft pada tahun 2013) mengambil pendekatan yang lebih disasarkan, memberi tumpuan kepada pembangunan permainan berasaskan web, dan ciri-ciri seperti pengesanan perlanggaran dan anti-aliasing.
  • Kedua -dua bingkai mengikuti adegan, penerima, kamera, model animasi objek dan boleh digunakan untuk membuat animasi 3D yang sama. Walau bagaimanapun, Babylon.js membezakan dirinya dari tiga.js dengan memberi tumpuan kepada keperluan enjin permainan tradisional, seperti enjin dan pencahayaan tersuai.
  • Walaupun kedua -dua.js dan Babylon.js menawarkan prestasi tinggi, tiga.js terkenal dengan kesederhanaan dan kemudahan penggunaannya, sesuai untuk pemula atau projek kecil; Untuk projek yang lebih besar dan lebih kompleks.
Pelayar web hari ini telah membuat kemajuan yang besar sejak Sir Tim Berners Lee dan era perisian Nexusnya. Terima kasih kepada API JavaScript yang sangat baik seperti WebGL, pelayar moden sepenuhnya mampu memberikan grafik 2D dan 3D maju tanpa plugin pihak ketiga. Dengan memanfaatkan kuasa pemproses grafik yang berdedikasi, WebGL membolehkan laman web kami untuk mengakses teduhan dinamik dan kesan fizikal yang realistik. Seperti yang anda fikirkan, API yang kuat seperti biasanya membawa kelemahan. WebGL tentu saja tidak terkecuali, kelemahannya terletak pada kerumitannya. Tetapi, jangan risau, kami telah meneroka dua kerangka kuat yang direka untuk memudahkan dan lebih efisien apabila menggunakan WebGL.

asal rangka 3D

Tiga.js yang popular dan Babylon.js yang lebih baru menyediakan asas abstrak untuk pemaju web untuk membuat kerja-kerja webgl yang kaya dengan ciri dari logo animasi ke permainan 3D interaktif sepenuhnya. Tiga.js bermula pada bulan April 2009 dan pada asalnya ditulis dalam ActionScript dan kemudian diterjemahkan ke dalam JavaScript. Oleh kerana ia dibuat sebelum WebGL diperkenalkan, tiga.js mempunyai kelebihan unik antara muka rendering modular, menjadikannya berfungsi dengan elemen kanvas SVG dan HTML5 sebagai tambahan kepada WebGL. Babylon.js dibebaskan pada musim panas tahun 2013 sebagai latecomer. Dibangunkan oleh Microsoft, Babylon.js dan Internet Explorer 11 secara rasmi menyokong API WebGL untuk kali pertama. Walaupun asalnya di makmal Redmond, Babylon.js (dan tiga.js) masih mengekalkan lesen sumber terbuka.

Perbezaan reka bentuk halus

Three.js dan Babylon.js kedua-duanya menyediakan perpustakaan yang mudah digunakan untuk mengendalikan kerumitan animasi webgl. Berikutan adegan, penerima, kamera, dan model animasi objek, rangka kerja ini sangat serupa dengan cara WebGL digunakan. Menggunakannya dalam HTML anda adalah semudah menghubungkan fail JavaScript yang sepadan. Nota: Babylon.js mempunyai beberapa kebergantungan dan juga perlu memasukkan sumber terbuka.

Three.js:

<🎜>
Salin selepas log masuk
Salin selepas log masuk

Babylon.js:

<🎜>
<🎜>
Salin selepas log masuk
Salin selepas log masuk

Perbezaan utama antara kedua -dua kerangka ini adalah penggunaan yang dimaksudkan. Walaupun kedua -dua kerangka boleh digunakan untuk mencipta animasi 3D yang sama, adalah penting untuk memahami matlamat penciptaan setiap rangka kerja. Tiga.js hanya mempunyai satu matlamat untuk mencipta: Buat grafik dan animasi 3D yang dipertingkatkan dengan GPU dengan penghantar berasaskan web. Oleh itu, kerangka ini mengamalkan pendekatan yang sangat luas untuk grafik web tanpa memberi tumpuan kepada mana -mana bidang animasi tunggal. Reka bentuk fleksibel ini menjadikan tiga.js alat yang ideal untuk animasi web sejagat seperti logo atau aplikasi pemodelan. Walaupun tiga.js cuba menyediakan pelbagai keupayaan animasi untuk WebGL, Babylon.js mengambil pendekatan yang lebih disasarkan. Pada asalnya direka sebagai enjin permainan Silverlight, Babylon.js masih lebih suka pembangunan permainan berasaskan web dan ciri-ciri seperti pengesanan perlanggaran dan anti-aliasing. Seperti yang dinyatakan sebelum ini, Babylon.js masih mampu sepenuhnya grafik dan animasi web umum.

demonstrasi teknologi webgl bersebelahan

Untuk terus menunjukkan persamaan dan perbezaan antara kedua -dua kerangka ini, mari kita membina animasi 3D yang cepat. Item yang kami pilih akan menjadi kiub super sederhana dan memohon putaran perlahan. Apabila membuat kedua -dua projek sampel ini, anda harus mula memahami bagaimana kedua -dua teknologi ini secara beransur -ansur menyimpang dan menunjukkan kekuatan unik mereka. Mari bermula. Langkah pertama dalam membina projek kreatif hampir mana -mana jenis adalah untuk memasukkan kanvas kosong di dalamnya yang mengandungi animasi 3D kami.

Three.js:

<div style="height:250px; width: 250px;" id="three"></div>
Salin selepas log masuk
Salin selepas log masuk
var div = document.getElementById('three');
Salin selepas log masuk

Babylon.js:

<div style="height:250px; width: 250px;" id="babylon">
  <canvas id="babylonCanvas"></canvas>
</div>
Salin selepas log masuk
var canvas = document.getElementById('babylonCanvas');
Salin selepas log masuk

Dalam tiga.js, kita hanya perlu membuat div kosong sebagai bekas animasi. Babylon.js, sebaliknya, menggunakan kanvas HTML5 yang jelas untuk menyelamatkan grafik 3Dnya. Seterusnya, kami memuatkan penerima, yang akan bertanggungjawab untuk menyediakan tempat kejadian dan menariknya ke kanvas.

Three.js:

var renderer = new THREE.WebGLRenderer();
renderer.setSize(width, height);
div.appendChild(renderer.domElement);
Salin selepas log masuk

Babylon.js:

var engine = new BABYLON.Engine(canvas, true);
Salin selepas log masuk

Tidak ada yang terlalu mewah di sini, kami hanya memulakan penyajian (enjin dalam kes Babylon.js) dan melampirkannya ke kanvas kami. Langkah seterusnya kami menjadi lebih rumit ketika kami menubuhkan adegan untuk menampung kamera dan kiub kami.

Three.js:

var sceneT = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(70, width / height, 1, 1000);
camera.position.z = 400;
Salin selepas log masuk

Babylon.js:

var sceneB = new BABYLON.Scene(engine);
var camera = new BABYLON.ArcRotateCamera
("camera", 1, 0.8, 10, new BABYLON.Vector3(0, 0, 0), sceneB);
sceneB.activeCamera.attachControl(canvas);

var light = new BABYLON.DirectionalLight
("light", new BABYLON.Vector3(0, -1, 0), sceneB);
light.diffuse = new BABYLON.Color3(1, 0, 0);
light.specular = new BABYLON.Color3(1, 1, 1);
Salin selepas log masuk

di sini kita membuat adegan kita dengan cara yang sama dan kemudian melaksanakan kamera (kedua -dua bingkai menyokong pelbagai jenis kamera), dari mana kita sebenarnya akan melihat adegan yang dicipta. Parameter yang diluluskan ke kamera menentukan pelbagai butiran sudut tontonan kamera, seperti bidang pandangan, nisbah aspek, dan kedalaman. Kami juga menyertakan arah untuk Babylon.js dan melampirkannya ke tempat kejadian kami untuk mengelakkan melihat animasi gelap kemudian.

Dengan kanvas, adegan dan kamera kami, kami hanya perlu menarik kiub itu sendiri sebelum membuat dan animasi.

Three.js:

var cube = new THREE.CubeGeometry(100, 100, 100);

var texture = THREE.ImageUtils.loadTexture('texture.gif');
texture.anisotropy = renderer.getMaxAnisotropy();

var material = new THREE.MeshBasicMaterial({ map: texture });
var mesh = new THREE.Mesh(cube, material);
sceneT.add(mesh);
Salin selepas log masuk

Babylon.js:

<🎜>
Salin selepas log masuk
Salin selepas log masuk

Pertama, kita membuat objek kiub saiz yang ditentukan, dan kemudian membuat bahan/mesh (berfikir tekstur) yang akan ditarik pada kiub. Mana -mana fail imej boleh digunakan sebagai tekstur, dan kedua -dua kerangka menyokong eksport mesh dari alat pemodelan 3D seperti Blender. Dalam langkah terakhir, kami menghidupkan sedikit putaran dan kemudian menjadikan tempat kejadian.

Three.js:

<🎜>
<🎜>
Salin selepas log masuk
Salin selepas log masuk

Babylon.js:

<div style="height:250px; width: 250px;" id="three"></div>
Salin selepas log masuk
Salin selepas log masuk

Three.js dan Babylon.js kedua -duanya menggunakan animasi atau rendering gelung untuk mengemas kini kanvas dan menarik grafik berputar baru. Anda juga akan melihat bahawa tiga.js sedikit berbeza dari Babylon.js, yang melampirkan kamera semasa rendering. Produk akhir kami adalah dua kiub yang berputar perlahan di udara. Sangat mudah, bukan?

Cerita Dua Bingkai

itu sahaja. Dua rangka kerja WebGL yang sangat kuat dibina atas dasar yang sama tetapi memberi tumpuan kepada aspek yang berbeza dari grafik web yang dipertingkatkan. Anda telah melihat secara langsung bagaimana pendekatan mereka yang serupa dalam animasi, kedua-dua adegan berikut, penerima, kamera, paradigma objek. Walaupun persamaan, Babylon.js bijak membezakan dirinya dengan memberi tumpuan kepada keperluan enjin permainan tradisional, seperti enjin dan pencahayaan tersuai. Pada akhirnya, kedua -dua rangka kerja yang agak muda ini memudahkan pemaju web untuk memanfaatkan peluang 3D yang kuat yang ditawarkan oleh WebGL. Oleh itu, sesiapa yang berminat dalam pembangunan web 3D perlu mengkaji dengan teliti teknologi canggih ini.

(ini harus termasuk pautan fail zip untuk memuat turun kod demo)

(Soalan -soalan yang sering ditanya mengenai tiga.js dan Babylon.js perbandingan harus dimasukkan di sini) kerana batasan ruang, saya tidak dapat menambah bahagian FAQ penuh di sini. Walau bagaimanapun, anda boleh menyusun semula dan menggilapnya menjadi versi yang lebih ringkas dan jelas berdasarkan bahagian FAQ dalam teks asal yang disediakan.

Atas ialah kandungan terperinci Tiga.js dan Babylon.js: Perbandingan kerangka webgl. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apr 04, 2025 pm 02:42 PM

Soalan dan penyelesaian yang sering ditanya untuk percetakan tiket kertas terma depan dalam pembangunan front-end, percetakan tiket adalah keperluan umum. Walau bagaimanapun, banyak pemaju sedang melaksanakan ...

Demystifying JavaScript: Apa yang berlaku dan mengapa penting Demystifying JavaScript: Apa yang berlaku dan mengapa penting Apr 09, 2025 am 12:07 AM

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Siapa yang dibayar lebih banyak Python atau JavaScript? Siapa yang dibayar lebih banyak Python atau JavaScript? Apr 04, 2025 am 12:09 AM

Tidak ada gaji mutlak untuk pemaju Python dan JavaScript, bergantung kepada kemahiran dan keperluan industri. 1. Python boleh dibayar lebih banyak dalam sains data dan pembelajaran mesin. 2. JavaScript mempunyai permintaan yang besar dalam perkembangan depan dan stack penuh, dan gajinya juga cukup besar. 3. Faktor mempengaruhi termasuk pengalaman, lokasi geografi, saiz syarikat dan kemahiran khusus.

Bagaimana untuk menggabungkan elemen array dengan ID yang sama ke dalam satu objek menggunakan JavaScript? Bagaimana untuk menggabungkan elemen array dengan ID yang sama ke dalam satu objek menggunakan JavaScript? Apr 04, 2025 pm 05:09 PM

Bagaimana cara menggabungkan elemen array dengan ID yang sama ke dalam satu objek dalam JavaScript? Semasa memproses data, kita sering menghadapi keperluan untuk mempunyai id yang sama ...

Adakah JavaScript sukar belajar? Adakah JavaScript sukar belajar? Apr 03, 2025 am 12:20 AM

Pembelajaran JavaScript tidak sukar, tetapi ia mencabar. 1) Memahami konsep asas seperti pembolehubah, jenis data, fungsi, dan sebagainya. 2) Pengaturcaraan asynchronous tuan dan melaksanakannya melalui gelung acara. 3) Gunakan operasi DOM dan berjanji untuk mengendalikan permintaan tak segerak. 4) Elakkan kesilapan biasa dan gunakan teknik debugging. 5) Mengoptimumkan prestasi dan mengikuti amalan terbaik.

Bagaimana untuk mencapai kesan menatal paralaks dan kesan animasi elemen, seperti laman web rasmi Shiseido?
atau:
Bagaimanakah kita dapat mencapai kesan animasi yang disertai dengan menatal halaman seperti laman web rasmi Shiseido? Bagaimana untuk mencapai kesan menatal paralaks dan kesan animasi elemen, seperti laman web rasmi Shiseido? atau: Bagaimanakah kita dapat mencapai kesan animasi yang disertai dengan menatal halaman seperti laman web rasmi Shiseido? Apr 04, 2025 pm 05:36 PM

Perbincangan mengenai realisasi kesan animasi tatal dan elemen Parallax dalam artikel ini akan meneroka bagaimana untuk mencapai yang serupa dengan laman web rasmi Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ... ...

Evolusi JavaScript: Trend Semasa dan Prospek Masa Depan Evolusi JavaScript: Trend Semasa dan Prospek Masa Depan Apr 10, 2025 am 09:33 AM

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

Perbezaan dalam Konsol.Log Output Result: Mengapa kedua -dua panggilan berbeza? Perbezaan dalam Konsol.Log Output Result: Mengapa kedua -dua panggilan berbeza? Apr 04, 2025 pm 05:12 PM

Perbincangan mendalam mengenai punca-punca utama perbezaan dalam output konsol.log. Artikel ini akan menganalisis perbezaan hasil output fungsi Console.log dalam sekeping kod dan menerangkan sebab -sebab di belakangnya. � ...

See all articles