gH]kDwP&trueSpaceBeta 7.61[VS_O93YJClinton Reese, Clintons 3d Creations`d8pM*#ͺO2PNG  IHDR@@% IDATxُ]וÙ\YUdLjEInm +F$@$O~_txl$(DR*|V{ϸ@e5٦vq}ƍoo9MRv73 D՛oIuמyz㝋oO'Ӽ,VwwmnX\ʲ j%Y+4u}ww{[\\xm]`ƫHuJk`U43ñ$ϹQʟ5kz1`w߹x믽l֍Q`o_>3g\򲎣h?kڽ)-Fe$QGJ Dd "֫zt$*kEM#DXCv l{~)b)BV23 "" >`  d(iMxw?_\ZW2Y<㓢;k)jLΛ94T"bT(MUr+3!_w#"& &pi ~vБq!C+KDr`jE5Y@MS8 tDVK< >/ [ RHMtW.@, (msɬ+H2V9v!`$N fDF} qQL8q$PDD;@D`6^uU$T2GJG_RB/\JI0n4E,xSRRt,JӘ>P`]R $y v.kW9\{gBp"%@BJGQe R<瞹JHF D(E^8?}WWPR88NRj@`,|PHHL{(umۜNr"T"/K%4{DR@Iq8M=02GJGQ9 3 `:wܙف>$^zO@a_΃=ꏂ1Vˆy $gyk ᜣf;\aLU@k3;3K_t{_?bNt0;Gfgg]m+So?nGR3m:@$ieQ2@}&e_~koǕ+R򩲪"%Sb=>:\X]]}x</--f.nC+KQ# $0J@[|:yB"JڑcGD%U]*ғ;:~p8ŭ57FQܛQ~(jT_zg}͛e4nomn+936&uρYC!{}DB8MpX;rĝՏ[}+?~ݭvUk_uB!x2YX?ѧb| 0L0#37u (E&J*^J6@X?\COl^\Xw;OmÞ)>kPnzGRÇ;3yɫǏlo Xbzkuʓ++ `vнrh~ocgkwv0c}u烊Bؘ;8ËgduwYs#+)mmL:O85-&,`os?ï9wv{{s<>RJ""(jg{78888wtvov1,KQ o.MH%JHJ眎#"_WnɭQ1|`vowXZ;ٴq2>V&LQLO_:-8Ļy_t婫W=19w-G fB`ݾP$B*@@U] A'0{f@彃êtf?9mDvƵ{d09܁Ψv[[= o{e5\xpm%gdʘ"n۸uV+ŒNy{ʣyQĭ#I7HmM3\Ǻ*\~xgo:ћ1DuC:U_GC7WօVB`D9;8:ϧyయe1`SׯJǎt(kTii_޻~wMitـDN5;P^^MFyqh:98::" $(Sԭ}`po۬Yju9$J  NPP׾^yg7nLN&?lwEG+ '##o7M7WS'GSb|hǁA)e3ޝGU] 0 C(A+ٲ,bb N$wv_+5NWw_֍tBe<5M@ {o?)]v'qQz"&|4HƐT+_}t'2EɁ )BIa/KO]/XG)Yo_xwo^VWyzQt U;Q։N'-j{W.J/éj/.,[`eqGY(0 t$i4px`yy%Mu}l~.8gϟɫbt8/|s)88M$RJDcau\8:tfaqӗN.?۷N[o%#罐 Lc==`&vuŏR+ҝS`TUӬ>ޝ݋wa:g4NS -!0֢ےbjOW/_xB.|w*({&Fm|` Xqnn{F:ZS~X:[3+ F*˻"vgNi!ePG2(gVN_?__RD-^Zg(jLDJVi! ,JE{!0#Uu 3Ky x|4uNGRJm@SOç:y$NTlON uOά|G^UU>ZF)cj!&Ӊ*y"PJ@c)AR30sf=Gɥ,ͦImLEՔ!: xzJ͝rѝnUm۲N| VuQjRJ23 |R#29됁XDT(}D@@y:cB =J}ȔMmRF}MpToܾ+)Rp?37"3 K%tDVOTRB9HB8? Yb'R{S U`<+,,~hwf"!ToNU($K)bD<64UDGY#FȰgdJ "~'SF'Z#,OARD,Bg=إn!XiEq@(4&P`4RH9P>Eiєi+inw>=rkFQֽAOhc}#sQ'q W9c}N cm~=3ΗSIxRc (2xRQ<7;R ^+)Um!}ft*n !|rzR:/,8 CD)!;[["Nqs4AFc=oE`:e$)T QJRx)LDYTC]{ODNxk1z{{^fƙA9d86&Zk-'E:w‹Q~Zg1`.Ѿ5u 6VODR:.EJZYUkS(UUy88rb䣏9{XY[ke]9wQJn (CP$ibwD\j-~QvPT)@ .QGёcOBx@(/Q=ԇ{̠dt4_L3_W>ևO?Nӟ޼yʕg}w/_{擪 "}IENDB`/tfѭ8Lwb"qd܂dKu=t *pivotVertexSnap v1.0 .;]kI 忞@.;]kI 忞@"SubObject*Encapsulated objects" X 8  xO  4W}@O{4W}@O{$ Owner4Owner of the Encapsulator$(XFҦV(XFҦV"LE2Data$LE2 Data for node >g'JNjn*p"-1OSM n-1OSM n"LayoutLayout 럆L<_ї"(XFҦV>g'JNjn*pFD@a@g@C?-1OSM n 럆L<_ї˺DefaultOˁ CRih[ o }}dActivity.Run('%THIS_NAME%' + "/selectVertexMode")save selectionZ`Ez]UOOˁ CRih[ @o }}PActivity.Run('%THIS_NAME%' + "/moveIt")move pivotZ`Ez]UO GFʠN=@Po 7}}PE mode make selectionZ`Ez]UO GFʠN=P``o -}} click buttonZ`Ez]UO GFʠN=``po -}} exit PE modeZ`Ez]UO GFʠN=p`o .}} select objectZ`Ez]UO GFʠN=`o 1}}click move pivotZ`Ez]UO}}" ? ( 48@J g'JNjn*pceZU@䑧rceZU@䑧r$_scriptData*Internal Script data [җJs@ % 4W}@O{$(XFҦVLE2Data, 1#J@#QLJ@#QLLE2Data$LE2 Data for node >g'JNjn*pLE2Data, 3MT^RwL~YYTMT^RwL~YYTޢLE2Data$LE2 Data for node >g'JNjn*pLE2Data, 2 9ѵDGrylMu@49ѵDGrylMu@4Bpoint2 (F)ݟ{B  2|=Bynj2|=Bynj Control OutTransitionOut z@Hoz@Ho Control InTransitionIn 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommandn// getPoint2 // April 5 2008 // by Clinton Reese // www.clintons3d.com // // get the average position of the selected vertices for the second mesh // note: can be the same mesh as the first object // // Execute // Called to execute the command function Execute(params) { // TODO: put your action code here //get selected object sel = Node.FirstSelected(); System.Trace(sel); //if not in point edit mode return if(!Node.ConExists(sel,"Selection")) return; //get the mesh and read it's selection data - IRdMeshSelection themesh = Node.Value(sel,"Mesh"); seldata = System.CreateDO('Space 3D Package/Selection Data'); seldata = Node.Value(sel,"Selection"); vertcnt = seldata.GetNumSelectedVertices(); if(vertcnt==0) { if(Node.Exists("Status Line")) if(Node.ConExists("Status Line", "Model")) Node.Value("Status Line", "Model") = "Error: No vertices selected."; return; } dV = System.CreateDO("Space 3D Package/Vertex Stream Data"); dV = themesh.GetVertices(); xval = 0; yval = 0; zval = 0; for(i=0;i<vertcnt;i++) { vertind = seldata.GetSelectedVertexIndex(i); xval = xval + dV.x(vertind); yval = yval + dV.y(vertind); zval = zval + dV.z(vertind); } xval = xval/vertcnt; yval = yval/vertcnt; zval = zval/vertcnt theMatrix = System.CreateDO('Math Package/Matrix Float Data'); theMatrix = Node.Value(sel,"WldMatrix"); oldPoint = System.CreateDO('Math Package/Point Data'); newPoint = System.CreateDO('Math Package/Point Data'); oldPoint.x = xval; oldPoint.y = yval; oldPoint.z = zval; newPoint = theMatrix.TransformPoint(oldPoint); xval = newPoint.x; yval = newPoint.y; zval = newPoint.z; //System.Trace(xval + ", " + yval + ", " + zval); if(Node.Exists("Status Line")) if(Node.ConExists("Status Line", "Model")) Node.Value("Status Line", "Model") = "Selection center (" + xval.toFixed(3) + ", " + yval.toFixed(3) + ", " + zval.toFixed(3) + ") saved."; params.ConValue("point2") = newPoint; //exit PE mode Widgets.ActivateDefaultWidget(); } NScript Object Package/jScript languageh 9 DSpace 3D Package/Point Array Datapoint2 (F)ݟ{9ѵDGrylMu@44W}@O{(XFҦV>g'JNjn*pn%DBb@@P@2|=Bynj|?z@Hoۙ>?9ѵDGrylMu@4uMF86F`O2LZ-N/AJ@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їjControlOˁ CRih[ Ca8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0 Ca:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommandT// getPoint1 // April 5 2008 // by Clinton Reese // www.clintons3d.com // // get the average position of the selected vertices for the first mesh and save the node name for snapping // // Execute // Called to execute the command function Execute(params) { // TODO: put your action code here //get selected object sel = Node.FirstSelected(); System.Trace(sel); //if not in point edit mode return if(!Node.ConExists(sel,"Selection")) return; //get the mesh and read it's selection data - IRdMeshSelection themesh = Node.Value(sel,"Mesh"); seldata = System.CreateDO('Space 3D Package/Selection Data'); seldata = Node.Value(sel,"Selection"); vertcnt = seldata.GetNumSelectedVertices(); if(vertcnt==0) return; //get mesh vertex data dV = System.CreateDO("Space 3D Package/Vertex Stream Data"); dV = themesh.GetVertices(); xval = 0; yval = 0; zval = 0; //read all selected vertex positions in local coordinates for(i=0;i<vertcnt;i++) { vertind = seldata.GetSelectedVertexIndex(i); xval = xval + dV.x(vertind); yval = yval + dV.y(vertind); zval = zval + dV.z(vertind); } //get center of selection xval = xval/vertcnt; yval = yval/vertcnt; zval = zval/vertcnt //transform from local to world coordinates theMatrix = System.CreateDO('Math Package/Matrix Float Data'); theMatrix = Node.Value(sel,"WldMatrix"); oldPoint = System.CreateDO('Math Package/Point Data'); newPoint = System.CreateDO('Math Package/Point Data'); oldPoint.x = xval; oldPoint.y = yval; oldPoint.z = zval; newPoint = theMatrix.TransformPoint(oldPoint); xval = newPoint.x; yval = newPoint.y; zval = newPoint.z; System.Trace(xval + ", " + yval + ", " + zval); params.ConValue("point1") = newPoint; params.ConValue("theNode") = sel; } NScript Object Package/jScript languaged^DSpace 3D Package/Point Array Datapoint1 (F)ݟ{_D=AD!kmstringtheNode಺POJF4W}@O{಺POJF2/Project/Space 3D/Sphere(XFҦV>g'JNjn*pnC`@@P@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?_D=AD!kmuMF86F`O KAq?-1OSM n 럆L<_їjControlOˁ CRih[ Ca8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0 Ca:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho ( 48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand // moveIt // April 5 2008 // by Clinton Reese // www.clintons3d.com // // use 2 stored points to move the node defined by "theNode" // // Execute // Called to execute the command function Execute(params) { var point1 = params.ConValue('point1'); var point2 = params.ConValue('point2'); var theNode = params.ConValue('theNode'); // TODO: put your action code here //get difference of point1 and point2 //point2 is the destination, point1 is the start //dX = point2.x - point1.x; //dY = point2.y - point1.y; //dZ = point2.z - point1.z; dX = point2.x ; dY = point2.y ; dZ = point2.z ; //simplified for single mesh object from stans normalize script owner = Node.FirstSelected(); if (Node.ConExists(owner, 'Matrix')) { RsTool.ShowAxes(Node.Selection() ) //RsTool.ResetAxes(Node.Selection() ) RsTool.NormalizeLocation(Node.Selection() + '/Pivot') Widgets.Move(owner + "/Pivot",dX,dY,dZ); //Widgets.Move(owner + "/Pivot",dX,0,0); //Widgets.Move(owner + "/Pivot",0,dY,0); //Widgets.Move(owner + "/Pivot",0,0,dZ); RsTool.ShowAxes(Node.Selection() ) if(Node.Exists("Status Line")) if(Node.ConExists("Status Line", "Model")) Node.Value("Status Line", "Model") = "Pivot moved to (" + dX.toFixed(3) + ", " + dY.toFixed(3) + ", " + dZ.toFixed(3) + ")"; } //read mesh matrix and translate based on difference between point1 and point2 //theMatrix = System.CreateDO('Math Package/Matrix Float Data'); //theMatrix.LoadIdentity(); //theMatrix.Translate(dX,dY,dZ); //Node.Value(owner + "/Pivot","Matrix") = theMatrix; } NScript Object Package/jScript languageD DSpace 3D Package/Point Array Datapoint1 (F)ݟ{B3II%^DSpace 3D Package/Point Array Datapoint2 (F)ݟ{^AnstringtheNodeeTDO;?64W}@O{(XFҦV>g'JNjn*pn@OD`@@P@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?eTDO;?62/Project/Space 3D/Sphere^An-1OSM n 럆L<_їˇDefaultControl Oˁ CRih[ Ca8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0 Ca:Activity.Stop('%THIS_NAME%') StopZ`Ez]UO GFʠN=P1 }}z@HoZ`Ez]UO1釥GP>aP0 }}z@HoZ`Ez]UO GFʠN= 1 }}B3II%^Z`Ez]UO GFʠN= 01 }}^AnZ`Ez]UO GFʠN=0F@1 }}eTDO;?6Z`Ez]UO1釥GP>aH0@@0 }}eTDO;?6Z`Ez]UO GFʠN=@PP1 }}2|=BynjZ`Ez]UO1釥GP>aP@P0 }}2|=BynjZ`Ez]UOB3II%^uMF86F`O KAq?MT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ ZNewCommand// Execute // Called to execute the command function Execute(params) { Node.Value('/Preferences/Mesh Editor Settings','PE selection mode') = 'vertex'; MeshModifiers.ActivatePointEditWidget('','','Default'); } NScript Object Package/jScript language~൱Dt; #^c4W}@O{(XFҦV>g'JNjn*pnrCBb@H@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { MeshModifiers.ConvertSelection('',''); } NScript Object Package/jScript language~൱Dً #^c4W}@O{(XFҦV>g'JNjn*pnC Cb@H@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho8ʯȥJH|o7 gH]kDwPu9`d8pM*#ͺO2/tfѭ8Lwb"qd|