gH]kDwP$Rosetta Beta 7.61[VS_O93YJClinton Reese, Clintons 3D Creations`d8pM*#ͺOD$PNG  IHDR`ZIDATx1 0@1B>2z*Xyq]` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5k hpIENDB`/tfѭ8Lwb"q'i܂dKu=ܾ6install Point Clone Button .;]kI 忞@.;]kI 忞@"SubObject*Encapsulated objects" E 0M ș 4W}@O{4W}@O{$ Owner4Owner of the Encapsulator$(XFҦV(XFҦV"LE2Data$LE2 Data for node >g'JNjn*p" zFAa| zFAa|DhelpText\vRm)EC!avRm)EC!aD leftClickScript\1V {E!Y1V {E!YD name\!K0}q!K0}qD"rightClickScript\-1OSM n-1OSM n"LayoutLayout 럆L<_ї"1V {E!YsayHello!K0}q2System.Alert("goodbye");(XFҦV>g'JNjn*pFDBk@@T@-MD'zZt>-MD'zZRectangle"Screen Rectangle THj6F 2s*0 RÒGbDeC tRÒGbDeC  WidthWindow width0  [FB%n*jt[FB%n*jHeightWindow height0  [GDJM [GDJMMin Width$Min. Window width%]GJ7ψ%]GJ7ψMin Height&Min. Window height^^Dy^^DyMax Width$Max. Window widthv43N tv43N tMax Height&Max. Window height~൱D@ j#^c~൱D@ j#^cMaximized(Window Is Maximized 9@'s9@'sRootNodeRootNode{Q !aOt {Q !aOt  TitleTitle Text6*Mv46*Mv4View Index$View window indexf$I `7f$I `7Frame TypeFrame Typej^G@!,j^G@!,"ViewersViewers array 2bOdA)f "I)LL !I)LL ! Def1D Default 1D GUID8M0cry8M0cry Def2D Default 2D GUIDF L$3F L$3 Def3D Default 3D GUIDobFFJL}obFFJL}SnappedTo$Snapped To WindowBXPjKɸtEBXPjKɸtE SnappedToTarget@Snapped To Window Target CornerkJHx(V@WkJHx(V@W SnappedToSource@Snapped To Window Source CornerKTLA7~fKTLA7~f"SnappedToOffsetX6Snapped To Window Offset XK8Y8O#=gtMK8Y8O#=gtM"SnappedToOffsetY6Snapped To Window Offset Ymk~_Lb.mk~_Lb.SnappedToWidth0Snapped To Window Width|7EId |7EId  SnappedToHeight2Snapped To Window HeightKXtO LKXtO L,StartSnappedToOffsetXBStart Snapped To Window Offset XVG))jHETVG))jHET,StartSnappedToOffsetYBStart Snapped To Window Offset Y?V{N7l?V{N7lSnappedToRatio,Snapped To Ratio Mode 86*n^HD9t 86*n^HD9t OwnedByOwned By|_ D|_ DTabsAsButtons Tabs As Buttons _N>G1_N>G1HiddenHidden Flag \q^2FII3w\q^2FII3wPreference,View Preference Panel >=жaMpT>=жaMpT&HideDockedTitlebarJHide Title bar when window is docked N'D)L-N'D)L-MinimizedBHJWindow Is Minimized into Blue Handle ϕ`&FSx9wϕ`&FSx9wSizeLockPrevent horizontal and/or vertical size change. 0x01 - horizontal, 0x02 - vertical˽OS˽OSDispTitleText,Display Titlebar Text Ī8mݧC>!7Ī8mݧC>!7SmallerTabs*Display smaller Tabs (XFҦV"&|_ DkJHx(V@WBXPjKɸtEmk~_Lb.8M0cryN{485B725E-A69D-4AD5-A876-B3BBA72D2C0A}[FB%n*j\q^2FII3wK8Y8O#=gtM6*Mv4 [GDJMRÒGbDeC 1f$I `7{Q !aOt Ī8mݧC>!7obFFJL}I)LL !v43N t (XFҦV>g'JNjn*pFBCX@1@?^^Dy_N>G19@'s*O΢C}N{5FDDFE6E-518F-464A-B4B9-8D24B556E36C}˽OS-pϗO 0)mz!OHwc ϕ`&FSx9w>=жaMpTF L$3j^G@!,2bOdA)f 6^r[HJv-, ^r[HJv-, %]GJ7ψ>-MD'zZKXtO L?V{N7l VG))jHET~൱D@ j#^cN'D)L-86*n^HD9t |7EId KTLA7~f^r[HJv-, $Toolbar.;]kI 忞@" 4W}@O{$n_<&KES Qn_<&KES Q NameItem nameo(K ]p do(K ]p dHelpTextHelp text8Cechg8Cechg RowsToolbar RowsNL {NL {$Dimension$Toolbar dimension$Z_IFL!OSZ_IFL!OSHorizontal Horizontal Flag .S)A2UЍc.S)A2UЍcIsSubToolbar$IsSubToolbar Flag =JM@hM Q3=JM@hM Q3IsImportant2IsImportant Toolbar Flag .UuwO e.UuwO eIDToolbar ID'0#ԪC'X/9}'0#ԪC'X/9}$ IndexItem Index$_N>G1JdWJc~JdWJc~PrototypePrototype name<9BH@b\<9BH@b\IsMinimizedPTrue/False flag if toolbar is minimized m O1Wwm O1Ww$IsAspectT(Aspect Toolbar Flag $(XFҦV".UuwO e'0#ԪC'X/9}m O1Ww=JM@hM Q3 (XFҦV>g'JNjn*pFBCb@ f@?_N>G1Z_IFL!OS NL {JdWJc~8Cechg.S)A2UЍc n_<&KES Qo(K ]p d<9BH@b\ R/$ķKniaW"pointCloneButton'0#ԪC'X/9}]8teO?s]8teO?s"MaxItemTxtHeight.Maximal item text size% sH?DC sH?DCTagTag%IlfāA>ˁwIlfāA>ˁwTagAliasTag Alias%/ru|GF0/ru|GF0AgentIDUpdate agentID(XFҦVLE2Data, 1"-1OSM n".;]kI 忞@"E 4W}@O{$n_<&KES Qo(K ]p dQm6l3Ll/V^Qm6l3Ll/V^CommandAction commandN="QEj%:N="QEj%:RClickCommand,RClick Action Command$ܿORE bi$ܿORE biPreview2D8Item preview 2D resource id*S]?G[~x;*S]?G[~x;Preview3D8Item preview 3D resource idSr)B8Sr)B8Package"Package class idDNOQsP'ѭDNOQsP'ѭBitmap.Item preview 3D bitmap eSBgciDsL[wiDsL[wRadio Group(Radio buttons group4E*4E*ControlID2D&User Control ID 2Dh>ǑJ]@<h>ǑJ]@<ControlID3D&User Control ID 3D+fyOA7XC+fyOA7XC MaxItemBmpWidth2Maximal item bitmap sizeTl@fC.^&GZTl@fC.^&GZ"MaxItemBmpHeight2Maximal item bitmap sizeh0OY~ C h0OY~ C  MaxItemTxtWidth.Maximal item text size%?Aυ D)7t?Aυ D)7tGrayPercentxGray icon about specified percents if it is not highlighted][D+Iv(][D+Iv( MenuAct As Menu 8{Nm(!8{Nm(!IsMenuButtonIs Menu Button ko6ǑJ]@<N{2BBC850E-6EEF-4364-9265-A4A606AE464B}N="QEj%:$ܿORE bi//ru|GF0N{00000000-0000-0000-0000-000000000000}+fyOA7XC(XFҦV>g'JNjn*pFCb@v@p8B?8{Nm(!][D+Iv(ko6ˁw?Aυ D)7tUTl@fC.^&GZo(K ]p dpoint clone]8teO?s.;]kI 忞@Sr)B8-1OSM n 럆L<_ї0DNOQsP'ѭeSBgcL VC:\Users\Clint\Pictures\pointCloneIcon.bmp!bO 0;b xyLTgşUt&UclKDPAvad 3fy,  HE7ŪK+i1Vkjjk%~.dޛ͹~>Gy|v)_ G,d>P2C=9Qf8WdXR΢ՉWU룋G|"oXoTW؜'/i/d,3 Ywi2gPqsZ%&d~r +C7k~:F{ⱏNavͺbjnxS5K/qj=X: *Fg'JNjn*pceZU@䑧rceZU@䑧r$_scriptData*Internal Script data [җJs@ %0M 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, 22|=Bynj2|=Bynj Control OutTransitionOutz@Hoz@Ho Control InTransitionIn 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ "NewCommand // Execute // Called to execute the command function Execute(params) { // TODO: put your action code here owner = System.ThisOwner(); button1 = "pointCloneButton"; theScript = "pointCloneScript"; // if(Node.Exists("/Project/Windows Manager Space/CustomFrame/Toolbar/" + button1)) { replaceLeft = System.Question(button1 + " button already exists in the toolbar. Would you like to replace it?"); if(replaceLeft) Node.Delete("/Project/Windows Manager Space/CustomFrame/Toolbar/" + button1); else return; } //check for and create customframe if(!Node.Exists("/Project/Windows Manager Space/CustomFrame")) Node.Copy(owner + "/CustomFrame","/Project/Windows Manager Space"); //copy buttons to custom frame oldButt = Node.Copy(owner + "/" + button1,"/Project/Windows Manager Space/CustomFrame/Toolbar"); //copy script to custom commands //create CustomCommands if(!Node.Exists("/Scripts/CustomCommands")) { temp = Node.Create("Kernel Package/Object","/Scripts"); custcom = Node.Rename(temp,"CustomCommands"); } if(Node.Exists("/Scripts/CustomCommands/" + theScript)) { replaceLeft = System.Question(theScript + " script already exists. Would you like to replace it?"); if(replaceLeft) Node.Delete("/Scripts/CustomCommands/" + theScript); else return; } Node.Copy(owner + "/" + theScript,"/Scripts/CustomCommands"); //activate it WindowsManager.Activate(); WindowsManager.UpdateWindowsStructure(); //reset the toolbar //1D Aspect WindowsManager.SetWindowAspect('/Project/Windows Manager Space/CustomFrame', 1); //2D Aspect WindowsManager.SetWindowAspect('/Project/Windows Manager Space/CustomFrame', 2); } NScript Object Package/jScript language~൱D,#^c4W}@O{(XFҦV>g'JNjn*pn7C`b@H@2|=Bynj|?z@Hoۙ>?J@#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@Ho. ܂dKu=-"pointCloneScriptH.;]kI 忞@"HȌHhș4W}@O{$(XFҦV"-1OSM n"՞'fA5-_՞'fA5-_D3DEYED3DEYE =xNT{(XFҦV>g'JNjn*pF-DCe@@@CC?՞'fA5-_ =xNT{*$?-1OSM n 럆L<_їˬDefault GFʠN=ȸn ,}} version 1.0Z`Ez]UO}}. 48@J g'JNjn*pLE2Data, 2J@#QLLE2Data, 3-1OSM n# 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand6// Execute // Called to execute the command function Execute(params) { // TODO: put your action code here owner = System.ThisOwner(); scene = Space.CurrentScene(); //return if template firstsel = Node.FirstSelected(); System.Trace(firstsel + " is the target"); //scratch working matrices workMatrix = System.CreateDO("Math Package/Matrix Float Data"); workMatrix2 = System.CreateDO("Math Package/Matrix Float Data"); //deactivate listener Node.Value(owner + "/Selection Change Event","Active") = 0; //be sure selection has a wldmatrix connector if(!Node.ConExists(firstsel,"WldMatrix")) { System.Alert("Not a valid selection"); return; } //be sure selection has a mesh connector if(!Node.ConExists(firstsel,"Mesh")) { System.Alert("Not a valid selection"); return; } target = firstsel; Node.Value(owner + "/pointCloneTemplate/DataStore","target") = firstsel; //copy to the scene pclone = Node.Copy(owner + "/pointCloneTemplate",scene); //translate clone encaps to the target object //first remove scale workMatrix = Node.Value(target ,"WldMatrix"); workMatrix.SetScaleX(1); workMatrix.SetScaleY(1); workMatrix.SetScaleZ(1); Node.Value(pclone,"Matrix") = workMatrix; //rename the encaps thegrid2 = Node.SafeRename(pclone ,"pointClone"); // //freeze rotations if orient source // //ScriptObject.RunCmd("tools package/show axes", "Selection", thegrid2); //ScriptObject.RunCmd("tools package/normalize rotation", "Selection", thegrid2); //ScriptObject.RunCmd("mesh modifiers package/apply pivot transform to mesh", // "ConntrolIn", 0, "Selection", thegrid2); //hide axes //RsTool.ShowAxes(thegrid2 ); //run populate script pCloneIt Activity.Run(thegrid2 + "/pCloneIt"); } NScript Object Package/jScript language0 T 4W}@O{(XFҦV>g'JNjn*pn@DAb@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@HoxeSwCћ"- .Selection Change EventTK?JFܟ5TK?JFܟ5ActiveActive flag H2|=BynjH6z@HoȌ4W}@O{$(XFҦV"-1OSM n" asvHhTG asvHhTG$NodeIconNodeIcon eSBgc$2|=Bynj(XFҦV>g'JNjn*pFCb@O@? asvHhTGeSBgcp !bO 0;b0x]w]u׶nnVm%jW H:PCPPGbb28; gfı {`;J&bW]2㙓s}}jw{oHss~~wp>|cPbժz:8rN?ĉq's,[0m 0b03g>{{~=nm5/]A]B,fBSS3o?g?={_S_ jcЕU> 6 LD @< n@pa =w PJ/.8h0pl,Kj9s6l~+;U?+yU!e!X҂zp{& Pj}Y3gmWzwhlv^C`E)JZQ/΁khӘY0vd7 ؿ0^ϟGq5әXlPY:@J&ρTq$(`ǐ3NݨF Qc}zl>0D`Yxeh#?g!Xvc0+h46ړ8!N?=Ni<øF0)/iic@{Qr^U| QД[1?SB]̦M[Q7F]ey uBe:{[J"D GA< =1O0B*h?DgpN~Gz C.0T@T`P"C?׏_ʹ(`LcF]̳a77ϓ*Nc Ɣϣo8k2Cm Ѩ#GnsL z4w_ݵ n !br7> cC9p㞿ᰈz+=<]F]XC(6b#B#C U10q2ر yhh%.s9&ghk3Ns!AIB]XQuuu0wֽ~<  YcxC_{{` "ymvt>n.ܶXpqAA@g{\)\x s ( 48X$1U!hnjի"WW ”XrIZR6 ~C *= ch`2D76573WsLlǘ-z/qQg@,?U wQ_Wmhmj` Nsc˖(ߡc|"H5k#4%o VNԁ0th-̚u8pď!2Ϧ\Wq`<Y֧C> KRy<dOa,E_x5ɎwƲKE#<9v|#64cl,_*ցX_xz.^g%[.'$AuUԭSo6h@]pOCtL?2nLӠ/c y Q= "&-Zw\&gq}6g{g|>ۀº@+b`"w<0mBcp؂PQz ZW lAК{_M|"okt)6Y]y3A7bܳ8 B޸fzgOA\m=9#7t\0x Tyڅjqںf׀6@F;{ %k!&\K{u(g+% Tmz`XS@ =a^!(ԧh~戎>y$IP]]56]P=f] I{2nH1@o/Kʾ5h+{Akfx.Ӟrtz?smhS+νj b &S 7_0kڹS({m9hc࠿'_*j dOgO1{\>DmoBts\{Pr+e/2\̣)>q Q";҂"/@棽^n:\qGomq}`0ǁ*]yL}wc|Mڕ{5z.b|c3:rٕ|$g?GNaʾ}o(H۟_A#_wUGz]뎣WSٓ/ Tˠ]TR'&E5 P/hcI7Nϼi<^ } F;"t(Jq>\nr\O^eO;u~ӧ8m5w>K '%>z{` r=Te/=z ?~kP-9@@au[%|M}z0*ңm)Ƶ#ŗh^/Y\9Ak/Fh\{ <@(woU+Ƹ"߅: 0gǼ@aT"dWB埁ތ򧽅&@H1v=Ν{! qmSW Yq>q-H${eHnj=A E&u`hy]_0qd%&O 1 V$$,ȁߢ/[vr 7޸ @34O7ָxkYxZ;끆'=,] ځU(k\|}D0uh'gϢBp}.$_a;`6z-FiOdP7{Š->hFX7b0I06l`-x`HO ٠>R5iN8tb >.|K7oa`>0 &5 *~{9O7'ꬄ/`3f̂HB.ZjWhsR$h/.J: 2tSo\> ڳK` P'{@N}|`Yu+ NB<փ{_t^s|M@8*\L01.}/ s e/PQ$<ѢoF !~ݕ 0zt=9R|< '^OJe-oŮt ƢP?zLQ}!Z?T=Jy@߻;:Oeԁ@F فbӁ_X‘j}v䇐c.U| $ہ~b{`8ݾvvW[jf"QZ<](Ĭ#u`(_@Æ C@xPSS[ݣqF+%wO2(&_@ @z[gh/vkke[lgkZv qu c$I:57X|!Z];"Rk,8wDk+YKϋRG"rN>N?f3JrMk|*(|A2=~?/4;pg8"YS:)FNkPu5J*|!ygD WWQ+-1S;Nvj`U hn:@@~A.9u?hg>LK1,Z*!pBM(̞07@?%gʹB;1b$;ޙd,@ l{IBM,7x׈vf- )?@=HC by+ꟳwڍlv;ީpvwfΜ9;KI ;AgwD: A:ƾq؆сxU@q.|FN>'/>Ȼt>cc9.{!([@Oy; *"0ԟa|ݔç;w;ݗ(RL?[t6œ#ňB{?ܸ N±1S@##[jPUY X-jlN'a߾] H2Owma%fԁ9DtM y-@*Q1C&;i;3f#,{uvj@8sw 5]т >̳t'2 'l'򸝜yf!lPϑXNv7?u&g#`# }^˹3455eYZxTߣ97o b<J t:y^AflPWKRO-ux͝/[s9wli77Os_Fz0Gt { G)j3Rч]ĥϭXs9w :~S#{ӦS2퀛'&zxV#fsr? ͓kn {a'.z~}ev3vA;0tiGW~8){h qtT ݉>38!فh^4?6z{Ӳ?>6Crxt!#vM;RөSezQҁqfPEͩ/%G_Ӳ'=Xx=뻧 ;8y>G*&t8># zձˤeO.iP_jv Q+0?ԁGT]79w;,dڵZ"7(Nb4[r{NEt[kAN쀞ԁ(SZggu0߹{΁4u/X!^iYv#<;LHn 3=|n߅ ʼnztq,P":E۷%4E_F?3@ɿWʸ/8>ŭ^bzN  ZSs\b7Z=,H+0{j<Y9U?/_z+_FiC>ٳ#-;!=YǶ/^a耉> :@;< ڙO=<|_t23 ޗ}~耩n O̽Q?ْwTVeLes|w01gvT+ӈ6y^Js^ޠglA[fZs9>o1{[G]/uQJmO{\A-H)v1| %wrǧU{>ҸcmH@H<}ziՐς|c ^MfHVg=va˜/rw:E;`;Ae?&zx^=dfa\w5>>ݣw$#ڗ}!c5mCv ҹG/KtWta){)y}VXF('dgӧ)'du3"?w (Wi?hf19oNOα5W9ί2?\zWLJ>| TK?JFܟ5 -1OSM n 럆L<_їrDefault GFʠN=x1 }}TK?JFܟ5Z`Ez]UOͽ>fdN*5Ւhx, }}TK?JFܟ5Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommandH// Execute // Called to execute the command function Execute(params) { // TODO: put your action code here owner = System.ThisOwner(); //return if template firstsel = Node.FirstSelected(); System.Trace(firstsel + " is the source"); sel = Node.Selection(); //list of selected nodes Semicolon separated object names numsel = Node.SelectionLength(sel); // number of selected nodes for (i = 0; i < numsel; i++) { cursel = Node.SelectionGetAt(sel, i); //be sure selection has a wldmatrix connector if(!Node.ConExists(cursel,"WldMatrix")) { System.Alert("Not a valid selection"); return; } } Node.Value(owner + "/pointCloneTemplate/DataStore","source") = sel; //activate listener Node.Value(owner + "/Selection Change Event","Active") = -1; } NScript Object Package/jScript language4W}@O{(XFҦV>g'JNjn*pnC*b@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@Ho܂dKu=&pointCloneTemplate$g.;]kI 忞@"țHSHXHHHHȏoHHH4W}@O{$~׊;Jf|ڢ׊;Jf|ڢBWldMatrixWorld matrix `^02eE{|@RH]偢jD%~`8偢jD%~`8BObjMatrix Object's matrix `^02eE{|@RHWAGWAGOwnerMatrixOwner's matrix `^02eE{|@Ȕ$<ĠF姁J]<ĠF姁J]DMatrix,Object's input matrix `^02eE{|@T*(XFҦV"-1OSM n"HE1ĒףGpj8j1ĒףGpj8jDorientTHv)MVMP0)MVMP0DMaxPitchTsKzD4gKzD4gDMaxRollTH Nkx NkxDMaxScaleXTȆKS)J@hHKS)J@hHDMaxScaleYTȫH19='EFMX19='EFMXDMaxScaleZTHtH$ǐ[@M٢#ɉ$ǐ[@M٢#ɉD MaxXTȤȁ{|aHx4W){|aHx4W)D MaxYTHZL "1F5e=dL "1F5e=dDMaxYawTHH*@ްJ*@ްJD MaxZTH Dg'JNjn*pF`k@@r?)^ OǸ |iu?_nՈw)@$BAH`-q㼜b@NDat?H L "1F5e=dg)}B|=?@52KJʌB׊;Jf|ڢKS)J@hH?}Zsz#9BG!IWky)MVMP0*3O/y4= BϏJ,?WAG`^02eE{|@B????@ -3v_I9Nj#<ĠF姁J]`^02eE{|@B????$ǐ[@M٢#ɉa510 }}1ĒףGpj8jZ`Ez]UOOˁ CRih[h51\Activity.Run('%THIS_OWNER_NAME%' + "/start");Start Clone+E$@BOˁ CRih[h51\Activity.Run('%THIS_NAME%' + "/setDefaults");&Set Default Values+E$@B[~K^3s6(512 }}01ĒףGpj8jͱZ`Ez]UO[~K^3s6l(512 }}11ĒףGpj8jͱZ`Ez]UO[~K^3sl(512 }}21ĒףGpj8jͱZ`Ez]UO[~K^3s(512 }}31ĒףGpj8jͱZ`Ez]UOnevG4'X51N 1ĒףGpj8j0 1 2 3+E$@B GFʠN=051: yzSMin X BϏJ,ƄvR^I҂{iks1釥GP>a0V510 }} BϏJ,Z`Ez]UOPN AnqHXh51B}} BϏJ,o:HB>Z`Ez]UO GFʠN=p51: yzSMax X NkxƄvR^I҂{iks1釥GP>a510 }} NkxZ`Ez]UOPN AnqH51B}} Nkxo;HB>Z`Ez]UO GFʠN=051: x{SMin Yg)}B|=ƄvR^I҂{iks1釥GP>a0V510 }}g)}B|=Z`Ez]UOPN AnqHXh51B}}g)}B|=o:HB>Z`Ez]UO GFʠN=051: yzMin ZDڠ@@sC{ƄvR^I҂{iks1釥GP>a0V510 }}Dڠ@@sC{Z`Ez]UOPN AnqHXh51B}}Dڠ@@sC{o:HB>Z`Ez]UO GFʠN=p51: yz}}Max YKS)J@hHƄvR^I҂{iks1釥GP>a510 }}KS)J@hHZ`Ez]UOPN AnqH51B}}KS)J@hHo;HB>Z`Ez]UO GFʠN=p51: yz|swMax Z19='EFMXƄvR^I҂{iks1釥GP>a510 }}19='EFMXZ`Ez]UOPN AnqH51B}}19='EFMXo;HB>Z`Ez]UO AϠOsX51tpii"TahomaRandom RotationƄvR^I҂{iks AϠOsXPh51qxrrS"Tahoma(I Random ScaleƄvR^I҂{iks GFʠN=051< y{}}MinRoll*3O/y4=ƄvR^I҂{iks1釥GP>a0V510 }}*3O/y4=Z`Ez]UOPN AnqHXh515 }}*3O/y4=Z`Ez]UO GFʠN=0(51= y{MinPitcha0V(510 }}a0(T8510 }}TƒSLㆇZ`Ez]UOPN AnqHX(h8515 }}TƒSLㆇZ`Ez]UO GFʠN=p51< y{MaxRollKzD4gƄvR^I҂{iks1釥GP>a510 }}KzD4gZ`Ez]UOPN AnqH515 }}KzD4gZ`Ez]UO GFʠN=p(51= z{MaxPitch)MVMP0ƄvR^I҂{iks1釥GP>a(510 }})MVMP0Z`Ez]UOPN AnqH(515 }})MVMP0Z`Ez]UO GFʠN=p(851; {yMaxYawL "1F5e=dƄvR^I҂{iks1釥GP>a(8510 }}L "1F5e=dZ`Ez]UOPN AnqH(8515 }}L "1F5e=dZ`Ez]UO AϠOsXH`51wrkk"TahomaGRandom TranslationƄvR^I҂{iks GFʠN=x0519 {|MinXd>a0xX510 }}d>a0X510 }}o5PE5O״CZ`Ez]UOPN AnqHXh515 }}o5PE5O״CZ`Ez]UO GFʠN=0519 xy}}MinZf?ZGz EƄvR^I҂{iks1釥GP>a0X510 }}f?ZGz EZ`Ez]UOPN AnqHXh515 }}f?ZGz EZ`Ez]UO GFʠN=px519 xySMaxX$ǐ[@M٢#ɉƄvR^I҂{iks1釥GP>ax510 }}$ǐ[@M٢#ɉZ`Ez]UOPN AnqHx515 }}$ǐ[@M٢#ɉZ`Ez]UO GFʠN=p519 wyMaxY{|aHx4W)ƄvR^I҂{iks1釥GP>a510 }}{|aHx4W)Z`Ez]UOPN AnqH515 }}{|aHx4W)Z`Ez]UO GFʠN=p519 xx|swMaxZ*@ްJƄvR^I҂{iks1釥GP>a510 }}*@ްJZ`Ez]UOPN AnqH515 }}*@ްJZ`Ez]UO GFʠN=l(H510}}source relativeZ`Ez]UO GFʠN=(H51-}} point normalZ`Ez]UO GFʠN=6(lH510}}maintain sourceZ`Ez]UO GFʠN=(6H51-}} to targetZ`Ez]UO GFʠN=h0x514 }}MinZ`BZ`Ez]UO1釥GP>a0hXx510 }}Z`BZ`Ez]UOPN AnqHXhhx51B}}Z`Bo:HB>Z`Ez]UO GFʠN=phx514 }}Max)^ OǸ |iuZ`Ez]UO1釥GP>ahx510 }})^ OǸ |iuZ`Ez]UOPN AnqHhx51B}})^ OǸ |iuo;HB>Z`Ez]UO1釥GP>a4510 }}}Zsz#9BG!IWkyZ`Ez]UOPN AnqH8H51B}}}Zsz#9BG!IWkyB>Z`Ez]UO1釥GP>aH|510 }}@ -3v_I9Nj#Z`Ez]UOPN AnqH51B}}@ -3v_I9Nj#B>Z`Ez]UO1釥GP>a510 }}Ԅ`\(MʨZ`Ez]UOPN AnqH51B}}Ԅ`\(MʨB>Z`Ez]UO1釥GP>a`4p510 }}@52KJʌBZ`Ez]UOPN AnqH8`Hp51B}}@52KJʌBHB>Z`Ez]UO1釥GP>aH`|p510 }}_nՈw)@$Z`Ez]UOPN AnqH`p51B}}_nՈw)@$HB>Z`Ez]UO1釥GP>a`p510 }}BAH`-qZ`Ez]UOPN AnqH`p51B}}BAH`-qHB>Z`Ez]UO AϠOsX51%}}Z`Ez]UO AϠOsX51%}}Z`Ez]UO AϠOsX8H51%}}Z`Ez]UO GFʠN=h51z}}"Tahoma} Uniform Scale㼜b@NDat?HZ`Ez]UOͽ>fdN*5Ւhp51, }}㼜b@NDat?HZ`Ez]UO GFʠN= 51,}} version 1.0Z`Ez]UO GFʠN=g[1 }}<ĠF姁J]Z`Ez]UO GFʠN= g[1 }}WAGZ`Ez]UO GFʠN= 0g[1 }}偢jD%~`8Z`Ez]UO GFʠN=0@g[1 }}׊;Jf|ڢZ`Ez]UO GFʠN=_L,}} version 1.0Z`Ez]UO GFʠN= P_L}}uThe final group object is cleaner if the target is near the origin, because the group center is always at the origin.Z`Ez]UO GFʠN=P_L}}tIf the target has no normals the orient to point normals won't work. Sphere primitives are created without normals.Z`Ez]UO GFʠN=_L}}jIf the source object has a pivot it will be used to control the center and the up direction of the clones.Z`Ez]UO GFʠN=_L`}}?Source object pivots must be flattened or they will be ignored.Z`Ez]UO GFʠN=_L<}}1. set options in the panelZ`Ez]UO GFʠN= _LK}}*2. Select the source objects to be cloned.Z`Ez]UO GFʠN= 0_LC}}"3. Press the "Start Clone" button.Z`Ez]UO GFʠN=0@_LG}}&4. Select the destination/target item.Z`Ez]UO GFʠN=Pp_Lf}}Eto target - rotate clones to the same orientation as the target item.Z`Ez]UO GFʠN=p_L]}}<maintain source - don't change the source items orientation.Z`Ez]UO GFʠN=_L]}}<source relative - add target rotation to the source rotationZ`Ez]UO GFʠN=_Lk}}Jpoint normal - align the source z axis to the point normals of the target.Z`Ez]UO GFʠN= _L}}Use the scrubbers below the Random Scale, Rotation and Translation to set minimum and maximum values for all the corresponding components at once.Z`Ez]UO AϠOsX@P_L%}}Z`Ez]UO AϠOsX_L%}}Z`Ez]UO GFʠN=_Lq}}PIf multiple source items are selected they will be randomly selected and cloned.Z`Ez]UO}}}}}} Nkx?19='EFMX?Dڠ@@sC{?Ԅ`\(Mʨ47m2O QTransform*<ĠF姁J]pDȜUȔWAGpUȜ偢jD%~`8PBH]U׊;Jf|ڢPB~ț4W}@O{$(XFҦV"-1OSM n"偢jD%~`8(XFҦV>g'JNjn*pFB CX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї048@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { var source = params.ConValue('source'); var target = params.ConValue('target'); // TODO: put your action code here } NScript Object Package/jScript languagestringsource_Q:OK@stringtargetԺi)C@I 4W}@O{(XFҦV>g'JNjn*pnC;C@@T@2|=Bynj|?z@Hoۙ>?Ժi)C@I D/Project/pointCloneScene/Plane, 1J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їˎDefaultControl Oˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UO GFʠN=Pn:1 }}z@HoZ`Ez]UO1釥GP>aPn:0 }}z@HoZ`Ez]UO GFʠN=F n:1 }}_Q:OK@Z`Ez]UO1釥GP>aF@ n:0 }}_Q:OK@Z`Ez]UO GFʠN= F0n:1 }}Ժi)C@I Z`Ez]UO1釥GP>aF @0n:0 }}Ժi)C@I Z`Ez]UO GFʠN=0P@n:1 }}2|=BynjZ`Ez]UO1釥GP>aP0@n:0 }}2|=BynjZ`Ez]UO}}MT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?_Q:OK@</Project/pointCloneScene/Conez@Ho܂dKu=dSpivotParentHu.;]kI 忞@"HH>4W}@O{$Ȱ׊;Jf|ڢR 偢jD%~`8RHdWAGHMH<ĠF姁J]T:(XFҦV"-1OSM n"偢jD%~`8(XFҦV>g'JNjn*pF-DCb@@T@hB?׊;Jf|ڢWAG`^02eE{|@B????<ĠF姁J]`^02eE{|@B????-1OSM n 럆L<_ї0܂dKu=VpivotChild .;]kI 忞@"HH4W}@O{$ G?ŋ G?ŋ tSObjLtrueSpace object synchronization data W5f@(䐈Z``H3׊;Jf|ڢZ`oHA偢jD%~`8ZHBWAGHH<ĠF姁J]\ȳ$1&KߊPV$1&KߊPV$AutoShowPanelAutoShowPanel$H-V?XM%-V?XM%Material ListMaterial List +N⩊H-(XFҦV"ȰS $hKnPSVmS $hKnPSVm"RenderAttributes"RenderAttributes HEoq5v` -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pFC7Cb@ f@?׊;Jf|ڢWAG G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0܂dKu=RMaterial List.;]kI 忞@"`H4W}@O{$HT-V?XM%H-V?XM%) 6G%<3,Material List ManagerH-V?XM%PHT&zB}J?t&zB}J?&Active material ID2Active material class IDH`4W}@O{$HKWyLMXtWyLMXMat Chunk 0BDynamic material input connector |E8yH-V?XM%&zB}J?WyLMX܂dKu=Material 0H.;]kI 忞@"+HPH4W}@O{$_gYأC۲+?gYأC۲+?Material ChunkMaterial Chunk |E8yHKgYأC۲+?b=h0CRf,0Material Flavor ManagerH2gYأC۲+?P_HH!EJGWMt!EJGWMMaterial IndexMaterial IndexH2H76~qK;2t&t6~qK;2t&Active Info4Active and validity flags NOI/)[&H2+4W}@O{$HyPE|Jc7UtyPE|Jc7UMat Item 0BDynamic material input connectorH2!EJGWM6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?yPE|Jc7U~wC쇀Dt` Solid H6.F_P#T.F_P#Material Output material __W8E#(HH5n%⟀A}aJtn%⟀A}aJDiffuseColorDiffuseColor -n,NjlpgH6H@>]zJ4 t>]zJ4 (VertexColorStrength(VertexColorStrengthH66J.HE /*gtJ.HE /*gShininessShininessH6H8VnZN:W pt8VnZN:W p DiffuseStrength DiffuseStrengthH6HNll-#Ez k^tll-#Ez k^"SpecularStrength"SpecularStrengthH6HDK#uiL$tK#uiL$AlphaTestAlphaTest :KrbSxH6M,L?D}t,L?D}AlphaTestValueAlphaTestValueH6HP4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg????.F_P#,L?D}ll-#Ez k^K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabled8VnZN:W p?n':hF% I|]Editable shapeȇVIQGіF͡TtVIQGіF͡TInput Mesh*Input Mesh for Shape >W5f@(䐈HYHYtveDCE`"IWJPBȾH/nkUCEHLjt/nkUCEHLjSelection.Mesh selected elements >`g4RJLUDHYH4W}@O{$/nkUCEHLjVIQGіF͡T>W5f@(䐈ٸ*ćIC7??ef?e f>?Vf>f?Vf> f>??? h* 6H?BJ y'HN LjUb)R 8{EE%D7[   ZpߘHXO>Cv?I>|v?>v?qڇ>v89Ig"?>?*?@?>@?*??*??>@?*?@?>>>?>>*??*?>?>>?>>?>*????*?>*?*?>>>tveDCE`"IWJqU F3f^2Object Render AttributesS $hKnPSVmPȰ8Ns2]t8Ns2] Surface Opacity Surface Opacity(^mګA~Ksi[t^mګA~Ksi[Points opacityPoints opacityH(lrsGrt(lrsGrPoints Size>Point Size in Point rendering.$\Eh{5t\Eh{5Points ColorLColor of points during the rendering. -n,Njlpg7"PbEGDߗrt"PbEGDߗr0Ignore mesh point color0Ignore mesh point color H,F?N dtF?N d.Ignore mesh point size.Ignore mesh point size .]*qBCxt]*qBCxEdges opacityEdges opacity3\J:I%7ut\J:I%7uEdges ColorEdges Color -n,NjlpgHiA޲1rIK>XtiA޲1rIK>X0Ignore mesh edges color0Ignore mesh edges color H,ot"AaYt,ot"AaY$Show hidden lines`Do not use ZBuffer in point and wireframe modes ^RI8ÿRt^RI8ÿRShow backfaceslEnable two-sided rendering when Color mode is enabled çwH5#VtçwH5#V0Ignore layer attributesvDo not combine render attributes with layer defined values 4W}@O{%J@#QL-1OSM n#(XFҦV"W0@zdW0@zd%VersionVersion%Lȅ8vDCxZtȅ8vDCxZInvisibleInvisible flag HLF+2MGtF+2MGCast shadows$Cast shadows flag RI2GWM:).$tI2GWM:).$ Receive shadows Receive shadows mBޖw ptmBޖw pLayer index(Modeler layer indexOo[nfFto[nfF Overlay opacity Overlay opacityH]zgGFohN)tzgGFohN)Overlay ColorOverlay Color. -n,NjlpgHvhD zʔtvhD zʔ4Ignore mesh overlay color6Ignore mesh overlay color. H;fB #^tfB #^$Transparency Mode@Quality of transparency solving :KrbSxH|$}mK;)t|$}mK;) OverlayEnable*Enable color overlay  Prg@*oHtrg@*oH OverlayColor*Color of the overlay -n,Njlpg 1!eLZE^Nt!eLZE^N OverlayStrengthJStrength (visibility) of the overlay 1cM@-"1cM@-"BOwnerNameOwnerNameBI2GWM:).$ zgGFohN)S $hKnPSVm]*qBCxvhD zʔ1cM@-"rg@*oHçwH5#V 4W}@O{\Eh{5-n,Njlpg????\J:I%7u-n,Njlpg???fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort(XFҦV>g'JNjn*pFD Bk@ b@?F?N d 8Ns2]?ȅ8vDCxZ "PbEGDߗr F+2MG ^mګA~Ksi[(lrsGr?J@#QL>g'JNjn*pFCBb@ h@?W0@zdo[nfFmBޖw p,ot"AaY -1OSM n 럆L<_ї DefaultAdvanced! GFʠN=1 }}^RI8ÿRZ`Ez]UOͽ>fdN*5Ւh, }}^RI8ÿRϱZ`Ez]UO GFʠN= 1 }},ot"AaYZ`Ez]UOͽ>fdN*5Ւh , }},ot"AaYZ`Ez]UO GFʠN= 01 }}ȅ8vDCxZZ`Ez]UOͽ>fdN*5Ւh 0, }}ȅ8vDCxZZ`Ez]UO GFʠN=0@1 }}F+2MGZ`Ez]UOͽ>fdN*5Ւh0@, }}F+2MGZ`Ez]UO GFʠN=@P1 }}I2GWM:).$Z`Ez]UOͽ>fdN*5Ւh@P, }}I2GWM:).$Z`Ez]UO GFʠN=P`1 }}mBޖw pZ`Ez]UO1釥GP>aP`0 }}mBޖw pZ`Ez]UO GFʠN=@(PZ6 }}Color\J:I%7uZ`Ez]UO B>I(@hPZ%}}\J:I%7uZ`Ez]UO GFʠN=P(`Z8 }}Opacity]*qBCxZ`Ez]UON\q+nN-K^(Ph`ZA}}?]*qBCxZ`Ez]UOY@ GFʠN=hP`Z@ }}Enable Obj ModeçwH5#VZ`Ez]UOͽ>fdN*5ՒhP`Z, }}çwH5#VZ`Ez]UO GFʠN=h 0Z6 }}Color\Eh{5Z`Ez]UO B>I 0Z%}}\Eh{5Z`Ez]UO GFʠN=h0@Z8 }}Opacity^mګA~Ksi[Z`Ez]UON\q+nN-K^0@ZA}}?^mګA~Ksi[Z`Ez]UOY@ GFʠN=h@PZ5 }}Size(lrsGrZ`Ez]UON\q+nN-K^@PZA}}?$@(lrsGrZ`Ez]UOY@ GFʠN= (0Z8 }}Opacity8Ns2]Z`Ez]UON\q+nN-K^( h0ZA}}?8Ns2]Z`Ez]UOY@ GFʠN=h Z(}}SurfaceZ`Ez]UO GFʠN=0h@Z&}}EdgesZ`Ez]UO GFʠN=h Z'}}PointsZ`Ez]UO GFʠN=`hpZ1 }}fB #^Z`Ez]UOnevG4'h`pZ4 }}fB #^Z`Ez]UO1釥GP>ahZ0 }}1cM@-"Z`Ez]UO GFʠN=hZ; }} Owner Name1cM@-"Z`Ez]UO}}!eLZE^N|$}mK;)^RI8ÿR iA޲1rIK>X 47m2O \Transform:<ĠF姁J]pDH=HMWAGp=H偢jD%~`8PB =׊;Jf|ڢPBȰHBH>4W}@O{$(XFҦV"偢jD%~`8(XFҦV>g'JNjn*pFB CX@1@?׊;Jf|ڢWAG<ĠF姁J]48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand: // // set default values for the point clone script // dec 17 2010 // clinton reese - clintons3d.com // // Execute // Called to execute the command function Execute(params) { owner = System.ThisOwner() Node.Value(owner ,"MaxPitch") = 0; Node.Value(owner ,"orient") = 1;//maintain source orientation Node.Value(owner ,"MinScaleX") = 1; Node.Value(owner ,"MaxScaleX") = 1; Node.Value(owner ,"MinScaleY") = 1; Node.Value(owner ,"MaxScaleY") = 1; Node.Value(owner ,"MinScaleZ") = 1; Node.Value(owner ,"MaxScaleZ") = 1; Node.Value(owner ,"MinRoll") = 0; Node.Value(owner ,"MaxRoll") = 0; Node.Value(owner ,"MinPitch") = 0; Node.Value(owner ,"MaxPitch") = 0; Node.Value(owner ,"MinYaw") = 0; Node.Value(owner ,"MaxYaw") = 0; Node.Value(owner ,"MinX") = 0; Node.Value(owner ,"MaxX") = 0; Node.Value(owner ,"MinY") = 0; Node.Value(owner ,"MaxY") = 0; Node.Value(owner ,"MinZ") = 0; Node.Value(owner ,"MaxZ") = 0; Node.Value(owner ,"MinScale") = 1; Node.Value(owner ,"MaxScale") = 1; Node.Value(owner ,"RollRange") = 0; Node.Value(owner ,"PitchRange") = 0; Node.Value(owner ,"YawRange") = 0; Node.Value(owner ,"XRange") = 0; Node.Value(owner ,"YRange") = 0; Node.Value(owner ,"ZRange") = 0; Node.Value(owner ,"uniformScale") = true; } NScript Object Package/jScript language~൱D@ j#^c4W}@O{(XFҦV>g'JNjn*pnC5D`@@P@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) { var MinScale = params.ConValue('MinScale'); var MaxScale = params.ConValue('MaxScale'); var RollRange = params.ConValue('RollRange'); var PitchRange = params.ConValue('PitchRange'); var YawRange = params.ConValue('YawRange'); var XRange = params.ConValue('XRange'); var YRange = params.ConValue('YRange'); var ZRange = params.ConValue('ZRange'); // TODO: put your action code here owner = System.ThisOwner(); Node.Value(owner ,"MaxPitch") = PitchRange ; Node.Value(owner ,"MinScaleX") = MinScale ; Node.Value(owner ,"MaxScaleX") = MaxScale ; Node.Value(owner ,"MinScaleY") = MinScale ; Node.Value(owner ,"MaxScaleY") = MaxScale ; Node.Value(owner ,"MinScaleZ") = MinScale ; Node.Value(owner ,"MaxScaleZ") = MaxScale ; Node.Value(owner ,"MinRoll") = -RollRange ; Node.Value(owner ,"MaxRoll") = RollRange ; Node.Value(owner ,"MinPitch") = -PitchRange ; Node.Value(owner ,"MaxPitch") = PitchRange ; Node.Value(owner ,"MinYaw") = -YawRange ; Node.Value(owner ,"MaxYaw") = YawRange ; Node.Value(owner ,"MinX") = -XRange ; Node.Value(owner ,"MaxX") = XRange ; Node.Value(owner ,"MinY") = -YRange ; Node.Value(owner ,"MaxY") = YRange ; Node.Value(owner ,"MinZ") = -ZRange ; Node.Value(owner ,"MaxZ") = ZRange ; } NScript Object Package/jScript language~൱Db#^cnumberMinScaleZ`BnumberMaxScale)^ OǸ |iunumberRollRange}Zsz#9BG!IWkynumberPitchRange@ -3v_I9Nj#numberYawRangeԄ`\(MʨnumberXRange@52KJʌBnumberYRange_nՈw)@$numberZRangeBAH`-qZ`B?4W}@O{(XFҦV>g'JNjn*pnxDDb@ f@2|=Bynj|?z@Hoۙ>?)^ OǸ |iu?_nՈw)@$BAH`-q@52KJʌB}Zsz#9BG!IWkyJ@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?@ -3v_I9Nj#-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ۙ>?Ԅ`\(Mʨz@Ho 5@(l$X Watch Dog EventH/2|=Bynjh8ffNzw̮8ffNzw̮Change detect.Change detection inputz@HoX4W}@O{%J@#QL(XFҦVLE2Data, 1#-1OSM n" asvHhTG$2|=Bynj4W}@O{(XFҦV>g'JNjn*pF'DDH@P@? asvHhTGeSBgc|< !bO 0;b<<x}XT9`1~ޘx{[b7j{oXb/REAT@AP`TD{y˙s55<9032]]e3g-HH4k W޾ ?oߊ^}[:t~[b͘ '7/d7hQ hGQ+$&rL2 Q'P`FƢmTs<S_^⊊t7P|WJMɨunF&w5w,l7ݏ#Q5> Q@2m9On#gh4W JZ$5T"*I5(URUJPt{¿,Pv/?Id"ʅ@PtQ+0z"-0e t6ч#WPh?9`޼aIxVD֭u0~YA`2͛wt9' AӁQ{'Svmҍ*95o{B(eʇBٞۃ1 c] dk=)T8 l~h F|^E}Xs#vpj(wD?Fd+;B`klV+Xk6yR٘j:ٌwcr(ߤt(ţ䁳(v6a59k.tۅa x&}4 b} f +og$9$H1ܺ͛;qv\4\83q,a.AX[a,ẍ́F ,wg0f Cߑ!PK.(=g1> EQaOu߆ W|#QE;*m G>W?Z5ń8x8 ^w")8${?Vz7pw3p{t內7A'H/N&Xp4N^Xi ǣ(V _e|Hxo)|wo" 4$d[E65nɫr t9$wIҐ;FheA$ېs97M/<ēkxtq_uS9>ĕGY 6:9[; ߍ_ׅ(ܡ'>\I((ލ)LoL[NPTK6Cm-ԪSp‘OHgzO .=w 疷 s)^Lz>ӕʽ w\](>0= SdЏ(Tr*Pvt Cɽ2 /]bQlj%|0~qٳ"7pg~pN'9Aǐ죧wC<GoN{M{1뫮¯\:{N [I,1a*icBQnޗbêC엮ױ)rP~Uk?լ'#|A0Jr$N {Ǔ?<ݽ/l?sٿW zu@҅'\;C׏O ,voGJ9ٗQ~ ŃDGծjk&1gPTYEs` HF!|@;u  /W>qkw6)w\5xYe6 Cὐx4ڴӭ|M-㖭EC~*y@ ~k7w$3>:l~[ؼƢ«q.e3h݉J(5t"ʐ >L),<<Umi<[kɟc/ 'uIu$/Ӌu S>`z2>hXj(b'Qocq_lhyj_F(R>. ͳq܈i8poys{g>yoÖSHOw:Rs:`; [xȫ ^ s(NZFیy(֡Jq~o˔pԹ5#6lޓbYؿ۹ƽZkkvϰߗvqx3~|!{ (g5")>0?Սy‹:q[\m3?3 N̮8dhiPj8Vy΂+&H o剺 @B(o`,cI5<|gr@ ` gk:VRʬ߆'߽YV4 Db*Uu ??|Nz30m^E:CfeA{Ⱦp8a1_Oo5Ɵsݳ^SUNeR|/Nυ>&U>9;LHrxluUbc3ݸszY`}`anՇBTX7m Sٝ/_^,c3˜I$yQRct:ҁl _#d}u,p_̾b1f cWtg7tLZ)Pco4.,xll}к=5dk6ad{n;8ZJ>qk4anui)$'0慯z26N^3k\_(UE)ەPB}f >`F~%E ,r6nXWp3{x3>ʀ7LH.:z%׊izŇ}<~[Xg<<|F6RiF`֡JGX99b@Jj]ѡtyp4l%پX#VOy8{5><)pzl]Or1<>!z@ԃ3@ rs? P>8 ?/Qr&96n[1|ͯ1!$KrZ8~J{Q#r뀎sz`#0^u@ZnW^}.]W Qj5!x{s9`ž0Թ|l-~rYH[Fkgkk,f9 r.u쨴Dz|$0p\~|:0@> }-+estY1} R7RB̏h &X9!;Y/2b`QaGwM&ʄ$# bvD>3+fke7X=:>Z&Lrb>00ϔ|97e8.c,DXf8Xx_^\u}ӝq,دjDAQb@m&O _w S4-zD¡xvS>w/R|5Bh Ov}C\c3tUz,}ygtb.ވDpߣmތozyx,<a,|ݩ%[vA̞q@y 1i){pgu|_E^yHʃe/[$wܕW =5Wt Y~II;Ba>gƹĀ|g aæY3PmJ+ךyK-4R}b_5 w/jZY}7xOMޖX^.ާ]>qh}@?~#1Ыօ_dylLuB5;ߓ7}Ȧ[oZ2ƫ>[lOek>i cGHMr<9:0KybXӅF:`R%H s& &dwyվ@~3"/ OÇ${!`S|]aMקF@[R$ĐPXK> GߨՄi 5~P2(omr<_WF{ *n?j8}lsƱw-zm_#]Ws=⟎ CS#+Uy8+rB;FJ;ɺ0G~IMkċ\'_k4'^CQlaTbr<_K'D韎hգ%\8<^̏y |.s/8]iƳNgqb])1>C]HGAy ,|g{W& O({~7=eb!ʯ؈~ûkdwټlAc8qg~9-?~ Oܑsd_'ھ#/bփ/倯?pj8m 1Pf[P~w,FShI`=~,q3iu?g>15S/}x=#yE5Ȗ:8]7j>@5`1b @ټ!vp:@nu'v'tùc͟ݡ!QSN'q?Y~uх9Oo5.1 !rtVe>,?ܒ%Lp@2n8`@#sfy逻aOy0=;0i,#ipFE{4o  -)!~^Ca6tt{xNsM{7?[mzIZւd_zSSYDx?in;r Qw95xfF"0ؿ^9'x^1h#?ress O [ b%zY\fo?{ ޗ"/ˋ!C[.B,èsP (ۢEALv6=hI.  =doK_էOg c 9#F~93p۳C͂ـ0A٠C|q} d|"];WR7[D/=;%1 z'sݫ~Xb??χ sq'&9iJ( qe1|5 8 ͯej)|ӿ =,p!iM_{Ntt W}9`?/~ zQ_g\yjU? G8BW PtWy}_ Ehu &Wa8yd9y|r/X,I:9gu\.H␻'yC3ܸ_h2k*T(|vRttͯnhDE:++eG`\bL:G~f =@la̸/z}]UʄPVtpC_c,~q=A2_g{/- d+oE8xKϒ|={0MG/K&{_b|'vN/f@GwWwksܓ En:aT}# /z:s8y::P<(*l 79V,VC;hp>5NDtf} >_uF>@= }=XwA. K_`< v[W= 7#m =b'~?yl}N{>@̧ kj>!;FoDKl؅»c?fYg E3 ϕ|αUكዧb=>x_@8L8To1G-_ٻ1rco˳A}t/콞(q(ttބF^3T^v=x= uA}]$,ϑz }K,0M"N/pkzg~~}_fPu:ZN†U8$`n?? 87Y.-OY7>WPZyƏh>}̯|b3nNkbFlFQgڙwDjcߔYv +gQ>H\pZ+l\\q8'̫/vov3e !HCiC,Ƚ\9Gq!~=U}epxoRZWK;0 j=A`qqit灲0ݫ$K=y"|Y?6H\Yfgx3>I%{vϰt+ؚNɻt%W~AL^W~ۋjF cU; t<1Yົ[y aP BN;]}:=F߿2sg]p~t>!6?:c!8Cev [8pD W&u #0>^w[ECqtG~Rm"`GWfK?c {/+}G`/~gz@VnݙH|c(+c·hOc[uḆw:(OX߄2 M݇lYu(_x&&P9wQ |z!'@wPtJ! ڲaɍȼgW)yE]uOW2w؀˙v3l4GQӀW_+w8e9{GR:Mʼn4/ܡi ٝ Q\Jؾo矾 OO2Y|q=c(E>o5-uyw,~&'W(=g(t`IV,20ԑϞP:.An(LKO8̺0j,FۏI7Q]T<1=NǶ#/ӽp֞*׏<|j8=qy̍yXd!U t57PmoQ[vmt\ .wu|ǜ~Z.WlWCny⻰ nwfA ",6f] P(9CZ_hrTAitP=/ԃّghy,1BI<d@ ]v[ P~ ˏ(֪ ?fzt ܏'/xA>p;,c᜴ v$^+<&?G8#5 G̍Hꏸ;zvpNŜ̫B̓Ot1'sÈ%o/פ7>w}>,&Y *Uesg9:`8-(YgL>el@*(PQė㗯Ex8'HGGvocpIمiC!f\[cujZp}z \/!n$"$"WR.fi 9N؟@='YH,ʴ9 ͻeCaό-1oz~=$^E>+v^+9(,2bۡws5+QR:fY3l/zEšj|~,<*{b5< vDV[^x_܋Cr9Wv":#3'$3k!!8B"8 _ú[W0:=raN%)zƁIOy7fͱG+0*pe/EY .>:]m;g{KRP|o(6識2(]h=w3{~- MATT>P<GT#)?d|/W4 B0qz ]?&fGοs8;gyz<+:; fSQ2mP~q9>@M{2JZ$@ut80(wAGG(=wW4gZ%cY׬ðj Go􋉀El FcTnELZGUjZɫVbrLf_&,׳އBvDf΅<̹2{~&P:ɇP{ (Ln>ǝ||?WNPUjePw&jP[Mx(ڽA0{",Auhn]ax.HJ:%*nN߂aF>q;'{Gw|9PgxρfSx5 >Pk+$--+p9߄5KdX.7r#03vf`y6M{#n/qg];ioAi:l~8Ԇ JnP-$ͭv=8;Io+=>MbH6OÔGl~꠭b;۩m,M!'R'웏"Gp4EݠTi5Z?1sY /Wlo^cpBxtc)2tAFw[Bn:̅t`à4PFZF&_w][.gև)_^`GbK"sgvʸP(W)+lk*Xߕao'x &}|՛l+ԪmQRsL:.Ŝyr^4J.U.H eqzemgk:*a +ZJ|Qhyץ \xxG=2<_{#ys~{Jy6LSݫP^bl.2:Uۣб ͻ.X: p^߽# {;Gg#L{^*s'_Avx^yFrFC3_+Pr}t3k }y~y,P~|>{o?@ Oٽt$j!ud5o7a/_/ (g:<ݦa uE1Av(S {uDݞk:^'{jdƓ'Q~ǰgu Pj@<+*j f|]Ms|}*qϱ2Jui> {oyn/!P*Ǿ+@f \mO>;^{KgqZ= p ۹+{:,W[ܞVg>a?8^QkuZ#*}Fb"n'Wݒ=L.ݟ|f<o|jP:C^^m;QQ[^%Y]G#;ZZtws}P[~0{^keMo'r{ľhNuڣtz$=lQގ^=|uyg矢xgsU^\O-'jzr'rq<rq|*ImI&YD14Y}^^Qٽ2.gqy~.gaثH& _E~;Pi+L2w6bn m3e'u}+SOu]pWX=c-g\o0c5=ۋnyyW =}Nn&_s\ﱜV,SX꺓Ϗ%^+}]/qxϓ8PoеOQ&]JG1{sSy} y~~T96PȅBU޿{8Z-׬r[Tn#M5:*Rnk]yAð#{9b.mٌu&Zg yS Tnmz`Xo*ibvj<f؟&Y}':b*(lVsNi68prkZ;y-ǂޝ)+ ^^_=>a;K>_bJ;x=W{n ެj|UKw^@XV{xw?{ {{0ݫ=a/빬7&ox^QӡX_j+c'oLeh`,ϟ'汘oV՛kL ,8fu{E=Ǟf3Ay-W=Qj[Ti jyoJ7*%Dg%:[Di(f-FD(xJo@3/J@#QL>g'JNjn*pFBB`@P@?8ffNzw̮?-1OSM n 럆L<_їActivity GFʠN=1 }}8ffNzw̮Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho 5@(ltN&Watch Dog Event, 12|=BynjhH 8ffNzw̮z@HoH4W}@O{%J@#QL(XFҦVLE2Data, 1#-1OSM n" asvHhTG$2|=Bynj4W}@O{(XFҦV>g'JNjn*pF'DDH@P@? asvHhTGeSBgc8 !bO 0;b8ffNzw̮?J@#QL>g'JNjn*pFBB`@P@?-1OSM n 럆L<_їActivity GFʠN=1 }}8ffNzw̮Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho 5@(lU&Watch Dog Event, 2HJ2|=BynjhHR8ffNzw̮z@HoH4W}@O{%J@#QL(XFҦVLE2Data, 1#-1OSM n" asvHhTG$2|=Bynj4W}@O{(XFҦV>g'JNjn*pF)DDH@P@? asvHhTGeSBgc8 !bO 0;bJ@#QL>g'JNjn*pFBB`@P@?8ffNzw̮-1OSM n 럆L<_їActivity GFʠN=1 }}8ffNzw̮Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho 5@(lQ&Watch Dog Event, 3m2|=Bynjhȝ8ffNzw̮z@HoH4W}@O{%J@#QL(XFҦVLE2Data, 1#-1OSM n" asvHhTG$2|=Bynj4W}@O{(XFҦV>g'JNjn*pF)D@DH@P@? asvHhTGeSBgc8 !bO 0;b8ffNzw̮J@#QL>g'JNjn*pFBB`@P@?-1OSM n 럆L<_їActivity GFʠN=1 }}8ffNzw̮Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho 5@(lV&Watch Dog Event, 42|=BynjhH8ffNzw̮z@HoH4W}@O{%J@#QL(XFҦVLE2Data, 1#-1OSM n" asvHhTG$2|=Bynj4W}@O{(XFҦV>g'JNjn*pF)DDH@P@? asvHhTGeSBgc8 !bO 0;bJ@#QL>g'JNjn*pFBB`@P@?8ffNzw̮-1OSM n 럆L<_їActivity GFʠN=1 }}8ffNzw̮Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho 5@(l,U&Watch Dog Event, 5H2|=BynjhȈ8ffNzw̮z@Hoȏ4W}@O{%J@#QL(XFҦVLE2Data, 1#-1OSM n" asvHhTG$2|=Bynj4W}@O{(XFҦV>g'JNjn*pF)D DH@P@? asvHhTGeSBgc8 !bO 0;b8ffNzw̮J@#QL>g'JNjn*pFBB`@P@?-1OSM n 럆L<_їActivity GFʠN=1 }}8ffNzw̮Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho 5@(lR&Watch Dog Event, 62|=BynjhH8ffNzw̮z@Hoo4W}@O{%J@#QL(XFҦVLE2Data, 1#-1OSM n" asvHhTG$2|=Bynj4W}@O{(XFҦV>g'JNjn*pF,DDH@P@? asvHhTGeSBgc8 !bO 0;bJ@#QL>g'JNjn*pFBB`@P@?8ffNzw̮-1OSM n 럆L<_їActivity GFʠN=1 }}8ffNzw̮Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho 5@(lS&Watch Dog Event, 7H<2|=BynjhH8ffNzw̮z@HoH4W}@O{%J@#QL(XFҦVLE2Data, 1#-1OSM n" asvHhTG$2|=Bynj4W}@O{(XFҦV>g'JNjn*pF,DDH@P@? asvHhTGeSBgc8 !bO 0;b8ffNzw̮J@#QL>g'JNjn*pFBB`@P@?-1OSM n 럆L<_їActivity GFʠN=1 }}8ffNzw̮Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ vNewCommando// random scale function calcScale(min, max) { var small = 0.0001; //check for range and don't allow negative scale if((max - min) > small && max > 0 && min > 0) retscale = min + (max - min)*Math.random(); else retscale = 1.0; return retscale; } //random rotation and translation function calcRotTrans(min, max) { var small = 0.0001; // range must exist and not be too small if((max - min) > small) retval = min + (max - min)*Math.random(); else retval = 0.0; return retval; } // Execute // Called to execute the command function Execute(params) { var orient = params.ConValue('orient'); var MinScaleX = params.ConValue('MinScaleX'); var MaxScaleX = params.ConValue('MaxScaleX'); var MinScaleY = params.ConValue('MinScaleY'); var MaxScaleY = params.ConValue('MaxScaleY'); var MinScaleZ = params.ConValue('MinScaleZ'); var MaxScaleZ = params.ConValue('MaxScaleZ'); var MinRoll = params.ConValue('MinRoll'); var MaxRoll = params.ConValue('MaxRoll'); var MinPitch = params.ConValue('MinPitch'); var MaxPitch = params.ConValue('MaxPitch'); var MinYaw = params.ConValue('MinYaw'); var MaxYaw = params.ConValue('MaxYaw'); var MinX = params.ConValue('MinX'); var MaxX = params.ConValue('MaxX'); var MinY = params.ConValue('MinY'); var MaxY = params.ConValue('MaxY'); var MinZ = params.ConValue('MinZ'); var MaxZ = params.ConValue('MaxZ'); var uniformScale = params.ConValue('uniformScale'); // TODO: put your action code here //Math.random() range is [0 1) owner = System.ThisOwner(); //return if the template, not the actual clone object in the scene snowner = Node.ShortName(owner); if(snowner == "pointCloneTemplate") return; target = Node.Value(owner + "/DataStore","target"); sel = Node.Value(owner + "/DataStore","source"); pointmesh = System.CreateDO("Space 3D Package/Mesh Data"); pointmesh = Node.Value(target,"Mesh"); rawpoints = System.CreateDO("Space 3D Package/Vertex Stream Data"); points = System.CreateDO("Space 3D Package/Vertex Stream Data"); rawpoints = pointmesh.GetVertices(); points = pointmesh.GetVertices(); newmat = System.CreateDO("Math Package/Matrix Float Data"); targetmat = System.CreateDO("Math Package/Matrix Float Data"); targetmatSc = System.CreateDO("Math Package/Matrix Float Data"); pivotMatrix = System.CreateDO("Math Package/Matrix Float Data");//target pivot if any sourcemat = System.CreateDO("Math Package/Matrix Float Data"); pivotMatrixBefore = System.CreateDO("Math Package/Matrix Float Data"); pivotMatrixAfter = System.CreateDO("Math Package/Matrix Float Data"); targetmat = Node.Value(target,"WldMatrix"); targetmatSc.LoadIdentity(); targetmatSc.SetScaleX(targetmat.GetScaleX()); targetmatSc.SetScaleY(targetmat.GetScaleY()); targetmatSc.SetScaleZ(targetmat.GetScaleZ()); myVector = System.CreateDO('Math Package/Point Data'); transVect = System.CreateDO('Math Package/Point Data'); numcopies = pointmesh.GetNumVertices();//object will be copied to each point location //System.Trace(numcopies); //vertex normals dF = System.CreateDO("Space 3D Package/Triangle Vertices Stream Data"); dN = System.CreateDO('Space 3D Package/Vertex Normal Stream Data'); dNTri = System.CreateDO('Space 3D Package/Triangle Normals Stream Data'); vertnorms = System.CreateDO("Space 3D Package/Point Array Data"); vn = System.CreateDO("Math Package/Point Data"); eye = System.CreateDO("Math Package/Point Data"); at = System.CreateDO("Math Package/Point Data"); up = System.CreateDO("Math Package/Point Data"); yvec = System.CreateDO("Math Package/Point Data"); dN = pointmesh.GetCustStreamByName('Normals Stream Data'); dNTri = pointmesh.GetTrianglesStreamByName('Triangle Normals Stream Data'); dF = pointmesh.GetTriangles(); vertnorms.SetSize(numcopies); normcounts = new Array(); for(i=0;i<numcopies;i++) normcounts[i]=0; if(orient==3 && dN) { numtri = dNTri.GetNumTripleIndices(); for(curtri=0;curtri<numtri;curtri++) { //get vertex index pindex = dF.i(curtri); vertnorms.x(pindex ) += dN.x(dNTri.i(curtri)); vertnorms.y(pindex ) += dN.y(dNTri.i(curtri)); vertnorms.z(pindex ) += dN.z(dNTri.i(curtri)); normcounts[pindex]++; pindex = dF.j(curtri); vertnorms.x(pindex ) += dN.x(dNTri.j(curtri)); vertnorms.y(pindex ) += dN.y(dNTri.j(curtri)); vertnorms.z(pindex ) += dN.z(dNTri.j(curtri)); normcounts[pindex]++; pindex = dF.k(curtri); vertnorms.x(pindex ) += dN.x(dNTri.k(curtri)); vertnorms.y(pindex ) += dN.y(dNTri.k(curtri)); vertnorms.z(pindex ) += dN.z(dNTri.k(curtri)); normcounts[pindex]++; } //normalize later for(i=0;i<numcopies;i++) { //System.Trace(normcounts[i]); x = vertnorms.x(i); y = vertnorms.y(i); z = vertnorms.z(i); //System.Trace(x + ", " + y + ", " + z); } } numsource = Node.SelectionLength(sel); for(i=0;i<numcopies;i++) { //copy the source mesh node - copy will automatically name to the first free postfix numerical value if(numsource > 1) { //pick random source val = Math.random();// 0 to value less than 1 sourceindex = Math.floor(val*numsource/0.999999); } else sourceindex = 0; source = Node.SelectionGetAt(sel, sourceindex); small = 0.0001; //TODO change to XYZ format for trans, rot and scale //randomscale=0; randomrotation=0; randomtranslation=0;//temp to deactivate old code //rscale=1; //rscaleX=1; //rscaleY=1; //rscaleZ=1; //if(randomscale > 0.0001) // rscale = randomscale * (Math.random()+small); rscaleX = calcScale(MinScaleX, MaxScaleX); if(uniformScale) { rscaleY = rscaleX; rscaleZ = rscaleX; } else { rscaleY = calcScale(MinScaleY, MaxScaleY); rscaleZ = calcScale(MinScaleZ, MaxScaleZ); } //if((MaxScaleX - MinScaleX) > small && MaxScaleX > 0 and MinScaleX > 0) // rscaleX = MinScaleX + (MaxScaleX - MinScaleX)*Math.random(); //if((MaxScaleY - MinScaleY) > small && MaxScaleY > 0 and MinScaleY > 0) // rscaleY = MinScaleY + (MaxScaleY - MinScaleY)*Math.random(); //if((MaxScaleZ - MinScaleZ) > small && MaxScaleZ > 0 and MinScaleZ > 0) // rscaleZ = MinScaleZ + (MaxScaleZ - MinScaleZ)*Math.random(); //rrotation=0; //rRoll=0; //rPitch=0; //rYaw=0; //if(randomrotation > 0.0001) //{ // rrotation = randomrotation * (Math.random()-0.5); //} rRoll = calcRotTrans(MinRoll, MaxRoll); rPitch = calcRotTrans(MinPitch, MaxPitch); rYaw = calcRotTrans(MinYaw, MaxYaw); //rtrans=0; //rtransX=0; //rtransY=0; //rtransZ=0; //if(randomtranslation > 0.0001) //{ // rtrans = randomtranslation * (Math.random()-0.5); //} rtransX = calcRotTrans(MinX, MaxX); rtransY = calcRotTrans(MinY, MaxY); rtransZ = calcRotTrans(MinZ, MaxZ); //orient source to target if(orient==0) { cpy = Node.Copy(source,owner); //base point positions are offset by the pivot myVector.x = rawpoints.x(i); myVector.y = rawpoints.y(i); myVector.z = rawpoints.z(i); transVect = targetmatSc.TransformPoint(myVector); points.x(i) = transVect.x ; points.y(i) = transVect.y ; points.z(i) = transVect.z ; //create a new matrix based on point locations newmat.LoadIdentity(); sourcemat = Node.Value(source,"WldMatrix"); //newmat.SetRoll(targetmat.GetRoll() + rRoll); //newmat.SetPitch(targetmat.GetPitch() + rPitch); //newmat.SetYaw(targetmat.GetYaw() + rYaw); newmat.SetRoll( rRoll); newmat.SetPitch( rPitch); newmat.SetYaw( rYaw); newmat.SetTransX(points.x(i)+rtransX); newmat.SetTransY(points.y(i)+rtransY); newmat.SetTransZ(points.z(i)+rtransZ); newmat.SetScaleX(rscaleX*sourcemat.GetScaleX()); newmat.SetScaleY(rscaleY*sourcemat.GetScaleY()); newmat.SetScaleZ(rscaleZ*sourcemat.GetScaleZ()); //apply the matrix and Node.Value(cpy,"Matrix") = newmat; } //maintain source orientation //hasty and maybe not right but leave for now if(orient==1) { cpy = Node.Copy(source,owner); //base point positions are offset by the pivot myVector.x = rawpoints.x(i); myVector.y = rawpoints.y(i); myVector.z = rawpoints.z(i); transVect = targetmat.TransformPoint(myVector); points.x(i) = transVect.x ; points.y(i) = transVect.y ; points.z(i) = transVect.z ; //create a new matrix based on point locations newmat.LoadIdentity(); sourcemat = Node.Value(source,"WldMatrix"); newmat.SetTransX(points.x(i)+rtransX); newmat.SetTransY(points.y(i)+rtransY); newmat.SetTransZ(points.z(i)+rtransZ); newmat.SetScaleX(rscaleX*sourcemat.GetScaleX()); newmat.SetScaleY(rscaleY*sourcemat.GetScaleY()); newmat.SetScaleZ(rscaleZ*sourcemat.GetScaleZ()); //newmat.SetRoll(sourcemat.GetRoll() - targetmat.GetRoll()); //newmat.SetPitch(sourcemat.GetPitch() - targetmat.GetPitch()); //newmat.SetYaw(sourcemat.GetYaw() - targetmat.GetYaw()); newmat.SetRoll(sourcemat.GetRoll() + rRoll); newmat.SetPitch(sourcemat.GetPitch() + rPitch); newmat.SetYaw(sourcemat.GetYaw() + rYaw); //apply the matrix and Node.Value(cpy,"Matrix") = newmat; } //maintain source orientation relative to the new group if(orient==2) { cpy = Node.Copy(source,owner); //base point positions are offset by the pivot myVector.x = rawpoints.x(i); myVector.y = rawpoints.y(i); myVector.z = rawpoints.z(i); transVect = targetmatSc.TransformPoint(myVector); points.x(i) = transVect.x ; points.y(i) = transVect.y ; points.z(i) = transVect.z ; //create a new matrix based on point locations newmat.LoadIdentity(); sourcemat = Node.Value(source,"WldMatrix"); newmat.SetTransX(points.x(i)+rtransX); newmat.SetTransY(points.y(i)+rtransY); newmat.SetTransZ(points.z(i)+rtransZ); newmat.SetScaleX(rscaleX*sourcemat.GetScaleX()); newmat.SetScaleY(rscaleY*sourcemat.GetScaleY()); newmat.SetScaleZ(rscaleZ*sourcemat.GetScaleZ()); newmat.SetRoll(sourcemat.GetRoll() + rRoll); newmat.SetPitch(sourcemat.GetPitch() + rPitch); newmat.SetYaw(sourcemat.GetYaw() + rYaw); //apply the matrix and Node.Value(cpy,"Matrix") = newmat; } //orient normal if(orient==3) { cpy = Node.Copy(source,owner); small = 0.0001; sourcemat = Node.Value(source,"WldMatrix"); //base point positions are offset by the pivot myVector.x = rawpoints.x(i); myVector.y = rawpoints.y(i); myVector.z = rawpoints.z(i); transVect = targetmatSc.TransformPoint(myVector); points.x(i) = transVect.x ; points.y(i) = transVect.y ; points.z(i) = transVect.z ; pivotMatrix.LoadIdentity();//no pivot default if(Node.Exists(cpy + "/Pivot")) { pivotMatrix = Node.Value(cpy +"/Pivot","WldMatrix");//get the pivot of the source object pivotMatrixBefore = Node.Value(cpy +"/Pivot","WldMatrix"); sourcemat = Node.Value(source,"Pivot");//if pivot exists this is the position not the wldmatrix } // //get normal to angles // vn.x = vertnorms.x(i); vn.y = vertnorms.y(i); vn.z = vertnorms.z(i); vn.Normalize(); at.x = vn.x ; at.y = vn.y ; at.z = vn.z ; yaw = Math.atan2(at.y, at.x );//angle from x axis pitch = Math.atan2(at.z, Math.sqrt((at.x * at.x) + (at.y * at.y))); if(Math.abs(at.y) < small && Math.abs(at.x) < small) { yaw=0; //pitch = Math.atan2(at.z,1); if(at.z > 0) pitch = 3.14159/2; else pitch = 3.14159+3.14159/2; } pitch = (pitch-(3.14159/2))*180/3.14159 ; yaw = -yaw*180/3.14159; parentMatrix = System.CreateDO("Math Package/Matrix Float Data"); childMatrix = System.CreateDO("Math Package/Matrix Float Data"); parentMatrix.LoadIdentity(); childMatrix.LoadIdentity(); parentMatrix.SetYaw(yaw + rYaw); Node.Value(owner + "/pivotParent", "Matrix") = parentMatrix; childMatrix.SetPitch(pitch + rPitch); Node.Value(owner + "/pivotParent/pivotChild", "Matrix") = childMatrix; newmat = Node.Value(owner + "/pivotParent/pivotChild", "WldMatrix"); // // // //no pivot if(!Node.Exists(cpy + "/Pivot")) { newmat.SetTransX(points.x(i)+rtransX); newmat.SetTransY(points.y(i)+rtransY); newmat.SetTransZ(points.z(i)+rtransZ); newmat.SetScaleX(rscaleX*sourcemat.GetScaleX()); newmat.SetScaleY(rscaleY*sourcemat.GetScaleY()); newmat.SetScaleZ(rscaleZ*sourcemat.GetScaleZ()); Node.Value(cpy,"Matrix") = newmat; } if(Node.Exists(cpy + "/Pivot")) { //apply normal rotations newmat.SetTransX(sourcemat.GetTransX()); newmat.SetTransY(sourcemat.GetTransY()); newmat.SetTransZ(sourcemat.GetTransZ()); newmat.SetScaleX(rscaleX*sourcemat.GetScaleX()); newmat.SetScaleY(rscaleY*sourcemat.GetScaleY()); newmat.SetScaleZ(rscaleZ*sourcemat.GetScaleZ()); Node.Value(cpy,"Matrix") = newmat; newmat = Node.Value(cpy,"Matrix");//maybe read before to update pivot? no pivot not update from this //read the resulting pivot pivotMatrixAfter = Node.Value(cpy +"/Pivot","WldMatrix"); a = pivotMatrixAfter.GetTransX() - pivotMatrixBefore.GetTransX(); b = pivotMatrixAfter.GetTransY() - pivotMatrixBefore.GetTransY(); c = pivotMatrixAfter.GetTransZ() - pivotMatrixBefore.GetTransZ(); System.Trace(a + ", " + b + ", " + c); newmat.SetTransX(points.x(i) - (pivotMatrixAfter.GetTransX() - pivotMatrixBefore.GetTransX())+rtransX); newmat.SetTransY(points.y(i) - (pivotMatrixAfter.GetTransY() - pivotMatrixBefore.GetTransY())+rtransY); newmat.SetTransZ(points.z(i) - (pivotMatrixAfter.GetTransZ() - pivotMatrixBefore.GetTransZ())+rtransZ); Node.Value(cpy,"Matrix") = newmat; } } // connect to the group transform node Node.ConnectTo(owner + "/Transform", "WldMatrix", cpy, "OwnerMatrix"); } if(orient==1) { newmat.LoadIdentity(); Node.Value(owner,"Matrix") = newmat; } } NScript Object Package/jScript languageo^intorientNk#g'JNjn*pnCCb@w@2|=Bynj|?z@Hoۙ>?㼜b@NDat?H L "1F5e=dg)}B|=?KS)J@hH?)MVMP0*3O/y4= BϏJ,?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?$ǐ[@M٢#ɉg'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@HoDڠ@@sC{?48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommandv// cleanIt // empty the array object converting it to an ordinary group node // Dec 18 2010 // Clinton Reese - clintons3d.com // // Execute // Called to execute the command function Execute(params) { owner = System.ThisOwner(); snowner = Node.ShortName(owner); if(snowner == "pointCloneTemplate") return;//protect templated version of the encapsulator // //delete all the array nodes, scripts and watchdogs // Node.Delete(owner + "/DataStore"); Node.Delete(owner + "/pivotParent"); Node.Delete(owner + "/pCloneIt"); Node.Delete(owner + "/setDefaults"); Node.Delete(owner + "/uniformValues"); Node.Delete(owner + "/Watch Dog Event"); Node.Delete(owner + "/Watch Dog Event, 1"); Node.Delete(owner + "/Watch Dog Event, 2"); Node.Delete(owner + "/Watch Dog Event, 3"); Node.Delete(owner + "/Watch Dog Event, 4"); Node.Delete(owner + "/Watch Dog Event, 5"); Node.Delete(owner + "/Watch Dog Event, 6"); Node.Delete(owner + "/Watch Dog Event, 7"); // //remove all the exported connections // Node.ConRemove(owner ,"MaxPitch") ; Node.ConRemove(owner ,"orient") ;//maintain source orientation Node.ConRemove(owner ,"MinScaleX") ; Node.ConRemove(owner ,"MaxScaleX") ; Node.ConRemove(owner ,"MinScaleY") ; Node.ConRemove(owner ,"MaxScaleY") ; Node.ConRemove(owner ,"MinScaleZ") ; Node.ConRemove(owner ,"MaxScaleZ") ; Node.ConRemove(owner ,"MinRoll") ; Node.ConRemove(owner ,"MaxRoll") ; Node.ConRemove(owner ,"MinPitch") ; Node.ConRemove(owner ,"MaxPitch") ; Node.ConRemove(owner ,"MinYaw") ; Node.ConRemove(owner ,"MaxYaw") ; Node.ConRemove(owner ,"MinX") ; Node.ConRemove(owner ,"MaxX") ; Node.ConRemove(owner ,"MinY") ; Node.ConRemove(owner ,"MaxY") ; Node.ConRemove(owner ,"MinZ") ; Node.ConRemove(owner ,"MaxZ") ; Node.ConRemove(owner ,"MinScale") ; Node.ConRemove(owner ,"MaxScale") ; Node.ConRemove(owner ,"RollRange") ; Node.ConRemove(owner ,"PitchRange") ; Node.ConRemove(owner ,"YawRange") ; Node.ConRemove(owner ,"XRange") ; Node.ConRemove(owner ,"YRange") ; Node.ConRemove(owner ,"ZRange") ; Node.ConRemove(owner ,"uniformScale") ; Node.Delete(owner + "/cleanIt");//can i delete myself? yes i can } NScript Object Package/jScript language~൱Dh#^c4W}@O{(XFҦV>g'JNjn*pnBDCb@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]kDwPW/e`d8pM*#ͺOD/tfѭ8Lwb"q'ik