Professional Documents
Culture Documents
position data , into a MAYA camera.It is made for the MOSYS move data files coming
from the movemanager and as such there are some fixed settings , rules and
limitations.
------------------------------------------------------------
1: The real world
The convention used in the real world is :Camera pointing along the tracks, pan
right is positive - Tilt is in level, tilt up is positive - Dolly is in the one
extreme end of tracks away from where the camera is looking and set to zero ,
always positive numbers ,needless to say that it is important that the track
calibration is correct - I use 1135
2: The File
The script can import ascii files with the characteristics of the MOSYS move data
files if saved as the post.txt type and renamed to something.mov
The file should contain only position data.If txt info is present in the file it
should have a "//" before the txt on each line
The axes should be in the MOSYS order ;pan tilt track focus zoom
2: The Script
It is pretty much self explanatory but here is a brief description
Select height and number of tracks and "make camera" - a rig on tracks is the
result.It is also possible to work with camera on sticks only.
Press "Import" and choose the file.The pos data will be attached to the various
parameters.Remember to set the correct move length - frame 1 is the first frame
Some parameters are locked for fool proof purpose but they can be unlocked e.g.
camera heigth
The exporter exports an Ascii file that can be importet in MOSYS movemanager.If a
move is importet and something is changed in one axe the script keeps all other
data for export.E.g. :In this way it is possible to scale track axe and keep other
axes the same It is possible to make several cameras but can be confusing and prone
to bugs - I will take that function out.
-----------------------------------------------------------
Copy paste the script-txt into a new tool on the shelf and voil� (There is an icon
attached to this mail to use)
I know there is some minor bugs , e.g.: it is not possible to select the camera via
the script after a reload of a move.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;script start;;;;;;;;;;;;;;;;;;;;;;;;;
////////////////////////////////////////////////////////////////////////////
//////////////
//
//
// MoVis Camera by Moving Visuals
//
// Copyright (c) Moving Visuals
//
// http://www.movis.cc
//
// Script generates MoVis camera and allow to import and export moves
//
// Author: Mads Tuxen //
// //
//
//
////////////////////////////////////////////////////////////////////////////
//////////////
global int $test_exp;//en v�rdi der afg�rer om det er en test eller en export der
laves global string $test_text[];//skal kaldes igen med global for at virke inde i
proc clear ($test_text); // start med at rense testvinduet global string
$teksten[]; clear ($teksten); global string $active;
//-----------------------------------------------------------
// procedure til at s�tte aktivt kamera
proc setactive(){
global string $active;
$active=`optionMenu -q -value active`;
movis;
}
//-----------------------------------------------------------------------
// en procedure der fjerner og l�ser alle keyable attributter fra interfacet til de
objekter der ikke skal �ndres ved.
} //slut p� procedure
//-----------------------------------------------
// acclerations test
proc ac_test (float $test_value, string $kurven){
int $aa=$a+1;
int $aaa=$a+2;
float $slut_tid[]= `keyframe -index $aa -query $kurven`;//faa sluttid
for interval key
float $start_tid[]= `keyframe -index $a -query
$kurven`;//faa starttid for interval key
int $slut_t=$slut_tid[0];
int $start_t=$start_tid[0];
int $interval_dur =$slut_t-$start_t;
int $iii=$ii+1;
float $endframe_value[]=`keyframe -t $iii -q -eval $kurven`;
float $efv=$endframe_value[0];
if ($value>$test_value){
global string $test_text[];
int $size_text=size($test_text);
$test_text[$size_text]=($kurven +" frame "+ $start_t + " to
" + $slut_t);
$ii=$slut_t;
$testresult++;
}
} //slut loop
accleration
} //slut p� loop
intervaller
//-----------------------------------------------------
//test keys
proc testkeys()
{
global int $test_exp; //skal kaldes for at den kan l�se den global string $active;
clear ($test_text);
$test_text[0]="Please select MoVis-Camera (Locator)!";
}
else{
global string $test_text[]; //skal kaldes
clear ($test_text); //hvis der er noget tekst i forvejen s� sletes den
$test_text[0]=("Test results for "+$valgt +":");
$test_text[1]="temp";// bare en midlertidig for at den ikke skal skrives over
i testloopets slut
global int $testresult;// skal m�ske startes et andet sted.
$testresult=0;// starter med at s�tte resultatet til "passed"
float $testvalue_pan=100; //s�t maxv�rdien for pan
float $testvalue_tilt=100; //s�t maxv�rdien for tilt
float $testvalue_track=100; //s�t maxv�rdien for track
if ($test_pan=="_pan_deg") {
ac_test($testvalue_pan,$anim_curves[$o]);
}
if ($test_tilt=="_tilt_deg") {
ac_test($testvalue_tilt,$anim_curves[$o]);
}
if ($test_track=="_track_m"){
ac_test($testvalue_track,$anim_curves[$o]);
}
} // slut
attrribut loop
selectKey -cl $valgt; //fjerner valget af keys s� man ikke
forstyrres
}
else
{ //hvis det er en eksoprt der kaldes
$test_text[0]=$valgt;
$test_text[1]="Exported!";
movis_exp;
}
}
else
{
if ($test_exp==0) {
$test_text[1]="Didn't pass the test!!!";
}
else
{
$test_text[0]=("Can't export "+$valgt);
$test_text[1]="Animation didn't pass test!";
}
}
}//procedure slut
//--------------------------------------------------------
// lav et camera med navnet movis
proc make_movis()
{
global int $select_job;
if (`scriptJob -ex $select_job`) scriptJob -kill $select_job -force;// dr�ber
select jobbet mens der laves og selectes et kamera
select -cl; // s�rger for at der ikke er valgt noget inden der laves noget
// imageplane
string $ip =`shadingNode -asUtility imagePlane -n ($loc+"_ImagePlane")`;// der
laves et image plane string $ipm=($ip+".message"); string
$camip=($cam[0]+".imagePlane[0]");
connectAttr -f $ipm $camip;
setAttr ($ip+".fit") 0;
addAttr -ln scale_all -k 1 -at double -dv 1 -minValue 0 $loc; addAttr -ln pan_deg
-k 1 -at double $loc; addAttr -ln tilt_deg -k 1 -at double $loc ; addAttr -ln
track_m -k 1 -at double -minValue 0 -maxValue ((2.3*$ant)-1.3) -dv 0.0 $loc;
addAttr -ln focus -k 1 -h 0 -at double $loc; //bruges ikke endnu aktivt -h 1
betyder den er gemt addAttr -ln zoom -k 1 -h 0 -at double $loc; // bruges ikke
endnu
//foerste ben
setAttr ($fod_a[0]+".visibility") 0;
//andet ben
if ($ant>=1){
move -2.8 2 0 $fod_b[0];
}
else{
move -3 0 0 $fod_b[0];
}
setAttr ($fod_b[0]+".visibility") 0;
//tredie ben
if ($ant>=1){
move 2.8 2 4 $fod_c[0];;
}
else{
move 1.5 0 2.6 $fod_c[0];
}
setAttr ($fod_c[0]+".visibility") 0;
del_att ($pinda[0]);
del_att ($pindb[0]);
del_att ($pindc[0]);
//tiltdel
string $pc_tilt[]=`polyCube -ch 0 -w .2 -h .2`;
polyExtrudeFacet -ch 0 -kft 0 -ltz 1.70 ($pc_tilt[0]+".f[4]") ;
polyExtrudeFacet -ch 0 -kft 0 -ltz 1.00 ($pc_tilt[0]+".f[1]") ;
select -cl;
move -r -1.3 1.5 0 $pc_tilt[0];
move -a 0 2 0 ($pc_tilt[0]+".scalePivot") ($pc_tilt[0]+".rotatePivot");
//hoved cylinder
string $head[]=`polyCylinder -ch 0 -r .5 -h .6 -sx 20 -sy 1 -sz 1`;
move -r 0 0.1 0 $head[0];
if ($ant>=1){
//script der laver skinnerne:
for ($ii=0;$ii<$ant;$ii++){
for ($i=0;$i<((4));$i++) {
global float $length;
global string $svelle_navn[];
global string $alle_sveller[];
string $temp[]=`polyCube -ch 0 -w
$svelle -h .3 -d 1.0 -n ("svelle"+$loc)`;
$svelle_navn[($i)]=$temp[0];
$alle_sveller[($i+($ii*4))]=$temp[0];
clear ($temp);
move 0 .15
(($i)*(($length-(2*$indhak))/3)+$indhak+($ii*$length));
del_att($svelle_navn[($i)]);
select -cl;
select $alle_sveller;
string $sg =`group -n ("sveller"+$loc)`;
del_att ($sg);
clear $alle_sveller;
clear $svelle_navn;
select -cl;
del_att($rack_a[0]);
del_att($rack_b[0]);
move 0 2 0 $top[0];
move 0 4 0 $cam[0];
rotate 0 180 0 $cam[0];
parent $cam[0] $pc_tilt[0];
$lower_part+".translateZ"+"="+$afst+"+(10*"+$loc+".track_m)"+";\r\n"+
$cam[0]+".translateZ="+$loc+".nodaloffset_z*.1;\r\n"+
$cam[0]+".translateY="+$loc+".nodaloffset_y*.1+.5;\r\n"+
$cam[0]+".translateX="+$loc+".nodaloffset_x*.1+1.3;\r\n"+
$top[0]+".translateY"+"=-2+(0.1*"+$loc+".head_height);\r\n"+
$top[0]+".translateX"+"=(0.1*"+$loc+".head_off_x);\r\n"+
$top[0]+".translateZ"+"=(0.1*"+$loc+".head_off_z);\r\n"+
$ip+".depth"+"=(0.1*"+$loc+".image_depth);\r\n" +
$aim_box[0]
+".translateZ"+"=(-0.1*"+$loc+".image_depth);\r\n"+
$aim_box[0] +".translateX"+"=0;\r\n"+
$aim_box[0] +".translateY"+"=0;\r\n");
del_att($pc_pan[0]);
del_att($pc_tilt[0]);
del_att ($head[0]);
del_att($top[0]);
del_att($lower_part);
remove_key_att($aim_box[0]);
$active=$loc;
select -r $loc;
movis; // opdaterer vinduet
}
//-------------------------------------------------------
// importerer moves til det valgte camera
proc importer_noget(string $filename, string $filetype)//den procedure der
importere attributter og mapper dem
{
//string $chosen=`optionMenu -q -value active`;
global string $active;
string $chosen=$active;
string $chot_pan=($chosen+".pan_deg");
string $chot_tilt=($chosen+".tilt_deg");
string $chot_track=($chosen+".track_m");
string $chot_focus=($chosen+".focus");
string $chot_zoom=($chosen+".zoom");
}
//-----------------------------------------------------------
// aabner et import avi vindue
proc imp_avi_win()//den procedure der �bner et import vindue og f�r navne og
placeringer
{
global string $active;
fileBrowserDialog -m 0 -fc "import_avi" -ft "avi" -an "Importer";// husk -m
0 for importer -wt ("Importing move to "+$active) -ds 1
}
//--------------------------------------------------------
// v�lg aktivt kamera procedure
proc sel_cam() {
global string $active;
string $valgt=$active;
if ($active==""){
string $findselv[]=`ls -type locator`;
for ($fundet in $findselv){
if (`gmatch $fundet "MoVis_3d_Cam*"`==1){
select $fundet;
pickWalk -d up;
}
}
else{
select $valgt;
}
//--------------------------------------------------------
//imageplane f�r avi p� procedure
string $valgt=$active;
string $image_planes[];
$image_planes=`ls -type imagePlane`;
}
}
}
//-----------------------------------------------------------
// procedure der laver en aimbox til det valgte kamera
proc aim_box () {
global string $active;
string $valgt=$active;
//setAttr ("camera_"+$valgt+"_aimbox_org"+".visibility") 1;
del_att ($vis_aim[0]);
remove_key_att ("camera_"+$valgt+"_aimbox_org");
//-----------------------------------------------------------
// aabner et import vindue
proc import_move()//den procedure der �bner et import vindue og f�r navne og
placeringer
{
global string $active;
fileBrowserDialog -m 0 -fc "importer_noget" -ft "move" -an "Importer";//
husk -m 0 for importer -wt ("Importing move to "+$active) -ds 1
}
//-------------------------------------------------------------
// �bner et export vindue
proc movis_exp()
{
global string $active;
fileBrowserDialog -m 1 -fc "eksporter_noget" -ft "move" -an
"Eksporter";//-wt ("Eksporting move from "+$active) -ds 1
movis;
}
//-------------------------------------------------------
// Selve export proceduren
proc eksporter_noget( string $filename, string $fileType){
global string $active;
string $exp_cam=$active;
$exampleFileName = $filename;
fclose $fileId;
fclose $fileId;
string $finaltext="";
print ($finaltext);
$file=`fopen $exampleFileName "a"`;
for ($g=0;$g<(size($teksten));$g++){
global string $teksten[];
$finaltext=($finaltext+$teksten[$g]+"\r\n");
}
;
fprint $file $finaltext;
fclose $file;
string $finaltext="";//renser den igen
clear ($teksten);
//---------------------------------------------------
// test og eksporter
proc exp_test()
{
global int $test_exp;
$test_exp=1;//1 er eksport
testkeys;
}
//---------------------------------------
// test og test
proc test_test()
{
global int $test_exp;
$test_exp=0;//0 er test
testkeys;
}
//-------------------------------------------------------------
// lav et grapheditor vindue og v�lg kurverne
proc gra_ed(){
if ($v==""){
print "No Movis-Camera in scene!";
}
else{
select ($v);
GraphEditor;
}
//-------------------------------------------------------------
proc aabn() {
if ($v==""){
print "No Movis-Camera in scene!";
}
else{
select ("camera_"+$v);
AttributeEditor;
}
}
setParent..;
setParent..;
setParent..;
setParent..;
setParent..;
setParent..;
setParent..;
}
setParent..;
setParent..;
setParent..;
//setParent..;
formLayout -edit //
-attachForm $faste "top" 1
-attachForm $faste "left" 1
showWindow $movis_win;
global string $cw;
global int $select_job;
$select_job=`scriptJob -pro -e "SelectionChanged" "update" -p $cw `;//
}
movis;
//-----------------------------------
//update vinduet
proc update(){
string $sel[]=`ls -sl`;
if (size ($sel)==0){
//g�r intet
} else {