Bibliothèque de logiciels de textures procédurales

Neil Slater

Bibliothèque de logiciels de textures procédurales


Je voudrais écrire un logiciel qui compose des images à partir de textures procédurales. Pour une flexibilité ultime, je voudrais accéder / créer ces textures via une API.

Dans le passé, j’ai utilisé POV-Ray pour les textures de base, j’ai utilisé la version gratuite de Genetica et modifié ses préréglages, et j’ai également utilisé le plugin Resynthesis GIMP pour générer des textures à partir de photos ou pour traiter des textures à partir d’autres sources. Ces outils sont tous excellents, mais enfermez-moi dans un processus de création d’une bibliothèque d’images de textures, alors que je préfère créer des « recettes » de textures à l’aide de paramètres. Maintenant, j’ai appris ce que je veux faire avec ces outils, je veux prendre du recul et écrire du code qui génère les types de textures dont j’ai besoin, et maintenir une bibliothèque de paramètres pour ce code.

Exigences:

  • API / bibliothèque pour C, C ++ ou Ruby (n’hésitez pas à en ajouter d’autres pour l’intérêt général, surtout si open-source, mais je ne pourrai pas accepter pour mes besoins).

  • Prend en charge le format PNG, y compris le canal alpha, ou peut être lié à une bibliothèque qui le fait.

  • Contrôle au niveau des primitives de texture, divers types de bruit, cartes de couleurs, cartes de relief, etc.

  • Combinaison de primitives de texture à base de couches ou de nœuds.

  • Préréglages ou exemples de textures naturalistes simples – roche, bois, eau, boue, herbe.

  • Les textures résultantes n’ont pas besoin d’être photo-réalistes, mais suffisamment proches pour être utilisées dans un environnement de jeu simple.

  • Agréable à avoir: peut être utilisé pour créer des textures carrelables non déformées.

  • Meilleur absolu: pourrait rivaliser avec Genetica (ou une application payante similaire) en termes de variété et de qualité, mais avec une bibliothèque open source, pas une application payante.

  • Pas important: vitesse. Je vais générer des textures dans le cadre d’un flux de travail en temps non réel, et je ne considère pas les images par seconde ou le coût du processeur. Si cela prend 30 secondes pour générer un écran plein de texture, c’est probablement OK. La qualité et la flexibilité sont bien plus importantes que la vitesse.

Mise à jour: on m’a posé des questions sur le flux de travail. Je considère l’utilisation d’une API de texture dans le cadre d’un processus en deux étapes:

  1. Générez / explorez des textures soit en les construisant manuellement, soit en essayant des variations. Je prendrais volontiers une interface graphique préexistante avec une interface de gestion, des contrôles comme des curseurs, etc. ici. De même, je suis bien de créer mon propre explorateur moins sophistiqué directement à partir d’une API. Les textures que j’aime, je les stockerai avec un identifiant et quelques métadonnées.

  2. Pour utiliser la bibliothèque de textures, j’ai l’intention d’écrire un logiciel pour générer et rendre automatiquement du contenu d’image (pas un raytracer ou un moteur de jeu, mais travaillant à un niveau similaire de génération de valeurs de pixels). Il peut s’agir de cartes pour les jeux, de textures mappées uv pour des objets à rendre ailleurs, ou simplement de l’art abstrait. Ce logiciel choisira les textures appropriées de la bibliothèque et devra les rendre, idéalement avec des valeurs de départ aléatoires uniques (ou des vecteurs de décalage de bruit) avant de les cartographier pour les placer correctement dans une scène ou un objet. Le problème avec une bibliothèque de textures pré-rendue ici est que les mêmes pixels exacts seraient réutilisés encore et encore.

Mawg

Vous voudrez peut-être demander aux nouvelles recommandations de code sur Area51 – «Site de questions-réponses proposé pour les programmeurs recherchant la meilleure bibliothèque pour des tâches spécifiques» area51.stackexchange.com/proposals/66606/code-recommendations

Réponses


 galingong

Étant donné que je ne comprends pas exactement votre flux de travail, ma suggestion peut être complètement fausse, mais en fonction des exigences que vous avez définies, Blender (bien qu’il s’agisse d’un logiciel 3D open source) le réussit à quelques exceptions près.

Il est écrit en C / C ++ mais au lieu de Ruby, il dispose d’une API Python .

D’un autre côté, il a un puissant système de texturation / matériau basé sur les nœuds avec beaucoup de textures et d’opérateurs procéduraux, un support png et alpha, etc. Il n’a pas de textures naturalistes intégrées (il est facile de les ajouter cependant).

Neil Slater

L’API a-t-elle suffisamment de flexibilité pour décrire et restituer une texture (je suppose dans une scène de modèle que je devrais créer) sans charger l’interface graphique, donc je pourrais l’utiliser comme une bibliothèque, et non une application? Si oui, pourriez-vous lier la documentation à l’API, ou mieux si vous pouviez pointer vers un exemple / tutoriel de génération et de rendu d’une scène (n’importe quelle scène, ne doit pas être pour la bibliothèque de textures en soi) via l’API dans ce façon? Cela me permettrait de vérifier rapidement la réponse

galingong

Malheureusement, j’utilise principalement Blender, je ne développe pas de scripts, mais comme il dispose d’un moteur de jeu intégré complet, je suppose que c’est possible. Voici un lien vers le document API: [link] blender.org/api/blender_python_api_2_73a_release N’hésitez pas à demander ici, je suis sûr que quelqu’un va pouvoir donner des réponses plus spécifiques: [link] blenderartists.org/forum /forumdisplay.php?47-Coding

Neil Slater

J’ai parcouru l’API et je pense que cette réponse sur Blender Stack Exchange montre comment lancer l’application directement à partir d’un script: blender.stackexchange.com/questions/1365/… et liée à partir de là wiki.blender.org/index. php / User% 3aIdeasman42 / BlenderAsPyModule montre que l’exécution de Blender en tant que bibliothèque à partir d’un script appelant (probablement le scénario idéal pour moi) est faisable, mais pas officiellement supporté

Neil Slater

Je ne pense pas que ce soit ma réponse idéale (en raison du besoin de Python et de la nature expérimentale de l’API lorsqu’elle est utilisée comme bibliothèque et non comme moteur de script pour l’interface graphique). Cependant, je pense que c’est le plus proche possible, et pourrait être utile à ceux qui recherchent une chose similaire. Vous accordez donc la prime, mais pas le marquage accepté.

 

#de, bibliothèque, logiciels, procédurales, textures

 

elle.fr

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *