Comment créer des effets liquides avec Webgl

Jan 27, 2026
Comment
Liquid effect Creative Bloq logo [DIX] [DIX] [DIX] [dix]
[DIX]

Nombreux Concepteurs Web Recherche des Moyens d'Ajouter Nations Unies IMPACT IMPACT IMPORTANT SUR LEURURES DE SITES DE SITES DE SITESS, DE MANIÈRE À ATTIRER L'ATTENTION DE LEURS UTILISATEURS. Les Méthodes ONT ÉVOLUÉ AU FIL DES ANS, DE L'UTILISATION D'ONU GRAPHIQUE ONU DE LA PAGE D'ATERRISSAGE, DE DEVENIR UNE GRANDRIGE DU MORTRISSAGE - ET LA GRANDE MAILLE DE SITES SUIVENT CE MÊME FORMAT (CRÉEZ VOFTRE ProPre Générateur de site Web ).

[DIX]

Aujourd'Hui, Les Conceptions Qui gagnent «Site de la Journée» sur Différents Sites Web de Récrents Tenent Généralement de Foire Quelque Chose d'Un Peu plus Unique et Webgl Est Idéal Pour Cela. L'AJOUT D'UNE ÉLEMENT INTERACTIF PUT VRAIMENT ATTRATEL L'ATTENTION DES UTILISATEURS ET LE MONTRER QUE LE CE N'EST PAS LA MÊME CHOSE QUE LES AUTRES SITES QUILS DE VISITÉS. Il rend site de l'ONU Beaucoup Plus Intéressant que d'avoir un diaporama géant et certits Défilement de parallaxe . Site SI VOUS AVEZ UN SITE AVEC DES BESOINS Complexes, Assurez-vous que VOT Hébergement Web Le service est sur le point.

  • 14 conceptions de page d'atterrissage

Versez Effeciller Nations Unies Anti-Éclaboussures dans la CE Didacticiel, UNE Surface Réffléchissante Liquide Sera Ajoutée, CE Qui Sera Animé Vers la Caméra AVEC DES ONDES ROULANTES EN AVANT. Il y Aura Également des particules qui avancent pour compléter le look et la sensation. Au Centre, Le Logo du Site Sera Le Logo du Site et Toute la Scène Réagira Au Mouvement de la Souris de l'Utilisateur Afin Que Le Contenu SE Dégplace et que le 3D SE Démarque Vraiment.

Le Conception de logo EST RENDU COMBES UN PNG transparent (Gardez-le en Sécurité dans stockage en ligne ), CELA Peut-à-dire CELA PEUT DONC OPÉRATION A ÊTRE PERSONNALISÉ À VOLE DU CONCEPTION. LES LUMIÈRES Animent Également Que Les Couleurs S'Organiseront et Mettent en Évidence Différentes vagues dans la Scène.

Téléchargez les Fichiers Pour le tutoriel CE.

[DIX]

01. AJOUTER DES VARIABLES INITIALES

Ouvrez le dossier Démarrer Dans Les Fichiers du Projet et Faits-la-Glisser Dans Votre Éditeur de code. Uvert ' index.html «ET VOUS VERREZ QUE LES BIBLIOTHÈQUES JavaScript ONT DÉJÀ ÉTÉ REMIEES POUR VOUS. À L'INTÉRIEUR DES BALISES DE Script Vides, c'est--le code IRA. ICI, Webgl Est Détecté Pour vous VOUS ASSURAIRER QUE LE PROJET PUJET PUISÉE EXÉUTÉ, PUIS UNE Gamme de variables Entières Est AJOUTEE QUI SERA UTILISÉE DANS LA SCÈNE.

 Si (! Déteceur.webgl) Déteur.addgetwebwebglMessage ();
var screen_width = window.innerwidth;
var screen_height = window.innerheight;
Var Renderer, Caméra, Scène, Groupe de Caméra, Plancherométrie, Floormaterial, Point de Vue, Point de la Lumière2, Pégométrie;
var plan_res = 60;
var place_ht = 650;
var stenernount = 0;
var bruyantcale = 9.5;
var noseeeded = math.random () * 100; 

02. Créer Plus de variables

Le Bloc De Variables Suivant Manque à Quel Point Le Plancher de l'Eau Dévir être et la Vitesse SE DégaSe Avec des positions des initiales de la Souris. Le Centre de l'Écran est Éléboré et la Bibliothèque de Bruit Améliorée est Utilisée pour Créer la surface de l'eau.

 var plan_width = 3600;
var place_depth = 4800;
var move_spd = 1.9;
var mousex = 0;
var sourisy = 0;
Var Windowhalfx = Fenêtre.innerWidth / 2;
Var Windowhalfy = Fenêtre.innerheight / 2;
var snoisise = Nouvelle AméliorationNoise ();
var textureloader = neuf trois.textureloader (); 

03. Calculez La Souris

Présence des variables finales Sont Ajoutées pour les Effets post-traitance de la Scène. UN AUDITEUR D'ÉVÉNEMENTS EST AJOUTE QUE VÉRIFIE LE MOUVÉMENT DE LA SOURIS. LA SCÈNE VA SE DÉPLACER DANS LE PORT D'ASFICHAGE Pour Réagir au Mouvement de la Souris. La Fonction Ajoutée Ici Fonctionne La Quantité de Mouvement Autorisée.

04. Modificateur Les ParamÈRES DE POST-TRAITEMENT

Le ' paramètres «La Fonction Est L'endroit Où TOUS Les Paramètres des Effets de Post-Traitement serré Stocké. SI VOUS AVEZ BESOIN DE CHANGER Quelque Chose, c'est l'endroit où le faire. Le FLO Tilt Shift Est Couvert des Quatre Premières lignes, Puis Le Film Passe Dans Les Lignes Restes. Ceci est le capitalement pour l'intensité de l'Écran et l'intensité du bruit.

05. Définir les paramètres Finaux

Le Dernier des Paramètres Est Destiné à la Vignette Sombre Autour du Bord de l'Écran. Le ' init "Et ' animateur Les Fonctions Sont Appelées à Courir. Le ' animateur «La Fonction Sera Créée Beaucoup Beaucoup Plus Tard dans le tutoriel, Maistoriel, Maison Le ' init 'La Fonction Est Créée ICI. La Caméra et la Scène Sont Configurées Pour Permettre La Visualisation du Contenu 3D.

 Effetvignette.uniforme ["Décalage"]. Valeur = 1.0;
  Effectricevignette.uniformes ["obscurité"]. Valeur = 1.3;
}
init ();
Animateur ();
Fonction init () {
  Caméra = Nouveau Trois.PerspectiveCamera (70, Fenêtre.innerwidth / Window.innerheight, 1, 4000);
  caméra.position.z = 2750;
  Scène = neuf trois.scène ();
  scène.fog = Nouveau Trois.fogexp2 (0x1C3C4A, 0.00045); 

06. LAISSE LA LUMIÈRE DANS

AFIN DE VOIR LE CONTENU DE LA SCÈNE, Quatre Lumières serees Places. LE PREMIER EST UNE LUMIÈRE Hémisphère, Qui est Utilee pour Obtenir L'Ambiance de base de la Scène. LE PROCHAIN ​​VERS LE HAUT EST LA LUMIÈRE CENTRALE QUI AJOUTE UNE LUMIÈRE BLUEUE BLANUE AU MILIEU DE LA SCÈNE. Ceci est Mis sur Un Côté pour Donner un lumière sur Toute la Scène.

 var hemisphéricité = nouveau trois.hemispherelight (0XE3Feff, 0xE6DDDDC8, 0,7);
Scène.Ajouter (Hémisphère);
hémispherelight.position.y = 300;
var centerlight = neuf troislight.spotlight (0xB7F9FF, 1);
scène.add (Centerlight);
Centerlight.Position.set (2500, 300, 2000);
CenterLight.Penumbra = 1;
Centerlight.Decay = 5; 

07. LUMIÈRES Animées

Les Deux Prochaines Lumières à Ajouter. " Ponte "Et ' Pointlight2 'Sont des Lumières Coloriées Qui vont Encercler Dans les Directions Occidentales Autour de la Scène Afin Que La Lumière Change Consultation Dans la Vue. Le Premier Est UNE LUMIÈRE ROSE ET LA SOUXE EST UNE LUMIÈRE Orange. Le Chemin et le format pour Les Images de Réflexion Sont Définis Dans Les Deux Dernières Lignes.

 POINTELLIGHT = NEUF TROIS.PRIRIGHLICH (0XE07BFF, 1.5);
pointlight.position.z = 200;
scène.add (point de vue);
poinglight2 = neuf trois.prienglight (0xFF4E00, 1.2);
pointlight2.position.z = 200;
scène.add (point de boit);
Var chemin = "img /";
Var format = '.jpg'; 

08. Surfaces Brillantes

La Surface Liquide Aura Une Surface Réfléchissante et Brillante et Cela Se FR en Creant Un cube de Réflexion. Il se'agit d'un cube avec un boîte de Skybox à 360 degrés Placée à l'Intérieur, CE Qui Sera Refrété sur la Surface du Liquide. Le ' URLS 'Le Tableau Contient les images à chargeur, puis le matiriau est configuration.

09. Mettre en Place des Groupes

Le Groupe de Déménaguriens CONTENDRA SUR LES PARTICULES PARTIRES QUI SERONT AJOUTÉES PLUS TARD, TANDIS QUE LE GROUPE DE SOL CONTENDRA LA SURFACE DU LIQUIDE. ONU NOUVEL OBJET 3D EST Créé Qui Tiendra Tiendra Cette surface. Il y Aura Deux Surfaces Liquides; Sur Aura Le Matériau Réffléchissant et La Secondee Aura Le Filframe ' floormaterial ', comme Défini ICI.

 MOVERGROUP = Nouveau Trois.Object3D ();
scène.add (groupegroup);
Var planchergroup = Nouveau Trois.Object3D ();
Var Floormaterial = Nouveau Trois.MeshPhongMaterial ({
Couleur: 0Xeeeeee, Côté: Trois.Doubleside, Mélange: Trois.addididiFens, Filframe: True
});
plancherométrie = neuf trois.planégeométrie (plancher + 1200, plancher_depth, plancher_res, plancher_rès); 

10. Faire les surfaces

Create liquid effects: make the surface

[DIX] [DIX]
LORSQUE LA PREMIÈRE SURFACE LIQUIDE EST AJOUTEE, LA CARTE DE RÉFLEXION ES TRÈSE ET LE BROUILLARD AIDE À MÉLANGE L'Arrière-Plan Ensemble

Les Deux Surfaces Liquides Sont Créées ICI ' floormeh "Et ' floormeh2 '. ILS sont sont Positionnels et placés à l'INTÉRIEUR DU ' GROUPE DE PLANCHER 'puis tourné à un bon angle de visualisation de la Caméra. CE N'est PAS DIRECTION PLAT, MAIS LÉGÈREMENT INCLINÉ COMBA A L'AIR MIEUX Comme Ça.

 Var Floormesh = Neuf Trois.Mesh (plancherométrie, cubématique);
Var Floormeh2 = Nouveau Trois.oush (plancherométrie, floormaterial);
floormesh2.position.y = 20;
floormeh2.position.z = 5;
planchergroup.add (Floormeh);
groupe de plancher.add (floormesh2);
Scène.add (Groupe de Plancher);
floormeh.rotation.x = math.pi / 1.65;
floormeh2.rotation.x = math.pi / 1.65;
planchergroup.position.y = 180; 
[DIX]

11. AJOUTER DES Particules Flottantes

Create liquid effects: add floating particles

[DIX] [DIX]
Les Particules Flottantes Remplissent La Scène et Lorsque Tout Cela Est Animé dans la Fonction de Rendu, Il APPORTE ONU Sentiment de Mouvement envers la Caméra

LA SECTION DU CODE ICI CRÉE UN OBJET DE GÉOPÉTRIE, PUIS Place 2 000 Somme Qui-Agissent Comme des particules. Celles-CI Sont Distribuées à des positions Aléatoires sur l'AX x, Y et Z. Celles-Ci Flotteront Juste au-Dessus de la Surface du Sol Liquide.

 Pangeométrie = Neuf Trois.Geométrie ();
sprite = textureloader.load ("img / sprite.png");
verser (i = 0; i & lt; 2000; i ++) {
  var sommet = neuf trois.vector3 ();
  vertex.x = 4000 * math.random () - 2000;
  vertex.y = -200 + math.random () * 700;
  vertex.z = 5000 * math.random () - 2000;
  pgometry.vertices.push (SOMMET);
} 

12. Créer Le look

Le Matériiau Défini Ici Définira la Façon Ne les parties de l'air. UNE Image A Été Chargée à l'Étape PRÉCÉDENTE ET UTILISÉE Comme Image sur Particules de Chaque, UNE FIIS Que le Maturiau Est Créé. Appliqué de la Géométrie de la Géométrie de Toute les particules. Cuzz-CI Sont Superite Ajoutés dans la Scène.

13. AJOUTER LE LOGO

Create liquid effects: add the logo

[DIX] [DIX]
AJOUT DANS LE LOGO, QUI EST UNE IMAGE PNG Transparente, Place Cela au Centre de la Scène et EST Facile à remplacer Par Vélecteur Propre logo ultime.

SERA PLACÉ AU CENTRE DE L'ÉCRAN ET IL SERA AJOUTEUR SUR UN PLAN PLAN DE QUI FERA Face à la Caméra. Le Logo Est Fabriqué Légèrent Transparent et Donnée Un Mélange d'Additif de Manière à CE Qu'il Soit Plus Visible Lorsque des Objets et Légers Passent Derrière Lui. Ceci est positionné et placé dans la Scène.

 sprite = textureloader.load ("img / logo.png");
géométrie = neuf trois.planebuffergéométrie (500, 640, 1);
Matériel = Nouveau Trois.MeshlambertMaterial ({
  Transparent: VRAI, OPACITÉ: 0,8, Mélange: Trois.addiditimédiciaires, Carte: Sprite, Côté: Trois.Doubleside
});
Var avion = neuf trois.mesh (Géométrie, matériau);
plan.position.set (0, 70, 1800);
Scène.add (Avion); 

14. AJOUTER LES PARAMÈRES DE RENDU

Le Rendu Est Mis en Place Pour Avoir des Bords Lisses et Anti-Aliasés et maintenante La Couleur de Fond Est Définie. Ceci est Ajouté dans le Corps du Document Afin Que La Scène Soit sur la page HTML. Les Effets post-Traitement Sont Mis en Place En Présentant Diverses Diverses Passes de Rendu et de Shader Initialesées.

15. Faire le Passe

UNE FOIS QUE LE FILM ET LE GLITCH Passe Sont Ajustés, UN Composite d'Effet Est Créé Qui Compose Toute Toute Les Transactions Ensemble. Celles-CI Sont AJoutées Un Par Compostiqueur et Il Sera Éventeullement Rendu à l'Écran de l'afficheur du public.

16. Fermer La Fonction 'Init'

Les Derniers Paramètres Sont Ajoutés pour l'initialisation de la Scène. Les Paramètres de post-Traitement Sont Définis, Le Réglage des Ondes Est Appelé et Un Écouteur d'Écouteur d'Écouteur d'Écouteur d'Écouteur d'Écouteur d'Écouteur Est Ajouté Vers la Chaque Fois que le Navigate Est Redimensionné. CELA Permet à l'affichage d'estre Mis à jour Versez les dimensions des Nouvelles aux Nouvelles.

17. METTRE EN PLACE LES VAGUES

Les Vagues Sont Créées Maintenante Pour la Surface du Liquide. Ceci Est Faire en Déplaçant Chaque Sommet de la Géométrie de Plancher sur l'Axe X et Z et en Le Haut Sur l'Ax des Y. à CE Stade Le ' verser Les Boucles Sont Créées pour l'AX X et Z.

 SETWAVES DE FONCTION () {
  stepcount ++;
  movergroup.position.z = -move_spd;
  var i, ipos;
  Var offset = stepcount * move_spd / étage_depth * plancher_res;
  verser (i = 0; i & lt; étage_res + 1; i ++) {
  Versez (var j = 0; J & LT; Étage_res + 1; J ++) {
  ipos = i + offset; 

18. Faire des vagues

TOUS LES SOMMETS NE SERONT PAS ÉCHOUÉS VERS LE HAUT DE LA MÊME MANIÈRE. Les Personnes Les Plus Éloignées de la Caméra Seront Grandes, Les Côtes Seront Légèrent Moins Élevés et les Plus Proches de la Caméra Seront Le Moinins à l'Échelle. CELA Rend Le Dos et les Côtés Légèrent Plus Intérupteurs à Entres.

 SI ((i & GT; 30) || (J & LT; 12) || (J & GT; 48)) {
  Plongéortrie.vertes [i * (plancher_res + 1) + j] .z = snoise.Noise (ipos / étage_Res * bruyantcale, j / étage_res * bruitscale, bronzé) * plancher_ht;
  } Sinon Si (i & GT; 25 & amp; & amp; i & lt; 30) {
  plancherométrie.vertes [i * (plancher_res + 1) + j] .z = snoise.Noise (ipos / plancher_res * bruyantcale, j / étage_res * bruyantcale, bronzé) * (plancher_ht / 1.2);
  } Autre {
  Plangeométrie.verçue [i * (plancher_res + 1) + j].z = snoisise.Nois (ipos / étage_res * bruyantcale, j / terrain_res * bruyantcale, nusteed) * (plancher_ht / 2);
  }
  }
  }
  Plusgeométrie.vergetiseeDUpdate = true;
} 

19. Redimensionnez et Animer

Lorsque La Fenêtre est Redimensionnée, La Foncelle Est appelée Ici à Partir de l'auditeur Qui a Été Configurée à l'Étape 16. L'appareil photo, Le Rendu et le compositeur Sont TOUS Réinitialisés Ici Pourtant pour correspondre aux Nouvêtres Dimensions de la Fenêtre du Navigureur. La Fonction Animate SE pose Simplement à 60fps, appelant La Fonction de Rendu pour Métre à l'afficheur.

 Fonction onwindowresize () {
  camérra.aspect = fenêtre.innerwidth / window.innerheight;
  camérra.updateProjectionmatrix ();
  rendu.setsize (fenêtre.innerwidth, fenêtre.innerheight);
  compositeur.Setsize (Fenêtre.innerwidth, fenêtre.innerheight);
}
Fonction Animate () {
  DemandAnationFrame (animate);
  rendu ();
} 

20. DÉFINIR CHAQUE CADRE D'ACTION

La Fonction de Rendu S'Appelle Chaque Image. Les Feux de Point Sont Réglés sur Orbite Autour de la Scène et la Caméra Est Positionnée en Fonction du Mouvement de la Souris, Avec Un Peu de Soulagement de Sorte Qu'il SE Déplace progressivement en place. La Caméra Est Réglée Pour Toujours à Toujours Le Centre de la Scène.

 Fonction Rendu () {
  var chronomètre = -0.0002 * date.now ();
  pointlight.position.x = 2400 * math.COS (Minuterie);
  pointlight.position.z = 2400 * math.sin (Minuterie);
  pointlight2.position.x = 1800 * MATH.COS (-MER * 1.5);
  pointlight2.position.z = 1800 * math.sin (-mer * 1.5);
  caméra.position.x + = (mousex - caméra.position.x) * 0,05;
  camérra.position.y + = (-mousey - camérra.position.y) * 0,05;
caméra.lookat (Scène.position); 

21. Rendez la Scène

Create liquid effect: render the scene

[DIX] [DIX]
Chaque FOIS Que L'ONU DES EFFETS POST-TRAITEMENT EXÉCUE UN EFFET DE GLITCH À L'ÉCRAN JUSTE POUR L'ANIMER ET DEFORMER L'Écran, Avant de Retourner à la Normale

Dans la Dernière Étape, Les Particules Sont Déplacées sur Léeur Sommet individuel et S'ils arrivent à la Caméra, ILS Sont Replié à la distance. Ceci est Mis à jour et le ' Setwaves ' La Foncelle Est appelée pour Rendre les Ondes Roulère en avant. La Scène Est Rendue par le compositeur d'Effets.

Article CET A Été Publié à L'Origine Dans Creative Web Design Magazine Concepteur web . Abonnez-vous à la concepteur Web ICI .

Articles Liènes:

  • CommenceZ AVEC WEBLL EN UTILISANT TROIS.JS
  • 11 Étapes pour Creer de Meilleurs Logos
  • 18 Canaux YouTube Design Web WEB VOUS DEVEZ MEMEUR
[DIX] [DIX]
[DIX]

Comment - Most Popular Articles

Comment accélérer et optimiser les sites WordPress

Comment Jan 27, 2026

[DIX] [DIX] [DIX] [dix] (Crédit d'image: concepteur web) [DIX] WordPress A COMMENC�..


Construisez un composant de la tête respectueux de la référencement pour NEXTJS / React

Comment Jan 27, 2026

[DIX] [DIX] [DIX] [dix] (Crédit d'Image: Espace Négatif sur Les Poisselles) [DIX] ..


14 Conseils de flux de travail ZBrush

Comment Jan 27, 2026

[dix] [dix] [dix] [dix] Tous les artistes ont leur propre flux de travail unique lors de la création..


Créer des portraits illustrés des photos

Comment Jan 27, 2026

[dix] [dix] [dix] [dix] J'ai étudié l'art et Techniques de peinture ..


Obtenez votre tête autour de réagir avec ces cinq facteurs

Comment Jan 27, 2026

[dix] [dix] [dix] [dix] L'apprentissage réagit, la bibliothèque JavaScript pour la création d'inte..


Comment influencer les classements de Google avec votre contenu

Comment Jan 27, 2026

[dix] [dix] [dix] [dix] Votre contenu ne se passe nulle part à moins que les personnes puissent la r..


Comment maîtriser l'ombrage de la peau en 3D

Comment Jan 27, 2026

[dix] [dix] [dix] [dix] Pendant longtemps maintenant, j'ai été coincé dans une ornière avec mon ..


Dessinez des os précis et des muscles

Comment Jan 27, 2026

[dix] [dix] [dix] [dix] L'anatomie est un sujet énorme et nécessite un mélange d'informations scie..


Catégories