|
|||||||
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (permalink) |
|
neuer Benutzer
Registriert seit: 30.06.2009
Beiträge: 3
Software:3ds Max 2009 Sprachversion: de
![]() |
Hallo, ich versuche gerade ein Skript für Max zu schreiben, komme aber irgendwie nicht weiter:
Kurz zur Idee: Das Skript soll eine Art - Objekt -Verteilungsskript sein, was zugleich diese Objekte auf eine Oberfläche "legt".. also das Skript um Objekte (in diesem Fall eine Box) zu verteilen sieht momentan so aus: Code:
RandomObjRollout= newRolloutFloater "Hordebastler" 250 350 rollout ObjVerteiler "Bastel Dir viele Objekte" width:200 height:50 ( spinner obj_numb "Objektmenge" range:[0,2000,2] type:#integer Button Auswahl_Obj_Button "Mach mir ne Horde" width:180 height:40 on Auswahl_Obj_Button pressed do ( pv = people_numb.value a = [100,100,0] -- define point A b = [-100,-100,0] -- define point B p1 = Point pos:a -- create a Point Helper at point A p2 = Point pos:b -- create a Point Helper at point B for i = 1 to pv do mybox = box pos:(random a b) Length:2 Width:2 heigth:3 ) ) addrollout ObjVerteiler RandomObjRollout woran ich im Moment scheitere: ich versuche das "How to - Move Objects to Surface" mit diesem Skript zu kombinieren.. also das erst die gewünschte Anzahl der Objekte in (einem gewählten Bereich xy) erstellt wir und anschließend mit der "ray intersect" - Methode auf eine Oberfläche "geschoben" werden.. ..am ende soll es dann mal so aussehen: 1. Abfrage: Oberfläche auf die Objekte gelegt werden sollen auswählen (Auslesen von Verteilungs_Oberfläche.max.z) 2. Abfrage: Wieviel Objekte soll es geben? (Anzahl_Objekte) 3. Abfrage: in welchen Bereich (Radius_Objekte) sollen diese generiert werden? 4. Abfrage: Wo soll der Mittelpunkt des Radius liegen? (-> über Mausklick und auslesen der XY Koordinate -> Mittelpunkt_Radius) 5. Erstellung eines Plane_object 6. Random-Verteilung der Objekte innerhalb Radius_Objekte mit X und Y von Mittelpunkt Radius und Z-Wert > Verteilungs_Oberfläche.max.z 7. Verschieben der generierten Objekte auf die ausgewählte Oberfläche (Verteilungs_Oberfläche) ..meint ihr das ist machbar.. ?? Würdet ihr das anders machen?.. es soll halt recht simpel sein.. ohne PartikelSystem etc. .. wie bekomme ich es z.B. hin das ich ein Objekt auswählen kann und er sich das Objekt auch ausserhalb der schleife merkt? Innerhalb klappts ja.. aber wie kann ich max dazu bringen, dass er sich das Objekt auch noch "länger" merkt.. Code:
pickButton Auswahl_Obj_Button "Pick Objekt" width:180 height:40 on Auswahl_Obj_Button picked obj do ( if isValidNode obj do print obj.max.z print obj.max.y print obj.max.x )
Geändert von scrimski (30.06.2009 um 13:23 Uhr) Grund: Code-Tags hinzugefügt |
|
|
|
|
#2 (permalink) | ||
|
Moderator
Registriert seit: 27.04.2005
Ort: Berlin
Alter: 34
Beiträge: 11.849
Software:Wings 3D Sprachversion: en
Blog-Einträge: 48
![]() ![]() |
Zitat:
Zitat:
Und müßte Code:
pv = people_numb.value Code:
pv = obj_numb.value Und Code:
a = [100,100,0] -- define point A b = [-100,-100,0] -- define point B p1 = Point pos:a p2 = Point pos:b Code:
p1 = Point pos:[100,100,0] p2 = point pos:[-100,-100,0] Ein Satzzeichen reicht übrigens.
__________________
Wie man Fragen richtig stellt... Geändert von scrimski (30.06.2009 um 13:30 Uhr) |
||
|
|
|
|
#3 (permalink) |
|
neuer Benutzer
Registriert seit: 30.06.2009
Beiträge: 3
Software:3ds Max 2009 Sprachversion: de
![]() |
ohh, vielen Dank für die schnelle Antwort,
Code:
pv = obj_numb.value zum ersten Problem: ich will - damit ich es auch irgendwie verstehe das(HowTo) Macroscript MoveToSurface so umschreiben, damit ich mit Hilfe eines Rollout (mit 2 PickButtons und einem "Ausführungs"-Button) erst die Oberfläche markiere auf die das Objekt gesetzt werden soll (z_node) und dann das Objekt auswähle was auf die Ebene bewegt werden soll (node_to_z) und als 3. dann über einen weiteren Button das ganze Starte. Hier das "Standard" HowTo Macroscipt: Code:
macroscript MoveToSurface category:"HowTo" ( fn g_filter o = superclassof o == Geometryclass fn find_intersection z_node node_to_z = ( local testRay = ray node_to_z.pos [0,0,-1] local nodeMaxZ = z_node.max.z testRay.pos.z = nodeMaxZ + 0.0001 * abs nodeMaxZ intersectRay z_node testRay ) on isEnabled return selection.count > 0 on Execute do ( target_mesh = pickObject message:"Pick Target Surface:" filter:g_filter if isValidNode target_mesh then ( undo "MoveToSurface" on ( for i in selection do ( int_point = find_intersection target_mesh i if int_point != undefined then i.pos = int_point.pos )--end i loop )--end undo )--end if )--end execute ) Code:
ObjBastelRollout= newRolloutFloater "Beam Dir dein Ojekt" 250 350 rollout Objekt_Verteiler "..." width:200 height:50 ( pickButton Auswahl_Obj_Button "Pick Objekt to Move" width:180 height:40 on Auswahl_Obj_Button picked obj do ( if isValidNode obj do ... ) pickButton Auswahl_Oberfläche_Button "Pick Surface" width:180 height:40 on Auswahl_Oberfläche_Button picked obj2 do ( if isValidNode obj2 do ... ) Button Action_Button "Los geht es!" width:180 height:40 on Action_Button pressed do (...) addrollout Objekt_Verteiler ObjBastelRollout ..wie bekomm ich eigentlich die Code-Tags hier im Forum gesetzt? Geändert von scrimski (30.06.2009 um 18:24 Uhr) Grund: Code-Tags eingesetzt |
|
|
|
|
#4 (permalink) | |
|
Moderator
Registriert seit: 27.04.2005
Ort: Berlin
Alter: 34
Beiträge: 11.849
Software:Wings 3D Sprachversion: en
Blog-Einträge: 48
![]() ![]() |
Zitat:
__________________
Wie man Fragen richtig stellt... |
|
|
|
|
|
#5 (permalink) |
|
neuer Benutzer
Registriert seit: 30.06.2009
Beiträge: 3
Software:3ds Max 2009 Sprachversion: de
![]() |
Oder hat vielleicht jemand eine Idee wie man das ganze anders bewältigen könnte?
Für jegliche Hinweise bin ich dankbar - leider stehe ich bei Maxscript noch relativ am Anfang und bekomm gerade ne Krise ![]() ich werd noch einmal versuchen den Code zusammenzuhauen und zu posten. |
|
|
![]() |
| Tags |
| move to surface, parameter, random |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| random Bewegung bei Vertex | Huschi | 3ds Max - Animation | 4 | 04.11.2007 14:10 |
| Partikel übergeben? | utopiq23 | 3ds Max - Animation | 2 | 20.10.2006 14:53 |
| Werte auslesen lassen? | jb_alvarado | 3ds Max - Animation | 11 | 04.05.2006 09:14 |
| Variable in Scriptcontroller übergeben | wool | 3ds Max - Plugins und Skripte | 13 | 07.04.2006 12:58 |
| MaxScript: aktive Camera übergeben? | BerryPepperweb | 3ds Max - Plugins und Skripte | 2 | 28.11.2005 12:08 |