▲ topic Maxscript ▲ - Ressources - Graphisme
Marsh Posté le 18-01-2004 à 19:57:06
merci
mais si tu vois encore des trucs à ajouter/améliorer n'hésites pas surtout
Marsh Posté le 18-01-2004 à 20:23:04
tu pourrais faire un pti tuto pour expliker comment on programme?
ou bien ya trop de connaissance rekise?
Marsh Posté le 18-01-2004 à 20:25:22
si tu veux je pourrai expliquer les scripts par exemple le light exclusion
Marsh Posté le 19-01-2004 à 15:55:33
ReplyMarsh Posté le 19-01-2004 à 16:12:05
bon alors chose promise chose dûe, je vais détailler le script de light exclusion:
Premiere chose, la composition du script en lui-même:
en gros ya 2 parties principales dans le script: la première on où déclare tout ce qui touche à l'interface graphique du script: boutons, texte, .... et la deuxième partie qui contient les procédures correspondant aux actions à effectuer lorsqu'on clique sur tel bouton, qu'on change telle valeur...etc
Pour la première partie, ya pas à s'en faire c'est généré tout seul par visual Maxscript: la fenêtre représentant le rollout s'affiche et ya plus qu'à placer ses boutons où on veut. une fois que c'est fait on ferme la fenêtre et le code correspondant est généré tout seul. (ya même possibilté d'écrire tout le code directement dans depuis visual maxscript mais j'aime pas parcequ'on voit pas tout ce qu'on fait. Mais bon c'est chacun selon ses gouts ).
Tout d'abord on définit une fonction:
Citation : fn filtre_l ob = superClassOf(ob)==light |
Cette fonction filtre_l teste si l'objet ob est de type (superClassOf) light;
C'est cette fonction qui servira de filtre au bouton suivant qui permet de choisir sa lumière dans la scène en cliquant dessus:
Citation : pickbutton pick_l "Light:" pos:[6,8] width:148 height:20 filter:filtre_l |
le bouton qui permettra de choisir la lumière dans la scène: il s'appelle pick_l et il est de type pickbutton, ie qu'après avoir cliqué dessus, il attend que l'on clique sur un élément de la scène. On peut en plus filtrer les objets sur lesquels on peut cliquer, ce qui est fait ici avec la fonction filtre_l qui n'autorise que les lights.
Citation : button btne "Exclure" pos:[6,228] width:148 height:26 enabled:false |
déclaration simple d'un bouton, nom btne, de titre (ou caption) "exclure", paramètres de position, de taille et enfin enabled:false, ie que par défaut il n'est pas cliquable.
Citation : global lum=undefined |
déclaration de deux variables globales lum et sel qui contiendront respectivement la lumiere qui nous interesse et la liste des objets à garder.
Citation : listBox listb "A illuminer:" pos:[18,48] width:124 height:8 |
déclarations d'une listbox, qui affichera les noms des éléments à garder, d'une groupbox (n'intervient que pour l'interface graphique, aucun interet en soi) et d'un autre bouton.
Voila pour la première partie.
Maintenant la deuxième, le "vrai" script en lui-même:
on commence par une fonction liste selc qui sert à remplir la listbox avec les noms des objets de selc
Citation : fn liste selc = |
si la liste n'est pas vide (son nombre d'élèments est différent de 0) on ajoute le nom du premier élèment de selc à la liste des objets de listb -> tout est sous forme de liste d'où les #() qui indiquent qu'il s'agit de tableaux
donc listb.items=#(selc[1].name)
ensuite du deuxième élèment au dernier, on ajoute à la liste des objets le i-ième.
Là on choisit la light de la scène qui nous interesse:
Citation : on pick_l picked objl do |
lorsque le bouton [i]pick_l est enfoncé, objl contenant l'objet de la scène sur lequel on a cliqué,
on active le bouton btne (enabled=true)
on change le titre (ou caption) du bouton pick_l par "Light: " + le nom de l'objet
et enfin on affecte à la variable lum l'objet en question.
Même principe mais cette fois pour ce qui est des objets à garder:
Citation : on btn_def pressed do |
lorsqu'on clique sur le bouton btn_def, la sélection en cours d'objets de la scène est affectée à la variable sel en tant que tableau (as array).
Ensuite on appelle la fonction liste qu'on a définie plus haut pour remplir la listbox avec les noms de la sélection.
enfin, la procédure principale:
Citation : on btne pressed do |
il apparait ici la structure undo on "Exclusion" ( ... ). Elle permet simplement de pouvoir anuler, sous le nom d' Exclusion, tout ce qui est entre parenthèses en passant par le menu edit de max.
Tout d'abord, on sélectionne tous les objets de la scène grâce à select $* (on peut tout aussi bien selectionner uniquement les objets dont le nom commence par "xyz" en faisant select $xyz*, ...etc)
Puis, on déselectionne tous les objets de type light: deselect lights
enfin, on déselectionne les objets que l'on voulait garder qui sont sotckés dans la variable sel: deselect sel.
A ce niveau-là, tous les objets de la scène sont selectionnés sauf les lumières et ceux qu'on veut garder. Tous ceux qui sont selectionnés sont donc à exclure de l'illumination de la lumière lum, ce qui est fait par: lum.excludeList=(selection as array).
Pour finir, on déselectionne tout: deselect $*.
Voila.
J'espère avoir été assez clair et compréhensible.
Marsh Posté le 19-01-2004 à 16:13:19
aircool a écrit : |
j'avais vu effectivement qu'il en existait déjà mais au moins je me le fais moi-même comme je veux, c'est plus motivant.
Marsh Posté le 19-01-2004 à 19:03:50
juste pour dire que j'ai mis à jour le script domino day
Marsh Posté le 19-01-2004 à 19:08:23
merci, brother
allez hop je continue le 3 (motivé, moi en ce moment )
Marsh Posté le 20-01-2004 à 09:13:26
Waouw
=> ça a l'air super complexe MaxScript ... enfin j'parle pour moi
Marsh Posté le 20-01-2004 à 11:41:40
jvais tester les dominos staprem
si ya un seul truc qui m'interesserait a coder pour mon boulot, c bien des plugins pour des logiciels 3d, c tout (quoique )
jsuis passe a cote une fois
Marsh Posté le 20-01-2004 à 13:35:34
ReplyMarsh Posté le 20-01-2004 à 14:13:21
ReplyMarsh Posté le 20-01-2004 à 14:29:17
question hyper naïve !!! ( mais hyper hein )
voilà, on aurait dit que je voudrais faire une ville, avé pleins de maisons mais de formes simples, genre 2-3 fenetres une porte etc...
est ce que je peux faire un script pour qu'à partir d'une maison type 3ax en fasse pleins légèrement différentes ?
Marsh Posté le 20-01-2004 à 14:41:30
en théorie c'est possible mais faut voir ce que t'entend par "légérement différent"
Marsh Posté le 20-01-2004 à 14:45:43
darth21 a écrit : en théorie c'est possible mais faut voir ce que t'entend par "légérement différent" |
disons un peu plus grand un peu plus petit ( pouvoir donner des limites genre + ou - 10% max de l'original ) porte et fenêtres pas tout à fait au même endroit etc...
Marsh Posté le 20-01-2004 à 14:46:09
JusteLeBlanc a écrit : question hyper naïve !!! ( mais hyper hein ) |
oui il y a petit plug qui s'appelle greeble qui permettait de faire des displace type vaisseau c pas super éloigné de la petite maison... Donc je pense que c'est tout à fait possible...
Ce qui serait pas mal c'est que ces petites maisons : on puisse définir
1- la pente maxi du toit (la pente mini aussi),
2- simple ou double pente,
3- la hauteur mini et la hauteur maxi.
4- Une création de module par id (id 1 le toit, id 2 une façade ect) et mm mieux la possibilité de dire je veux 5 id pour mes toits répartis en pourcentage du style id 1 50%, id 2 20% ect... et idem pour les façades...
5-Ensuite faudrait voir l'espacement, en x et en y, en valeurs min et max, (pour avoir plus un groupe de maisons ou des bâtiments style us)
6-la taille maxi et mini au sol (une valeur x et une valeur y)
7-un paramètrage d'angle (pour éviter qu'elles soient toutes parallèles)
Oula je commence à imaginer se script qui pourrait vraiment aider pour la modélisation de ville au loin
Au secours darth21 !
Dis nous que c possible !!!
Marsh Posté le 20-01-2004 à 14:48:34
aircool a écrit : |
voilà exactement ça
Marsh Posté le 20-01-2004 à 14:49:41
c'est possible!
voila je l'ai dis
mais par contre c'est du boulot
Montrez-moi toujours à quoi doivent ressembler les ch'tites maison
Marsh Posté le 20-01-2004 à 14:52:08
darth21 a écrit : c'est possible! |
ben à la limite même assez basique, genre tu voles au dessus et assez loin d'une grande cité médiévale, ou un village africain, tien oui un village de huttes par exemples...
ou plus complexe, c'est juste pour savoir en fait, au cas où...
Marsh Posté le 20-01-2004 à 14:54:15
darth21 a écrit : c'est possible! |
En fait ça pourrait être un script pas que pour les petites maisons mais aussi pour les grands buildings (tous ça paramètrable via les hauteurs et les pentes des toits)
les petites maisons style promoteur base rectangulaire avec un toit simple ou double pentes...
Marsh Posté le 20-01-2004 à 15:06:06
et le nombre de fenêtres !!
bon après tu adaptes le script pour des personnages, taille poids, cheveux etc...
Marsh Posté le 20-01-2004 à 15:11:17
JusteLeBlanc a écrit : et le nombre de fenêtres !! |
non les fenêtres peuvent être simulées avec des textures ça risque de faire trop gros après...
par contre un paramètre de densité ça serait pas mal !!!
Marsh Posté le 20-01-2004 à 19:13:10
Marsh Posté le 20-01-2004 à 19:22:08
ReplyMarsh Posté le 20-01-2004 à 19:36:46
JusteLeBlanc a écrit : c'est quoi ? |
ça fait ça : http://membres.lycos.fr/darth21/videodujour.avi
(faire enregistrer sous...)
Marsh Posté le 21-01-2004 à 11:00:46
jlb> t'as aussi une fonction standard depuis max1 (au moins) qui eparpille des maisons sur un terrain => scatter il me semble
par contre c aleatoire....
tooche pas a greeble c mon mien (cf prochain WIP )
Marsh Posté le 21-01-2004 à 17:23:12
suri a écrit : jlb> t'as aussi une fonction standard depuis max1 (au moins) qui eparpille des maisons sur un terrain => scatter il me semble |
oui oui je sais bien
Marsh Posté le 21-01-2004 à 17:38:10
suri a écrit : jlb> t'as aussi une fonction standard depuis max1 (au moins) qui eparpille des maisons sur un terrain => scatter il me semble |
Ca t'éparpille mais ça ne modifie pas en éparpillant
Marsh Posté le 21-01-2004 à 18:02:47
allez un ptit essai tout frais de cette après-midi (divx 5.0.3 1,6Mo dsl)
(bon ca rend pas top top et puis il a fallu que je la ralentisse mais bon....)
Je modifie encore quelques trucs et je vous fait profiter du script (avant ce soir normalement)
Marsh Posté le 21-01-2004 à 18:14:47
darth21 a écrit : allez un ptit essai tout frais de cette après-midi (divx 5.0.3 1,6Mo dsl) |
Marsh Posté le 21-01-2004 à 19:34:12
MAJ du premier post
Marsh Posté le 18-01-2004 à 19:51:26
Ce topic est là pour regrouper tous les scripts maxscripts que vous utilisez/que vous avez fait avec vos doigts à vous/que vous aimez bien... bref qui vous sont utiles...
NEW: memoCam v0.4
-Lightexclusion et domino day dans le pixel du mois de mars (merci à Suri de me l'avoir dit ) :
-
3ds max Plug-ins (2004)
World Best Developers
Here is our selection of 25 among the best 3ds max plugins developers.
They tell you who they are, how they work and give you tips and tricks.
1- Domino Day v1.0
-> le script <-
Permet de créer et de placer automatiquement des dominos le long d'une courbe.
Une prochaine version viendra qui gérera la position des dominos par rapport à un sol (pour l'instant les dominos suivent "betement" la courbe)
résolu -> la nouvelle version (v1.0) est là
2- Light Exclusion v0.1
http://ch.miaux.free.fr/scripts/lightxclu.png
-> le script <-
Celui-là a été fait à la demande d'Albabal et JLB () pour pouvoir exclure de l'illumination d'une light tous les éléments de la scène sauf ceux qu'on veut garder. Ca permet de créer rapidement des lumières pour éclairer uniquement certains objets (des cheveux par exemple )
Mode d'emploi (rapide )
- cliquer sur le bouton "light" et sélectionner la light qui vous interesse
- selectionner tous les elements de la scene qui ne doivent pas être exclu (ceux qu'il faut garder, donc)
- cliquer sur définir: la liste des noms s'affiche
- cliquer enfin sur "Exclure" pour exclure tout le reste de l'illumination de la light.
- et c'est tout
2b- Sel_tex v0.1
(le nom est pourri je sais mais je savais pas quoi mettre)
-> le script <-
suite à un topic d'aircool, petit script tout bête permettant de sélectionner dans une scène les objets non texturés ou les objets texturés.
2c- Renamext v0.1
(même remarque que précedemment pour le nom )
-> le script <-
Permet de changer l'extension des maps en un clic
http://ch.miaux.free.fr/scripts/renamext.png
3- Bullet-time v0.6
un début de commencement(divx 5.03 ~900ko)
nouvel essai (du 21/01)
la version 0.6 est là
le script
Descriptif / Mode d'emploi:
- cliquer sur camera, choisir la caméra; cliquer sur trajectoire, choisir la trajectoire (une spline) que devra suivre la caméra
- début anim et fin anim servent à délimiter le rendu
nom de sortie = nom des fichiers .bmp générés par le rendu
(qui seront dans le répertoir images de max et nommés nom_de_sortienuméro_de_frame.bmp)
largeur et hauteur -> résolution de sortie.
- dans gestion effet: frame #: numéro de la frame pendant laquel doit se produire le bullet-time, "en # frames" en combien de frames doit se faire l'effet
- une fois qu'on a cliqué sur trajectoire, deux petits cubes sont apparus à chaque bout de la spline: ils représentent les endroits de début et de fin de l'effet sur la spline. On peut ajuster leur position avec les sliders Départ BT et Fin BT.
- pour avoir une prévisualisation de l'effet, sélectionner "active": la vue en cours bascule sur la vue de la caméra, l'anim est positionné à la frame sélectionnée (frame #) et on peut, en bougeant le slider de prévisualisation, faire bouger la caméra sur la trajectoire correspondant à l'effet. Une fois "active" déselctionnée, la vue repasse à celle qui y était avant et l'anim se replace aussi à la frame d'avant.
- une fois que tout est réglé comme on veut, il suffit de cliquer sur I'M NEO (:whistle pour lancer le rendu.
4 - Apparition v0.3
le script
(A la demande d'un ami) ce script permet de faire apparaitre les uns après les autres des objets selon leur distance à un point de référence.
Il permet aussi de faire disparaitre des objets une fois qu'ils ont atteint une certaine distance.
5- CTGen v1.0 et CTG-Scripteur v1.0
descriptif vite fait:
- place directement les maisons sur la surface (si on en a choisit une avant bien sûr) et au point le plus bas ( )
- possibilité de définir un point de départ (n'importe quel objet convient, sa position est prise comme référence)
- possibilités de régler les proportions de chaque matériau
les scripts:
-> CTGen v1.0 <- et -> CTGScripteur v1.0 <-
(décompresser les deux au même endroit)
Mode d'emploi:
pas de grands changements, juste l'ajout de deux choses:
- permet de choisir entre les trois types déjà inclus dans le script: "auto" (comme dans les versions précédentes donc) ou bien "scripts" qui utilisera les scripts persos selectionnés
- et ça
Cliquer sur lancer scripteur lance le scripteur comme son nom l'indique, pour faire ses scripts persos
Dans fichiers trouvés se trouve la liste des scripts persos déjà faits et enregistrés. Un double clic sur n'importe lequel de ces scripts le fait passer dans A utiliser (et inversement, double clic sur un fichier dans a utiliser et il est enlevé de la liste).
Cliquer ensuite sur chacun des scripts selectionnés pour leur attribuer une fréquence d'apparition en %;
Voila c'est tout ce qu'il y a à savoir pour ça.
Ensuite, lui donner un nom et eventuellement le sauvegarder.
Cliquer sur référence et selectionner dans la scène la base du batiment*, ce qui aura pour effet de changer les valeurs de longueur, largeur et hauteur.
Ensuite deux possibilités:
-le laisser se débrouiller tout seul -> cliquer sur auto et sauvegarder le script modifié obtenu
Vous pouvez après tester eventuellement le script en cliquant sur test et en changeant les valeurs de longuer, hauteur, largeur...
- rentrer les correspondances à la main: c'est là que ca se passe.
en changeant la valeur de n° ligne, on fait défiler les différentes lignes du scripts qui s'affichent dans la listbox ligne actuelle. il suffit ensuite de cliquer sur une valeur numérique que l'on veut changer en longueur, largeur... soit de rentrer la formule à la main dans nouvelle valeur et de cliquer sur <-.
Concrétement: selectionnez une valeur numérique quelconque dans la liste, si vous cliquez sur L,l,h,e ou p (respectivement Longueur, largeur, hauteur, nombre d'étages et pente du toit) la valeur est automatiquement remplacée par (3*longueur) par exemple si la valeur était 30 et longueur=10 (parceque 3*10=30 )
ou alors selectionnez une valeur dans la liste, et commencez à taper une formule dans nouvelle valeur, le fait de cliquer sur L,l,e... ajoutera tout seul "longueur", "largeur", ... dans la formule.
Pour finir, cliquer sur le bouton <- et la valeur est remplacée par la formule et le script mis à jour dans la fenêtre de texte.
ne pas oublier de sauvegarder le script une fois modifié pour pouvoir le réutiliser plus tard.
* règles pour le macroRecorder:
Il faut juste suivre quelques règles pour que out se passe bien:
- tout batiment doit avoir une base qui sera une box (cachée à l'intérieur d'un autre objet ou pas ca c'est pas grave) - c'est ça qui devra servir de référence pour le script
- cette base doit être la première chose créée
- tous les autres objets créés pour faire le baitment devront être linkés à cette base.
- il est préférable de basculer en coordonnées world au début du script
voila.
6- bitmapMod
-> le script <-
Donc ouvrir bitmap pour ouvrir le bitmap qui servira de référence, aperçu pour le voir (logique)
Isole forme va le faire calculer les formes et les sommets à partir du bitmap, il est alors possible de voir ce qu'il a trouvé en cliquant sur disp. bords et disp. sommets
hauteur max détermine la hauteur à attribuer au blanc, et échelle un facteur d'échelle global (si le bitmap fait 100x100 et que l'échelle est de 1, toutes les formes tiendront dans un carré de 100x100)
Et enfin créer formes créé les formes (mais faut les passer en 2-sided "à la main" pour l'instant)
en bonus: une ch'tite anim flash - faite à l'arrache - pour expliquer le foncitonnement avec les couleurs.
exemple:->
la suite (et bien plus) sur http://ch.miaux.free.fr/
(à venir... j'espère )
- E-light: Download: max 4 - max 5 - ReadMe
http://home.wanadoo.nl/r.j.o/skyra [...] -light.jpg
http://home.wanadoo.nl/r.j.o/skyra [...] ttings.gif
Ronnie Olsthoorn - www.skyraider3d.com
(merci à aircool pour ce script )
- Motion baker de Sergio Mucino:
download du macroscript
Il s agit du script motion baker de sergio mucino. son fonctionnement est simple : tu ajoutes les objets concernés a la liste, tu choisis les types de controlleurs de sortie et tu appuis sur start. Le script duplique les objets concernés et leur colle une clé par image. Un petit detour par le "reduce key" est donc de rigueur. Ca marche avec les animations "classiques", avec les animation procedurales et aussi avec les animations découlant de la cinematique inverse. C'est donc tres bien
Attention il s agit d un macroscript aussi il n apparaitra nulle part dans l interface tant que tu n auras pas choisi toi meme l endroit ou tu souhaites le placer (menu, quadrants, barre d outils...) via le menu "personnaliser IU"
Source forum 3dvf, auteur : Malikarn (merci à lui au passage s'il lis ces lignes....)
- Volume Preview (merci à Aircool ):
sert à faire un preview de la lumière volumétrique mais un préview en tps réel !!!!
et plus exactement :
--Creates a viewport preview of volumetric effects,
--shadows and lens effects
petit preview en avi :
http://akikoromain.free.fr/volumePreviewCinepack.avi (1.4mo)
et le fichier :
Volume Preview Max6.rar (102ko)
http://scriptspot.com/start.htm
http://www.highend3d.com/3dsmax/scripts/
voila, à vous maintenant
Message édité par darth21 le 23-07-2007 à 00:25:52
---------------
TZR un jour… | gamertag: cropNcut