--
Version 0.3.6
http://code.vonc.fr/?a=30
--
Bonjour,
Je suis heureux de vous présenter un projet de script que j'ai enfin réussi à mettre au point !
Il s'agît de convertir une texture procédurale en un objet 3d, notamment les différents sortes de bruit.
La méthode consiste à créer un nuage de points aux zones claires de la texture, sur le plan U, V et W, puis connecter tout ça pour obtenir l'enveloppe de la forme.
Le script n'est pas encore au point pour être publié (problème de lenteur, notamment), mais assez pour sortir quelques petites représentations 3d des différents bruits !
Maintenant, la partie moins aguichante.
J'aimerais pouvoir générer l'objet directement à partir d'une matière d'un matériau. Pour l'instant, je génère un bruit avec la classe C4DNoise, or la crème de la crème serait de récupérer directement les pixels de la matière à partir de la classe BaseShader.
Il y a bien un exemple dans la doc, mais il ne concerne que la matière Bitmap (GetBitmap), et non les procédurales.
Je n'arrive pas à récupérer un quelconque pixel du matériau car je ne parviens pas à initialiser le VolumeData requis, ni à bien comprendre comment il marche...
J'ai essayé avec le VolumeData de InitRenderStruct (voir exemple), mais il me sort toujours (1, 1, 0) comme pixel, quelques soient les coordonnées.
Dernière modification par César Vonc ; 22/10/2012 à 17h34.
Tu vas faire des heureux, quand tu auras fini, déjà là, c'est superbe, keep up.
Semi-nudistes Marathoniens et Campagnards
Absent, quand je ne suis pas là.
Merci aux modos pour tout et tous.
yeaaaah texture osseuse, de mie ou croûte de pain en gros plan etc. balaise ça
C'est juste incroyable !
Je vais suivre ça de trés trés près ! Bravo César, c'est à chaque fois trés original tes approches de plugins et tu explores des sentiers que d'autres ne suivent pas
kenavo !! // Pinterest KAMIGAZ®
Impressionnant, c'est le seul mot qui me vient.
Oh putaing, my Hero !
Tu veux que je passe la question pour toi du côté de chez Maxon ?
Je suis sûr que la vue de tes avancements va les inspirer =)
rien compris
Gééééénial!
C'est génial que tu y arrives, et tes aperçus sont
Tu auras le moyen d'utiliser les filtres des bruits 3d pour générer le maillage ?
D'autres softs appellent ça volumétric material, ou hyper texture chez Vue par exemple… on a pas grand chose au viewport, ou alors une prévisualisation très sommaire, et c'est au rendu que ça se passe (et c'est très long à rendre généralement).
Tes exemples sont plus que convaincants !
2x6coreXéon2.66(24T);64Gram; GTX 1080; OSX10.13.6 ////
Mac Studio 128 Ram ; OSX 12.3.1 ; papiercrayoncerveau;S22Studio;Redshift;Zbrush2022; CS2022
///SHTL 2011 DEMO HERE : http://demo.shtl.org/ /// NEW! 2014 WIP
Bonjour
C'est tout simplement génial, heu ça veut dire que c'est animable en plus?
vraiment énorme félicitation.
"Ton devoir réel est de sauver ton rêve" A.Modigliani
Excellent !
Même question que DraganII, c'est animable même si je suppose que c'est très long à calculer ?
www.paradoxstudio.fr - MacPro 12 core 2.93 ghz - 16 Go Ram - NVIDIA Quadro 4000 + GT120 / MacPro Octo-core 3.2 ghz / Wacom Cintiq 12 WX
Waou, sacré boulot, je suis ça avec attention
Quel magnifique travail
Comme le dit iolofato, les textures osseuse, gruyère, de mie ou croûte de pain vont enfin être réalisables.
Et ce n'est qu'un début
My Blog □ Accepter une possibilité, c'est lui permettre de se réaliser ...
Très impressionnant César !
Je crois que j'ai compris ce que tu cherches à faire, mais je n'ai jamais essayé de récupérer les valeurs de couleur depuis un shader. J'ai regardé la doc et c'est vraiment pas simple à comprendre ...
Sinon un autre piste type "bricolage", si tu récupères ton shader de type bruit et que tu récupères tous les paramètre, genre shader[c4d.SLA_NOISE_COLOR1] et que tu les balances dans ton c4dNoise, est-ce que ça ne ferait pas un bout de la blague ?
Mais c'est vrai que cela limite au seul bruit et si on arrivait à récupérer le résultat de la combinaison de calques ce serait top ...
Petite question, quand tu dis que tu connectes tes points 3D, tu fais comment ta triangulation ?
rho le truc de malade, ca ouvre de superbes perspectives de modelisation ce machin là.
chapeau pour le boulot
i7 4790K/32GoDDR3/GTX1070 - Genghis Khan
Génialissime !! je vais suivre de près l'évolution de ton plug
Eh ben, quel accueil ! ^^
Merci à vous !
Ah là, tu me prends par les sentiments !Tu veux que je passe la question pour toi du côté de chez Maxon ?
Je vais quand même essayer d'autres pistes, mais si ça peut donner des idées à Maxon pour qu'ils implémentent ces types d'objets dans leur future version, je n'en serais que ravis (avec quelques nouveaux types de bruits, au passage. ^^).
Oui, le but à terme est de pouvoir faire des mélanges de bruits, comme on le fait avec un matériau, pour en tirer un maillage personnalisé !Tu auras le moyen d'utiliser les filtres des bruits 3d pour générer le maillage ?
D'autres softs appellent ça volumétric material, ou hyper textureTiens, intéressant ! Je me sens rassuré car il est vrai que ces bruits 3d mettent un temps fou à se calculer. C'est pas bête d'utiliser un aperçu pour l'affichage, ça peut rendre la question de l'animation plus abordable !c'est animable en plus?
En théorie oui, puisqu'on peut animer un bruit procédural, on peut en tirer un maillage à chaque image, le seul soucis est le temps de calcul (plusieurs dizaines de secondes pour chaque exemple de l'image).
Le script peut encore être optimisé. Val (qui a maintenant tout compris) m'aidera probablement à le passer en C++ qui est plus rapide que le Python.
Oui ! Je peux récupérer les paramètres de la matière bruit et les injecter dans le C4DNoise ; donc au pire des cas, ce sera ça.si tu récupères ton shader de type bruit et que tu récupères tous les paramètre, genre shader[c4d.SLA_NOISE_COLOR1] et que tu les balances dans ton c4dNoise, est-ce que ça ne ferait pas un bout de la blague ?
Le procédé est en réalité assez simple. À partir du nuage de points, je créé un cube à chaque point, puis supprime les cubes intérieurs, avant d'ajouter un petit déformateur lissage pour adoucir l'objet.quand tu dis que tu connectes tes points 3D, tu fais comment ta triangulation ?
C'est pour ça que le script n'est pas très rapide, j'ai utilisé une grille de 400 000 points pour les exemples, ce qui peut amener à gérer 2,4 millions de polygones en fonction du type de bruit. Un Zada mettre bien plus de temps à se calculer qu'un Poxo, par exemple.
Et 15 minutes pour 19 millions de polys. : P
Dernière modification par César Vonc ; 28/08/2012 à 13h52.
Petite micro-màj de bonnes nouvelles :
Temps de calcul divisé par 3 et problème des calques résolu : il sera désormais possible de mélanger des calques de bruit, de les animer, en gros d'utiliser la sortie d'un matériau !
Et pas besoin de VolumeData, tout compte fait, suffisait d'initialiser le ChannelData sans.
Code PHP:
import c4d
from c4d import Vector
from c4d.modules.render import ChannelData, InitRenderStruct
def main():
mat = doc.GetActiveMaterial()
mati = mat[c4d.MATERIAL_COLOR_SHADER]
irs = InitRenderStruct()
mati.InitRender(irs)
cd = ChannelData()
cd.p = Vector(0, 0, 0) # Coordonnées à modifier
print mati.Sample(cd)
if __name__=='__main__':
main()
Tu es hallucinant !
Ton truc me fait encore plus regretter de ne pas avoir la R13... méchant !
Merci pour les autres...
Cinema 4D R10 de base,sur ordi de base(PC RIP - décembre 2008 - février 2017 ), avec cerveau de base...
Oui, Final Render proposait un matériau de la sorte, excellent (et rapide, contrairement à Vue).
En tous cas, tes tests déchirent César. Il y a beaucoup d'avantages à avoir une réelle géométrie au final (certainement beaucoup plus lent et gourmand en ressources, par contre).
Je suis avec attention!
Fluffy mais costaud...www.fluffy4d.com
J'ai bien avancé côté interface, cependant je me retrouve bloqué.
Pour lisser le maillage, j'utilise le déformateur Lissage, or il est le SEUL déformateur à ne pas fonctionner sur un générateur d'objets (comme les primitives).
Est-ce un bogue ?
Si quelqu'un a une astuce, je suis preneur (idem sur la démo de la R14).
J'aurais tendance à penser que le lissage (genre phong) s'appuie sur de la définition de points/polygones.
Et c'est sans doute pour ça que ça ne marche pas sur des objets paramétriques. Un peu comme les axes qu'on ne peut bouger qu'après conversion de l'objet.
Par contre peut-être qu'un déformateur "Correction" pourrait t'aider, placé avant le lissage !?
Edit : my bad... tu parlais de lissage et j'avais le tag en tête. Je ne sais pas comment se comporte le déformateur. Mais le "correction" peut peut-être tout de même t'être utile.
Dernière modification par Wonders ; 29/08/2012 à 12h53.
Oui, je parlais bien du déformateur .
Hélas non, aucun changement, le déformateur lissage s'échine à résister.Par contre peut-être qu'un déformateur "Correction" pourrait t'aider, placé avant le lissage !?
J'ai essayé de reproduire en script ce lissage, en appliquant l'outil Ponçage, mais le temps de calcul est presque décuplé.
Problème résolu ! ^^
Grand merci à Val qui a trouvé la solution sur le clavardeur du site. Voici le bout de script pour contourner le soucis :
Dans la fonction GetVirtualObjects de la classe ObjectData, renvoyer le résultat de la commande MCOMMAND_CURRENTSTATETOOBJECT.
Et ainsi, le déformateur Lissage affectera bien le générateur !Code PHP:
objet = utils.SendModelingCommand(command=c4d.MCOMMAND_CURRENTSTATETOOBJECT, list=[obj], doc=doc)
return objet[0]
Prochaine mise à jour avec un aperçu du fonctionnement du module, et un rendu animé !
J'ai le kiki tout dur...
Pareil
C'est tout simplement halluciant ton truc……
Je suis impressionné par ta maitrise et ta créativité programmatique
Un grand bravo à toi…tu deviens notre Nitro4D à nous !
http://dr-graphix.blogspot.com/-DRG Design / Portfolio
Merci, une petite anim vite fait d'un mélange progressif de deux bruits et d'essais de booléens :
Les animations ne pourront pas être totalement fluides, à moins d'augmenter drastiquement la précision au détriment du temps de calcul, chaque image ayant un maillage différent.
Chaque modèle de ce gruyère met 10 secondes à se calculer, mais rassurez-vous, j'ai établi un mode Vue et un Rendu, pour plus de souplesse, qui permet d'avoir un aperçu de la forme de manière quasi instantanée (avec une faible précision).
D'autres rendus et captures demain !
Dernière modification par César Vonc ; 30/08/2012 à 01h56.
Haha, ça promet!
Fluffy mais costaud...www.fluffy4d.com
Génial !
César, président !
Et t'aurais pas un moyen d'utiliser des sortes d'atténuations (peut-être un dégradé à partir des normales de l'objet conteneur), histoire de pouvoir se faire de la variation/mixage poussée.
Par exemple un objet avec un cœur très dense mais qui se désagrège sur l'extérieur. Un peu comme du corail peut-être.
En tout cas ça tue déjà en l'état. Bravo !
Ouououooouuu ! C'est tip top ! Je vois déjà en médical 15000 trucs que je pourrais faire avec ce genre de technique. Je vote César
kenavo !! // Pinterest KAMIGAZ®