2016-04-06 14 views
0

I haben einen großen Datenbestand:import Array über MaxScript in Keyframes

1479661:-1,1,-1,-898,-769,0.00;-1,2,-1,-96,-1402,0.00;-1,3,-1,117,-1397,0.00;-1,4,-1,-4,-2420,0.00;4,5,-1,5570,4395,0.00;4,6,-1,5570,4395,0.00;4,7,-1,5570,4395,0.00;4,8,-1,5570,4395,0.00;4,9,-1,5570,4395,0.00;4,10,-1,5570,4395,0.00;4,11,-1,5570,4395,0.00;4,12,-1,5570,4395,0.00;4,13,-1,5570,4395,0.00;4,14,-1,5570,4395,0.00;-1,15,-1,913,-3533,0.00;4,16,-1,5570,4395,0.00;4,17,-1,5570,4395,0.00;4,18,-1,5570,4395,0.00;4,19,-1,5570,4395,0.00;4,20,-1,5570,4395,0.00;4,21,-1,5570,4395,0.00;4,22,-1,5570,4395,0.00;4,23,-1,5570,4395,0.00;4,24,-1,5570,4395,0.00;4,25,-1,5570,4395,0.00;4,26,-1,5570,4395,0.00;4,27,-1,5570,4395,0.00;4,28,-1,5570,4395,0.00;4,29,-1,5570,4395,0.00;:117,-1397,7,7.00,A,Dead;: 

Es gibt 29 Objekte in der Anordnung getrennt durch; Jedes Objekt enthält ein xyz. Ich habe 29 Objekte in MAXFILE Wie kann ich die xyz jedes Objekt zuweisen und einen Keyframe dann aufnehmen, um zum nächsten Keyframe in 3ds max bewegen und die nächsten Datensatz (xyz) für die 29 Objekte aufnehmen:

1479662:-1,1,-1,-898,-769,0.00;-1,2,-1,-96,-1402,0.00;-1,3,-1,117,-1392,0.00;-1,4,-1,-6,-2419,0.00;4,5,-1,5570,4395,0.00;4,6,-1,5570,4395,0.00;4,7,-1,5570,4395,0.00;4,8,-1,5570,4395,0.00;4,9,-1,5570,4395,0.00;4,10,-1,5570,4395,0.00;4,11,-1,5570,4395,0.00;4,12,-1,5570,4395,0.00;4,13,-1,5570,4395,0.00;4,14,-1,5570,4395,0.00;-1,15,-1,913,-3533,0.00;4,16,-1,5570,4395,0.00;4,17,-1,5570,4395,0.00;4,18,-1,5570,4395,0.00;4,19,-1,5570,4395,0.00;4,20,-1,5570,4395,0.00;4,21,-1,5570,4395,0.00;4,22,-1,5570,4395,0.00;4,23,-1,5570,4395,0.00;4,24,-1,5570,4395,0.00;4,25,-1,5570,4395,0.00;4,26,-1,5570,4395,0.00;4,27,-1,5570,4395,0.00;4,28,-1,5570,4395,0.00;4,29,-1,5570,4395,0.00;:117,-1392,7,7.07,A,Dead;: 

Der Daten pro Sekunde

Ziel in einer * .dat-Datei mit 25 Bildern gespeichert ist die gesamten Daten hauptsächlich xyz corodinates zu jedem Objekt zu erhalten und die Position zu einem Keyframe

+1

Also was hast du schon probiert? – JHN

Antwort

0

ich bin nicht sicher, zeichnet ich verstanden habe Richtig Ihr Dateiformat, aber etwas in der Art:

stream = openFile "file.dat" 
data = readLine stream 
objs = filterString data ";" --split text for sepparate lines, each per object 
objData = objs[1] 
for objData in objs do --for all objects 
(
    data = filterString objData ":" --split line for object into name and coords 
    obj = getnodebyname data[1] --select object by name 
    coords = filterString data[2] "," --get all coords as plain array x1, y1, z1, x2, y2, z2 ... 
    keysCount = coords.count/3 --compute keys count 
    with animate on 
    (
     for i = 0 to keysCount-1 do --for all keys 
     (
      at time i obj.pos.controller.x_position = coords[i*3 + 1] as float 
      at time i obj.pos.controller.y_position = coords[i*3 + 2] as float 
      at time i obj.pos.controller.z_position = coords[i*3 + 3] as float --read and set position 
     ) 
    ) 
) 
+0

danke, ich versuche, den Code zu testen, und ich bekomme die Fehlerposition IN undefined? –

+0

Meinst du, dass das Objekt korrekt ausgewählt ist (und in der Variablen obj gespeichert ist), aber der Aufruf von .pos verursacht den Fehler? – Artem

+0

Ja, ich habe das Objekt namens Box001 ausgewählt und wenn ich das Skript ausführe, sagt es pos in undefined. –