Procedural building
About
Procedural building - Houdini - Redshift
An exploration of procedural asset generation. The building is fully generated procedurally, including the textures that define its appearance.
Procedural approach
The asset is entirely procedural, based on a set of rules with a randomizable seed, generating a different building each time in the placement of its internal elements, while maintaining the same style and overall configuration.
Randomization
The power of rule-based asset generation. This approach allows for endless iterations, making it ideal for creating diverse yet cohesive environments in 3D projects. Each version remains unique, yet unmistakably part of the same design family.
inksperimentation
About
inkxperimentation
An experiment with particle simulations in Houdini, exploring the behavior of ink dispersing in water. These projects focus on fluid motion, color blending and particle manipultation and rendering in Houdini.
I quit smoking
Houdini
I quitsmoking
is a video experiment aimed at replicating a macro shot of a burning cigarette. The entire cigarette texture is procedurally generated using custom attributes driven by multiple noise patterns in Houdini.
Kicking the habit of cigaret is a real srtuggle, so we decided to illustrate this and made a 3d animation of it !
And yes, it’s a looping video, cause every addiction is circular in its own way!
Sound design was made by @edgar.spms
Infinite Rear Tracking
Infinite
rear tracking
A visual experimentation, with some kind of infinite rear tracking, preview from an upcoming a short.
The video is fully made in #sidefx #Houdini / Karma XPU
The sound design has been made by the incredibly talented @edgar.spms aka ‘le magnifique’
We got some inspiration on the wonderful work of @panoplycreative on their short ‘Derealisation’
Houdini - Karma Automatic Material Importer (Karma Automat)
Imaginarium
Karma Auto(matic) – Efficient Material Importer for Houdini
Karma Automatic Material Importer is a streamlined script developed for SideFX Houdini that simplifies the process of setting up materials with the Karma renderer and MaterialX standards. This tool is designed to enhance productivity, especially when working with numerous texture files.
Features Overview
- Automatic Texture Detection: Identifies and categorizes textures in a specified folder based on naming conventions.
- Material Node Creation: Automatically generates
mtlximage
nodes for each detected texture. - Automatic Node Connections: Links textures to their appropriate slots in the
mtlxstandard_surface
shader according to texture type. - Node Renaming: Automatically renames the main material node based on the imported folder name.
- Node parm: Automatic fill correct
signature
andfilecolorspace
.
Usage Instructions
- Toolshelf Integration: Add the script to Houdini’s toolshelf for easy access.
- Select the Karma Material Builder Node: Make sure to select the
karmamaterialbuilder
node in your scene before executing the script. - Execute the Script: Run the script from the toolshelf. You will be prompted to select a folder containing texture files. The script supports formats like
.png
,.jpg
,.jpeg
,.exr
,.tif
, and.tiff
. - Processing: The script scans the selected folder, automatically creates material nodes, and configures connections based on the identified texture types.
Supported Textures The script handles textures like Base Color, Specular Roughness, Normal, Displacement, Opacity, and Metalness, mapping them to the appropriate MaterialX inputs.
Customization Modify the texture_types
dictionary within the script to include additional texture types or adjust existing mappings to suit your workflow needs.
Open Source License This project is released under the MIT License, allowing free modification and use in your projects.
Contributing If you have suggestions or enhancements, contributions to the repository are welcome.
Karma Auto(matic) – Efficient Material Importer for Houdini
Karma Automatic Material Importer est un script conçu pour SideFX Houdini qui simplifie le processus de configuration des matériaux utilisant le moteur de rendu Karma et les standards MaterialX. Cet outil est conçu pour améliorer la productivité, particulièrement lorsqu’on travaille avec de nombreux fichiers de textures.
Aperçu des fonctionnalités
- Détection automatique des textures : Identifie et catégorise automatiquement les textures dans un dossier spécifié selon les conventions de nommage.
- Création de nœuds de matériaux : Génère automatiquement des nœuds
mtlximage
pour chaque texture détectée. - Connexions automatiques des nœuds : Relie les textures à leurs emplacements appropriés dans le shader
mtlxstandard_surface
selon le type de texture. - Renommage des nœuds : Renomme automatiquement le nœud principal de matériel en fonction du nom du dossier importé.
- Paramètres : Remplissage automatique de la signature correcte et de l’espace colorimétrique du fichier.
Instructions d’utilisation
- Intégration à la Toolshelf : Ajoutez le script à la toolshelf de Houdini pour un accès facile.
- Sélectionnez le nœud Karma Material Builder : Assurez-vous de sélectionner le nœud
karmamaterialbuilder
dans votre scène avant d’exécuter le script. - Exécutez le script : Lancez le script depuis la toolshelf. Il vous sera demandé de sélectionner un dossier contenant des fichiers de texture. Le script prend en charge des formats tels que
.png
,.jpg
,.jpeg
,.exr
,.tif
, et.tiff
. - Traitement : Le script analyse le dossier sélectionné, crée automatiquement des nœuds de matériaux et configure les connexions en fonction des types de textures identifiés.
Textures prises en charge Le script gère des textures comme la Couleur de base, la Rugosité spéculaire, Normale, Déplacement, Opacité et Métallicité, les mappant aux entrées MaterialX appropriées.
Personnalisation Modifiez le dictionnaire texture_types
dans le script pour inclure des types de textures supplémentaires ou ajustez les mappages existants pour adapter le script à vos besoins de workflow.
Licence Open Source Ce projet est publié sous la Licence MIT, permettant la modification et l’utilisation libres dans vos projets.
Contributions Si vous avez des suggestions ou des améliorations, les contributions au dépôt sont bienvenues.
import hou import os # Dictionnaire des types de textures et de leurs noms associés texture_types = { "BASE_COLOR": ["diff", "dif", "basecolor", "base color", "base_color", "albedo", "alb", "diffuse", "color"], "SPECULAR_ROUGHNESS": ["roughness", "gloss", "glossiness", "rough"], "NORMAL": ["normal", "bump", "norm"], "DISPLACEMENT": ["displacement", "height", "disp", "dis"], "OPACITY": ["opacity", "alpha", "transparent", "transparency"], "METALNESS": ["metal", "metalness", "mtl", "metallic"] } # Fonction pour déterminer le type de texture en fonction du nom du fichier def get_texture_type(file_name): for texture_type, keywords in texture_types.items(): for keyword in keywords: if keyword in file_name.lower(): return texture_type return None # Fonction pour créer un nœud mtlximage à l'intérieur du nœud sélectionné def create_mtlximage_in_selected_node(selected_node, image_path, texture_type): try: mtlximage_node = selected_node.createNode('mtlximage') if mtlximage_node is not None: mtlximage_node.setName(os.path.basename(image_path), unique_name=True) filename_parm = mtlximage_node.parm('file') if filename_parm is not None: filename_parm.set(image_path) return mtlximage_node else: return None else: return None except Exception as e: hou.ui.displayMessage(f"Error creating mtlximage node: {e}") return None # Obtenir le premier nœud sélectionné selected_nodes = hou.selectedNodes() if not selected_nodes: hou.ui.displayMessage("Please select a node.") else: selected_node = selected_nodes[0] # Prend le premier nœud sélectionné # Demander à l'utilisateur de choisir un dossier folder_path = hou.ui.selectFile(start_directory='/', file_type=hou.fileType.Directory, title='Select Folder') if folder_path: # Extraire le nom du dossier à partir du chemin du dossier sélectionné folder_name = os.path.basename(os.path.normpath(folder_path)) # Renommer le noeud principal sélectionné avec le nom du dossier selected_node.setName(folder_name, unique_name=True) # Scanner tous les fichiers images dans le dossier image_files = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f)) and f.lower().endswith(('.png', '.jpg', '.jpeg', '.exr', '.tif', '.tiff'))] if not image_files: hou.ui.displayMessage("No image files found in the selected folder.") else: # Variable pour compter le nombre d'images créées image_count = 0 # Créer un nœud mtlximage pour chaque fichier image for image_file in image_files: image_path = os.path.join(folder_path, image_file) texture_type = get_texture_type(image_file) if texture_type is not None: image_node = create_mtlximage_in_selected_node(selected_node, image_path, texture_type) if image_node: image_node.setComment(texture_type) # Définir le type de texture dans le commentaire du nœud image_count += 1 # Connecter les nœuds d'image au nœud mtlxstandard_surface if texture_type == "BASE_COLOR": selected_node.node('mtlxstandard_surface').setInput(1, image_node) # Index pour 'base_color' elif texture_type == "SPECULAR_ROUGHNESS": selected_node.node('mtlxstandard_surface').setInput(6, image_node) # Index pour 'specular_roughness' image_node.parm("signature").set("default") image_node.parm("filecolorspace").set("Raw") elif texture_type == "NORMAL": normal_map_node = selected_node.createNode("mtlxnormalmap") normal_map_node.setInput(0, image_node) selected_node.node('mtlxstandard_surface').setInput(40, normal_map_node) image_node.parm("signature").set("vector2") elif texture_type == "DISPLACEMENT": mtlxdisplacement_node = selected_node.node('mtlxdisplacement') if not mtlxdisplacement_node: mtlxdisplacement_node = selected_node.createNode("mtlxdisplacement") mtlxdisplacement_node.setInput(0, image_node) image_node.parm("signature").set("default") image_node.parm("filecolorspace").set("Raw") elif texture_type == "OPACITY": selected_node.node('mtlxstandard_surface').setInput(368, image_node) elif texture_type == "METALNESS": selected_node.node('mtlxstandard_surface').setInput(36, image_node) # Index pour 'metalness' image_node.parm("signature").set("default") image_node.parm("filecolorspace").set("Raw") # Layout automatique des nœuds enfants du subnet selected_node.layoutChildren() if image_count > 0: hou.ui.displayMessage(f"{image_count} mtlximage nodes created and connected.") else: hou.ui.displayMessage("No mtlximage nodes created.")
We_Are_Making_Artist_Disappear
artistisdead.ai
This project was born from a reflection on the status of the artist, concerning the new technologies devoted to artificial intelligence and, in particular, those allowing the production of images from a simple textual « prompt » (Midjourney, Stable Diffusion etc…).
Idea
We know that, as a social, conceptual, and imaginary category, the very notion of artist has a history. That is to say that one does not represent the artist in the same way according to whether one is a Greek of Antiquity, a painter of the 13th century, or a contemporary artist of the 20th century. To put it in a nutshell, before the 13th century, in the West, there were only craftsmen.[mfn]https://www.cairn.info/revue-la-pensee-de-midi-2000-2-page-6.htm[/mfn][mfn]https://www.cnrseditions.fr/catalogue/arts-et-essais-litteraires/le-geste-la-pensee/[/mfn]
Before that, the very notion of the artist as a true creator is not even conceivable: in the Christian context, the possibility of creation, in the true sense of the word, is a divine prerogative, and in no way human.[mfn]https://www.persee.fr/doc/raipr_0033-9075_2011_num_179_1_4317[/mfn][mfn]https://www.librairie-gallimard.com/livre/9782070272617-l-oeuvre-d-art-et-ses-significations-essais-sur-les-arts-visuels-erwin-panofsky/[/mfn]
"Creatura non potest creare"
[The creature cannot create]
St Augustin - [354 - 330]
["This creative axis from nothingness constitutes the proper of God alone, and does not constitute the proper of any other creature."J
Jean Scot Érigène - [815 - 877]
This reflection is accompanied by Pierre Bourdieu’s analyses of the notion of art, taste, and creation. In a famous book (La Disctinction, essai pour une critique sociale du jugement [mfn]http://www.leseditionsdeminuit.fr/livre-La_Distinction-1954-1-1-0-1.html[/mfn]),
he shows in particular how the social category of « art » or « artist » can be analyzed according to a logic copied from an economic model. What makes the value, the recognition of a work or an artist, is also his position in a « market », which is not to be understood only in the strict sense of the economy (without excluding it). There is thus a market of the taste, a market of the artist, in the specifically sociological sense of the term.
And in this market, what makes the value of work, the value of an artist, is notably his rarity, how he distinguishes himself from his other competitors in the same market (hence the main title of the book: La Distinction). This rarity can be understood in at least two senses. For a long time, in pre-20th century art, rarity was fundamentally related to the technical capacity of the artist/craftsman: the greater mastery of technique ensured the production of works or objects of high quality, which allowed one to distinguish oneself in the market in question, and thus to have a higher rarity index. In the art of the 20th century, it is not so much the technical quality that is important, but the capacity to make legitimate and original a specific idea, and to make it legitimate in the eyes of the social world. That is done by a vast system of validation (institutional in particular), by a curriculum in fine arts, by the awarding of prizes, etc…
However, it seems to me that the new technologies of image creation by artificial intelligence come, in part, to question this very concept of scarcity, which is what our modern conception of the artist is based on. With these new technologies, anyone can create very high-quality images, in infinite styles, with a few clicks of the mouse. The possible consequence is that with such a leveling of all by this technology, the rarity is diluted, and thus the very concept of artist (visual, in our case), which is based on it, loses its prestige. Or in any case, be subject to profound upheavals.
We_Are_Making_Artist_Disappear
The goal of the WAMAD project is to illustrate these questions, at the intersection of computer science and artistic creation.
The idea is to create an Instagram account, which is fully self-powered, automatically, via code programmed in Python language and the artificial intelligence Stable Diffusion.
Stable Diffusion is an open-source image creation AI, which allows the production of images from a simple textual « prompt », filled in by the user. For example, the following image was automatically generated by Stable Diffusion from the following prompt:
“weird and disturbing portrait of mike patton puking blood, vivid colors, death, neon, art by ( ( ( kuvshinov ilya ) ) ) and wayne barlowe and francis bacon and artgerm and wlop and william - adolphe bouguereau”
The specificity here is that the prompt itself was generated by artificial intelligence, and not by a user.
Thus, the whole process of image creation happens without any human intervention.
To summarize the workflow:
- When the script is launched,
- A prompt is automatically generated,
- Which automatically produces an image via S.D,
- This image is « upscaled » via another python script (By default, Stable Diffusion produces images of 512 x 512px, we can increase this resolution, but at the cost of computation times much too long. So we use here a new algorithm that allows to enlarge the image, without losing quality, to reach 1024 x 12024px)
- Hashtags are created automatically
- This image is automatically uploaded on Instagram.
artistisdead.ai
Ce projet est né d’une réflexion sur le statut de l’artiste, en regard des nouvelles technologies concernant l’intelligence artificielle, et en particulier celles permettant de produire des images à partir d’un simple « prompt » textuel (Midjourney, Stable Diffusion etc…).
Idea
On sait que, en tant que catégorie sociale, conceptuelle et imaginaire, la notion-même d’artiste a une histoire. C’est-à-dire qu’on ne se représente pas l’artiste de la même manière suivant si l’on est un grec de l’Antiquité, un peintre du 13e s., ou un artiste contemporain du 20e siècle. Pour le dire de manière ramassée, avant le 13e siècle, en Occident, il n’y avait que des artisans.[mfn]https://www.cairn.info/revue-la-pensee-de-midi-2000-2-page-6.htm[/mfn][mfn]https://www.cnrseditions.fr/catalogue/arts-et-essais-litteraires/le-geste-la-pensee/[/mfn]
Auparavant encore, la notion même d’artiste comme véritable créateur n’est même pas pensable : en contexte chrétien, la possibilité d’une création, au sens propre du terme, est une prérogative divine, et en aucun cas humaine.[mfn]https://www.persee.fr/doc/raipr_0033-9075_2011_num_179_1_4317[/mfn][mfn]https://www.librairie-gallimard.com/livre/9782070272617-l-oeuvre-d-art-et-ses-significations-essais-sur-les-arts-visuels-erwin-panofsky/[/mfn]
"Creatura non potest creare"
[La créature ne saurait créer]
St Augustin - [354 - 330]
"Cet axe créateur à partir du néant constitue le propre de Dieu seul, et ne constitue le propre d’aucune autre créature."J
Jean Scot Érigène - [815 - 877]
Cette réflexion s’accompagne des analyses de Pierre Bourdieu, sur la notion d’art, de goût, et de création. Dans un livre fameux (La Disctinction, essai pour une critique sociale du jugement [mfn]http://www.leseditionsdeminuit.fr/livre-La_Distinction-1954-1-1-0-1.html[/mfn]), il montre notamment comment la catégorie sociale d’ « art » ou d’ « artiste » peut s’analyser selon une logique calquée sur un modèle économique. Ce qui fait la valeur, la reconnaissance d’une œuvre ou d’un artiste, c’est aussi sa position dans un « marché », qui n’est pas à entendre uniquement au sens strict de l’économie (sans pour autant l’exclure). Il y a donc un marché du goût, un marché de l’artiste, au sens spécifiquement sociologique du terme.
Et sur ce marché, ce qui fait la valeur d’une œuvre, la valeur d’un artiste, c’est notamment sa rareté, la manière dont il se distingue de ses autres concurrents sur un même marché (d’où le titre principal de l’ouvrage : La Distinction). Cette rareté peut être comprise en au moins deux sens. Pendant longtemps, dans l’art pré-20e siècle, la rareté est fondamentalement reliée à la capacité technique de l’artiste/artisan : la plus grande maitrise de la technique assure la production d’œuvres ou d’objets de grande qualité, ce qui permet de se distinguer sur le marché en question, et donc d’avoir un indice de rareté plus haut. Dans l’art du 20e siècle, ce n’est plus tant la qualité technique qui prime, mais la capacité à rendre légitime et originale une idée spécifique, et de la rendre légitime aux yeux du monde social. Cela se fait par un vaste système de validation (institutionnelle notamment), par un cursus aux beaux-arts, par la remise de prix, etc…
Or, il me semble que les nouvelles technologies de création d’image par intelligence artificielle viennent, en partie, remettre en cause ce concept même de rareté, qui est ce sur quoi se fonde notre conception moderne de l’artiste. Avec ces nouvelles technologies, n’importe qui peut créer des images de très grande qualité, dans des styles infinis, en quelques clics de souris. La conséquence possible, c’est qu’avec une telle mise à niveau de tous par cette technologie, la rareté se dilue, et donc que le concept même d’artiste (visuel, dans notre cas), qui se fonde dessus, perde de son prestige. Ou en tout cas soit sujet à de profonds bouleversements.
We_Are_Making_Artist_Disappear
Le but du projet WAMAD est d’illustrer ces questions, au croisement de l’informatique, des nouvelles technologies et de la création artistique.
L’idée est de créer un compte Instagram, qui soit intégralement auto-alimenté, de manière automatique, via du code programmé en langage Python et l’intelligence artificielle Stable Diffusion.
Stable Diffusion est une IA de création d’image, en open source, qui permet de produire des images à partir d’un simple « prompt » textuel, renseigné par l’utilisateur. Par exemple, l’image suivante a été automatiquement générée par Stable diffusion à partir du prompt suivant :
“weird and disturbing portrait of mike patton puking blood, vivid colors, death, neon, art by ( ( ( kuvshinov ilya ) ) ) and wayne barlowe and francis bacon and artgerm and wlop and william - adolphe bouguereau”
La spécificité ici, est que le prompt lui-même a été généré de manière informatique, par une intelligence artificielle.
Ainsi, la totalité du processus de création d’image se déroule sans aucune intervention humaine
Pour résumer le workflow :
- Quand on lance le script,
- Un prompt est généré automatiquement,
- qui produit automatiquement une image via S.D.,
- Cette image est « mise à l’échelle » via un autre script python (Par défaut, Stable Diffusion produit des images de 512 x 512px, on peut augmenter cette résolution, mais au prix de temps de calculs beaucoup trop longs. On utilise donc ici un nouvel algorithme qui permet d’agrandir l’image, sans perdre en qualité, pour atteindre 1024 x 12024px)
- Des hashtags sont créés automatiquement
- Cette image est automatiquement uploadée sur Instagram.
Technique
The different scripts used for this project are the following:
- The main script is written in Python
- Stable diffusion
- txt2imghd, is used to upscale images to a higher resolution.
- The prompts are generated automatically from a custom script based on a mix of GPT-3 and a combination of words classified according to a python dictionary.