-- Dev by Midge Sinnaeve -- Rorschach v2.0 - 25/07/13 -- midge@daze.tv -- Free for all use and / or modification. -- If you modify the script please mention my details, thanks. macroScript Rorschach category:"DAZE" toolTip:"Rorschach" ( rollout rorschach "Rorschach" width:295 height:590 ( label lbl_main "Rorschach v2.0" pos:[210,5] width:80 height:16 groupBox grp_params "Rorschach Parameters:" pos:[10,35] width:275 height:450 label lbl_mods "Modifiers" pos:[20,60] width:107 height:17 label lbl_amount "Amount" pos:[140,60] width:87 height:17 label lbl_force "Force" pos:[240,60] width:35 height:17 button btn_rndmods "Randomize" pos:[20,85] width:100 height:35 button btn_rndamount "Randomize" pos:[135,85] width:90 height:35 button btn_rndforce "R" pos:[240,85] width:36 height:35 button btn_modsall "All" pos:[20,130] width:50 height:20 enabled:true toolTip:"Enable All Modifiers" button btn_modsnone "None" pos:[70,130] width:50 height:20 enabled:true toolTip:"Enable No Modifiers" button btn_sldmin "Min" pos:[135,130] width:30 height:20 enabled:true toolTip:"Set Amount to Minimum" button btn_sldreset "Rst" pos:[165,130] width:30 height:20 enabled:true toolTip:"Reset Amount" button btn_sldmax "Max" pos:[195,130] width:30 height:20 enabled:true toolTip:"Set Amount to Maximun" button btn_forceall "A" pos:[240,130] width:16 height:20 enabled:true toolTip:"Force All Modifiers" button btn_forcenone "N" pos:[256,130] width:16 height:20 enabled:true toolTip:"Force No Modifiers" checkButton ckb_displace "Displace" pos:[20,160] width:100 height:20 enabled:true toolTip:"Enable Displacement" checked:true slider sld_displace "" pos:[135,160] width:100 height:25 range:[0.5,1.5,1.0] type:#float orient:#horizontal ticks:10 checkbox chk_forceDisplace "" pos:[250,165] width:16 height:16 checkButton ckb_noise "Noise" pos:[20,190] width:100 height:20 enabled:true toolTip:"Enable Noise" checked:true slider sld_noise "" pos:[135,190] width:100 height:25 range:[0.5,1.5,1.0] type:#float orient:#horizontal ticks:10 checkbox chk_forceNoise "" pos:[250,195] width:16 height:16 checkButton ckb_spherify "Spherify" pos:[20,220] width:100 height:20 enabled:true toolTip:"Enable Spherify" checked:true slider sld_spherify "" pos:[135,220] width:100 height:25 range:[0.5,1.5,1.0] type:#float orient:#horizontal ticks:10 checkbox chk_forceSpherify "" pos:[250,225] width:16 height:16 checkButton ckb_ripple "Ripple" pos:[20,250] width:100 height:20 enabled:true toolTip:"Enable Ripple" checked:true slider sld_ripple "" pos:[135,250] width:100 height:25 range:[0.5,1.5,1.0] type:#float orient:#horizontal ticks:10 checkbox chk_forceRipple "" pos:[250,255] width:16 height:16 checkButton ckb_bend "Bend" pos:[20,280] width:100 height:20 enabled:true toolTip:"Enable Bend" checked:true slider sld_bend "" pos:[135,280] width:100 height:25 range:[0.5,1.5,1.0] type:#float orient:#horizontal ticks:10 checkbox chk_forceBend "" pos:[250,285] width:16 height:16 checkButton ckb_twist "Twist" pos:[20,310] width:100 height:20 enabled:true toolTip:"Enable Twist" checked:true slider sld_twist "" pos:[135,310] width:100 height:25 range:[0.5,1.5,1.0] type:#float orient:#horizontal ticks:10 checkbox chk_forceTwist "" pos:[250,315] width:16 height:16 checkButton ckb_rorschach "Rorschach" pos:[20,340] width:100 height:20 enabled:true toolTip:"Enable Rorschach Mode (Symmetry Modifier)" checked:true slider sld_rorschach "" pos:[135,340] width:100 height:25 range:[0.5,1.5,1.0] type:#float orient:#horizontal ticks:10 checkbox chk_forceRorschach "" pos:[250,345] width:16 height:16 checkButton ckb_relax "Relax" pos:[20,370] width:100 height:20 enabled:true toolTip:"Enable Relax" checked:true slider sld_relax "" pos:[135,370] width:100 height:25 range:[0.5,1.5,1.0] type:#float orient:#horizontal ticks:10 checkbox chk_forceRelax "" pos:[250,375] width:16 height:16 checkButton ckb_turbo "Turbosmooth" pos:[20,400] width:100 height:20 enabled:true toolTip:"Enable Turbosmooth" checked:true slider sld_turbo "" pos:[135,400] width:100 height:25 range:[1,3,1] type:#integer orient:#horizontal ticks:3 checkbox chk_forceTurbo "" pos:[250,405] width:16 height:16 button btn_rndall "Randomize All" pos:[20,435] width:255 height:40 label lbl_warning "Force will force the enabled modifiers. Otherwise they have a random chance of being added to the stack." pos:[15,490] width:265 height:35 enabled:true button btn_submit "GO!" pos:[10,525] width:275 height:55 -- GLOBAL FUNCTIONS & VARIABLES -- -- DISTORT FUNCTIONS -- fn addDisplace = ( ( cellmap = cellular() cellmap.size = random 50 150 cellmap.output.invert = true cellmap.fractal = true cellmap.iterations = random 1.0 5.0 cellmap.name = "CellDisp" modPanel.addModToSelection (Displace ()) ui:on $.modifiers[#Displace].strength = (random -100 100) * sld_displace.value $.modifiers[#Displace].map = cellmap $.modifiers[#Displace].strength ) ) fn addNoise = ( modPanel.addModToSelection (Noisemodifier ()) ui:on $.modifiers[#Noise].scale = random 5.0 50.0 $.modifiers[#Noise].strength = [(random (rad2/3) (rad1/3)) * sld_noise.value, (random (rad2/3) (rad1/3)) * sld_noise.value, random (rad2/3) (rad1/3) * sld_noise.value] pn = random 0 1 if pn == 1 then ( $.modifiers[#Noise].gizmo.pos += [random 0 rad1,random 0 rad1,random 0 rad1] $.modifiers[#Noise].gizmo.rotation += quat (random 0.0 1.0) (random 0.0 1.0) (random 0.0 1.0) (random 0.0 1.0) ) else ( $.modifiers[#Noise].gizmo.pos -= [random 0 rad1,random 0 rad1,random 0 rad1] $.modifiers[#Noise].gizmo.rotation -= quat (random 0.0 1.0) (random 0.0 1.0) (random 0.0 1.0) (random 0.0 1.0) ) ) fn addSpherify = ( modPanel.addModToSelection (Spherify ()) ui:on $.modifiers[#Spherify].percent = floor((random 25 50) * sld_spherify.value) ) fn addRipple = ( modPanel.addModToSelection (Ripple ()) ui:on $.modifiers[#Ripple].amplitude1 = (random -15.0 15.0) * sld_ripple.value $.modifiers[#Ripple].amplitude1 = (random -15.0 15.0) * sld_ripple.value $.modifiers[#Ripple].wavelength = random 25 75 if pn == 1 then ( $.modifiers[#Ripple].gizmo.pos += [random 0 rad1,random 0 rad1,random 0 rad1] $.modifiers[#Ripple].gizmo.rotation -= quat (random 0.0 1.0) (random 0.0 1.0) (random 0.0 1.0) (random 0.0 1.0) ) else ( $.modifiers[#Ripple].gizmo.pos -= [random 0 rad1,random 0 rad1,random 0 rad1] $.modifiers[#Ripple].gizmo.rotation -= quat (random 0.0 1.0) (random 0.0 1.0) (random 0.0 1.0) (random 0.0 1.0) ) ) fn addBend = ( modPanel.addModToSelection (Bend ()) ui:on $.modifiers[#Bend].BendAngle = (random 30 160) * sld_bend.value $.modifiers[#Bend].BendAxis = random 0 2 $.modifiers[#Bend].BendDir = random 0 90 pn = random 0 1 if pn == 1 then ( $.modifiers[#Bend].gizmo.pos += [random 0 rad1,random 0 rad1,random 0 rad1] $.modifiers[#Bend].gizmo.rotation += quat (random 0.0 1.0) (random 0.0 1.0) (random 0.0 1.0) (random 0.0 1.0) ) else ( $.modifiers[#Bend].gizmo.pos -= [random 0 rad1,random 0 rad1,random 0 rad1] $.modifiers[#Bend].gizmo.rotation -= quat (random 0.0 1.0) (random 0.0 1.0) (random 0.0 1.0) (random 0.0 1.0) ) ) fn addTwist = ( modPanel.addModToSelection (Twist ()) ui:on $.modifiers[#Twist].angle = (random 30 180) * sld_twist.value $.modifiers[#Twist].axis = random 0 2 if pn == 1 then ( $.modifiers[#Twist].gizmo.pos += [random 0 rad1,random 0 rad1,random 0 rad1] $.modifiers[#Twist].gizmo.rotation -= quat (random 0.0 1.0) (random 0.0 1.0) (random 0.0 1.0) (random 0.0 1.0) ) else ( $.modifiers[#Twist].gizmo.pos -= [random 0 rad1,random 0 rad1,random 0 rad1] $.modifiers[#Twist].gizmo.rotation -= quat (random 0.0 1.0) (random 0.0 1.0) (random 0.0 1.0) (random 0.0 1.0) ) ) fn addRorschach = ( modPanel.addModToSelection (symmetry ()) ui:on $.modifiers[#Symmetry].axis = random 0 2 $.modifiers[#Symmetry].mirror.pos -= [random 0 rad1,random 0 rad1,random 0 rad1] $.modifiers[#Symmetry].mirror.rotation -= quat ((random 0.0 0.5) * sld_rorschach.value) ((random 0.0 0.5) * sld_rorschach.value) ((random 0.0 0.5) * sld_rorschach.value) ((random 0.0 0.5) * sld_rorschach.value) ) fn addRelax = ( modPanel.addModToSelection (Relax ()) ui:on $.modifiers[#Relax].Relax_Value = (random 0.01 1) * sld_relax.value $.modifiers[#Relax].iterations = (random 10 50) *sld_relax.value ) fn addTurbo = ( modPanel.addModToSelection (TurboSmooth ()) ui:on $.modifiers[#TurboSmooth].iterations = sld_turbo.value ) fn centerObj = ( $.pivot = $.center $.pos = [0,0,0] $.rotation = quat 0 0 0 0 ) -- CREATOR FUNCTIONS fn addMods = ( if ckb_displace.state == true then ( if chk_forceDisplace.checked == true then ( addDisplace() ) else ( if rnddisp == 1 then ( addDisplace() ) ) ) if ckb_noise.state == true then ( if chk_forceNoise.checked == true then ( addNoise() ) else ( if rndnoise == 1 then ( addNoise() ) ) ) if ckb_spherify.state == true then ( if chk_forceSpherify.checked == true then ( addSpherify() ) else ( if rndsphere == 1 then ( addSpherify() ) ) ) if ckb_ripple.state == true then ( if chk_forceRipple.checked == true then ( addRipple() ) else ( if rndripple == 1 then ( addRipple() ) ) ) if ckb_bend.state == true then ( if chk_forceBend.checked == true then ( addBend() ) else ( if rndbend == 1 then ( addBend() ) ) ) if ckb_twist.state == true then ( if chk_forceTwist.checked == true then ( addTwist() ) else ( if rndtwist == 1 then ( addTwist() ) ) ) if ckb_rorschach.state == true then ( if chk_forceRorschach.checked == true then ( addRorschach() ) else ( if rndrorschach == 1 then ( addRorschach() ) ) ) if ckb_relax.state == true then ( if chk_forceRelax.checked == true then ( addRelax() ) else ( if rndrelax == 1 then ( addRelax() ) ) ) if ckb_turbo.state == true then ( if chk_forceTurbo.checked == true then ( addTurbo() ) else ( if rndturbo == 1 then ( addTurbo() ) ) ) ) -- RANDOM BOOLEAN SWITCH fn onoff = ( check = random 0 1 if check == 0 then ( return false ) else ( return true ) ) -- INTERFACE FUNCTIONS -- -- 1. Randomizers fn rndmods = ( ckb_displace.checked = onoff() ckb_noise.checked = onoff() ckb_spherify.checked = onoff() ckb_ripple.checked = onoff() ckb_bend.checked = onoff() ckb_twist.checked = onoff() ckb_rorschach.checked = onoff() ckb_relax.checked = onoff() ckb_turbo.checked = onoff() ) fn rndamount = ( sld_displace.value = random 0.5 1.5 sld_noise.value = random 0.5 1.5 sld_spherify.value = random 0.5 1.5 sld_ripple.value = random 0.5 1.5 sld_bend.value = random 0.5 1.5 sld_twist.value = random 0.5 1.5 sld_rorschach.value = random 0.5 1.5 sld_relax.value = random 0.5 1.5 sld_turbo.value = random 1 3 ) fn rndforce = ( chk_forceDisplace.checked = onoff() chk_forceNoise.checked = onoff() chk_forceSpherify.checked = onoff() chk_forceRipple.checked = onoff() chk_forceBend.checked = onoff() chk_forceTwist.checked = onoff() chk_forceRorschach.checked = onoff() chk_forceRelax.checked = onoff() chk_forceTurbo.checked = onoff() ) on btn_rndmods pressed do ( rndmods() ) on btn_rndamount pressed do ( rndamount() ) on btn_rndforce pressed do ( rndforce() ) on btn_rndall pressed do ( rndmods() rndamount() rndforce() ) -- 2. Interface States -- on btn_modsall pressed do ( ckb_displace.checked = on ckb_noise.checked = on ckb_spherify.checked = on ckb_ripple.checked = on ckb_bend.checked = on ckb_twist.checked = on ckb_rorschach.checked = on ckb_relax.checked = on ckb_turbo.checked = on ) on btn_modsnone pressed do ( ckb_displace.checked = off ckb_noise.checked = off ckb_spherify.checked = off ckb_ripple.checked = off ckb_bend.checked = off ckb_twist.checked = off ckb_rorschach.checked = off ckb_relax.checked = off ckb_turbo.checked = off ) on btn_sldmin pressed do ( sld_displace.value = 0.5 sld_noise.value = 0.5 sld_spherify.value = 0.5 sld_ripple.value = 0.5 sld_bend.value = 0.5 sld_twist.value = 0.5 sld_rorschach.value = 0.5 sld_relax.value = 0.5 sld_turbo.value = 0.5 ) on btn_sldreset pressed do ( sld_displace.value = 1.0 sld_noise.value = 1.0 sld_spherify.value = 1.0 sld_ripple.value = 1.0 sld_bend.value = 1.0 sld_twist.value = 1.0 sld_rorschach.value = 1.0 sld_relax.value = 1.0 sld_turbo.value = 1.0 ) on btn_sldmax pressed do ( sld_displace.value = 1.5 sld_noise.value = 1.5 sld_spherify.value = 1.5 sld_ripple.value = 1.5 sld_bend.value = 1.5 sld_twist.value = 1.5 sld_rorschach.value = 1.5 sld_relax.value = 1.5 sld_turbo.value = 3 ) on btn_forceall pressed do ( chk_forceDisplace.checked = on chk_forceNoise.checked = on chk_forceSpherify.checked = on chk_forceRipple.checked = on chk_forceBend.checked = on chk_forceTwist.checked = on chk_forceRorschach.checked = on chk_forceRelax.checked = on chk_forceTurbo.checked = on ) on btn_forcenone pressed do ( chk_forceDisplace.checked = off chk_forceNoise.checked = off chk_forceSpherify.checked = off chk_forceRipple.checked = off chk_forceBend.checked = off chk_forceTwist.checked = off chk_forceRorschach.checked = off chk_forceRelax.checked = off chk_forceTurbo.checked = off ) -- 3. Main Creation Functions -- fn creator = ( global p = random 1 5 global q = random 1 5 global rad1 = random 25 75 global rad2 = rad1 / random 2.0 4.0 global ecc = random 0.9 1.1 global lmp = random 0 25 global lmph = random -0.5 0.5 global rnddisp = random 0 1 global rndnoise = random 0 1 global rndsphere = random 0 1 global rndripple = random 0 1 global rndbend = random 0 1 global rndtwist = random 0 1 global rndrorschach = random 0 1 global rndrelax = random 0 1 global rndturbo = random 0 1 global pn = random 0 1 if pn == 1 then ( sign = "+" ) else ( sign = "-" ) global selector = random 0 5 if $ != undefined then ( addMods() ) else ( if selector == 0 then ( GeoSphere pos:[0,0,0] radius:(rad1*2) segments:16 isSelected:on addMods() centerObj() ) else if selector == 1 then ( Torus_Knot smooth:2 Base_Curve:0 Segments:128 sides:64 radius:rad1 radius2:rad2 p:p q:q Eccentricity:ecc Twist:0 Lumps:lmp Lump_Height:lmph Gen_UV:1 U_Tile:1 V_Tile:1 U_Offset:0 V_Offset:0 Warp_Height:0 Warp_Count:0 pos:[0,0,0] isSelected:on addMods() centerObj() ) else if selector == 2 then ( rndsegs = random 32 64 rndsides = random 32 64 Hose Hose_Height:(rad1*2) Round_Hose_Diameter:(rad2*2) Segments_Along_Hose:rndsegs Round_Hose_Sides:rndsides mapcoords:on pos:[0,0,0] isSelected:on addMods() centerObj() ) else if selector == 3 then ( fam = random 0 4 p = random 0.0 1.0 q = random 0.0 1.0 sp = random 50.0 200.0 sq = random 50.0 200.0 sr = random 50.0 200.0 Hedra family:25 family:fam p:p q:q scalep:sp scaleq:sq scaler:sr radius:(rad1*2) mapcoords:on pos:[0,0,0] isSelected:on modPanel.addModToSelection (tessellate ()) ui:on $.modifiers[#Tessellate].faceType = 1 $.modifiers[#Tessellate].tension = 0 $.modifiers[#Tessellate].iterations = random 0 1 modPanel.addModToSelection (TurboSmooth ()) ui:on addMods() centerObj() ) else if selector == 4 then ( Spindle sides:32 Cap_segments:16 heightsegs:8 radius:(rad1*2) width:(rad1*2) height:(rad1*2) Cap_Height:(rad2*2) mapcoords:1 pos:[0,0,0] isSelected:on addMods() centerObj() ) else if selector == 5 then ( rndcycle = random 0 8 rndflux = random 0.0 70.0 rndcycle2 = random 0 8 rndflux2 = random 0.0 70.0 rndrs = random 4 8 rndhs = random 4 8 RingWave radius:(rad1*2) Radius_Segs:rndrs ring_width:(rad1) height:(rad2*2) Height_Segs:rndhs ring_segments:64 Outer_Edge_Breakup:on Major_Cycles_Outer:rndcycle Major_Cycle_Flux_Outer:rndflux Minor_Cycles_Inner:rndcycle2 Major_Cycle_Flux_Inner: rndflux2 mapcoords:1 pos:[0,0,0] isSelected:on addMods() centerObj() ) ) ) on btn_submit pressed do ( print "Creating Weird Shit..." creator() ) ) createDialog rorschach pos:[50,150] )