PDA

Voir la version complète : Changement de texture avec xPresso



pitav
14/12/2003, 13h00
Bonjour à tous
J'ai un simple cube avec une texture A et je voudrais changer cette texture par une texture B à l'aide de xPesso. Ça semble possible, mais je n'y arrive pas :coup:
Quelqu'un a une solution ou une piste SVP ? :cry2:
Merci

Tengaal
14/12/2003, 14h25
Une piste pour que tu cherches un peu ! :twisted: :D
Télécharge la scène "HDRI eclairage" dans la partie "Xpressions" du site, et regardes l'Xpresso. Car cette scène utilise une donnée utilisateur qui permet de choisir un fichier .hdr sur sa machine, puis ceel-ci est placée dans la canal Luminescence de 2 matériaux en même temps.

Sinon, si c'est pour switcher entre 2 materiaux A et B, alors il faut agir sur le paramètres "materiau" de la propriété de texture de ton cube. Tu fais glisser ce tag dans la zone Xpresso, en entrée tu choisis ce fameux paramètres "materiau"
ensuite tu place également tes 2 matériaux A et B dans ton espace XPresso.
Maintenant, le but c'est de choisir entre ces 2 matériaux pour qu'au final, la connexion sur le paramètre "matériau" du tag de texture soit ou bien A ou bien B...
Je te conseille d'utiliser une donnée utilisateur (case à cocher par exemple) qui retourne une valeur de 0 (décochée) ou de 1 (cochée)

pitav
15/12/2003, 10h55
Merci Tengaal
J'ai trouvé la réponse grâce à tes explications. Comme souvent, c'est relativement simple... une fois que l'on à compris... encore faut-il comprendre. :roll:

XORius
11/01/2004, 14h13
Dis Tengaal, comment est-ce que tu choisis les paramètres de ta donnée utilisateur. Parce que bon tt ce qui est espace Xpresso je te suis mais je décroche sur la dernière étape.
des précisions me feraient le plus grand bien ! :wink:

Merci d'avance. :)

Fluffy
11/01/2004, 17h45
Ça se trouve dans le panneau des attributs de chaque objet, et aussi dans le manuel du soft :mrgreen:

La méthode:
- créé un objet neutre
- vas dans le panneau attributs
- vas dans donnée utilisateur
- ici se trouvent toutes les données
- bonne chance

tcamprubi
15/01/2004, 13h56
Bonjour à tous,
j'ai un probleme que je crois tout bête, mais qui commence sérieusement à m'énerver, parce que je ne trouve pas la solution.
est ce que quelqu'un pourrait avoir la gentilesse de m'envoyer un fichier cinema avec un Xpresso qui permette le changement de couleur d'un cube en fonction d'un booleen (donnée utilisateur). j'ai la logique, mais impossible à réaliser. pour info, j'ai un cube, auquel est affecté la texture A. je glisse le tag de cette texture A dans Xpresso avec comme port d'entrée "material" et je le duplique dans Xpresso. ensuite j'ai deux textures B et C dans le material manager que je glisse toutes les deux dans Xpresso. elles sont toutes les deux "on" sur le port d'entrée et "Object" sur le port de sortie. chaque port de sortie est connecté au port "material" d'un des tags. ensuite, je fais une donnée utilisateur de type booleen que je met dans Xpresso. je connecte la sortie de cette donnée au "on" d'une des textures, et je fais la même chose pour la deuxième en prenant soin d'intercaler un "reverse" pour inverser le booleen : CA NE FONCTIONNE PAS!!!! je deviens fou
Merci oh grand merci pour vos lumières!
Question subsidiaire : peut t'on controler les paramètres de rendu avec Xpresso?? - merci beaucoup!!
Thierry

tabou
15/01/2004, 15h57
Pour manipuler les textures (ou n'importe quel autre tag associé à un objet) il faut utiliser une noeud propriété comme ceci :

http://tabou.free.fr/tabou/XPresso/XP_couleur.gif
le fichier : XP_couleur.c4d (http://tabou.free.fr/tabou/XPresso/XP_couleur.c4d)

A ma connaissance il n'est pas possible d'accéder aux paramètres de rendu avec XPresso :(

Tengaal
15/01/2004, 16h28
On peut accéder aux pref de rendu avec COFFEE, dans un noeud COFFEE par exemple....

tcamprubi
15/01/2004, 18h29
merci pour vos réponses, ca fonctionne et ca me dépanne énormément, néanmoins, il reste un problème de taille que je n'arrive pas à régler. Je vous explique mon but :
j'ai créé une donnée utilisateur (un booléen en fait) et deux type de paramétrages de rendu. le but est d'importer dans un fichier gabarit des maison en 3D et de les traiter soit en sketch and toon, soit en radiosité, mais ceci en cohant uniquement une seule case. actuellement, je choisis un type de rendu (sketch ou radiosité, et je coche ou décoche ma donnée utilisateur, ensuite je rends. le principe fonctionne, mais il y a des choses que je ne comprends pas. par exemple, la lumière...
J'ai une seule lumière (lum parallèle et ombre franches) qui doit passer de 100% à 60% en fonction que le booléen est sur false ou true. ca fonctionne, mais la lumière est énormément lumineuse. quand je rends, la scene est toute blanche tellement elle est forte. pourtant, quand je trace (spy) sa valeur, elle est bien à 60% en intensité, incompréhensible!
Autre chose : quelqu'un connait t'il le pourquoi du fait que de temps en temps, le fait de faire Ctrl-Z pour annuler sa dernière action fasse également passer la visualisation en mode caméra ? (alors que je suis au départ en mode Editor camera)??

tabou
15/01/2004, 18h44
Avec XPresso l'intensité des lumières se régle de 0 à 1, donc il te faut 0,6 pour obtenir 60% d'intensité, il suffit de faire correspondre les valeurs en intercalant une cartographie d'intervalle.
Pour la caméra je ne sais pas :roll: peut être as-tu un objet mise en scène avec une caméra ?

tcamprubi
15/01/2004, 18h48
merci tabou pour la pertinence de tes réponse et la célérité avec laquelle tu les donnes :-)
Il ne me restera donc plus que le problème de pouvoir swapper automatiquement de préférences de rendu... une idée monsieur Tengaal ? :D
Je profite de ce message pour remercier ceux qui ont pris le temps de m'adresser des mails pour tenter de résoudre mes problèmes.
Tabou : A quoi sert le noeud propriété exactement?

Tengaal
15/01/2004, 19h12
Pour l'accès aux prefs de rendu, tout dépend exactement quels paramètres tu souhaites accéder...
D'une manière générale pour accéder au container des prefs de rendu:
var renderdata=doc->GetFirstRenderData();
var container=renderdata->GetContainer();

ensuite suivant le paramètre que tu veux lire ou écrire:
container->SetData(ID_paramètre, valeur_a_écrire);
var valeur_lue=container->GetData(ID_paramètre);

Pour connaitre tous les ID d'accès aux différents paramètres des prefs de rendu je te renvois à la doc du SDK COFFEE, il y en a trop pour que j'en fasse une liste ici avec le type de valeur associé.

tcamprubi
15/01/2004, 19h28
merci tengaal, mais je suis trop nul en programmation pour pouvoir envisager de faire ca moi même. je souhaiterai simplement pouvoir passer d'un Render setting à un autre (j'en ai deux qui sont accessible via les menus) et il faudrait tout simplement que je puisse swapper de l'un à l'autre par un booleen Xpresso :
le fichier c4d "Gabarit en cours" sur lequel je travaille, tu te rendras mieux compte :
http://wsc151.amenworld.com/~oniris/
log : oniris
pass : satanass

Tengaal
15/01/2004, 20h17
Ah oui alors si c'est pour choisir le render setting, c'est encore différents !
Les render settings sont placés à la suite, donc on commence par accéder au premier par:
var render1=doc->GetFirstRenderData();

Pour accéder au suivant :
var render2=render1->GetNext(); //render suivant (Next)

ect... pour les autres render settings 3, 4, 5 ...

Ensuite pour définir le render setting à utiliser :
doc->SetActiveRenderData(render2); // définit le second render setting

Donc pour résumer:
- tu créés un noeud COFFEE dans Xpresso.
- en entrée tu choisis un port de type "booléen" que tu appelle "choix1".
- tu ouvres l'espace de programmation COFFEE (editeur de script) et tu tapes:

main()
{
var doc=GetActiveDocument();
var render1=doc->GetFirstRenderData();
var render2=render1->GetNext();

if (choix1) doc->SetActiveRenderData(render1);
else doc->SetActiveRenderData(render2);
}

- tu connectes enfin l'entrée "choix1" du noeud COFFEE à la DU en port de sortie de ton objet.

Ainsi, en cochant la case (TRUE = choix1) le premier render setting sera utilisé, en décochant, c'est le second render setting qui sera utilisé.
Je n'ai pas testé le truc, j'ai sorti le code directement ici, je pense qu'il doit fonctionner....
:roll:

tcamprubi
15/01/2004, 22h15
merci tengaal, j'ai fait scrupuleusement ce que tu as noté mais le type de rendu ne semble pas affecté par le changement de DU. tu as une idée?
Le noeud Coffee est jaune, je suppose qu'il detecte une erreur, mais quand je vais dans le code et que je fais exécuter il me dit no errors. je suis en 8.5...

Tengaal
15/01/2004, 23h29
merci tengaal, j'ai fait scrupuleusement ce que tu as noté mais le type de rendu ne semble pas affecté par le changement de DU. tu as une idée?
Le noeud Coffee est jaune, je suppose qu'il detecte une erreur, mais quand je vais dans le code et que je fais exécuter il me dit no errors. je suis en 8.5...
En effet, le script COFFEE génère une erreur au niveau de la fonction SetActiveRenderData(...), et je ne comprend vraiment pas pourquoi, il n'y a aucune raison ! :shock:
J'ai testé le script dans une expression COFFEE standard et c'est pareil...
Je suis sur la 8.2...

tcamprubi
16/01/2004, 10h16
bon, je suis un peu désapointé ;-)
est ce qu'une solution est possible? parce que c'est la dernière étape avnt la finalisation de mon Xpresso et franchement j'en ai un grand besoin, le fait de swapper automatiquement est la dernière ligne droite. Je suis allé voir sur les consiel de tengaal l'aide des SDK sur le site de MAXON, mais c'est totalement incomprehensible pour moi!

Tengaal
16/01/2004, 12h43
Malheureusement le seul moyen c'est ce script COFFEE, je vais essayer de trouver la réponse à cette erreur incompréhensible... :cry:

tcamprubi
16/01/2004, 17h45
je vais essayer de trouver la réponse à cette erreur incompréhensible...

Merci d'avance Tengaal, c'est très sympa de ta part! :poucehaut:

bompuis
12/06/2005, 23h31
Salut,

je relance ce topic car je bute sur un petit problème.

petit image :

http://ns2118.ovh.net/~deltazon/images/bompuis_xpresso.jpg

Donc j ai repris l'xpresso plus haut pour essayer de le comprendre et ensuite de l'adapter à ma situation.
j'ai supprimé le DU couleur et ajouté une valeur aléatoire jusque la pas de problème avec 2 materiaux mais dés que je place un troisième , il naparait pas aléatoirement comme les deux premiers

Quelqu'un aurait il un chtite idée?

merci

tabou
13/06/2005, 11h41
C'est parce que la valeur aléatoire est définie sur booléen, donc 0 ou 1 uniquement ce qui ne permet d'utiliser que deux matériaux.
Il faut définir la valeur aléatoire sur Réel et intercaler une cartographie d'intervalle pour "sortir" autant de valeurs que nécessaire.

bompuis
15/06/2005, 20h20
Salut Tabou,

J'ai appliqué ton conseil et je suis assez satisfait du résultat, il y a quand même quelque chose qui me chiffone :

http://ns2118.ovh.net/~deltazon/images/bompuis_cube.jpg

j'ai du pas mal jouer sur les valeurs pour pouvoir apercevoir mes 5 couleurs sur le cube, c'est valeurs cerclé de rouge jouent t'elles un rôle sur l'apparition elle même des couleurs ou sur le temps d'apparition aux quel cas comment obtenir un bon réglage si je met 10 ou 15 couleurs. est-ce du pifomêtre ?

je pense que je vais me tourner sur cette technique pour l'appliquer à mon animation car le coffee de tengaal et plus difficile à mettre en place sur mon animation et il y a toujours quelques petits problèmes de rafraichissement

http://www.frenchcinema4d.com/forum/index.php?topic=12595.0

merci

tabou
16/06/2005, 13h58
La cartographie d'intervalle détermine l'apparition au hasard des couleurs mais n'a pas d'influence sur la durée car une nouvelle valeur aléatoire est produite à chaque image de l'animation. Si tu souhaites obtenir des valeurs moins chaotiques tu peux remplacer l'aléatoire par un nœud bruit.
L'image ci-dessous te montre les bons réglages de la cartographie pour obtenir ce que tu veux :

http://tabou.free.fr/tabou/2005/carto.png

Quelques explications :
Tout d'abord règle les menus d'entrée et de sortie sur Personnalisé car ce sont des nombres qui sont utilisés ici et non pas des degrés ou des pourcentages.
L'aléatoire produit des valeurs allant de -1 à +1 donc tu mets l'entrée minimum à -1 et l'entrée max à 1.
Ensuite si tu veux jongler avec 5 matériaux tu mets 0 en sortie minimum et 5 en sortie maximum. Si tu veux utiliser 15 matériaux tu mettras 15 en sortie maximum.
L'interrupteur du nœud condition détermine quelle valeur d'entrée sera utilisée pour la sortie, si l'interrupteur vaut 0 c'est la première entrée qui est utilisée, si il vaut 1 c'est la deuxième et ainsi de suite.
De cette façon tu peux contrôler très précisément l'apparition des différentes textures, sans avoir à tâtonner :wink:
N'hésite pas à demander des précisions si cela ne te semble pas clair.

bompuis
16/06/2005, 17h25
:efface: Merci Tabou :efface:

:love: c'est trés claire et drôlement efficace le noeud bruit, je poste une petite anim dés que j'ai fini

encore merci maître :prie:

:bounce: