Générateur de vaisseau spatial
Un script Blender pour générer de manière procédurale des vaisseaux spatiaux 3D à partir d'une graine aléatoire.
Usage
- Installez Blender 2.80 ou supérieur : http://blender.org/download/
- Téléchargez le plus récent
add_mesh_SpaceshipGenerator.zip
à partir de la section Versions - Sous Édition > Préférences... > Modules complémentaires > Installer... ouvrez le fichier ZIP téléchargé
- Sous Édition > Préférences... > Modules complémentaires, activez le script « Ajouter un maillage : Générateur de vaisseau spatial » (recherchez « vaisseau spatial »).
- Ajoutez un vaisseau spatial dans la vue 3D sous Ajouter > Maillage > Vaisseau spatial
- Développez l'onglet Vaisseau spatial qui apparaît en bas à gauche de la fenêtre pour ajuster les paramètres de génération procédurale.
Comment ça marche
Regarder sur YouTube : https://www.youtube.com/watch?v=xJZyXqJ6nog
- Commencez par une boîte.
- Construisez la coque : extrudez les faces avant/arrière plusieurs fois, en ajoutant une translation/mise à l'échelle/rotation aléatoire en cours de route.
- Ajoutez une asymétrie à la coque : choisissez des faces aléatoires et extrudez-les de la même manière, en réduisant leur échelle à chaque fois.
- Ajoutez des détails à la coque : catégorisez chaque face selon son orientation et générez des détails tels que les moteurs, l'antenne, les tourelles d'armes, les lumières, etc.
- Appliquez parfois une symétrie horizontale.
- Ajoutez un modificateur Bevel pour angulairer un peu la forme.
- Appliquer des matériaux au résultat final.
- Prenez le contrôle de l'univers avec votre nouvelle flotte infinie de vaisseaux spatiaux.
Exemples extrêmes
Les captures d'écran suivantes ont été créées en utilisant des valeurs extrêmes pour le nombre de segments de coque et de segments d'asymétrie pour montrer le fonctionnement de l'algorithme.
Trucs et astuces
- Par défaut, le script supprimera tous les objets commençant par
Spaceship
avant de générer un nouveau vaisseau spatial. Pour désactiver cette fonctionnalité, supprimez ou commentez l'appel à reset_scene()
autour de la ligne 735 dans la fonction principale. - Vous pouvez fournir une graine à la fonction
generate_spaceship()
pour toujours générer le même vaisseau spatial. Par exemple, generate_spaceship('michael')
. - La fonction
generate_spaceship()
prend beaucoup plus de paramètres qui affectent le processus de génération. Essayez de jouer avec eux ! - Vous pouvez remplacer les textures par les vôtres. Toutes les textures sont appliquées à l’aide d’UV de cube d’espace global.
hull_normal.png
est une carte normale qui ajoute des "greebles" de surface supplémentaires. hull_lights_diffuse.png
est une texture diffuse additive pour définir la couleur des lumières des fenêtres. hull_lights_emit.png
est une texture émissive pour faire briller les fenêtres dans l'obscurité.
Crédits
Écrit pour le plaisir dans le cadre du défi mensuel /r/proceduralgeneration de juin 2016.
Publié sous la licence MIT.
Rédigé et maintenu par Michael Davies.
GitHub @a1studmuffin Twitter @butterparty
Un merci spécial à @panzi pour les corrections de bugs, une interface graphique appropriée et un script de construction. Également à @mjrthemes pour la correction de bugs et à @LendoK pour le port 2.80.