Houdini Engine changer les paramètres des assets

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Krafter
Messages : 65
Inscription : 11 Fév 2017 17:03

Houdini Engine changer les paramètres des assets

Message par Krafter » 01 Mai 2017 16:51

Bonjour,

Je commence tout juste à utiliser des assets venant du soft Houdini. J'ai le plugin Houdini Engine sur Unity qui me permet d'importer des assets de Houdini. Quand je les place dans la scène ces assets ont des paramètres réglables via l'inspector (concernant leur forme, taille, ...) répertoriés sous "Houdini Parms" :

Image

A partir de là, je souhaiterai pouvoir modifier ces paramètres non pas manuellement mais via un C# script fait sous Unity. Hors je suis complètement perdu je ne sais pas comment appeller ces paramètres dans un script, comment y accéder pour les faire évoluer?
J'ai essayer d'y accéder en ouvrant le script "Houdini Parms" mais même en faisant ctrl+F ils sont introuvables (et ce script m'a l'air assez complexe pour un débutant ^^").


Si quelqu'un est familier de ces assets et peut me dire, ça fait un bon moment que je cherche et je ne trouve aucune info m'ayant sortit d'affaire ^^"


Merci!

Avatar de l’utilisateur
E3DStef
Administrateur
Administrateur
Messages : 1646
Inscription : 14 Juil 2013 18:30
Localisation : https://www.carte-des-membres.com/fr/Unity3D-France/

Re: Houdini Engine changer les paramètres des assets

Message par E3DStef » 03 Mai 2017 21:44

Bonsoir,

Désolé je n'ai pas le plugin Houdini.

Par contre pour avoir bidouillé dans certains de ces plugs-in, oui tu es sur la bonne piste il faut aller fouiner dans les scripts afin de trouver l'endroit où ces param sont utilisés. C'est l'aiguille dans la botte de foin parfois.

Bonne chance.

Stef
Le Savoir n'est Précieux que s'il est Partagé

Si besoin urgent de me contacter, faites moi un mail sur : franceunity3d@gmail.com

Krafter
Messages : 65
Inscription : 11 Fév 2017 17:03

Re: Houdini Engine changer les paramètres des assets

Message par Krafter » 04 Mai 2017 10:28

Merci de ton retour Steph.

Le code dans lequel je dois chercher est très long et très complexe, tu pense que je peux en mettre des petits bouts que je ne comprends pas ici pour avoir une aide pour le comprendre? Peut-être que ça ne parlera à personne mais j'ai beau l'éplucher je n'y comprends rien ^^"

Comme Houdini est soumit à license je ne sais pas si je peux faire ça (enfin ça n'a peut-être aucun rapport hein je veux juste pas faire de bêtise ^^"). Par contre mon asset c'en est une qu'un ami à fait donc ça devrait pas poser de soucis de mettre le code ici? (Enfin des bouts pour m'aider à comprendre, il est super long je pense pas que mettre un pavé serait super utile ^^). J'essaye de faire ça dès que possible si tu pense que des personnes seraient susceptibles de m'aider à comprendre ;)

Avatar de l’utilisateur
E3DStef
Administrateur
Administrateur
Messages : 1646
Inscription : 14 Juil 2013 18:30
Localisation : https://www.carte-des-membres.com/fr/Unity3D-France/

Re: Houdini Engine changer les paramètres des assets

Message par E3DStef » 04 Mai 2017 23:36

Réponse très claire de la législation : On peut protéger du code par une quelconque propriété intellectuelle.
Par contre on peut protéger (/déposer un brevet) pour un algo, un concept. Mais pas le code.

Donc C/C du code pour l'éplucher et surtout dans un but pédagogique ce n'est nullement un souci

Plus claire ?

A+

Stef
Le Savoir n'est Précieux que s'il est Partagé

Si besoin urgent de me contacter, faites moi un mail sur : franceunity3d@gmail.com

Krafter
Messages : 65
Inscription : 11 Fév 2017 17:03

Re: Houdini Engine changer les paramètres des assets

Message par Krafter » 09 Mai 2017 22:44

Et me revoilà (enfin!) ^^

Donc mon soucis était d'atteindre les paramètres présents dans ma précédente capture d'écran. Voici des bouts de script "Parms", en espérant que vous pourrez m'aider à localiser comment les paramètres peuvent être appelés. Alors il va y avoir des gros blocs de code mais j'ai fais au mieux, peut-être qu'une lecture en diagonale suffira je ne sais pas ^^"

Au début il y a des paramètres déclarés :

Code : Tout sélectionner

public bool						prEditable {					get { return myEditable; }
																	set { myEditable = value; } }

	public int 						prParmCount {					get { return myParmCount; } 
																	set { myParmCount = value; } }
	public int						prParmIntValueCount {			get { return myParmIntValueCount; } 
																	set { myParmIntValueCount = value; } }
	public int						prParmFloatValueCount {			get { return myParmFloatValueCount; } 
																	set { myParmFloatValueCount = value; } }
	public int						prParmStringValueCount {		get { return myprParmStringValueCoun; } 
																	set { myprParmStringValueCoun = value; } }
	public int						prParmChoiceCount {				get { return myprParmChoiceCount; } 
																	set { myprParmChoiceCount = value; } }

	public HAPI_ParmInfo[]		 	prParms {						get { return myParms; } 
																	set { myParms = value; } }
	public int[]					prParmIntValues {				get { return myParmIntValues; } 
																	set { myParmIntValues = value; } }
	public float[]					prParmFloatValues {				get { return myParmFloatValues; } 
																	set { myParmFloatValues = value; } }


Une fonction Reset() des parms qui contient ptet des infos :

Code : Tout sélectionner

public void reset()
	{
		// Please keep these in the same order and grouping as their declarations at the top.

		// Assets -------------------------------------------------------------------------------------------------------

		prControl						= null;

		// Parameters -----------------------------------------------------------------------------------------------

		prEditable						= true;

		prParmCount 					= 0;
		prParmIntValueCount 			= 0;
		prParmFloatValueCount 			= 0;
		prParmStringValueCount 			= 0;
		prParmChoiceCount 				= 0;

		prParms 						= new HAPI_ParmInfo[ 0 ];
		prParmIntValues 				= new int[ 0 ];
		prParmFloatValues 				= new float[ 0 ];
		prParmStringHandles 			= new HAPI_StringHandle[ 0 ];
		prParmChoiceLists 				= new HAPI_ParmChoiceInfo[ 0 ];

		myParmInfoStrings				= new HAPI_ParmInfoStrings[ 0 ];
		myParmChoiceInfoStrings			= new HAPI_ParmChoiceInfoStrings[ 0 ];

		myParmStringValues				= new string[ 0 ];

		prLastChangedParmId 			= -1;

		myParmsUndoInfo					= null;

		prFolderListSelections 			= new List< int >();
		prFolderListSelectionIds 		= new List< int >();
		prFolderListSelections.Add( 0 );
		prFolderListSelectionIds.Add( -1 );


2 autres fonctions pas mal utilisées :

Code : Tout sélectionner

// This will retrieve the cached copy of the string
	public string[] getParmStrings( HAPI_ParmInfo parm )
	{
		string[] strings = new string[ parm.size ];
		for ( int i = 0; i < parm.size; ++i )
			strings[ i ] = myParmStringValues[ parm.stringValuesIndex + i ];
		return strings;
	}

	// Set into dictionary to later be set into the host
	public void setParmStrings( HAPI_ParmInfo parm, string[] strings )
	{
		for ( int i = 0; i < parm.size; ++i )
			myParmStringValues[ parm.stringValuesIndex + i ] = strings[ i ];
	}


Ensuite dans Update on peut trouver les parms via id, noms,... y'en a pleins comme ça :

Code : Tout sélectionner

	public virtual void Update()
	{}
#endif // ( HAPI_ENABLE_RUNTIME )

	// -------------------------------------------------------------------------------------------------------------

	public virtual HAPI_ParmInfo findParm( int id )
	{
		for ( int i = 0; i < myParms.Length; ++i )
			if ( myParms[ i ].id == id )
				return myParms[ i ];
		throw new HoudiniErrorNotFound( "Parm info not found by parm id." );
	}


Voilà c'est un peu décousu tout ça, le truc c'est que le script est énorme (700 lignes bien chargées comme ça) et que je ne vais pas pondre tout le truc d'un coup j'imagine l'indigestion. J'ai essayé de prendre le plus pertinent j'ai conscience que ça fait déjà beaucoup. Merci d'avoir pris le temps de jeter un oeil. D'ailleurs parmis les nombreuses librairies (les "using" au début) utilisées celles que je comprends le moins

Code : Tout sélectionner

using HAPI_StringHandle = System.Int32;
using HAPI_NodeId = System.Int32;
Voilà si ça se trouve tout cela ne va parler à personne et est bien futile mais on ne sait jamais ^^"

Répondre

Revenir vers « Scripting »