Lightmap précalculé avec 3DS MAX

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
kweekue
Messages : 4
Inscription : 22 Juil 2014 16:10

Lightmap précalculé avec 3DS MAX

Message par kweekue » 22 Juil 2014 16:26

Bonjour,

Je suis en train d'intégrer des modélisations avec des lightmaps pré-calculé à l'aide de v-ray dans 3DS MAX.
Etant donné que le nombre de modélisation est assez important je voudrais créer un code me permettant d'accéder à la texture "Lightmap" du shader "Lightmapped/Diffuse", et d'y poser directement la lightmap calculé avec v-ray.
(J'ai environ 400 modélisations à intégrer avec différents LOD d'où mon envie d'automatiser l'assignation des lightmaps.)

Quelqu'un pourrait-il m'aider?

Merci d'avance

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Lightmap précalculé avec 3DS MAX

Message par cayou66 » 22 Juil 2014 16:38

Un script éditeur qui fait ça?
Après avoir créé une classe Editor (un peu de recherches sur le net/la doc):
Tu dois récupérer dans un 1er temps la liste des objets sélectionnés avec Selection.objects.
Sur cette sélection tu vas aller chercher le composant MeshRenderer.
Sur ce composant tu vas aller chercher le matériau (avec sharedMaterial attention, et pas material), ou les matériaux si tu en as plusieurs.
Enfin, sur chaque matériau tu vas pouvoir changer une propriété.

Pour changer la texture d'un matériau, tu fais

Code : Tout sélectionner

material.SetTexture("_NomDeLaPropriétéDeLaTexture", laTexture);
Pour la texture, tu pourrais aller la charger avec Resources.Load par exemple.
Sinon tu peux très bien te faire une EditorWindow et mettre un champ Texture en GUI pour pouvoir glisser la texture directement dans Unity.

Je te donne la piste à suivre, il suffit de bosser un peu et tu aura le résultat.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6222
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Lightmap précalculé avec 3DS MAX

Message par boubouk50 » 22 Juil 2014 16:43

Regarde:
OnAssignMaterialModel()

Tu dois créer un dossier Editor dans Assets, créer un script qui redéfinit OnAssignMaterialModel(material : Material, renderer : Renderer) : Material
Dans lequel tu dois:
Récupérer la texture de lightmap (je te conseille de trouver un tag particulier --> genre NomTexture_LM.extension)
Récupérer le Shader voulu: Shader.Find(String ShaderName)
Affecter le tout à ton objet.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

kweekue
Messages : 4
Inscription : 22 Juil 2014 16:10

Re: Lightmap précalculé avec 3DS MAX

Message par kweekue » 22 Juil 2014 17:02

Merci pour ta réponse rapide !

Pour l'éditor script je m'en sors j'en ai déjà un qui me classe tous mes objets par noms et me constitue les LOD Group automatiquement :) .
En faite c'est juste l'accès à la propriété de la texture qui me manque (surement une erreur simpliste mais que je n'arrive pas à trouver).
Voilà mon code pour l'instant :

Code : Tout sélectionner

var LOD0 = GameObject.Find ("LOD 0");

		foreach (Transform child in LOD0.transform) 
		{
			//application du shader à l'objet
			child.renderer.material.shader = Shader.Find("Legacy Shaders/Lightmapped/Diffuse");

			// création et chemin de la variable contenant la texture 
			Texture lightmap ;
			lightmap = (Texture)Resources.Load("Lightmap/"+ child.name + "VRayTotalLightingMap",typeof(Texture2D));
			Debug.Log (lightmap);

			// assignation de la texture comme lightmap
			child.renderer.sharedMaterial.SetTexture ("_Lightmap (RGB)",lightmap);
		}

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6222
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Lightmap précalculé avec 3DS MAX

Message par boubouk50 » 22 Juil 2014 17:29

Je dirai qu'il faut bien faire attention si ton chemin "Lightmap/"+ child.name + "VRayTotalLightingMap" est bon.
Aussi que ton shareMaterials soit bien partagé qu'avec des GameObject qui ont strictement le même shader. Parce qu'un bout de route au nord et au sud partage souvent le même matériau mais pas le même lightmap (attention au nommage dans 3dsMax)

Après j'utiliserai plutôt

Code : Tout sélectionner

var destPath = System.IO.Directory.GetFiles(texPath, texName, System.IO.SearchOption.AllDirectories);
if (destPath.Length > 0) {
	Debug.Log(destPath[0]);
	return AssetDatabase.LoadAssetAtPath(destPath[0], Texture2D);
Pour pouvoir aller chercher la lightmap un peu où je veux dans mes sous-dossier d'Assets, et pas à avoir a tout mettre dans le même répertoire Resources.

- EDIT - ça c'est pour l'editor pas pour un script de jeu.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

kweekue
Messages : 4
Inscription : 22 Juil 2014 16:10

Re: Lightmap précalculé avec 3DS MAX

Message par kweekue » 22 Juil 2014 17:47

Mon chemin est bon j'arrive à appliquer ma lightmap en temps de main texture par exemple c'est juste son attribution en temps que lightmap et non main texture qui me pose problème ...

Et merci pour le morceau de code permettant de retrouver les textures dans n'importe quel dossier.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6222
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Lightmap précalculé avec 3DS MAX

Message par boubouk50 » 22 Juil 2014 17:49

Dans ce cas essaie plutôt avec cela:

Code : Tout sélectionner

child.renderer.sharedMaterial.SetTexture ("_LightMap" ,lightmap);
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

kweekue
Messages : 4
Inscription : 22 Juil 2014 16:10

Re: Lightmap précalculé avec 3DS MAX

Message par kweekue » 22 Juil 2014 17:52

Parfait !!!

Je n'avais juste pas testé avec le M majuscule à lightMap ...

Je te remercie beaucoup et bonne soirée

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Lightmap précalculé avec 3DS MAX

Message par cayou66 » 23 Juil 2014 05:15

Bonne route ;)

Répondre

Revenir vers « Scripting »