PDA

View Full Version : can I write position data/rotation etc to file??



cyphyr
11-30-2008, 08:47 PM
Is it posssible to write an lscript to get the position/rotation/scale data of a selected object, write this to a file, move onto the next frame and do this again writing to the same file, the next line down, then save the file with say a txt extension? Is this the sort of project a scripting noob could take on or am I overreaching my self. Alternatively has it alreeady been done? link?
cyphyr

faulknermano
12-01-2008, 01:55 AM
yes it is possible. but there are several ways of doing this. to maximise flexibility here's a function that you can call every time you want to write to the file:



@define LW_POSITION 1
@define LWITEM_ROTATION 2
@define LWITEM_SCALE 3

writeTransformToFile: sel, type, fn
{
fout = File(fn,"a");
switch(type)
{
case LWITEM_POSITION:
data = sel.getPosition(Scene().currenttime);
break;
case LWITEM_ROTATION:
data = sel.getRotation(Scene().currenttime);
break;
case LWITEM_SCALE:
data = sel.getScaling(Scene().currenttime);
break;
default:
break;

}
fout.writeln(data);
}


and here's a sample code that calls this function:




generic
{
sel = Scene().firstSelect();
type = LWITEM_POSITION;
fn = "c:\\reallytemp.txt";
writeTransformToFile(sel,type,fn);

}


so the idea here is that whenever you call writeTransformToFile, you need to provide for it the item object agent, the type of transform channel you want to write (e.g. position, rotation, scale), and the path to the text file that will be appended.

Olaf
12-01-2008, 03:02 AM
how about to save a simple motion file?
dont forget to bake the motion before.

cyphyr
12-01-2008, 03:24 AM
Thanks this looks at least possible, I might get a headache but posible nonetheless :)
If just saving the motion file was good I would do just that but for reasons I cant fathom the motion files dont obviously relate to the numbers in the bottom left info panel. Try it, move a camera or null 10 meters in the z direction over 10 frames and save out the mot file, the numbers should read:
where in order we have x,y,z,h,p,b,(scale)x,(scale)y,(scale)z



0,0,0,0,0,0,1,1,1
0,0,1,0,0,0,1,1,1
0,0,2,0,0,0,1,1,1
....
0,0,9,0,0,0,1,1,1
0,0,10,0,0,0,1,1,1


(loads of stuff missing here, this is just for show)
But actually the mot file looks more like:


LWMO
3

NumChannels 6
Channel 0
{ Envelope
11
Key 0 0 0 0 0 0 0 0 0
Key 0 0.033333333333333333 0 0 0 0 0 0 0
Key 0 0.066666666666666666 0 0 0 0 0 0 0
Key 0 0.10000000000000001 0 0 0 0 0 0 0
Key 0 0.13333333333333333 0 0 0 0 0 0 0
Key 0 0.16666666666666666 0 0 0 0 0 0 0
Key 0 0.20000000000000001 0 0 0 0 0 0 0
Key 0 0.23333333333333334 0 0 0 0 0 0 0
Key 0 0.26666666666666666 0 0 0 0 0 0 0
Key 0 0.29999999999999999 0 0 0 0 0 0 0
Key 0 0.33333333333333331 0 0 0 0 0 0 0
Behaviors 1 1
}
Channel 1
{ Envelope
11
Key 0 0 0 0 0 0 0 0 0
Key 0 0.033333333333333333 0 0 0 0 0 0 0
Key 0 0.066666666666666666 0 0 0 0 0 0 0
Key 0 0.10000000000000001 0 0 0 0 0 0 0
Key 0 0.13333333333333333 0 0 0 0 0 0 0
Key 0 0.16666666666666666 0 0 0 0 0 0 0
Key 0 0.20000000000000001 0 0 0 0 0 0 0
Key 0 0.23333333333333334 0 0 0 0 0 0 0
Key 0 0.26666666666666666 0 0 0 0 0 0 0
Key 0 0.29999999999999999 0 0 0 0 0 0 0
Key 0 0.33333333333333331 0 0 0 0 0 0 0
Behaviors 1 1
}
Channel 2
{ Envelope
11
Key 0 0 0 0 0 0 0 9.9916736053288915 0
Key 0.99940049648284912 0.033333333333333333 0 0 0 0 1 9 0
Key 1.999505877494812 0.066666666666666666 0 0 0 0 1.0000666115019057 2.0004165172576904 0
Key 2.9997434616088867 0.10000000000000001 0 0 0 0 1.0002596974372864 1.0002596974372864 0
Key 4.0000252723693848 0.13333333333333333 0 0 0 0 2.0005930066108704 2.0006322860717773 0
Key 5.0003471374511719 0.16666666666666666 0 0 0 0 1.000333309173584 1.000333309173584 0
Key 6.0006918907165527 0.20000000000000001 0 0 0 0 2.0007221698760986 2.00074831644694 0
Key 7.0012173652648926 0.23333333333333334 0 0 0 0 1.0003888607025146 1.0003888607025146 0
Key 8.001469612121582 0.26666666666666666 0 0 0 0 1.9996540546417236 1.9991884231567383 0
Key 9.0018539428710937 0.29999999999999999 0 0 0 0 0.99926519393920898 0.99926519393920898 0
Key 10 0.33333333333333331 0 0 0 0 1.9902377306673043 0 0
Behaviors 1 1
}
Channel 3
{ Envelope
11
Key 0 0 0 0 0 0 0 0 0
Key 0 0.033333333333333333 0 0 0 0 0 0 0
Key 0 0.066666666666666666 0 0 0 0 0 0 0
Key 0 0.10000000000000001 0 0 0 0 0 0 0
Key 0 0.13333333333333333 0 0 0 0 0 0 0
Key 0 0.16666666666666666 0 0 0 0 0 0 0
Key 0 0.20000000000000001 0 0 0 0 0 0 0
Key 0 0.23333333333333334 0 0 0 0 0 0 0
Key 0 0.26666666666666666 0 0 0 0 0 0 0
Key 0 0.29999999999999999 0 0 0 0 0 0 0
Key 0 0.33333333333333331 0 0 0 0 0 0 0
Behaviors 1 1
}
Channel 4
{ Envelope
11
Key 0 0 0 0 0 0 0 0 0
Key 0 0.033333333333333333 0 0 0 0 0 0 0
Key 0 0.066666666666666666 0 0 0 0 0 0 0
Key 0 0.10000000000000001 0 0 0 0 0 0 0
Key 0 0.13333333333333333 0 0 0 0 0 0 0
Key 0 0.16666666666666666 0 0 0 0 0 0 0
Key 0 0.20000000000000001 0 0 0 0 0 0 0
Key 0 0.23333333333333334 0 0 0 0 0 0 0
Key 0 0.26666666666666666 0 0 0 0 0 0 0
Key 0 0.29999999999999999 0 0 0 0 0 0 0
Key 0 0.33333333333333331 0 0 0 0 0 0 0
Behaviors 1 1
}
Channel 5
{ Envelope
11
Key 0 0 0 0 0 0 0 0 0
Key 0 0.033333333333333333 0 0 0 0 0 0 0
Key 0 0.066666666666666666 0 0 0 0 0 0 0
Key 0 0.10000000000000001 0 0 0 0 0 0 0
Key 0 0.13333333333333333 0 0 0 0 0 0 0
Key 0 0.16666666666666666 0 0 0 0 0 0 0
Key 0 0.20000000000000001 0 0 0 0 0 0 0
Key 0 0.23333333333333334 0 0 0 0 0 0 0
Key 0 0.26666666666666666 0 0 0 0 0 0 0
Key 0 0.29999999999999999 0 0 0 0 0 0 0
Key 0 0.33333333333333331 0 0 0 0 0 0 0
Behaviors 1 1
}
}

At no point is the number 10 mentioned for example so frankly I'm at a loss as to how LW reads its own files.
THis is why I need to write an LScript to get the REALY basic position data into a text file I can edit and then use in other apps.
Thanks
cyphyr

faulknermano
12-02-2008, 08:04 AM
At no point is the number 10 mentioned



Key 10 0.33333333333333331 0 0 0 0 1.9902377306673043 0 0


forget the MOT file. it's more trouble than it is worth, in my opinion. my recommendation to you is to modify the code i've sampled to format the data as you wish to read it on the other app. in your example formatting you would need to restructure the writeTransformToFile func to suit.