|
|||||||
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (permalink) |
|
neuer Benutzer
Registriert seit: 07.02.2010
Beiträge: 9
Software:3ds Max Design 2010 Sprachversion: en
![]() |
Hallo,
ich habe ein recht triviales Problem, für dass ich (absoluter Skriptanfänger) jedoch noch keine Lösung gefunden habe. Folgende Situation: Ich habe beispielsweise 20 Boxen: Box1, Box2, ..., Boxi, ..., Box20 Und ich habe 20 Bones: Bone1, Bone2, ..., Bonei, ..., Bone20 Jetzt möchte ich per Skript jede Boxi auf den entsprechenden Bonei linken. Wie geht das? Ich habe schon eine Schleife versucht, scheitere aber schon am auswählen der Objekte for i=1 to 20 do select box i aber dann weiß ich die Syntax nicht, um MaxScript beizubringen, dass box ein fester String ist und i die Laufvariable. Für Hilfe wäre ich sehr dankbar Martin Geändert von panther444 (07.02.2010 um 20:30 Uhr) |
|
|
|
|
|
#2 (permalink) |
|
Moderator
Registriert seit: 27.04.2005
Ort: Berlin
Alter: 34
Beiträge: 11.853
Software:Wings 3D Sprachversion: en
Blog-Einträge: 48
![]() ![]() |
Ein String wird immer in Anführungszeichen geführt., wäre also "box". So wie du es jetzt verwendest, ist es eine Variable, noch dazu eine undeklarierte.
Die Auswahl Code:
for i=1 to 20 do select box i Was du tun kannst ist lle Boxen und alle Bones in je einem Array sammeln Code:
theBoxes = $Box* as Array theBones = $Bone* as Array Code:
for i in1 to theBoxes.count do ( ) Code:
theBoxes[i].parent = theBones[i]
__________________
Wie man Fragen richtig stellt... Geändert von scrimski (07.02.2010 um 21:54 Uhr) |
|
|
|
|
|
#3 (permalink) |
|
neuer Benutzer
Registriert seit: 07.02.2010
Beiträge: 9
Software:3ds Max Design 2010 Sprachversion: en
![]() |
Hallo,
danke für deine Antwort. Das hilft mir schonmal ein gutes Stück weiter. theBoxes = $Box* as Array theBones = $Bone* as Array nimmt aber alle Bones/Boxen in meiner Datei mit auf, oder? Kann ich das auch noch eingrenzen? Dass ich zum Beispiel im Vorraus alle Boxen und Bones, die relevant sind markiere und nur diese entsprechend in das Array übernommen werden? vielen Dank Martin |
|
|
|
|
|
#4 (permalink) | ||
|
Moderator
Registriert seit: 27.04.2005
Ort: Berlin
Alter: 34
Beiträge: 11.853
Software:Wings 3D Sprachversion: en
Blog-Einträge: 48
![]() ![]() |
Zitat:
Zitat:
Code:
theBoxes = selection as array Code:
theBones = selction as Array
__________________
Wie man Fragen richtig stellt... |
||
|
|
|
|
|
#6 (permalink) |
|
neuer Benutzer
Registriert seit: 07.02.2010
Beiträge: 9
Software:3ds Max Design 2010 Sprachversion: en
![]() |
Ok, ich komme hier nicht wirklich zurecht und in den Tutorials habe ich leider auch nichts gefunden, was meiner Aufgabenstellung nur Ansatzweise ähnelt.
Situation: Eine lange Kette von Objekten die durchnummeriert sind und alle auf einer Linie liegen. Entsprechend diesen Objekten sollen jetzt Bones erzeugt werden. Sprich unter Objekt 1 soll Bone1 zu liegen kommen etc. Hier hakt es schon wieder. Ich weiß, dass ich eine Bonekette nach folgendem Prinzip erzeugen kann: Code:
b0 = bone pos:[0,0,10] in b0 b1 = bone pos:[0,0,10] in b1 b2 = bone pos:[0,0,10] Vielen Dank nochmal für eure Mühe! |
|
|
|
|
|
#7 (permalink) |
|
Moderator
Registriert seit: 27.04.2005
Ort: Berlin
Alter: 34
Beiträge: 11.853
Software:Wings 3D Sprachversion: en
Blog-Einträge: 48
![]() ![]() |
Schleifen bekommt man mit
Code:
for i in 1 to x do x wäre in diesem Fall die Anzahl der Boxen, praktischweise wieder in ein Array. Also Code:
theBoxes = $Box* as Array -- oder "theBoxes = selection as Array" für eine Auswahl von Boxen for in in 1 to theBoxes.count do ( --hier den Code für die Bones )
__________________
Wie man Fragen richtig stellt... |
|
|
|
|
|
#8 (permalink) |
|
erfahrener Benutzer
Registriert seit: 29.12.2008
Alter: 26
Beiträge: 961
Software:3ds Max 2008 Sprachversion: en
![]() |
Also für Bones solltest du schon mehr machen, als Standard Bones zu verlinken...die korrekte Vorgehensweise, um Bones per MaxScript zu erstellen ist 'BoneSys'
Code:
BoneSys.createBone <point3> <point3> <point3> Um ne Bone-Chain zu erstellen musst du die erstellten Bones danach noch verlinken... Bsp: Code:
SrcObj = $Box* as array --die lange Kette von Objekten...musst natürlich deine Bezeichnung verwenden BonArr = #() --leeres Array für die Bones append BonArr (BoneSys.createBone SrcObj[1] SrcObj[2] [0,0,1]) --der erste Bone for i in 2 to (SrcObj.count -1) do ( append BonArr (BoneSys.createBone SrcObj[i] SrcObj[i+1] [0,0,1]) BonArr[i].parent = BonArr[i-1] ) ...könnte funktionieren...
__________________
Nec spe, nec metu.
piflik.de |
|
|
|
|
|
#9 (permalink) |
|
neuer Benutzer
Registriert seit: 07.02.2010
Beiträge: 9
Software:3ds Max Design 2010 Sprachversion: en
![]() |
Hi,
@scrimski: MeinProblem ist ja gerade, dass ich nicht weiß, wie ich Folgendes in der Skriptsprache korrekt ausdrücke: Code:
for i=1 to x do ( in bi b i+1 = bone pos:[i*Abstand,0,10] ) Code:
#($Box:Box01 @ [0.000000,-0.000001,14.849188], $Box:Box02 @ [30.174011,-0.000001,14.849188], $Box:Box03 @ [60.348022,-0.000001,14.849188], $Box:Box04 @ [90.522034,-0.000001,14.849188], $Box:Box05 @ [120.696045,-0.000001,14.849188], $Box:Box06 @ [150.870056,-0.000001,14.849188]) #() -- Error occurred in anonymous codeblock; filename: ; position: 196; line: 4 -- Frame: -- Unable to convert: $Box:Box01 @ [0.000000,-0.000001,14.849188] to type: Point3 -- Error occurred in anonymous codeblock; filename: ; position: 260; line: 6 -- Frame: -- Type error: Call needs function or class, got: 6 ![]() Line 4 und 6 sind die, in denen srcObj auftaucht. Kann es hier ggf Probleme geben? Geändert von panther444 (08.02.2010 um 20:41 Uhr) |
|
|
|
|
|
#10 (permalink) |
|
erfahrener Benutzer
Registriert seit: 29.12.2008
Alter: 26
Beiträge: 961
Software:3ds Max 2008 Sprachversion: en
![]() |
Facepalm...das kommt davon, wenn man Code schreibt und nur halb bei der Sache ist...da fehlt überall ein .pos...
Code:
SrcObj = $Box* as array --die lange Kette von Objekten...musst natürlich deine Bezeichnung verwenden BonArr = #() --leeres Array für die Bones append BonArr (BoneSys.createBone SrcObj[1].pos SrcObj[2].pos [0,0,1]) --der erste Bone for i in 2 to (SrcObj.count - 1) do ( append BonArr (BoneSys.createBone SrcObj[i].pos SrcObj[i+1].pos [0,0,1]) BonArr[i].parent = BonArr[i-1] )
__________________
Nec spe, nec metu.
piflik.de |
|
|
|
|
|
#11 (permalink) |
|
neuer Benutzer
Registriert seit: 07.02.2010
Beiträge: 9
Software:3ds Max Design 2010 Sprachversion: en
![]() |
Super. Das funktioniert einwandfrei. Ich danke dir.
Solltest du dich mal in die Mensa der TUM Standort Garching verirren gebe ich dir ein Bier aus ![]() Wenn wieder Probleme auftreten weiß ich ja jetzt, wohin ich mich wenden kann. ciao Martin |
|
|
|
![]() |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| 3ds Max 2009: Objekt an mehrere Targets linken | Patrick | 3ds Max - Animation | 3 | 07.07.2009 14:33 |
| Objekte nach Material auswählen | heinbremer | 3ds Max - Allgemeines | 2 | 10.01.2008 15:41 |
| mehrere Scenes automatisch nacheinander rendern | mdm | 3ds Max - Allgemeines | 9 | 03.07.2007 17:37 |
| Herausschreiben von separaten Vraybuffern für mehrere Objekte nacheinander -Dateipfad | Roberto | V-Ray | 5 | 14.09.2006 13:11 |
| mehrere polys auswählen | Wolfi | 3ds Max - Einsteiger | 4 | 16.03.2005 09:11 |