| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/API/WebGL_API/Tutorial/Animating_objects_with_WebGL | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
Dans cet exemple, nous allons faire tourner notre carr 2D.
Commenons par faire tourner le carr. La premire chose dont nous avons besoin est une variable pour mmoriser la rotation courante du carr :
var squareRotation = 0.0;
Maintenant, nous devons modifier la fonction drawScene() pour appliquer la rotation courante du carr quand on le dessine. Aprs dplacement la position de dessin initiale du carr, nous appliquons la rotation comme suit :
mat4.rotate(
modelViewMatrix, // matrice de destination
modelViewMatrix, // matrice de rotation
squareRotation, // rotation en radians
[0, 0, 1],
); // axe autour duquel tourner
Ceci fait tourner la modelViewMatrix de la valeur courante de squareRotation, autour de l'axe Z.
Pour raliser effectivement l'animation, nous avons besoin d'ajouter du code qui change la valeur de squareRotation au fil du temps. Nous pouvons faire cela en crant une nouvelle variable pour mmoriser l'instant auquel nous avons ralis l'animation pour la dernire fois (appelons le then), puis en ajoutant le code suivant la fin de la fonction principale :
var then = 0;
// Dessiner la scne rptitivement
function render(now) {
now *= 0.001; // conversion en secondes
const deltaTime = now - then;
then = now;
drawScene(gl, programInfo, buffers, deltaTime);
requestAnimationFrame(render);
}
requestAnimationFrame(render);
Ce code utilise requestAnimationFrame pour demander au navigateur d'appeler la fonction "render" chaque image. requestAnimationFrame nous transmet le temps en millisecondes depuis le chargement de la page. Nous le convertissons en secondes, puis nous lui soustrayons le dernier instant pour calculer deltaTime, qui est le nombre de secondes depuis le rendu de la dernire image. la fin de drawscene, nous ajoutons le code pour mettre jour squareRotation.
squareRotation += deltaTime;
Ce code utilise le laps de temps qui s'est coul depuis la dernire fois que nous avons mis jour la valeur squareRotation pour dterminer de combien faire tourner le carr.
Voir le code complet | Ouvrir cette dmo dans une nouvelle page
Cette page a t modifie le 6 nov. 2023 par les contributeurices du MDN.
WebGLRenderingContextWebGLBufferWebGLFramebufferWebGLRenderbufferWebGLObjectWebGLProgramWebGLShaderWebGLTextureWebGLUniformLocationWebGLActiveInfoWebGLShaderPrecisionFormatWebGLContextEventWebGLQueryWebGLSamplerWebGLSyncWebGLTransformFeedbackWebGLVertexArrayObjectWebGL2RenderingContextWEBGL_compressed_texture_s3tcWEBGL_compressed_texture_s3tc_srgbWEBGL_compressed_texture_etc1WEBGL_compressed_texture_pvrtcWEBGL_debug_renderer_infoWEBGL_debug_shadersWEBGL_depth_textureOES_element_index_uintEXT_frag_depthWEBGL_lose_contextEXT_texture_filter_anisotropicEXT_sRGBOES_standard_derivativesOES_texture_floatWEBGL_draw_buffersOES_texture_float_linearEXT_shader_texture_lodOES_texture_half_floatOES_texture_half_float_linearWEBGL_color_buffer_floatEXT_color_buffer_half_floatOES_vertex_array_objectANGLE_instanced_arraysEXT_blend_minmaxEXT_disjoint_timer_queryOES_draw_buffers_indexedCertaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |