Zurück   3dmaxforum.de > 3ds Max > 3ds Max - Plugins und Skripte

Thema geschlossen
 
LinkBack Themen-Optionen Ansicht
Alt 30.06.2009, 13:14   #1 (permalink)
neuer Benutzer
 
Registriert seit: 30.06.2009
Beiträge: 3

Software:
3ds Max 2009
Sprachversion: de

Flat.Eric hat noch keine Resonanz auf seine Beiträge erhalten, um sein Renomee anzuzeigen
Unhappy Random Verteiler, Move to Surface, Werte auslesen und übergeben

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
..so weit so gut..,
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
	)
ich hoffe irgendjemand kann mir wenigstens ein bissel weiterhelfen.. muss wenigstens ein Teil des Skriptes bis nächste Woche zum laufen bringen

Geändert von scrimski (30.06.2009 um 13:23 Uhr) Grund: Code-Tags hinzugefügt
Flat.Eric ist offline  
Alt 30.06.2009, 13:30   #2 (permalink)
Moderator
 
Benutzerbild von scrimski
 
Registriert seit: 27.04.2005
Ort: Berlin
Alter: 34
Beiträge: 11.849

Software:
Wings 3D
Sprachversion: en

Blog-Einträge: 48
scrimski wird als engagiert angesehenscrimski wird als engagiert angesehen
Standard AW: Random Verteiler, Move to Surface, Werte auslesen und übergeben

Zitat:
.. 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.
Benutz Arrays oder definiere globals.
Zitat:
woran ich im Moment scheitere:
Ja, woran?

Und müßte
Code:
pv = people_numb.value
nicht
Code:
pv = obj_numb.value
sein?
Und
Code:
a = [100,100,0] -- define point A
b = [-100,-100,0] -- define point B
p1 = Point pos:a 
p2 = Point pos:b
ist nicht unbedingt falsch, aber
Code:
p1 = Point pos:[100,100,0]
p2 = point pos:[-100,-100,0]
sollte ausreichen.

Ein Satzzeichen reicht übrigens.

Geändert von scrimski (30.06.2009 um 13:30 Uhr)
scrimski ist offline  
Alt 30.06.2009, 18:11   #3 (permalink)
neuer Benutzer
 
Registriert seit: 30.06.2009
Beiträge: 3

Software:
3ds Max 2009
Sprachversion: de

Flat.Eric hat noch keine Resonanz auf seine Beiträge erhalten, um sein Renomee anzuzeigen
Standard AW: Random Verteiler, Move to Surface, Werte auslesen und übergeben

ohh, vielen Dank für die schnelle Antwort,

Code:
pv = obj_numb.value
sollte es natürlich heissen, habe es nur vergessen richtig umzuschreiben..

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
)
Das Rollout sieht so aus:
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
Ich habe schon einige Versuche gestartet das ganze umzuschreiben, aber Irgendwas mache ich immer falsch.. bin mir auch nicht ganz sicher in welcher Reihenfolge man das ganze nun zusammenfasst.. - ich hoffe ich versteh es irgendwann - mit der englischen Hilfe komme ich nur bedingt klar, was das ganze nicht einfacher macht..

..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
Flat.Eric ist offline  
Alt 30.06.2009, 18:21   #4 (permalink)
Moderator
 
Benutzerbild von scrimski
 
Registriert seit: 27.04.2005
Ort: Berlin
Alter: 34
Beiträge: 11.849

Software:
Wings 3D
Sprachversion: en

Blog-Einträge: 48
scrimski wird als engagiert angesehenscrimski wird als engagiert angesehen
Standard AW: Random Verteiler, Move to Surface, Werte auslesen und übergeben

Zitat:
..wie bekomm ich eigentlich die Code-Tags hier im Forum gesetzt?
Entweder mit code /code in eckigen Klammern oder mit einem Klick auf das #-Symbol bei ausgewähltem Text
scrimski ist offline  
Alt 30.06.2009, 19:44   #5 (permalink)
neuer Benutzer
 
Registriert seit: 30.06.2009
Beiträge: 3

Software:
3ds Max 2009
Sprachversion: de

Flat.Eric hat noch keine Resonanz auf seine Beiträge erhalten, um sein Renomee anzuzeigen
Standard AW: Random Verteiler, Move to Surface, Werte auslesen und übergeben

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.
Flat.Eric ist offline  
Thema geschlossen

Tags
move to surface, parameter, random


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB-Code ist An.
Smileys sind An.
[IMG] Code ist Aus.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are An


Ä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


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:05 Uhr.


Powered by vBulletin Version 3.8.1 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2002 - 2009, 3dmaxforum.de