SkillAgentSearch skills...

Lenia

No description available

Install / Use

/learn @Samuelzila/Lenia
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Lenia

Lenia UdeS 2024 !

(English version follows)

Status du projet

Ce projet ayant été réalisé dans le contexte d'un stage de recherche à l'Université de Sherbrooke, nous n'avons pas l'intention de le maintenir au-delà du temps donné au cours du stage, soit l'été 2024.

Description

Un programme pour explorer la famille d'automates cellulaires Lenia.

Fonctionnalités

  • Support pour de multiples noyaux de convolution dont il est possible de changer les paramètres en cours de simulation.
  • Support pour jusqu'à trois canaux.
  • Option pour utiliser l'algorithme FFT pour des noyaux qui en bénéficieraient.
  • Option pour avoir des noyaux asymétriques, où les valeurs du haut sont plus importantes que celles du bas.
  • Possibilité d'enregistrer des états puis de les charger lors d'une exécution ultérieure.
  • Programme pour rendre des vidéos à partir des simulations.
  • Des outils pour dessiner dans le monde de Lenia.
  • Possibilité d'étamper des "créatures" de type Orbium.
  • Une interface qui affiche diverses statistiques utiles à l'analyse des mondes. Les unités affichées sont celles proposées dans l'article original de lenia par Bert Chan. Les statistiques présentées sont les suivantes :
    • L'option Canal choisi détermine à partir de quel canal sont calculées les statistiques. Si l'option tous est sélectionnée, les statistiques sont calculées en tenant compte de tous les canaux.
    • La masse correspond à la somme de tous les états. Lorsque tous les canaux sont choisis, la masse affiche la somme des masses de tous les canaux.
    • Le volume correspond au nombre d'états non nuls dans la simulation. Comme pour la masse, le volume, lorsque tous les canaux sont choisis, correspond à la somme des volumes de tous les canaux.
    • La densité correspond à la masse divisée par le volume.
    • Le centroïde, aussi appelé centre de masse, est calculé par une moyenne de tous les emplacements des cellules de la grille, pondérée par leurs états. Ainsi, c'est le centre de tous les états.
    • Le centre de croissance est calculé, un peu comme le centroïde, par une moyenne de tous les emplacements sur la matrice de croissance (appelé growthMatrix dans le code), pondérée par leurs valeurs de croissance.
    • La distance centroïde centre de croissance correspond à la distance euclidienne entre le centroïde et le centre de croissance.
    • La vitesse de déplacement du centroïde correspond à la distance euclidienne entre le centroïde au temps t et au temps t-dt.
    • La vitesse angulaire de déplacement du centroïde correspond à la différence d'angle entre le vecteur de déplacement du centroïde au temps t et au temps t-dt.
    • L'asymétrie de masse correspond à la différence de masse entre les deux côtés du vecteur de déplacement du centroïde.
    • Le pourcentage d'asymétrie de la masse correspond au rapport entre l'asymétrie de la masse et de la masse, en pourcentage. (Cette statistique est la seule qui n'était pas proposée dans l'article de Chan)

Visuels

<img src="/assets/orbium.gif" width="512" height="512" alt="Animated orbium"/><img src="/assets/hydrogenium.gif" width="512" height="512" alt="Animated hydrogenium" />

Pulmenti Primordia, une créature née d'un noyau asymétrique.

<img src="/assets/Pulmenti Primordia.gif" width="512" height="512" alt="Animated pulmenti" />

Installation

Installez d'abord l'éditeur de code Processing. Ouvrez le fichier lenia.pde et vous pourrez lancer le programme avec le bouton de lecture en haut à gauche ou CTRL+R.

Utilisation

Il est recommandé d'utiliser une souris afin de faciliter l'utilisation de ce programme.

Bien que plusieurs paramètres puissent être modifiés pendant l'exécution, d'autres, comme le nombre de canaux, sont écrits directement dans le code. Ceux-ci sont dans les premières lignes de lenia.pde dans la section Variables de configuration.

Actuellement, notre programme ne permet pas de rendre des simulations qui ne sont pas dans un monde carré. En fonction de la machine utilisée, il se peut que le programme ne supporte pas non plus des mondes n'ayant pas des côtés qui sont des multiples de 32 ou de 64.

Plusieurs touches permettent d'interagir avec le programme :

  • La touche r permet de réinitialiser tous les canaux avec du bruit de Perlin.
  • La touche n permet de réinitialiser tous les canaux aléatoirement.
  • La touche c permet de réinitialiser tous les canaux.
  • La touche o active l'étampe de créature de type Orbium (aussi accessible directement dans l'interface).
  • La touche espace met la simulation sur pause (aussi accessible directement dans l'interface).
  • La touche d permet de réinitialiser le zoom et le déplacement.
  • La touche a crée des noyaux aléatoires.

La souris permet d'interagir avec la simulation et avec l'interface :

  • En maintenant un clic droit de la souris dans la simulation, il est possible de faire glisser l'écran en déplaçant la souris. -En utilisant un clic gauche de la souris dans la simulation, il est possible de modifier les états des cellules en fonction des paramètres de l'interface activés. Cette fonctionnalité est appelée Pinceau. Le mode standard du pinceau permet de changer l'état des cellules en cercle de rayon de 10 pixels avec une intensité de 0,50.

L'interface est interactive avec le clic gauche de la souris. Toutes les cases peuvent être basculées.

  • La case Pause permet de basculer entre la simulation et le mode pause.
  • La case Enregistrer permet de commencer l'enregistrement des états afin de les revisiter ultérieurement.
  • La case Charger un état permet de charger un état enregistré précédemment ou un état téléchargé.
  • La case Efface permet de basculer entre le mode efface et le mode standard du pinceau. Le mode efface permet d'effacer tous les états des cellules dans le rayon du pinceau en les fixant à 0.
  • La case Aléatoire permet de basculer entre le mode aléatoire et le mode standard du pinceau. Le mode aléatoire permet de modifier les états des cellules dans le rayon du pinceau en utilisant du bruit de Perlin.
  • La case Carré permet de basculer entre le mode carré et le mode standard du pinceau. Le mode carré permet de changer la forme du pinceau en carré avec des côtés de longueur rayon X 2.
  • Le rayon du pinceau peut être modifié en cliquant sur l'icône < et > en modifiant la valeur par incréments de 1 pixel.
  • L'intensité du pinceau peut être modifiée en cliquant sur l'icône < et > en modifiant la valeur par incréments de 0,05. L'intensité du pinceau correspond à l'état des pixels d'une valeur continue entre 0 et 1.
  • Le canal où le pinceau interagit peut être modifié en cliquant sur l'icône < et > en modifiant la valeur par incréments de 1.
  • La case Canal permet de basculer entre le mode canal et le mode standard du pinceau. Le mode canal permet de modifier tous les canaux en même temps à l'aide du pinceau.
  • Les cases 1, 2 et 3 permettent d'afficher seulement le canal ou les canaux sélectionnés.
  • La case Étampes permet de basculer entre le mode étampe et le mode standard. Le mode étampe permet de modifier les cellules en fonction d'une étampe précise. Présentement, il n'y a qu'une seule étampe : un Orbium.
  • L'angle permet de modifier l'angle de direction de l'orbium implémenté par l'étampe. L'angle des étampes peut être modifié en cliquant sur l'icône < et > en modifiant la valeur par incréments de 30 degrés.

Dans l'interface, il y a une section spécifique pour les noyaux et leurs paramètres. Afin d'utiliser cette interface, la simulation est automatiquement mise sur pause.

  • Le noyau concerné peut être modifié en cliquant sur l'icône < et > en modifiant la valeur par incréments de 1.
  • Le rayon de convolution du noyau peut être modifié en cliquant sur l'icône < et > en modifiant la valeur par incréments de 4 cellules.
  • Le paramètre μ (mu) peut être modifié en cliquant sur l'icône < et > en modifiant la valeur par incréments de 0,01. Ce paramètre représente le centre de croissance.
  • Le paramètre σ (sigma) peut être modifié en cliquant sur l'icône < et > en modifiant la valeur par incréments de 0,001. Ce paramètre représente l'étalement de croissance.
  • La fonction du cœur du noyau (Core function) peut être modifiée en cliquant sur l'icône >.
  • La fonction de croissance peut être modifiée en cliquant sur l'icône >.
  • L'entrée peut être modifiée en cliquant sur l'icône < et > en modifiant la valeur par incrément de 1. Ce paramètre représente le canal dans lequel la convolution est effectuée.
  • La sortie peut être modifiée en cliquant sur l'icône < et > en modifiant la valeur par incrément de 1. Ce paramètre représente le canal dans lequel les valeurs de croissances obtenues suite à la convolution seront utilisées.
  • Le poids peut être modifié en cliquant sur l'icône < et > en modifiant la valeur par incrément de 0,25. Ce paramètre influence le poids que le noyau aura dans son canal de sortie respectif.
  • Afin d'appliquer les changements, il faut cliquer sur la case Appiquer les changements avant de reprendre la simulation.

Dans l'interface, il y a une section dédiée aux couleurs de la simulation. Le mode de couleur utilisé est le HSB.

  • La première barre représente les couleurs de la simulation actuelle, passant du 0 (cellule morte) à 1 (cellule vivante).
  • Les barres de gauche représentent la couleur à 0 et les barres de droite représentent la couleur à 1.
  • La première rangée de barres représente le paramètre de la teinte. La flèche entre les deux barres représente le sens dans la teinte que l'étalement de couleur prendra.
  • La deuxième rangée de barres représente le paramètre de la saturation.
  • La troisième rangée de barres représente le paramètre de luminosité. Il est fortement recommandé de laisser la luminosité du 0 au minimum lorsqu'il y a plus d'un canal dans la s
View on GitHub
GitHub Stars8
CategoryDevelopment
Updated2mo ago
Forks0

Languages

Processing

Security Score

65/100

Audited on Dec 31, 2025

No findings