Generative Design
Tweakpane
2526 · INMI · Dekens Antoine
Tweakpane
Première partie
Pourquoi ?
Tweakpane permet de modifier des valeurs directement depuis un menu accessible directement sur votre site, ce qui permet de visualiser différents résultats.
Types de valeurs
- Number
- String
- Boolean
- Color
- Point (vector)
Mise en place
Une fois la librairie chargée (import, CDN, local, etc.), on peut créer une variable pane:
const pane = new Pane();
Javascript object
Avant de pouvoir manipuler des valeurs, il faut créer une variable de type objet qui contiendra les valeurs à modifier pour notre pane.
// Un objet vide.
const values = {};
Les nombres
On va ajouter une valeur width (ou propriété) de type Number, qui représentera la largeur de notre particule:
// Défini la propriété 'width' = 0
const values = {
width: 0
};
// Pour accéder à une propriété d'un objet
// on écrit le nom de la variable suivi d'un point
// puis du nom de la propriété.
console.log( values.width );
Lier une propriété
Maintenant il faut dire à Tweakpane via la méthode addBinding( ) qu'on veut modifier la propiété width de notre objet values:
// Défini la propriété 'width' = 0
const values = {
width: 0
};
// addBinding prend 2 paramètres:
// L'objet qui contient nos proprétés
// et le nom de la propriété à lier
// sous forme de string (entre guillements)
pane.addBinding( values, 'width' );
Ajouter un évènement ciblé
Les changements de la propriété width ne sont pas encore visible car on ne met pas à jour les styles de notre particule. Pour se faire, on va rajouter un évènement via la méthode on( ) pour écouter le changemetn de valeur :
pane.addBinding( values, "width" )
// On ajoute un évènement via '.on()' qui écoute le changement
// de valeur de cette propriété 'width'
// Attention ceci est une méthode enchaînée,
// donc on mettra le ';' à la toute fin.
.on( 'change', ( event ) => {
// Affiche la nouvelle valeur de 'width' dans la console
console.log(event.value);
}
} );
Range - Min & Max
Par défaut les nombres créent des champs simples dans Tweakpane. Parfois on voudra un champ de type range, qui permettra de jouer entre une valeur minimum et maximum:
const values = {
width: 100
};
// On passe entre crochets un objet d'options
// avec 2 propriétés, min et max.
pane.addBinding( values, 'width', {
min: 24,
max: 200
});
Range - Step
En plus de min & max, on peut définir une propriété step qui défini la valeur d'incrémentation:
const values = {
width: 100
};
// On passe la propriété step qui
// défini la valeur d'incrémentation
pane.addBinding( values, 'width', {
min: 24,
max: 200,
step: 2
});
Les couleurs
Pour ajouter une couleur à modifier, le plus simple est définir une propriété avec une valeur de type string en hexadécimal
ex: #6FFFE9// Défini la propriété 'width' = 100
// Défini la propriété 'backgroundColor' = "#6A5ACD"
const values = {
width: 100,
backgroundColor: "#6A5ACD"
};
// pane.addBinding( values, 'widt…
// On ajoute un nouveau addBinding sur notre couleur
pane.addBinding( values, 'backgroundColor' );
Ajouter un évènement global
On peut aussi ajouter un évènement sur toute nos valeurs:
pane.on( 'change', (e) => {
// On fait quelque chose dès qu'une des valeurs ajoutées
// via la méthode addBinding change.
} );