Bagaimana untuk mencipta geometri 3D dalam webGL dan p5.js?
Mencipta geometri 3D dalam webGL dan p5.js ialah cara yang berkesan untuk mencipta aplikasi web yang interaktif dan menarik secara visual Dengan keupayaan untuk mencipta bentuk asas, menambah tekstur, pencahayaan dan bahan serta mengubah geometri 3D, kami boleh mencipta. pelbagai grafik dan animasi 3D Dengan memahami asas webGL dan p5.js, kami boleh mencipta geometri 3D yang menakjubkan untuk aplikasi web mereka
Penciptaan bentuk 3DLangkah pertama ialah menjana beberapa geometri 3D menggunakan fungsi terbina dalam webGL dan p5.js Bentuk ini boleh dihasilkan menggunakan kaedah terbina dalam perpustakaan, seperti sfera(), kotak(), dan silinder(
Gunakan webGL
Dalam webGL, fungsi gl.drawArrays() boleh digunakan untuk membina bentuk asas. Fungsi ini mempunyai tiga parameter input, iaitu jenis primitif asas, indeks permulaan dan bilangan indeks yang akan dipaparkan. Contohnya, untuk mencipta sfera, kita boleh menggunakan jenis primitif gl.TRIANGLES dan lulus dalam bucu dan indeks sfera itu.
Contoh
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js"></script>
</head>
<body>
<canvas id="canvas"></canvas>
<script>
// Set up the scene
const scene = new THREE.Scene();
// Set up the camera
const camera = new THREE.PerspectiveCamera(
75,
window.innerWidth / window.innerHeight,
0.1,
1000
);
camera.position.z = 5;
// Set up the renderer
const renderer = new THREE.WebGLRenderer({
canvas: document.getElementById("canvas"),
});
renderer.setSize(window.innerWidth, window.innerHeight);
// Create the sphere
const sphereGeometry = new THREE.SphereGeometry(1, 32, 32);
const sphereMaterial = new THREE.MeshBasicMaterial({ color: 0xffff00 });
const sphere = new THREE.Mesh(sphereGeometry, sphereMaterial);
scene.add(sphere);
// Render the scene
renderer.render(scene, camera);
</script>
</body>
</html>
Salin selepas log masuk
Menggunakan p5.js<!DOCTYPE html> <html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js"></script> </head> <body> <canvas id="canvas"></canvas> <script> // Set up the scene const scene = new THREE.Scene(); // Set up the camera const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 ); camera.position.z = 5; // Set up the renderer const renderer = new THREE.WebGLRenderer({ canvas: document.getElementById("canvas"), }); renderer.setSize(window.innerWidth, window.innerHeight); // Create the sphere const sphereGeometry = new THREE.SphereGeometry(1, 32, 32); const sphereMaterial = new THREE.MeshBasicMaterial({ color: 0xffff00 }); const sphere = new THREE.Mesh(sphereGeometry, sphereMaterial); scene.add(sphere); // Render the scene renderer.render(scene, camera); </script> </body> </html>
Fungsi createShape() dalam p5.js boleh digunakan untuk membuat bentuk ringkas Fungsi CreateShape() mengambil satu parameter iaitu, "jenis bentuk yang akan dibuat, contohnya, kita boleh gunakan kaedah createShape(SPHERE).Contoh
<!DOCTYPE html> <html> <head> <title>3D Sphere Example</title> <script src="https://cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.min.js"></script> </head> <body> <script> function setup() { createCanvas(windowWidth, windowHeight, WEBGL); } function draw() { background(200); // Create the sphere push(); fill(255, 0, 0); sphere(150); pop(); } </script> </body> </html>
Selepas menjana reka bentuk 3D kami, kami boleh menambah tekstur untuk menjadikannya lebih menarik. Dalam webGL dan p5.js, tekstur boleh digunakan pada bentuk menggunakan gl.texImage2D() dan texture() API masing-masing.
Gunakan webGL
Fungsi gl.texImage2D() dalam webGL digunakan untuk menjana tekstur 2D daripada fail imej Fungsi ini menerima banyak hujah, termasuk sasaran, tahap perincian, format dalaman, lebar dan ketinggian imej serta format data imej dan. taip.Contoh
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/three@0.115.0/build/three.min.js"></script>
</head>
<body>
<script>
// Set up the scene
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(
75,
window.innerWidth / window.innerHeight,
0.1,
1000
);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// Create a cube
var geometry = new THREE.BoxGeometry(3, 3, 3);
var texture = new THREE.TextureLoader().load("https://images.pexels.com/photos/1029604/pexels-photo-1029604.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1");
var material = new THREE.MeshBasicMaterial({ map: texture });
var cube = new THREE.Mesh(geometry, material);
scene.add(cube);
// Position the camera
camera.position.z = 5;
// Render the scene
function render() {
requestAnimationFrame(render);
cube.rotation.x += 0.01;
cube.rotation.y += 0.01;
renderer.render(scene, camera);
}
render();
</script>
</body>
</html>
Salin selepas log masuk
Menggunakan p5.js<html> <head> <script src="https://cdn.jsdelivr.net/npm/three@0.115.0/build/three.min.js"></script> </head> <body> <script> // Set up the scene var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 ); var renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); // Create a cube var geometry = new THREE.BoxGeometry(3, 3, 3); var texture = new THREE.TextureLoader().load("https://images.pexels.com/photos/1029604/pexels-photo-1029604.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1"); var material = new THREE.MeshBasicMaterial({ map: texture }); var cube = new THREE.Mesh(geometry, material); scene.add(cube); // Position the camera camera.position.z = 5; // Render the scene function render() { requestAnimationFrame(render); cube.rotation.x += 0.01; cube.rotation.y += 0.01; renderer.render(scene, camera); } render(); </script> </body> </html>
Dalam p5.js, fungsi tekstur() digunakan untuk menggunakan tekstur pada objek. Fungsi tekstur() menerima satu parameter: fail imej tekstur. Contoh
<html> <head> <title>p5.js Texture Example</title> <script src="https://cdn.jsdelivr.net/npm/p5"></script> <script src="https://cdn.jsdelivr.net/npm/p5/lib/addons/p5.dom.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/p5/lib/addons/p5.sound.min.js"></script> </head> <body> <script> let img; function preload() { img = loadImage("https://images.pexels.com/photos/1029604/pexels-photo-1029604.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1"); } function setup() { createCanvas(650, 300, WEBGL); noStroke(); } function draw() { background(200); texture(img); rotateX(frameCount * 0.01); rotateY(frameCount * 0.01); box(100); } </script> </body> </html>
Atas ialah kandungan terperinci Bagaimana untuk mencipta geometri 3D dalam webGL dan p5.js?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Artikel membincangkan membuat, menerbitkan, dan mengekalkan perpustakaan JavaScript, memberi tumpuan kepada perancangan, pembangunan, ujian, dokumentasi, dan strategi promosi.

Artikel ini membincangkan strategi untuk mengoptimumkan prestasi JavaScript dalam pelayar, memberi tumpuan kepada mengurangkan masa pelaksanaan dan meminimumkan kesan pada kelajuan beban halaman.

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 ...

Artikel ini membincangkan debugging JavaScript yang berkesan menggunakan alat pemaju pelayar, memberi tumpuan kepada menetapkan titik putus, menggunakan konsol, dan menganalisis prestasi.

Artikel ini menerangkan cara menggunakan peta sumber untuk debug JavaScript minifikasi dengan memetakannya kembali ke kod asal. Ia membincangkan membolehkan peta sumber, menetapkan titik putus, dan menggunakan alat seperti Chrome Devtools dan Webpack.

Artikel ini meneroka penggunaan rangka koleksi Java yang berkesan. Ia menekankan memilih koleksi yang sesuai (senarai, set, peta, giliran) berdasarkan struktur data, keperluan prestasi, dan keselamatan benang. Mengoptimumkan penggunaan pengumpulan melalui cekap

Sebaik sahaja anda telah menguasai tutorial TypeScript peringkat kemasukan, anda harus dapat menulis kod anda sendiri dalam IDE yang menyokong TypeScript dan menyusunnya ke dalam JavaScript. Tutorial ini akan menyelam ke dalam pelbagai jenis data dalam TypeScript. JavaScript mempunyai tujuh jenis data: null, undefined, boolean, nombor, rentetan, simbol (diperkenalkan oleh ES6) dan objek. Typescript mentakrifkan lebih banyak jenis atas dasar ini, dan tutorial ini akan meliputi semuanya secara terperinci. Jenis data null Seperti JavaScript, Null dalam TypeScript

Tutorial ini akan menerangkan cara membuat carta pai, cincin, dan gelembung menggunakan carta.js. Sebelum ini, kami telah mempelajari empat jenis carta carta.js: carta baris dan carta bar (tutorial 2), serta carta radar dan carta rantau polar (Tutorial 3). Buat carta pai dan cincin Carta pai dan carta cincin sangat sesuai untuk menunjukkan perkadaran keseluruhan yang dibahagikan kepada bahagian yang berlainan. Sebagai contoh, carta pai boleh digunakan untuk menunjukkan peratusan singa lelaki, singa wanita dan singa muda dalam safari, atau peratusan undi yang diterima oleh calon yang berbeza dalam pilihan raya. Carta pai hanya sesuai untuk membandingkan parameter tunggal atau dataset. Harus diingat bahawa carta pai tidak dapat menarik entiti dengan nilai sifar kerana sudut kipas dalam carta pai bergantung pada saiz berangka titik data. Ini bermaksud mana -mana entiti dengan perkadaran sifar
