Installation et mise à jour
Usage
cavoxelshader rule outOfBoundValue
Retourne le code du shader à stdout.
cavoxelshader info [filename]
Extrait les détails d'un fichier généré donné (règle, outOfBoundValue et version) vers stdout.
Lorsqu'il est utilisé sans nom de fichier, listera tous les fichiers du répertoire courant avec leurs détails à stdout.
Retourne le code du shader à stdout.
cavoxelshader info [filename]
Extrait les détails d'un fichier généré donné (règle, outOfBoundValue et version) vers stdout.
Lorsqu'il est utilisé sans nom de fichier, listera tous les fichiers du répertoire courant avec leurs détails à stdout.
Exemples
cavoxelshader "E 4..6 / 6 von-neumann" 0 > erode.txt
Ici "E 4..6 / 6 von-neumann" est la règle et 0 est la valeur non liée.
Usage Général
Dans votre console / terminal, allez dans le dossier shader de votre MagicaVoxel install et exécutez cavoxelshader "E 4..6 / 6 von-neumann" 0 > erode.txt. Ceci créera un fichier appelé erode.txt contenant le shader voxel.
Puis dans MagicaVoxel, chargez un modèle (par exemple monu1 ou monu9) et exécutez xs erode dans sa console pour l'exécuter une fois. Vous pouvez aussi exécuter xs -n 5 erode, l'exécuter 5 fois, etc.
Puis dans MagicaVoxel, chargez un modèle (par exemple monu1 ou monu9) et exécutez xs erode dans sa console pour l'exécuter une fois. Vous pouvez aussi exécuter xs -n 5 erode, l'exécuter 5 fois, etc.
Règle ?
La règle décrit la formule appliquée à chaque cellule pour mettre à jour son état.
Il est recommandé d'utiliser le format de règle personnalisé "Extended". La commande accepte de nombreux autres formats de règles (Life S/B, Generations S/B/C, Vote for Life, Cyclic R/T/C/N, LUKY et NLUKY) mais ils ont été initialement conçus pour la 2D, la plupart ne permettant que des valeurs jusqu'à 9.
Le format d'une règle étendue valide est le suivant :
E Valeurs de survie / Valeurs de naissance Valeurs de voisinage Valeurs de voisinageType de quartier
La valeurSurvie définit le nombre de voisins vivants nécessaires à la survie d'une cellule (rester à son état vivant actuel).
Les Valeurs de Naissance définissent le nombre de voisins vivants nécessaires à la naissance d'une cellule (passage de l'état mort à l'état vivant). Ce sont deux listes de nombres séparés par des virgules (ce qui permet d'avoir un nombre > 9). Ils peuvent aussi contenir des plages exprimées avec deux points, également très utiles en 3D CA.
Par exemple, "E 8,10...26 / 8...26" signifie :
une cellule doit survivre si elle a un nombre de voisins vivants égal à 8 ou compris entre 10 et 26
une cellule doit naître si elle a un nombre de voisins vivants compris entre 8 et 26
Les types de voisinage les plus courants sont Moore (par défaut) et Von-Neumann.
La zone de voisinage définit la distance que le quartier couvre, son rayon. Sa valeur par défaut est 1.
Un quartier Moore (de la plage 1) comprend essentiellement toutes les cellules dont au moins un coin touche la cellule courante. En 3D, cela donne 26 voisins pour une cellule donnée. Un quartier Von-Neumann (de rang 1) ne comprend que les cellules directement adjacentes aux cellules actuelles. En 3D, cela donne 6 voisins pour une cellule donnée.
Les pages de Wikipedia pour ces quartiers incluent des définitions plus correctes et des exemples de la façon dont le quartier Von-Neumann s'étend avec une gamme > 1. https://en.wikipedia.org/wiki/Moore_neighborhood https://en.wikipedia.org/wiki/Von_Neumann_neighborhood
Le format de règle étendue permet également des types de quartiers non conventionnels : coin (essentiellement les 8 coins du quartier Moore), bord (les bords du quartier Moore), face (les faces du quartier Moore) et axe (toutes les cellules directement alignées avec une des faces de la cellule courante).
Enfin, il est possible d'ajouter une probabilité à chaque plage et à chaque valeur en utilisant une notation deux-points.
Par exemple "E 8:0.75,10...26 / 8...26:0.95" signifie :
une cellule peut survivre si son nombre de tous ses voisins est égal à 8 (probabilité de 75%)
une cellule doit survivre si elle a un nombre de voisins vivants compris entre 10 et 26
une cellule peut naître si elle a un nombre de voisins vivants compris entre 8 et 26 (probabilité de 95%)
Valeur hors limite ?
La valeur non liée dicte fondamentalement comment les automates cellulaires doivent traiter les cellules qui sont en dehors du volume. Ses valeurs possibles sont 0 (les valeurs non liées sont toujours considérées comme mortes), 1 (les valeurs non liées sont toujours considérées comme vivantes, utiles pour créer un CA en expansion des côtés vers le centre), wrap (les automates cellulaires se comportent comme si le volume était infiniment répété dans l'espace, i.e. dans un volume 64x64x64 la cellule[43, 50, 64] serait enveloppée à[43, 50, 0]) et clamp (les automates cellulaires obtiennent la cellule la plus proche dans le volume, c'est-à-dire que dans un volume 64x64x64 la cellule[43, 50, 64] serait mappée à[43, 50, 63]).
Coloriage des règles d'un seul État
Les formats de règles à état unique (Extended, Life S/B et LUKY) acceptent un seul paramètre leur permettant d'attribuer des couleurs différentes à la cellule en fonction du nombre de cellules vivantes dans le voisinage au moment de l'exécution. Par défaut, ce paramètre est mis à 0, ce qui le désactive. Le réglage de la valeur 1 permet de l'activer, tandis que le réglage de la valeur décimale entre 0 et 1 permet de contrôler le nombre de couleurs utilisées.
xs myshader 0 // sans couleurs
xs myshader 1 // une couleur par nombre de cellules vivantes
xs myshader 0,25 // moins de couleurs, une couleur par 4 cellules vivantes pour être précis
Il est possible d'appliquer des couleurs sans modifier l'état du modèle voxel en exécutant une règle qui ne fait rien (c'est-à-dire une règle où toutes les cellules survivent et aucune ne naît). Il est ainsi plus facile d'expérimenter avec différents types et gammes de quartiers.
Voici quelques exemples de ces règles : E 0..26 / M, E 0..6 / V, E 0..32 / V 2, E 0..12 / axe 2, ....
Cette fonction ne doit pas être exécutée conjointement avec des règles multi-états (Générations, R/T/C/N cyclique et NLUKY) si vous vous souciez de l'exactitude.
Exemples dans la nature
Voir la galerie pour plusieurs exemples.