ࡱ>    !Root Entry !SVl@Version2Contents 7;TNOCr&r 1.5.2001.0704IGAMLDME2010d[ "`2d2OD31010SD3B4010HNI0'X@ya][/o$}; 1+zg$ǒpurchel_sop 6!7! $"7! $ adf'Xe8ԀEɨSXNC4010FERD3010 d[ "`2d _=Im1eH  6; grid0 ͐d[ "`2@ visibility Visibility visibilityI||\I"`2d}q̸'8H~I1[E'8a9w'8b9w'8Гф':c9w'8d9w'8ѓф':e9w'8f9w'8ғф':g9w'8h9w'8dPOT 0010NI1[E'8displayDisplaydisplay<1ːd[ "`2d}؉\b8POT 0010<}؉\b8nullNullNullPOT 0010X 6 #3dobjectObject Object Name$1d[ "`2do$H  @  ; $^1d[ "`2dAH@01g1i1iy8xSW$Xog1d[ "`2dpJHqr s t u v w x y z {  x$Ǒu1d[ "`2dV8SW$ǒGHr ݅։\b8s ݅։\b8 POT 0010NV8SW$ǒgridGrid Implicit Grid"2Ȑd[ "`2d6 @D$!H$0QjMa]!ug[A@$>42ɐd[ "`2dV8SW$ǒoLHڨZ b8Vu{Nd$%'818,2֐d[ "`2ḍɃ HOS1010f*H VMɃ VBScript VMɃ ׋dim inPoints, outPoints 'referenced geometry dim nullPos 'position of controller dim amp, range, shape, norm, mute 'interface parameters dim p, dist, n 'point, distance and normal vectors dim pArr, nArr 'local point and normal arrays 'if operator is muted - say goodbye mute = In_UpdateContext.parameters("Mute").Value if mute = True then exit sub 'reference geometry set inPoints = inGeo.value.geometry.points set outPoints = Out.value.geometry.points 'create controller vector set nullPos = createobject("Sumatra\Scripting\Math\SIVector3") 'get controller's position nullPos.x = inNullPos.value.posx.value nullPos.y = inNullPos.value.posy.value nullPos.z = inNullPos.value.posz.value 'get data from sliders amp = In_UpdateContext.parameters("Amp").Value range = In_UpdateContext.parameters("Range").Value shape = In_UpdateContext.parameters("Power").Value norm = In_UpdateContext.parameters("Use Normals").Value 'create point, distance, and normal vectors set p = createobject("Sumatra\Scripting\Math\SIVector3") set dist = createobject("Sumatra\Scripting\Math\SIVector3") set n = createobject("Sumatra\Scripting\Math\SIVector3") 'create local copy of positionIGAMLDME2010;d[ "`2d2OD31010:SD3B4010:HNI0'X@ya][/o$}; 1+zg$ǒpurchel_sop 6!7! $"7! $ adf'Xe8ԀEɨSXNC4010FERD3010G8 d[ "`2d _=Im1e88H  6; grid0 ͐d[ "`2d H purchel_control0w ΐd[ "`2dAOQwg$GIH3a]   @  6;  ϐd[ "`2d5WWZ$Xo Hy8xSW$Xos5WZ$Xo#W~$Xo@Q@WZ$Xo0F~$Xo 0Аd[ "`2dzD7$G HRkZ$>5C`b$>5C*N]$>5C \ĶͿvb$>5C~V2.b$>5C5P4?:@b$>5C 0Z$G!\b$>5C"Iħb$>5C#)b$>5C@$0Z$G%0Z$G&0Z$G'0Z$G(0Z$G)0b$>5C*b$>5C+DQb$>5C?,@b$>5C-J1at}.K1at}/L1at}0M1at}1h"'8  SK0010e3 PXNC2010  12Ԑd[ "`2d3Oބ$iREPO0010 4(K$}  15Ґd[ "`2d6Lwp$>4cSNCK0010X S H71%A6 8#[ 9B)K$i:B)K$i \ĶͿ;B)K$i~V<B)K$i5P4?=B)K$i>B)K$i?B)K$i@B)K$iAB)K$i@BB)K$iCB)K$iDB)K$iEB)K$iFB)K$iGB)K$iHB)K$iIB)K$i?JB)K$iKR5at}LR5at}MR5at}NR5at}Orf$XoPR6=C$Xo QS6=C$Xo RT6=C$Xo SU6=C$Xo TV6=C$Xo Ui=}$XoV3E}$Xo WQ.$Xo XM}$Xo Y41$Xo Z!6V}$Xo [!kK$Xo \u`}$Xo ]M`$Xo ^dj}$Xo _mc}$Xo `kr}$Xo aqW$Xo bZı&at} }c`>a]777dF1eӐd[ "`2df¢$i40aS1gd[ "`2d6H !"#@$%&'()*+,-./01 eH 1hŐd[ "`2d341iÐd[ "`2d6H78 9:;<=>?@A@BCDEFGHIJKLMNOP Q R S T UV W X Y Z [ \ ] ^ _ ` a b c771jĐd[ "`2df41g1kd[ "`2dH !"#@$%&'()*+,-./01  g[1lƐd[ "`2dmKW$Xo-41gVJ1nՐd[ "`2dm-401515POT 0010ny8xSW$Xokine KinematicsKinematic Info Property(1oѐd[ "`2dp x$ǑHq x$Ǒr6K$ǒ sBҩH$ǒ ts~a us~a vs~a w:V®~a xs~a y($>6O z($>6O {{VB@Ǡ POT 0010` x$Ǒ and normal arrays 'for modification pArr = inPoints.PositionArray nArr = inPoints.NormalArray 'loop through every point in input geo dim i, d for i = 0 to ubound(pArr, 2) 'get point's position vector p.Set pArr(0,i), pArr(1,i), pArr(2,i) 'calculate distance between point and controller dist.Sub nullPos, p 'ignore every point outside of a set range if dist.length < range then 'get point's normal vector, or use 'normalized distance instead if norm = False then n.Copy dist n.NegateInPlace n.NormalizeInPLace else n.Set nArr(0,i), nArr(1,i), nArr(2,i) end if 'calculate the bulge if dist.length < range then d = (range-dist.length)^shape n.ScaleInPlace d else n.setnull end if 'set bulge's amplitude n.ScaleInPlace amp 'move point by adding vectors p.AddInPlace n 'return new point position to the position array pArr(0,i) = p.x pArr(1,i) = p.y pArr(2,i) = p.z end if next 'update scene geometry outPoints.PositionArray = pArr VMɃ Option Explicit ''''''''''''''''''''''''''''''''''''''''''''''' ' Purchel S-OP ' ' behaves similarly to Effects->Magnet+ ' in good ol' Soft|3D, but has some extended ' slider control. ;) ' ' (C) odyseja|ddd cgi studio ' ddd.odyseja.pl ' bartekd@odyseja.pl ''''''''''''''''''''''''''''''''''''''''''''''' v!Ƀ POT 0010T3/%!Ƀ  PortNamePortNamePortNameinGeo3/%!Ƀ inNullPosv!Ƀ outGeoGɃ POT 0010ZGɃ  PortFlags PortFlags PortFlagsGɃ GɃ qVɃ POT 0010TqVɃ  PortPathPortPathPortPath{00000000-0000-0000-0000-000000000000}qVɃ {00000000-0000-0000-0000-000000000000}qVɃ {00000000-0000-0000-0000-000000000000}&IWɃ POT 0010r&IWɃ ` PortInterface PortInterface PortInterface`ug[A@$>4&IWɃ `F&IWɃ `ug[A@$>4VɃfPOT 0010fVɃf` PortMajorID PortMajorID PortMajorID` bL-VɃf`:m1eVɃf` bL-VɃfPOT 0010fVɃf` PortMinorID PortMinorID PortMinorID``ʞ:OF$>4VɃf`1%A6 VɃf``ʞ:OF$>4@u%3vB;>POT 0010^ݐd[ "`2dAmpAmpAmp$$@$$@??POT 0010jސd[ "`2dRangeRangeRange$$@$$@@ POT 0010kd[ "`2d  Use Normals Use Normals Use Normals POT 0010jd[ "`2dPowerPowerPower@@? POT 0010Ad[ "`2d MuteMuteMute 215 LSD31010O2dc_8c,w15`dl`d *2dc_8c,w2ʐd[ "`2d`~`$?`fHPOT 0010N=d$?`pntPoint Point ClusterPOT 0010j`yd-pp6)clslist Cluster ListList of ClustersPOT 0010X=d$?`polyPolygonPolygon Cluster`yd-pp6)POT 0010L=d$?`edgeEdge Edge ClusterAPOT 0010d`O $>4sampleSampleSample Point Cluster CSLC1010 qslc0010POT 0010b6 @D$$polymsh Polygon Mesh Polygon Mesh  62d[ "`2dH  @; >2d[ "`2d!H1kg2d[ "`2dpJHqr s t u v w x y z { <2d[ "`2d`OPOT 0010^`O modelnull Model Null Model Null