◆ Portail Antalaha

Annuaire › Code ouvert

Logo 3D animé pour un site d'association

tutorial · Voir le site ↗
Connectez-vous pour copier ce site

Code publié par son auteur, en lecture seule. « Copier dans mon espace » crée un nouveau site à vous (non publié) que vous pouvez modifier librement.

README.md · 2.9 Ko

# Logo 3D animé pour un site d'association (Zdog, niveau débutant)

## Cas d'usage

L'association fictive « Les Amis d'Antalaha » veut un logo qui se remarque dans l'en-tête de son
site. Ici, un **losange** et la **lettre A** sont dessinés en pseudo-3D avec [Zdog](https://zzz.dog)
(v1.1.3) : le logo se **balance doucement** tout seul, et le visiteur peut le **faire tourner au doigt
ou à la souris**. Le bloc est pensé pour être copié tel quel dans l'en-tête d'une autre page.

## Arborescence

```
zdog-logo-3d/
├── index.html        Page : en-tête avec le canevas, contrôles, explications
├── site.json         Titre, description et étiquettes pour le portail
├── css/
│   └── style.css     Mise en page mobile d'abord (variables de couleur en tête)
├── js/
│   ├── config.js     Réglages (vitesses, tailles) et thèmes de couleurs — AUCUNE logique
│   ├── logo.js       Fabrique creerLogo() : les 4 formes 3D (losange, anneau, A, soleil)
│   └── main.js       Scène Zdog, boucle d'animation, branchement des contrôles
└── medias/
    ├── pirogue.svg       Icône (médiathèque libre de droits du portail)
    └── motif-vagues.svg  Motif de vagues pour le pied de page
```

Ordre des scripts : `zdog.min.js` → `config.js` → `logo.js` → `main.js`.

## Notions abordées

- Le système de coordonnées de Zdog : x à droite, **y vers le bas**, z vers le spectateur
- Les rotations en radians et `Zdog.TAU` (un tour complet)
- `Zdog.Illustration` : la scène liée à un `<canvas>`
- `Zdog.Anchor` : regrouper des formes pour les déplacer ensemble
- `Zdog.Rect` (un carré tourné de 45° devient un losange), `fill`, `stroke`, `color`
- `Zdog.Shape` avec un `path` (lettre A), `closed: false` et la commande `move`
- Un `Shape` sans `path` + gros `stroke` = une sphère
- `translate` et `rotate` ; la profondeur grâce à `z`
- `dragRotate: true`, `onDragStart`, `onDragEnd`
- La boucle `requestAnimationFrame`, `deltaTime`, `updateRenderGraph()`
- Lissage avec `Zdog.lerp` ; `Math.sin` pour un balancement
- Canevas net sur écrans haute densité : `resize: true` (Zdog applique `devicePixelRatio`) et zoom adaptatif
- Espace de noms global (`AppLogo`) à la place des modules ES
- Accessibilité : `aria-label`, `prefers-reduced-motion`, `<noscript>`

## Idées d'exercices

1. Changez les couleurs d'un thème dans `config.js`, ou ajoutez un thème « Océan indien ».
2. Remplacez la lettre A par la première lettre de votre association (indice : modifiez le `path`).
3. Ajoutez une troisième couche (un deuxième anneau à `z: 20`) et observez la profondeur.
4. Remplacez le soleil par une petite pirogue construite avec un `Shape` à `path` courbe (`bezier` ou `arc`).
5. Ajoutez un mode « tour complet » (`illo.rotate.y += dt`) au lieu du balancement.
6. Faites varier le `stroke` du soleil avec `Math.sin` pour qu'il « pulse ».