


Gambaran keseluruhan WebGL 3D dalam HTML5 (Bahagian 1)—Pembangunan asli WebGL membuka era baharu kemahiran tutorial rendering_html5 halaman web
WebGL membuka era baharu pemaparan 3D pada halaman web, yang membolehkan kandungan 3D dipaparkan terus dalam kanvas tanpa sebarang pemalam. WebGL adalah sama dengan API kanvas 2D Ia memanipulasi objek melalui skrip, jadi langkah-langkahnya pada asasnya serupa: sediakan konteks kerja, sediakan data, lukis objek dalam kanvas dan buatkannya. Perbezaan daripada 2D ialah 3D melibatkan lebih banyak pengetahuan, seperti dunia, cahaya, tekstur, kamera, matriks dan pengetahuan profesional yang lain. Terdapat tutorial bahasa Cina yang bagus tentang WebGL, yang merupakan pautan pertama dalam rujukan penggunaan di bawah, jadi saya tidak akan berbuat apa-apa mengenainya di sini Kandungan berikut hanyalah ringkasan ringkas kandungan pembelajaran.
Sokongan penyemak imbas
Memandangkan Microsoft mempunyai rancangan pembangunan grafiknya sendiri dan tidak menyokong WebGL, IE pada masa ini tidak dapat menjalankan WebGL kecuali untuk memasang pemalam. Untuk penyemak imbas arus perdana lain seperti Chrome, FireFox, Safari, Opera, dsb., cuma pasang versi terkini. Selain memasang pelayar terkini, anda juga perlu memastikan pemacu kad grafik juga dikemas kini.
Selepas memasang ini, anda boleh membuka penyemak imbas dan masukkan URL berikut untuk mengesahkan sokongan penyemak imbas untuk WebGL: http://webglreport.sourceforge.net/.
Jika anda masih tidak dapat menjalankan WebGL selepas memasang penyemak imbas di atas seperti biasa, anda boleh cuba memaksa sokongan WebGL untuk dihidupkan. Kaedah pembukaan adalah seperti berikut:
Pelayar Chrome
Kami perlu menambah beberapa parameter permulaan pada Chrome Langkah khusus berikut mengambil sistem pengendalian Windows sebagai contoh: Cari pintasan Chrome pelayar, klik kanan Kaedah pintasan, pilih sifat dalam kotak sasaran, selepas tanda petikan di belakang chrome.exe, tambah kandungan berikut:
Tutup Chrome selepas mengklik OK, kemudian gunakan pintasan ini untuk melancarkan penyemak imbas Chrome.
Maksud beberapa parameter adalah seperti berikut:
--enable-webgl bermaksud untuk mendayakan sokongan WebGL
--ignore-gpu-blacklist bermaksud mengabaikan senarai hitam GPU, yang bermaksud terdapat beberapa grafik; kad dan GPU Kerana ia terlalu lama dan sebab lain, tidak disyorkan untuk menjalankan WebGL Parameter ini membenarkan penyemak imbas mengabaikan senarai hitam ini dan memaksa WebGL untuk dijalankan
--benarkan-fail-akses-dari-fail untuk membenarkan sumber dimuatkan secara setempat Jika anda bukan pembangun WebGL dan tidak perlu membangunkan dan menyahpepijat WebGL, tetapi hanya ingin melihat Demo WebGL, maka anda tidak perlu menambah parameter ini.
Pelayar Firefox
Pengguna Firefox sila masukkan "about:config" dalam bar alamat penyemak imbas, tekan Enter, dan kemudian cari "webgl" dalam penapis (penapis) dan gantikan webgl Tetapkan .force-enabled kepada true; tetapkan webgl.disabled kepada false; cari "security.fileuri.strict_origin_policy" dalam penapis dan tetapkan security.fileuri.strict_origin_policy kepada false, kemudian tutup semua tetingkap Firefox yang sedang dibuka , mulakan semula Firefox.
Dua tetapan pertama adalah untuk memaksa sokongan WebGL dihidupkan, dan tetapan security.fileuri.strict_origin_policy yang terakhir adalah untuk membenarkan sumber dimuatkan daripada sumber tempatan Jika anda bukan pembangun WebGL, anda tidak perlu melakukannya membangun dan menyahpepijat WebGL, tetapi hanya ingin melihat Demo WebGL, maka anda tidak perlu menetapkan item ini.
Pelayar Safari
Cari "Properties" → "Advanced" dalam menu, pilih "Show Development Menu", kemudian pergi ke menu "Develop" dan pilih "Hidupkan WebGL".
Langkah Pembangunan
Kod berikut hanya meringkaskan konsep yang berkaitan Ia datang daripada tutorial bahasa Cina dalam rujukan dan melibatkan lebih banyak pengetahuan 3D. Pelajar yang berminat boleh melompat terus ke tutorial Bahasa Cina dalam Rujukan Praktikal, yang jauh lebih terperinci dan tepat daripada apa yang saya terangkan di sini. Pelajar yang menyertai keseronokan hanya boleh melihatnya tanpa menyelidiki maksud setiap baris kod.
Persediaan
Tidak perlu dikatakan, ini adalah untuk menambahkan elemen kanvas pada halaman sebagai bekas rendering. Contohnya:
Pelayar anda tidak dapat menyokong HTML5canvaselement.
;<🎜 /body>
initGL(kanvas);
initShaders() ;
initBuffers();
gl.clearColor(0.0,0.0,0.0,1.0);
gl.enable(gl.DEPTH_TEST);
drawScene();
}
Beberapa kaedah di sini mewakili langkah lukisan WebGL biasa:
Langkah 1: Mulakan persekitaran kerja WebGL - initGL
Kod untuk kaedah ini adalah seperti berikut:
vargl;
functioninitGL(kanvas) {
gl=null;
cuba{
//Trytograbthestandardcontext.Ifitfails,fallbacktoexperimental.
gl=canvas.getContext("webgl")||canvas.getContext("experimental-webgl");
}
tangkap(e){} //Ifwedon'thaveaGLcontext,giveupnow
if(!gl){
alert("UnabletoinitializeWebGL.Yourbrowsermaynotsupportit.");
}
}
Kaedah ini sangat mudah untuk mendapatkan persekitaran lukisan WebGL Anda perlu menghantar parameter "webgl" kepada kaedah canvas.getContext dimuktamadkan, parameter yang digunakan dalam peringkat eksperimen semuanya ialah "experimental-webgl". Sudah tentu, anda juga boleh menghubungi canvas.getContext("experimental-webgl") secara terus Selepas standard ditetapkan, anda boleh mengubah suai kod lain.
Langkah 2: Mulakan Shaders - initShaders
Konsep shader adalah agak mudah, ini adalah arahan operasi kad grafik. Membina pemandangan 3D memerlukan sejumlah besar pengiraan warna, kedudukan dan maklumat lain Jika pengiraan ini dilakukan oleh perisian, kelajuannya akan menjadi sangat perlahan. Oleh itu, membiarkan kad grafik mengira operasi ini adalah sangat pantas; cara melakukan pengiraan ini ditentukan oleh shader. Kod shader ditulis dalam bahasa shader yang dipanggil GLSL, yang tidak akan kami terangkan di sini.
Shaders boleh ditakrifkan dalam html dan digunakan dalam kod. Sudah tentu, perkara yang sama berlaku jika anda menggunakan rentetan untuk menentukan shader dalam program anda.
Mari kita lihat bahagian definisi dahulu:
precisionmediumfloat;
varyingvec4vColor;
voidmain(void){
gl_FragColor =vColor;
}
attributevec3aVertexPosition;
attributevec4aVertexColor
uniformmat4uMVMatrix;
uniformmat4uPMatrix;
varyingvec4vColor;
voidmain(void){
gl_Position=uPMatrix*uMVMatrix*vec4(a1VertexPosition) >}
< /skrip>
Terdapat dua lorek di sini: lorek muka dan lorek puncak.
Pelorek bucu yang ditakrifkan di atas mentakrifkan kedudukan dan kaedah pengiraan warna bucu manakala pelorek permukaan mentakrifkan kaedah pengiraan warna titik interpolasi. Dalam senario aplikasi sebenar, kesan seperti pemprosesan cahaya dalam shader juga akan terlibat.
Mentakrifkan shader, anda boleh mencarinya dalam program dan menggunakannya:
varfragmentShader=getShader(gl,"shader-fs");
varvertexShader=getShader(gl,"shader-vs " );
shaderProgram=gl.createProgram();
gl.attachShader(shaderProgram,vertexShader);
gl.attachShader(shaderProgram, fragmentShader);
gl.linkProgram(shaderProgram);
if(!gl.getProgramParameter(shaderProgram,gl.LINK_STATUS)){
alert("Couldnotinitialiseshaders");
}
gl.useProgram(shaderProgram);
shaderProgram.vertexPositionAttribute=Logl. shaderProgram, "aVertexPosition");
gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute) derProgram, "uPMatrix");
shaderProgram.mvMatrixUniform=gl.getUniformLocation(shaderProgram,"uMVMatrix");
}
Pelorek ada di sana, tetapi bagaimana anda membiarkan kad grafik melaksanakannya? data model yang ditentukan.
Kaedah tambahan getShader juga digunakan di sini untuk melintasi dokumen HTML, mencari definisi shader dan mencipta shader selepas mendapat definisi saya tidak akan pergi ke butiran di sini:
functiongetShader(gl,id){
varshaderScript,theSource,currentChild,shader;
shaderScript=document.getElementById(id);
if(!shaderScript){
returnnull;
}
theSource="";
currentChild =shaderScript.firstChild;
while (currentChild){
if(currentChild.nodeType==currentChild.TEXT_NODE){
theSource =currentChild.textContent;
}}
jika( shaderScript.type=="x-shader/x-fragment"){
shader=gl.createShader(gl.FRAGMENT_SHADER);
}elseif(shaderScript.type== "x-shader/x-vertex" ){
shader=gl.createShader(gl.VERTEX_SHADER);
}lain{
//Unknownshadertype
returnnull;
}
gl .shaderSource(shader,theSource);
//Compiletheshaderprogram
gl.compileShader(shader);
//Seeifitcompiledberjaya
if(!gl.getShaderParameter(shader,gl.COMPILE)🎜
returnnull;
}
returnshader;
}
Dalam contoh kecil ini, pada asasnya data model dijana secara langsung Dalam program sebenar, data ini harus dimuatkan daripada model:
.
{fungsi
{init🎜()> triangleVertexPositionBuffer=gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER,triangleVertexPositionBuffer);
varvertices=[
0.0,1.0,0.0,
-1.0,.-1. >1.0,-1.0,0.0
];
gl.bufferData(gl.ARRAY_BUFFER,newFloat32Array(vertices),gl.STATIC_DRAW);
triangleVertexPositionBuffer.itemSize=3;temSize=3; ;
triangleVertexColorBuffer=gl.createBuffer( );
gl.bindBuffer(gl.ARRAY_BUFFER,triangleVertexColorBuffer);
varcolors=[
1.0,0.0,0.0.0,1.0>, 0.0,1.0,
0.0,0.0 ,1.0,1.0
];
gl.bufferData(gl.ARRAY_BUFFER,newFloat32Array(warna),gl.STATIC_DRAW);
ColorizeBuffer4.Texs 🎜>triangleVertexColorBuffer.numItems=3;
}
Kod di atas mencipta bucu segitiga dan data warna bucu dan meletakkannya dalam penimbal.
Langkah 4: Rendering - drawScene
Salin kod
gl.vertexAttribPointer(shanger.vertexAttribPointer(shakertem.VertexAttribPointer,ColletemColorBuffer) Saiz, gl. FLOAT,false,0,0 );
setMatrixUniforms();
gl.drawArrays(gl.TRIANGLES,0,triangleVertexPositionBuffer.numItems);
}
Fungsi ini mula-mula menetapkan latar belakang dunia 3D kepada hitam, kemudian menetapkan matriks unjuran, menetapkan kedudukan objek yang hendak dilukis, dan kemudian melukis objek berdasarkan data bucu dan warna dalam penimbal. Terdapat juga beberapa kaedah tambahan untuk menjana matriks unjuran dan segi empat tepat paparan model (menggunakan kaedah tambahan matriks dalam perpustakaan grafik Oak3D) yang mempunyai sedikit kaitan dengan topik dan tidak akan diterangkan secara terperinci di sini.
Pada asasnya, itu sahaja proses tekstur, lampu, dll. yang lebih kompleks semuanya dilaksanakan dengan menambahkan beberapa ciri WegGL berdasarkan ini. Sila rujuk tutorial bahasa Cina berikut untuk contoh terperinci.
Bagaimana pula? Bagaimanakah rasanya membangun menggunakan WebGL asli? Bukan sahaja anda perlu mempunyai pengetahuan 3D yang mendalam, anda juga perlu mengetahui pelbagai butiran pelaksanaan. WebGL melakukan ini untuk menyesuaikan diri secara fleksibel kepada pelbagai senario aplikasi, tetapi bagi kebanyakan bukan profesional seperti saya, banyak butiran tidak perlu diketahui. Ini telah menimbulkan pelbagai perpustakaan kelas yang membantu pembangunan, seperti perpustakaan Oak3D yang digunakan dalam bahagian ini (untuk menunjukkan pembangunan WebGL, hanya kaedah tambahan matriks digunakan dalam contoh). Bahagian seterusnya akan memperkenalkan perpustakaan grafik Three.js yang biasa digunakan.
Rujukan praktikal:
Tutorial bahasa Cina: http://www.hiwebgl.com/?p=42
Pusat Pembangunan: https://developer.mozilla.org/en/WebGL

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

Ditulis di atas & pemahaman peribadi pengarang Gaussiansplatting tiga dimensi (3DGS) ialah teknologi transformatif yang telah muncul dalam bidang medan sinaran eksplisit dan grafik komputer dalam beberapa tahun kebelakangan ini. Kaedah inovatif ini dicirikan oleh penggunaan berjuta-juta Gaussians 3D, yang sangat berbeza daripada kaedah medan sinaran saraf (NeRF), yang terutamanya menggunakan model berasaskan koordinat tersirat untuk memetakan koordinat spatial kepada nilai piksel. Dengan perwakilan adegan yang eksplisit dan algoritma pemaparan yang boleh dibezakan, 3DGS bukan sahaja menjamin keupayaan pemaparan masa nyata, tetapi juga memperkenalkan tahap kawalan dan pengeditan adegan yang tidak pernah berlaku sebelum ini. Ini meletakkan 3DGS sebagai penukar permainan yang berpotensi untuk pembinaan semula dan perwakilan 3D generasi akan datang. Untuk tujuan ini, kami menyediakan gambaran keseluruhan sistematik tentang perkembangan dan kebimbangan terkini dalam bidang 3DGS buat kali pertama.

Anda mesti ingat, terutamanya jika anda adalah pengguna Teams, bahawa Microsoft telah menambah kumpulan baharu emoji 3DFluent pada apl persidangan video tertumpu kerjanya. Selepas Microsoft mengumumkan emoji 3D untuk Pasukan dan Windows tahun lepas, proses itu sebenarnya telah melihat lebih daripada 1,800 emoji sedia ada dikemas kini untuk platform. Idea besar ini dan pelancaran kemas kini emoji 3DFluent untuk Pasukan pertama kali dipromosikan melalui catatan blog rasmi. Kemas kini Pasukan Terkini membawa FluentEmojis ke aplikasi Microsoft mengatakan 1,800 emoji yang dikemas kini akan tersedia kepada kami setiap hari

Ditulis di atas & pemahaman peribadi penulis: Pada masa ini, dalam keseluruhan sistem pemanduan autonomi, modul persepsi memainkan peranan penting Hanya selepas kenderaan pemanduan autonomi yang memandu di jalan raya memperoleh keputusan persepsi yang tepat melalui modul persepsi boleh Peraturan hiliran dan. modul kawalan dalam sistem pemanduan autonomi membuat pertimbangan dan keputusan tingkah laku yang tepat pada masanya dan betul. Pada masa ini, kereta dengan fungsi pemanduan autonomi biasanya dilengkapi dengan pelbagai penderia maklumat data termasuk penderia kamera pandangan sekeliling, penderia lidar dan penderia radar gelombang milimeter untuk mengumpul maklumat dalam modaliti yang berbeza untuk mencapai tugas persepsi yang tepat. Algoritma persepsi BEV berdasarkan penglihatan tulen digemari oleh industri kerana kos perkakasannya yang rendah dan penggunaan mudah, dan hasil keluarannya boleh digunakan dengan mudah untuk pelbagai tugas hiliran.

0. Ditulis di hadapan&& Pemahaman peribadi bahawa sistem pemanduan autonomi bergantung pada persepsi lanjutan, membuat keputusan dan teknologi kawalan, dengan menggunakan pelbagai penderia (seperti kamera, lidar, radar, dll.) untuk melihat persekitaran sekeliling dan menggunakan algoritma dan model untuk analisis masa nyata dan membuat keputusan. Ini membolehkan kenderaan mengenali papan tanda jalan, mengesan dan menjejaki kenderaan lain, meramalkan tingkah laku pejalan kaki, dsb., dengan itu selamat beroperasi dan menyesuaikan diri dengan persekitaran trafik yang kompleks. Teknologi ini kini menarik perhatian meluas dan dianggap sebagai kawasan pembangunan penting dalam pengangkutan masa depan satu. Tetapi apa yang menyukarkan pemanduan autonomi ialah memikirkan cara membuat kereta itu memahami perkara yang berlaku di sekelilingnya. Ini memerlukan algoritma pengesanan objek tiga dimensi dalam sistem pemanduan autonomi boleh melihat dan menerangkan dengan tepat objek dalam persekitaran sekeliling, termasuk lokasinya,

Apabila gosip mula tersebar bahawa Windows 11 baharu sedang dibangunkan, setiap pengguna Microsoft ingin tahu bagaimana rupa sistem pengendalian baharu itu dan apa yang akan dibawanya. Selepas spekulasi, Windows 11 ada di sini. Sistem pengendalian datang dengan reka bentuk baharu dan perubahan fungsi. Selain beberapa tambahan, ia disertakan dengan penamatan dan pengalihan keluar ciri. Salah satu ciri yang tidak wujud dalam Windows 11 ialah Paint3D. Walaupun ia masih menawarkan Paint klasik, yang bagus untuk laci, doodle dan doodle, ia meninggalkan Paint3D, yang menawarkan ciri tambahan yang sesuai untuk pencipta 3D. Jika anda mencari beberapa ciri tambahan, kami mengesyorkan Autodesk Maya sebagai perisian reka bentuk 3D terbaik. suka

1. Mula-mula buka pelan reka bentuk yang akan diberikan dalam Kujiale. 2. Kemudian buka pemaparan paparan atas di bawah menu pemaparan. 3. Kemudian klik Ortogonal dalam tetapan parameter dalam antara muka paparan paparan atas. 4. Akhir sekali, selepas melaraskan sudut model, klik Render Now untuk memaparkan paparan atas ortogon.

ChatGPT telah menyuntik satu dos darah ayam ke dalam industri AI, dan segala-galanya yang dahulunya tidak dapat dibayangkan telah menjadi amalan asas hari ini. Text-to-3D, yang terus maju, dianggap sebagai tempat liputan seterusnya dalam medan AIGC selepas Difusi (imej) dan GPT (teks), dan telah mendapat perhatian yang tidak pernah berlaku sebelum ini. Tidak, produk yang dipanggil ChatAvatar telah dimasukkan ke dalam beta awam sederhana, dengan cepat memperoleh lebih 700,000 tontonan dan perhatian, dan telah dipaparkan di Spacesoftheweek. △ChatAvatar juga akan menyokong teknologi Imageto3D yang menjana aksara bergaya 3D daripada lukisan asal perspektif tunggal/berbilang perspektif Model 3D yang dihasilkan oleh versi beta semasa telah mendapat perhatian meluas.

Untuk aplikasi pemanduan autonomi, adalah perlu untuk melihat pemandangan 3D. Alasannya mudah sahaja. Kenderaan tidak boleh memandu berdasarkan hasil persepsi yang diperolehi daripada sesuatu imej. Oleh kerana jarak objek dan maklumat kedalaman tempat kejadian tidak dapat dicerminkan dalam hasil persepsi 2D, maklumat ini adalah kunci untuk sistem pemanduan autonomi untuk membuat pertimbangan yang betul ke atas persekitaran sekeliling. Secara umumnya, penderia visual (seperti kamera) kenderaan autonomi dipasang di atas badan kenderaan atau pada cermin pandang belakang di dalam kenderaan. Tidak kira di mana ia berada, apa yang kamera dapat adalah unjuran dunia sebenar dalam pandangan perspektif (PerspectiveView) (sistem koordinat dunia kepada sistem koordinat imej). Pandangan ini hampir sama dengan sistem penglihatan manusia,
