diff --git a/HOUDINI/HSITE/otls/LYNX_force.hda/INDEX__SECTION b/HOUDINI/HSITE/otls/LYNX_force.hda/INDEX__SECTION index 1e7ae1b..a8249a1 100644 --- a/HOUDINI/HSITE/otls/LYNX_force.hda/INDEX__SECTION +++ b/HOUDINI/HSITE/otls/LYNX_force.hda/INDEX__SECTION @@ -11,7 +11,7 @@ Outputs: 4 Subnet: true Python: false Empty: false -Modified: Sun Mar 17 06:47:44 2019 +Modified: Sun Mar 17 04:47:44 2019 Operator: LYNX::LYNX_force_general::1.1 Label: LYNX force general @@ -43,3 +43,18 @@ Python: false Empty: false Modified: Tue Jul 2 09:40:32 2019 +Operator: LYNX::LYNX_force_general::1.3 +Label: LYNX force general +Path: oplib:/LYNX::Dop/LYNX_force_general::1.3?LYNX::Dop/LYNX_force_general::1.3 +Icon: opdef:/LYNX::Dop/LYNX_force_general::1.3?IconSVG +Table: Dop +License: +Extra: +User: +Inputs: 0 to 1 +Outputs: 4 +Subnet: true +Python: false +Empty: false +Modified: Fri Jul 19 21:36:57 2019 + diff --git a/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Contents.dir/.OPdummydefs b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Contents.dir/.OPdummydefs new file mode 100644 index 0000000..d7e0ab8 Binary files /dev/null and b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Contents.dir/.OPdummydefs differ diff --git a/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Contents.dir/.OPfallbacks b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Contents.dir/.OPfallbacks new file mode 100644 index 0000000..1656ff3 --- /dev/null +++ b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Contents.dir/.OPfallbacks @@ -0,0 +1,20 @@ +Sop/attribdelete /opt/hfs17.5.229/houdini/otls/OPlibSop.hda +Sop/attribdelete otls/OPlibSop.hda +Sop/attribwrangle /opt/hfs17.5.229/houdini/otls/OPlibSop.hda +Sop/attribwrangle otls/OPlibSop.hda +Sop/convertline /opt/hfs17.5.229/houdini/otls/OPlibSop.hda +Sop/convertline otls/OPlibSop.hda +Dop/gasfieldwrangle /opt/hfs17.5.229/houdini/otls/OPlibDop.hda +Dop/gasfieldwrangle otls/OPlibDop.hda +Vop/geometryvopglobal::2.0 /opt/hfs17.5.229/houdini/otls/OPlibVop.hda +Vop/geometryvopglobal::2.0 otls/OPlibVop.hda +Vop/geometryvopoutput /opt/hfs17.5.229/houdini/otls/OPlibVop.hda +Vop/geometryvopoutput otls/OPlibVop.hda +Dop/geometrywrangle /opt/hfs17.5.229/houdini/otls/OPlibDop.hda +Dop/geometrywrangle otls/OPlibDop.hda +Dop/null /opt/hfs17.5.229/houdini/otls/OPlibDop.hda +Dop/null otls/OPlibDop.hda +Sop/polypath /opt/hfs17.5.229/houdini/otls/OPlibSop.hda +Sop/polypath otls/OPlibSop.hda +Sop/volumewrangle /opt/hfs17.5.229/houdini/otls/OPlibSop.hda +Sop/volumewrangle otls/OPlibSop.hda diff --git a/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Contents.dir/Contents.mime b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Contents.dir/Contents.mime new file mode 100644 index 0000000..e764795 --- /dev/null +++ b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Contents.dir/Contents.mime @@ -0,0 +1,37082 @@ +MIME-Version: 1.0 +Content-Type: multipart/mixed; boundary="HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY" + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename=".OPfallbacks" +Content-Type: application/external-reference + +.OPfallbacks + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename=".OPdummydefs" +Content-Type: application/external-reference + +.OPdummydefs + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="node_type" +Content-Type: text/plain + +Dop + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot.init" +Content-Type: text/plain + +type = LYNX::LYNX_force_general::1.3 +matchesdef = 0 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot.def" +Content-Type: text/plain + +comment "" +position -21.2911 10.5307 +connectornextid 1 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +0 "output1" +} +inputsNamed3 +{ +} +inputs +{ +} +stat +{ + create 1563529449 + modify 1563565807 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"1.2" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot.inp" +Content-Type: text/plain + +1 +0 0.15672953378378202 5.8332524599032745 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT" + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/__stickynote2.postitinit" +Content-Type: text/plain + +type = postitnote +matchesdef = 0 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/__stickynote2.postitdef" +Content-Type: text/plain + +text "Notes +- Unique Data Names are self generated for proper access in other nodes +- Attaching SopGeo/SopGuide to solver data is not clean. Attaching it to objects is better, but per solver substep support is not possible. +- Volumes could be written as Fields for access in other solvers. + Disadvantages: + > Vdb is converted to normal Volume (aka Field in DOP Context) + > Fields would be remapped -> unnecessary IO overhead" +position 10.2885 3.33861 +size 14.281 2.52318 +flags = minimize off +stat +{ + create 1543259701 + modify 1555754558 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 1 0.969 0.522 +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/__stickynote3.postitinit" +Content-Type: text/plain + +type = postitnote +matchesdef = 0 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/__stickynote3.postitdef" +Content-Type: text/plain + +text "Possible To-Dos +- OpenCL" +position 10.2885 1.79809 +size 14.281 1.01552 +flags = minimize off +stat +{ + create 1543259701 + modify 1555754549 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 1 0.969 0.522 +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide.init" +Content-Type: text/plain + +type = sopguide +matchesdef = 0 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide.def" +Content-Type: text/plain + +comment "" +position 4.46676 1.33943 +connectornextid 1 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +0 "output1" +} +inputsNamed3 +{ +} +inputs +{ +} +stat +{ + create 1543255746 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide.chn" +Content-Type: text/plain + +{ + channel activation { + lefttype = extend + righttype = extend + default = 1 + flags = 0 + start = -0.041666666666666664 + segment { length = 0 value = 1 1 expr = ch(\"../force_toggle\")&&ch(\"../force_guide_toggle\")&&(ch(\"../force_guide_general_toggle\")||ch(\"../force_guide_streamers_toggle\")) } + } + channel showguide { + lefttype = extend + righttype = extend + default = 1 + flags = 0 + start = -0.041666666666666664 + segment { length = 0 value = 1 1 expr = ch(\"activation\") } + } + } + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide.parm" +Content-Type: text/plain + +{ +version 0.8 +showguide [ 8 locks=0 ] ( [ showguide 1 ] ) +color [ 0 locks=0 ] ( 1 1 1 ) +wireframe [ 0 locks=0 ] ( "off" ) +usesoppath [ 0 locks=0 ] ( "off" ) +soppath [ 0 locks=0 ] ( "" ) +sharedata [ 0 locks=0 ] ( "onestep" ) +activation [ 8 locks=0 ] ( [ activation 1 ] ) +activationrules [ 0 locks=0 ] ( 0 ) +group [ 0 locks=0 ] ( * ) +dataname [ 0 locks=0 ] ( LYNX_Force_General_Guide`strreplace(strreplace(strreplace(opfullpath(\".\"),$DOPNET,\"\"),\"/\"+opname(\".\"),\"\"),\"/\",\"_\")` ) +uniquedataname [ 0 locks=0 ] ( "off" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"17.5.229" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/__stickynote1.postitinit" +Content-Type: text/plain + +type = postitnote +matchesdef = 0 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/__stickynote1.postitdef" +Content-Type: text/plain + +text "For Loop Causes Update Problems +> Using Compile Invoke Instead" +position -5.00194 25.9431 +size 4.47041 0.898951 +flags = minimize off +stat +{ + create 1555574601 + modify 1555574907 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 1 0.969 0.522 +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/group_LYNX_dissolve.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/group_LYNX_dissolve.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -21.2271 35.4298 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 sphere 0 1 "input1" +2 merge1 1 1 "input2" +} +inputs +{ +0 sphere 0 1 +1 merge1 0 1 +} +stat +{ + create 1543257624 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/group_LYNX_dissolve.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "int @group_LYNX_dissolve = 0; +int pcfind_pts[] = pcfind(1,\"P\",@P,.001,1); +if (len(pcfind_pts)==0){@group_LYNX_dissolve=1;}" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/group_LYNX_dissolve.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/group_LYNX_dissolve1.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/group_LYNX_dissolve1.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -17.0501 37.2976 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 tube 0 1 "input1" +2 merge2 3 1 "input2" +} +inputs +{ +0 tube 0 1 +1 merge2 0 1 +} +stat +{ + create 1543257624 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/group_LYNX_dissolve1.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "int @group_LYNX_dissolve = 0; +int pcfind_pts[] = pcfind(1,\"P\",@P,.001,1); +if (len(pcfind_pts)==0){@group_LYNX_dissolve=1;}" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/group_LYNX_dissolve1.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/group_LYNX_dissolve2.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/group_LYNX_dissolve2.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -12.4451 36.5621 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 torus 0 1 "input1" +2 merge3 3 1 "input2" +} +inputs +{ +0 torus 0 1 +1 merge3 0 1 +} +stat +{ + create 1543257624 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/group_LYNX_dissolve2.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "int @group_LYNX_dissolve = 0; +int pcfind_pts[] = pcfind(1,\"P\",@P,.001,1); +if (len(pcfind_pts)==0){@group_LYNX_dissolve=1;}" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/group_LYNX_dissolve2.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convert_to_line.init" +Content-Type: text/plain + +type = subnet +matchesdef = 0 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convert_to_line.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -17.0471 25.4093 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 IN_Shape 1 1 "input1" +2 sweep_transform 1 1 "input2" +} +inputs +{ +0 IN_Shape 0 1 +1 sweep_transform 0 1 +} +stat +{ + create 1543258149 + modify 1563463461 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convert_to_line.spareparmdef" +Content-Type: text/plain + + parm { + name "label1" + baseparm + label "Input #1 Label" + invisible + export all + } + parm { + name "label2" + baseparm + label "Input #2 Label" + invisible + export all + } + parm { + name "label3" + baseparm + label "Input #3 Label" + invisible + export all + } + parm { + name "label4" + baseparm + label "Input #4 Label" + invisible + export all + } + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convert_to_line.parm" +Content-Type: text/plain + +{ +version 0.8 +label1 [ 0 locks=0 ] ( "Sub-Network Input #1" ) +label2 [ 0 locks=0 ] ( "Sub-Network Input #2" ) +label3 [ 0 locks=0 ] ( "Sub-Network Input #3" ) +label4 [ 0 locks=0 ] ( "Sub-Network Input #4" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convert_to_line.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"17.5.229" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convert_to_line.inp" +Content-Type: text/plain + +4 +0 0 6 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT" +1 9.9578070916621293 6.3849949241047579 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT" +2 12.957807091662129 6.8849949241047579 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT" +3 15.957807091662129 7.3849949241047579 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT" + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convert_to_line/convertline1.init" +Content-Type: text/plain + +type = convertline +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convert_to_line/convertline1.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -1.11759e-08 4.17249 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display on render on highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 (0) "" 1 "input1" +} +inputs +{ +0 (0) 0 1 +} +stat +{ + create 1543258491 + modify 1552498249 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convert_to_line/convertline1.parm" +Content-Type: text/plain + +{ +version 0.8 +computelength [ 0 locks=0 ] ( "off" ) +lengthname [ 0 locks=0 ] ( restlength ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convert_to_line/convertline1.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convert_to_line/dissolve_points.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convert_to_line/dissolve_points.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -0.00300001 3.09803 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 convertline1 1 1 "input1" +} +inputs +{ +0 convertline1 0 1 +} +stat +{ + create 1543258501 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convert_to_line/dissolve_points.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( LYNX_dissolve ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( removepoint(0,@ptnum,1); ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convert_to_line/dissolve_points.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convert_to_line/insert_intersections.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convert_to_line/insert_intersections.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 1.26476 1.40477 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +2 "output1" +} +inputsNamed3 +{ +0 dissolve_points 1 1 "input1" +1 intersectionanalysis2 2 1 "input2" +} +inputs +{ +0 dissolve_points 0 1 +1 intersectionanalysis2 0 1 +} +stat +{ + create 1543258622 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convert_to_line/insert_intersections.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "detail" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "int intersect_pt_count = npoints(1); +for (int i=0;i 0 = Geometry | 1 = Volume +int wrangle_type = 0; + +`strreplace(strreplace(chs(\"../../solver_force_general_kernel/snippet\"),\"../\",\"../../\"),\"printf\",\"sprintf\")` + +@LYNX_force = force_global_strength_falloff * LYNX_force;" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( LYNX_force ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_LYNX_force.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_vector.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_vector.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -6.47463 -19.4086 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 attr_LYNX_force 2 1 "input1" +} +inputs +{ +0 attr_LYNX_force 0 1 +} +stat +{ + create 1552044868 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_vector.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "vector @P; +vector @LYNX_force; +if (length(@LYNX_force)>0){ + int prim_id = addprim(0,\"polyline\"); + int pt_A_id = addpoint(0,@P); + int pt_B_id = addpoint(0,@P+@LYNX_force*ch(\"../../force_guide_streamers_length\")); + addvertex(0,prim_id,pt_A_id); + addvertex(0,prim_id,pt_B_id); + setpointattrib(0,\"Alpha\",pt_A_id,1,\"set\"); + setpointattrib(0,\"Alpha\",pt_B_id,0,\"set\"); + vector Cd = chv(\"../../force_guide_streamers_color_\"); + setpointattrib(0,\"Cd\",pt_A_id,Cd,\"set\"); + setpointattrib(0,\"Cd\",pt_B_id,Cd,\"set\"); +} +removepoint(0,@ptnum,1); +" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_vector.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_gradient.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_gradient.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -3.58633 -19.4086 +connectornextid 1 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +2 "output1" +} +inputsNamed3 +{ +0 attr_LYNX_force 2 1 "input1" +} +inputs +{ +0 attr_LYNX_force 0 1 +} +stat +{ + create 1552044380 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_gradient.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "vector @LYNX_force; +vector @Cd = 0; +float @Alpha = 0; +float LYNX_force = abs(length(@LYNX_force)); +@Cd = set(LYNX_force,LYNX_force,LYNX_force); +@Alpha = LYNX_force;" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( "Cd Alpha" ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_gradient.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_gl.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_gl.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -11.9109 -24.6173 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 force_guide_streamers_toggle 1 1 "input1" +} +inputs +{ +0 force_guide_streamers_toggle 0 1 +} +stat +{ + create 1552050059 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_gl.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "detail" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "int @gl_lit = 0; +int @gl_wireframe = -1; +//int @gl_showallpoints = 1; +" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_gl.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Alpha1.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Alpha1.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 19.0861 8.27141 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +0 "output1" +} +inputsNamed3 +{ +1 circle_arrow_Flox_Axis_Oribt 0 1 "input1" +} +inputs +{ +0 circle_arrow_Flox_Axis_Oribt 0 1 +} +stat +{ + create 1544445900 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Alpha1.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "float @Alpha = 1;" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Alpha1.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/wild_card_process.init" +Content-Type: text/plain + +type = subnet +matchesdef = 0 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/wild_card_process.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -17.0326 -24.6163 +connectornextid 1 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +0 "output1" +} +inputsNamed3 +{ +} +inputs +{ +} +stat +{ + create 1552344927 + modify 1563450944 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/wild_card_process.parm" +Content-Type: text/plain + +{ +version 0.8 +label1 [ 0 locks=0 ] ( "Sub-Network Input #1" ) +label2 [ 0 locks=0 ] ( "Sub-Network Input #2" ) +label3 [ 0 locks=0 ] ( "Sub-Network Input #3" ) +label4 [ 0 locks=0 ] ( "Sub-Network Input #4" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/wild_card_process.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"17.5.229" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/wild_card_process.inp" +Content-Type: text/plain + +4 +0 3.4694469519536142e-17 8.6253206855222473 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT" +1 3 9.1253206855222473 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT" +2 6 9.6253206855222473 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT" +3 9 10.125320685522247 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT" + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/wild_card_process/blast_non_visible_marked_guides.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/wild_card_process/blast_non_visible_marked_guides.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -0.198007 -5.1174 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 group_temp 1 1 "input1" +} +inputs +{ +0 group_temp 0 1 +} +stat +{ + create 1552344184 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/wild_card_process/blast_non_visible_marked_guides.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "string pt_groups_list[] = detailintrinsic(0,\"pointgroups\"); + +int group_count = 0; +foreach(string group;pt_groups_list){ + group_count += inpointgroup(0,group,@ptnum); +} + +if(group_count == 1){ + removepoint(0,@ptnum); +}" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/wild_card_process/blast_non_visible_marked_guides.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/wild_card_process/blast_non_visible_marked_guides1.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/wild_card_process/blast_non_visible_marked_guides1.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -0.198007 -7.5837 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 "" "" 1 "input1" +2 groupdelete1 1 1 "input2" +} +inputs +{ +0 "" 0 1 +1 groupdelete1 0 1 +} +stat +{ + create 1552344184 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/wild_card_process/blast_non_visible_marked_guides1.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "detail" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "string @pt_groups; +string pt_groups_list[] = detailintrinsic(1,\"pointgroups\"); + +string pt_groups_string = \"\"; +foreach(string group;pt_groups_list){ + pt_groups_string = group + \" \" + pt_groups_string; +} + +@pt_groups = pt_groups_string;" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/wild_card_process/blast_non_visible_marked_guides1.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convertline2.init" +Content-Type: text/plain + +type = convertline +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convertline2.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -15.9069 21.9348 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 font_External_Data 0 1 "input1" +} +inputs +{ +0 font_External_Data 0 1 +} +stat +{ + create 1551884114 + modify 1563463461 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convertline2.parm" +Content-Type: text/plain + +{ +version 0.8 +computelength [ 0 locks=0 ] ( "on" ) +lengthname [ 0 locks=0 ] ( restlength ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convertline2.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_N.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_N.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 33.5563 9.97801 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 circle_arrow_flow_center_suction_copy 0 1 "input1" +} +inputs +{ +0 circle_arrow_flow_center_suction_copy 0 1 +} +stat +{ + create 1553519157 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_N.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "vector @P; +vector @N; +@N = normalize(@P); +" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_N.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Alpha2.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Alpha2.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 33.5563 7.79291 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +0 "output1" +} +inputsNamed3 +{ +1 circle_arrow_flow_center_suction 0 1 "input1" +} +inputs +{ +0 circle_arrow_flow_center_suction 0 1 +} +stat +{ + create 1544445900 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Alpha2.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "float @Alpha = 1;" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Alpha2.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/arrow_Flow_Center_Suction.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/arrow_Flow_Center_Suction.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 32.5371 11.6025 +connectornextid 1 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +0 "output1" +} +inputsNamed3 +{ +} +inputs +{ +} +stat +{ + create 1544445900 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/arrow_Flow_Center_Suction.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "detail" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "float force_guide_general_strength_max = ch(\"../../force_guide_general_strength_max\"); +float force_flow_center_suction_strength = clamp(ch(\"../../force_flow_center_suction_strength\"),-force_guide_general_strength_max,force_guide_general_strength_max); + +int pr = -1; +int pt_A = -1; +int pt_B = -1; +vector pt_A_P; +vector pt_B_P; + +pt_A_P = set(0,0,.33 * abs(force_flow_center_suction_strength)); +pt_B_P = set(0,0,0); +pr = addprim(0,\"polyline\"); +pt_A = addpoint(0,pt_A_P); +pt_B = addpoint(0,pt_B_P); +addvertex(0,pr,pt_A); +addvertex(0,pr,pt_B); +vector pts_B_P[] = {{.15,0.0,-0.15},{-.15,0.0,-.15}}; +foreach(pt_B_P;pts_B_P) +{ + pr = addprim(0,\"polyline\"); + pt_A = addpoint(0,pt_A_P); + pt_B = addpoint(0,pt_A_P + pt_B_P * clamp(force_flow_center_suction_strength,-1,1)); + addvertex(0,pr,pt_A); + addvertex(0,pr,pt_B); + setpointattrib(0,\"Alpha\",pt_A,1,\"set\"); + setpointattrib(0,\"Alpha\",pt_B,0,\"set\"); +}" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/arrow_Flow_Center_Suction.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_tube_shape.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_tube_shape.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -17.0501 36.1795 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 group_LYNX_dissolve1 1 1 "input1" +} +inputs +{ +0 group_LYNX_dissolve1 0 1 +} +stat +{ + create 1553807248 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_tube_shape.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "vector @P; +vector line_P = set(0,@P.y,0); +float line_uv = fit(@P.y,-.5,.5,0,1); +float line_width = chramp(\"../../force_shape_tube_width_remap\",chi(\"../../force_shape_tube_width_remap_reverse_toggle\")?1-line_uv:line_uv) * fit01(line_uv,ch(\"../../force_shape_tube_width_1\"),ch(\"../../force_shape_tube_width_2\")); +@P = line_width * normalize(@P-line_P)*.5 + line_P; +" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_tube_shape.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet.init" +Content-Type: text/plain + +type = subnet +matchesdef = 0 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 0.070533 25.8508 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 curve_guide_compile_begin 0 1 "input1" +} +inputs +{ +0 curve_guide_compile_begin 0 1 +} +stat +{ + create 1555574817 + modify 1563463461 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet.parm" +Content-Type: text/plain + +{ +version 0.8 +label1 [ 0 locks=0 ] ( "Sub-Network Input #1" ) +label2 [ 0 locks=0 ] ( "Sub-Network Input #2" ) +label3 [ 0 locks=0 ] ( "Sub-Network Input #3" ) +label4 [ 0 locks=0 ] ( "Sub-Network Input #4" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"17.5.229" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet.inp" +Content-Type: text/plain + +4 +0 -2.7764499888241292 7.7143536968532276 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT" +1 2.32089047362338 8.4755913494592576 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT" +2 5.32089047362338 8.9755913494592576 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT" +3 8.3208904736233809 9.4755913494592576 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT" + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/attr_ends_copy_N.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/attr_ends_copy_N.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -2.49826 4.3974 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 (0) "" 1 "input1" +} +inputs +{ +0 (0) 0 1 +} +stat +{ + create 1553515617 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/attr_ends_copy_N.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "vector @P; +vector @N; +if(neighbourcount(0,@ptnum)==1){ + int n_id = neighbour(0,@ptnum,0); + vector n_P = point(0,\"P\",n_id); + @N = normalize(@P - n_P); +} +else +{ + removepoint(0,@ptnum); +}" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/attr_ends_copy_N.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/sphere_end.init" +Content-Type: text/plain + +type = subnet +matchesdef = 0 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/sphere_end.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -3.84871 5.0983 +connectornextid 1 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +0 "output1" +} +inputsNamed3 +{ +} +inputs +{ +} +stat +{ + create 1553515927 + modify 1555677694 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/sphere_end.parm" +Content-Type: text/plain + +{ +version 0.8 +label1 [ 0 locks=0 ] ( "Sub-Network Input #1" ) +label2 [ 0 locks=0 ] ( "Sub-Network Input #2" ) +label3 [ 0 locks=0 ] ( "Sub-Network Input #3" ) +label4 [ 0 locks=0 ] ( "Sub-Network Input #4" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/sphere_end.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"17.5.229" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/sphere_end.inp" +Content-Type: text/plain + +4 +0 0 6 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT" +1 3 6.5 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT" +2 6 7 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT" +3 9 7.5 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT" + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/sphere_end/convertline3.init" +Content-Type: text/plain + +type = convertline +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/sphere_end/convertline3.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 0 1.8929 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 group_LYNX_dissolve5 1 1 "input1" +} +inputs +{ +0 group_LYNX_dissolve5 0 1 +} +stat +{ + create 1543258491 + modify 1553515927 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/sphere_end/convertline3.parm" +Content-Type: text/plain + +{ +version 0.8 +computelength [ 0 locks=0 ] ( "off" ) +lengthname [ 0 locks=0 ] ( restlength ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/sphere_end/convertline3.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/sphere_end/dissolve_points.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/sphere_end/dissolve_points.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -0.003 1.2046 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 convertline3 1 1 "input1" +} +inputs +{ +0 convertline3 0 1 +} +stat +{ + create 1543258501 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/sphere_end/dissolve_points.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( LYNX_dissolve ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( removepoint(0,@ptnum,1); ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/sphere_end/dissolve_points.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/sphere_end/group_LYNX_dissolve5.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/sphere_end/group_LYNX_dissolve5.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -0.003 2.5591 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 sphere_end 0 1 "input1" +2 merge11 1 1 "input2" +} +inputs +{ +0 sphere_end 0 1 +1 merge11 0 1 +} +stat +{ + create 1543257624 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/sphere_end/group_LYNX_dissolve5.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "int @group_LYNX_dissolve = 0; +int pcfind_pts[] = pcfind(1,\"P\",@P,.001,1); +if (len(pcfind_pts)==0){@group_LYNX_dissolve=1;}" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/sphere_end/group_LYNX_dissolve5.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/primitivewrangle1.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/primitivewrangle1.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 5.31789 2.75285 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 copytopoints3 2 1 "input1" +2 attr_LYNX_force_id 1 1 "input2" +} +inputs +{ +0 copytopoints3 0 1 +1 attr_LYNX_force_id 0 1 +} +stat +{ + create 1555676900 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/primitivewrangle1.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "int @type; +float @strength; +vector @LYNX_force_shape_curve_direction; +int @LYNX_force_id; + +vector @N; +vector @up; +float @pscale; + +@pscale = @strength; +if(@type == 0){ + removepoint(0,@ptnum); + return; +} +if(@type == 1){ + vector N = @up; + @up = @N; + @N = N; + return; +} +if(@type == 2){ + @up = normalize(@P - point(1,\"P\",@LYNX_force_id)); + return; +} +if(@type == 3){ + vector up = normalize(@P - point(1,\"P\",@LYNX_force_id)); + @up = cross(@N,up); + return; +} +if(@type == 4){ + @up = @LYNX_force_shape_curve_direction; + @N = cross(@N,@LYNX_force_shape_curve_direction); + return; +} +" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/primitivewrangle1.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/arrow.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/arrow.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 4.56315 1.73086 +connectornextid 1 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +0 "output1" +} +inputsNamed3 +{ +} +inputs +{ +} +stat +{ + create 1544445805 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/arrow.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "detail" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( " +int pr = -1; +int pt_A = -1; +int pt_B = -1; +vector pt_A_P; +vector pt_B_P; + +pt_A_P = set(0,1,0); +pt_B_P = set(0,0,0); +pr = addprim(0,\"polyline\"); +pt_A = addpoint(0,pt_A_P); +pt_B = addpoint(0,pt_B_P); +addvertex(0,pr,pt_A); +addvertex(0,pr,pt_B); +vector pts_B_P[] = {{0.15,-.15,0.0},{-0.15,-.15,0.0},{0.0,-.15,0.15},{0.0,-.15,-.15}}; +foreach(pt_B_P;pts_B_P) +{ + pr = addprim(0,\"polyline\"); + pt_A = addpoint(0,pt_A_P); + pt_B = addpoint(0,pt_A_P + pt_B_P * clamp(1,-1,1)); + addvertex(0,pr,pt_A); + addvertex(0,pr,pt_B); + setpointattrib(0,\"Alpha\",pt_A,1,\"set\"); + setpointattrib(0,\"Alpha\",pt_B,0,\"set\"); +}" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/curve_guide_subnet/arrow.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Cd.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Cd.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -9.18948 -4.40151 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 merge7 1 1 "input1" +} +inputs +{ +0 merge7 0 1 +} +stat +{ + create 1555685333 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Cd.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "vector @Cd = 0; +if(length(@Cd)==0){ + @Cd = set(ch(\"../../force_guide_general_color_r\"),ch(\"../../force_guide_general_color_g\"),ch(\"../../force_guide_general_color_b\")); +}" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Cd.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Cd1.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Cd1.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 11.2856 18.5506 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 force_shape_curve_toggle 1 1 "input1" +} +inputs +{ +0 force_shape_curve_toggle 0 1 +} +stat +{ + create 1555685333 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Cd1.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "vector @Cd = 0; +int @type; +vector Cd = set(ch(\"../../force_guide_general_color_r\"),ch(\"../../force_guide_general_color_g\"),ch(\"../../force_guide_general_color_b\")); +vector hsv = rgbtohsv(Cd); +hsv[0] += float(@type) * .03; +@Cd = hsvtorgb(hsv);" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Cd1.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_pscale.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_pscale.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 5.02294 27.4867 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 attr_type1 1 1 "input1" +} +inputs +{ +0 attr_type1 0 1 +} +stat +{ + create 1555685528 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_pscale.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "float @pscale; +@pscale *= .995; " ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_pscale.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_pscale1.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_pscale1.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 9.60434 27.4867 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 attr_type2 1 1 "input1" +} +inputs +{ +0 attr_type2 0 1 +} +stat +{ + create 1555685528 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_pscale1.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "float @pscale; +@pscale *= .99; " ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_pscale1.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_pscale2.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_pscale2.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 14.3038 27.4867 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 attr_type3 1 1 "input1" +} +inputs +{ +0 attr_type3 0 1 +} +stat +{ + create 1555685528 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_pscale2.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "float @pscale; +@pscale *= .985; " ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_pscale2.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_pscale3.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_pscale3.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 18.709 27.4867 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 attr_type4 1 1 "input1" +} +inputs +{ +0 attr_type4 0 1 +} +stat +{ + create 1555685528 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_pscale3.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "float @pscale; +@pscale *= .98; " ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_pscale3.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_copy.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_copy.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -3.35894 -11.7947 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +2 "output1" +} +inputsNamed3 +{ +0 curve_slice_pt 0 1 "input1" +1 foreach_curve_begin 0 1 "input2" +} +inputs +{ +0 curve_slice_pt 0 1 +1 foreach_curve_begin 0 1 +} +stat +{ + create 1555750576 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_copy.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "vector @P; +vector @N; +vector @up; +float @pscale; + +float force_guide_streamers_grid_transform_t = ch(\"../../force_guide_streamers_grid_transform_t\"); + +vector P = primuv(1,\"P\",0,set(force_guide_streamers_grid_transform_t,0)); +vector LYNX_force_N = primuv(1,\"LYNX_force_N\",0,set(force_guide_streamers_grid_transform_t,0,0)); +vector LYNX_force_tan_u = primuv(1,\"LYNX_force_tan_u\",0,set(force_guide_streamers_grid_transform_t,0,0)); +float pscale = detail(1,\"LYNX_force_shape_curve_radius_max\"); + +@P = P; +@N = LYNX_force_N; +@up = LYNX_force_tan_u; +@pscale = pscale; + +" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_copy.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_strength_calculation.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_strength_calculation.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 11.2856 33.8596 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 invoke_curve 1 1 "input1" +} +inputs +{ +0 invoke_curve 0 1 +} +stat +{ + create 1553358167 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_strength_calculation.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "float force_guide_general_strength_max = ch(\"../../force_guide_general_strength_max\"); + +vector @uv; + +float @LYNX_force_shape_curve_global_strength = 1; +float @LYNX_force_shape_curve_along_strength = 1; +float @LYNX_force_shape_curve_suction_strength = 1; +float @LYNX_force_shape_curve_orbit_strength = 1; +float @LYNX_force_shape_curve_direction_strength = 1; + +float force_shape_curve_global_strength = ch(\"../../force_global_strength\"); +float force_global_strength_shape_curve_along_remap = chramp(\"../../force_global_strength_shape_curve_along_remap\",chi(\"../../force_global_strength_shape_curve_along_remap_reverse_toggle\")?1-@uv[0]:@uv[0]); + +@LYNX_force_shape_curve_global_strength *= ch(\"../../force_global_strength\"); +@LYNX_force_shape_curve_along_strength *= clamp(ch(\"../../force_shape_curve_along_strength\") * force_shape_curve_global_strength, -force_guide_general_strength_max, force_guide_general_strength_max) * force_global_strength_shape_curve_along_remap * chramp(\"../../force_shape_curve_along_strength_along_remap\", chi(\"../../force_shape_curve_along_strength_remap_reverse_toggle\")?1-@uv[0]:@uv[0]); +@LYNX_force_shape_curve_suction_strength *= clamp(ch(\"../../force_shape_curve_suction_strength\") * force_shape_curve_global_strength, -force_guide_general_strength_max, force_guide_general_strength_max) * force_global_strength_shape_curve_along_remap * chramp(\"../../force_shape_curve_suction_strength_along_remap\", chi(\"../../force_shape_suction_global_strength_remap_reverse_toggle\")?1-@uv[0]:@uv[0]); +@LYNX_force_shape_curve_orbit_strength *= clamp(ch(\"../../force_shape_curve_orbit_strength\") * force_shape_curve_global_strength, -force_guide_general_strength_max, force_guide_general_strength_max) * force_global_strength_shape_curve_along_remap * chramp(\"../../force_shape_curve_orbit_strength_along_remap\", chi(\"../../force_shape_orbit_global_strength_remap_reverse_toggle\")?1-@uv[0]:@uv[0]); +@LYNX_force_shape_curve_direction_strength *= clamp(ch(\"../../force_shape_curve_direction_strength\") * force_shape_curve_global_strength, -force_guide_general_strength_max, force_guide_general_strength_max) * force_global_strength_shape_curve_along_remap * chramp(\"../../force_shape_curve_direction_strength_along_remap\",chi(\"../../force_shape_direction_global_strength_remap_reverse_toggle\")?1-@uv[0]:@uv[0]);" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_strength_calculation.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Alpha.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Alpha.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -9.05453 13.0422 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 switch_force_shape_curve 1 1 "input1" +} +inputs +{ +0 switch_force_shape_curve 0 1 +} +stat +{ + create 1552047622 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Alpha.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "float @Alpha = 1;" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_Alpha.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/arrow_Shape_gradient.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/arrow_Shape_gradient.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 3.50957 10.1259 +connectornextid 1 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +0 "output1" +} +inputsNamed3 +{ +} +inputs +{ +} +stat +{ + create 1544445805 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/arrow_Shape_gradient.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "detail" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( " +int pr = -1; +int pt_A = -1; +int pt_B = -1; +vector pt_A_P; +vector pt_B_P; + +pt_A_P = set(0,1,0); +pt_B_P = set(0,0,0); +pr = addprim(0,\"polyline\"); +pt_A = addpoint(0,pt_A_P); +pt_B = addpoint(0,pt_B_P); +addvertex(0,pr,pt_A); +addvertex(0,pr,pt_B); +vector pts_B_P[] = {{0.15,-.15,0.0},{-0.15,-.15,0.0},{0.0,-.15,0.15},{0.0,-.15,-.15}}; +foreach(pt_B_P;pts_B_P) +{ + pr = addprim(0,\"polyline\"); + pt_A = addpoint(0,pt_A_P); + pt_B = addpoint(0,pt_A_P + pt_B_P * clamp(1,-1,1)); + addvertex(0,pr,pt_A); + addvertex(0,pr,pt_B); + setpointattrib(0,\"Alpha\",pt_A,1,\"set\"); + setpointattrib(0,\"Alpha\",pt_B,0,\"set\"); +}" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/arrow_Shape_gradient.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/transfer_gradient.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/transfer_gradient.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 4.20224 6.22172 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 scatter1 1 1 "input1" +2 LOCAL_IN_Force_Data 0 1 "input2" +} +inputs +{ +0 scatter1 0 1 +1 LOCAL_IN_Force_Data 0 1 +} +stat +{ + create 1558123193 + modify 1563529766 + author USER@lynx.localdomain + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/transfer_gradient.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "float force_guide_general_strength_max = ch(\"../../force_guide_general_strength_max\"); +float force_shape_gradient_strength = ch(\"../../force_shape_gradient_strength\"); +float force_shape_gradient_rotate = ch(\"../../force_shape_gradient_rotate\"); +vector @P; +float @pscale; +@pscale = detail(1,\"voxel_size\") * 2.0 * clamp(force_shape_gradient_strength,-force_guide_general_strength_max,force_guide_general_strength_max); +vector N = normalize(volumesamplev(1,\"LYNX_vec_gradient\",@P)); +if (force_shape_gradient_rotate!=0){ + matrix force_shape_gradient_rotate_matrix = ident(); + vector force_shape_gradient_rotate_N = normalize(volumegradient(1,\"LYNX_sdf_full\",@P)); + rotate(force_shape_gradient_rotate_matrix,radians(force_shape_gradient_rotate),force_shape_gradient_rotate_N); + N *= force_shape_gradient_rotate_matrix; +} +vector up = cross(N,set(0,1,0)); +@N = up; +@up = N; +" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/transfer_gradient.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat1.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat1.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 26.339 5.95033 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 arrow_Flow_Vector 0 1 "input1" +2 object_merge_IN_Force_Transform_Data 0 1 "input2" +} +inputs +{ +0 arrow_Flow_Vector 0 1 +1 object_merge_IN_Force_Transform_Data 0 1 +} +stat +{ + create 1563440025 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat1.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "detail" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "matrix @force_transform_mat; +@force_transform_mat = detail(1,\"force_transform_mat\");" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat1.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -11.5038 -7.60604 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 force_guide_general_toggle 1 1 "input1" +2 object_merge_IN_Force_Transform_Data1 0 1 "input2" +} +inputs +{ +0 force_guide_general_toggle 0 1 +1 object_merge_IN_Force_Transform_Data1 0 1 +} +stat +{ + create 1563440025 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "detail" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "matrix @force_transform_mat; +@force_transform_mat = detail(1,\"force_transform_mat\");" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat2.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat2.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -4.87648 -16.5965 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 switch_force_shape_curve1 1 1 "input1" +2 object_merge_IN_Force_Transform_Data2 0 1 "input2" +} +inputs +{ +0 switch_force_shape_curve1 0 1 +1 object_merge_IN_Force_Transform_Data2 0 1 +} +stat +{ + create 1563440025 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat2.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "detail" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "matrix @force_transform_mat; +@force_transform_mat = detail(1,\"force_transform_mat\");" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat2.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat3.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat3.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -3.50539 5.89442 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 attribdelete3 1 1 "input1" +2 object_merge_IN_Force_Transform_Data3 0 1 "input2" +} +inputs +{ +0 attribdelete3 0 1 +1 object_merge_IN_Force_Transform_Data3 0 1 +} +stat +{ + create 1563440025 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat3.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "detail" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "matrix @force_transform_mat; +@force_transform_mat = detail(1,\"force_transform_mat\");" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat3.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convertline3.init" +Content-Type: text/plain + +type = convertline +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convertline3.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -5.65937 8.90422 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 object_merge_IN_Transform_Pin_Polygon_Geo 0 1 "input1" +} +inputs +{ +0 object_merge_IN_Transform_Pin_Polygon_Geo 0 1 +} +stat +{ + create 1563459932 + modify 1563469214 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convertline3.parm" +Content-Type: text/plain + +{ +version 0.8 +computelength [ 0 locks=0 ] ( "on" ) +lengthname [ 0 locks=0 ] ( restlength ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/convertline3.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/arrow_Shape_transform_pin_curve_N.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/arrow_Shape_transform_pin_curve_N.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -1.52178 10.6106 +connectornextid 1 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +0 "output1" +} +inputsNamed3 +{ +} +inputs +{ +} +stat +{ + create 1544445805 + modify 1563565012 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/arrow_Shape_transform_pin_curve_N.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "detail" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "float force_guide_general_strength_max = ch(\"../../force_guide_general_strength_max\"); + +int pr = -1; +int pt_A = -1; +int pt_B = -1; +vector pt_A_P; +vector pt_B_P; + +pt_A_P = set(0,force_guide_general_strength_max,0); +pt_B_P = set(0,0,0); +pr = addprim(0,\"polyline\"); +pt_A = addpoint(0,pt_A_P); +pt_B = addpoint(0,pt_B_P); +addvertex(0,pr,pt_A); +addvertex(0,pr,pt_B); +setpointattrib(0,\"Alpha\",pt_A,0,\"set\"); +setpointattrib(0,\"Alpha\",pt_B,1,\"set\"); +" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/arrow_Shape_transform_pin_curve_N.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat4.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat4.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -12.1497 20.5784 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 blast3 1 1 "input1" +2 dop_Force_Transform_Data_Linked 0 1 "input2" +} +inputs +{ +0 blast3 0 1 +1 dop_Force_Transform_Data_Linked 0 1 +} +stat +{ + create 1563440025 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat4.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "detail" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "matrix @force_transform_mat; +@force_transform_mat = detail(1,\"force_transform_mat\");" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Guide/attr_force_transform_mat4.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data.init" +Content-Type: text/plain + +type = sopgeo +matchesdef = 0 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data.def" +Content-Type: text/plain + +comment "" +position 3.64733 2.8597 +connectornextid 2 +flags = lock off model off template on footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 "" "" 1 "input1" +} +inputs +{ +0 "" 0 1 +} +stat +{ + create 1543255759 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data.chn" +Content-Type: text/plain + +{ + channel time { + lefttype = extend + righttype = extend + flags = 0 + start = -0.041666666666666664 + segment { length = 0 expr = $T } + } + channel transformtime { + lefttype = extend + righttype = extend + flags = 0 + start = -0.041666666666666664 + segment { length = 0 expr = $T } + } + channel activation { + lefttype = extend + righttype = extend + default = 1 + flags = 0 + start = -0.041666666666666664 + segment { length = 0 value = 1 1 expr = ch(\"../force_toggle\")&&ch(\"../force_shape_toggle\")&&ch(\"../force_shape_data_isInternal\") } + } + channel letsopsinterpolate { + lefttype = extend + righttype = extend + flags = 0 + start = -0.041666666666666657 + segment { length = 0 expr = ch(\"../force_shape_data_time_interpolate_toggle\") } + } + } + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data.parm" +Content-Type: text/plain + +{ +version 0.8 +parmop_usesoppath [ 0 locks=0 ] ( "initial" ) +usesoppath [ 0 locks=0 ] ( "off" ) +parmop_soppath [ 0 locks=0 ] ( "default" ) +soppath [ 0 locks=0 ] ( "" ) +parmop_primgroup [ 0 locks=0 ] ( "never" ) +primgroup [ 0 locks=0 ] ( "" ) +parmop_time [ 0 locks=0 ] ( "always" ) +time [ 0 locks=0 ] ( [ time 0.83333333333333337 ] ) +parmop_usetransform [ 0 locks=0 ] ( "never" ) +usetransform [ 0 locks=0 ] ( "off" ) +parmop_transformtime [ 0 locks=0 ] ( "default" ) +transformtime [ 0 locks=0 ] ( [ transformtime -0.041666666666666664 ] ) +parmop_letsopsinterpolate [ 0 locks=0 ] ( "initial" ) +letsopsinterpolate [ 8 locks=0 ] ( [ letsopsinterpolate 0 ] ) +parmop_positionpath [ 0 locks=0 ] ( "never" ) +positionpath [ 0 locks=0 ] ( ../Position ) +parmop_numstamps [ 0 locks=0 ] ( "never" ) +numstamps [ 0 locks=0 ] ( 0 ) +defaultparmop [ 0 locks=0 ] ( "initial" ) +sharedata [ 0 locks=0 ] ( "onestep" ) +activation [ 8 locks=0 ] ( [ activation 1 ] ) +activationrules [ 0 locks=0 ] ( 0 ) +group [ 0 locks=0 ] ( * ) +dataname [ 8 locks=0 ] ( LYNX_Force_General_Shape_Data`strreplace(strreplace(strreplace(opfullpath(\".\"),$DOPNET,\"\"),\"/\"+opname(\".\"),\"\"),\"/\",\"_\")` ) +uniquedataname [ 0 locks=0 ] ( "off" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"17.5.229" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/__stickynote2.postitinit" +Content-Type: text/plain + +type = postitnote +matchesdef = 0 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/__stickynote2.postitdef" +Content-Type: text/plain + +text "LYNX_force_N uses parallel transport method from MOPS node" +position 23.8497 9.63518 +size 6.89196 0.512988 +flags = minimize off +stat +{ + create 1553510880 + modify 1556050127 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 1 0.969 0.522 +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/__stickynote3.postitinit" +Content-Type: text/plain + +type = postitnote +matchesdef = 0 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/__stickynote3.postitdef" +Content-Type: text/plain + +text "Strengths calculated here to speed up processing" +position 24.01 4.31617 +size 6.89196 0.603235 +flags = minimize off +stat +{ + create 1553510880 + modify 1556050155 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 1 0.969 0.522 +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/__stickynote1.postitinit" +Content-Type: text/plain + +type = postitnote +matchesdef = 0 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/__stickynote1.postitdef" +Content-Type: text/plain + +text "LYNX_sdf_full must be first Input (Vex Curl Function Only Takes Index 0)" +position -6.31998 -8.02877 +size 7.02216 0.531522 +flags = minimize off +stat +{ + create 1557775187 + modify 1557775219 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 1 0.969 0.522 +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/convertline1.init" +Content-Type: text/plain + +type = convertline +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/convertline1.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -3.38735 7.71529 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 box 0 1 "input1" +} +inputs +{ +0 box 0 1 +} +stat +{ + create 1543256303 + modify 1552383072 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/convertline1.parm" +Content-Type: text/plain + +{ +version 0.8 +computelength [ 0 locks=0 ] ( "off" ) +lengthname [ 0 locks=0 ] ( restlength ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/convertline1.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/polypath1.init" +Content-Type: text/plain + +type = polypath +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/polypath1.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position -3.38735 6.46477 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 blast1 1 1 "input1" +} +inputs +{ +0 blast1 0 1 +} +stat +{ + create 1543256328 + modify 1552383072 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/polypath1.parm" +Content-Type: text/plain + +{ +version 0.8 +connectends [ 0 locks=0 ] ( "on" ) +maxendptdist [ 0 locks=0 ] ( 0.001 ) +connectonlytoends [ 0 locks=0 ] ( "on" ) +closeloops [ 0 locks=0 ] ( "on" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/polypath1.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/attr_LYNX_force_tan_u4.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/attr_LYNX_force_tan_u4.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 13.721 6.81938 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 custom_geo 0 1 "input1" +} +inputs +{ +0 custom_geo 0 1 +} +stat +{ + create 1543256871 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/attr_LYNX_force_tan_u4.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "vector @LYNX_force_tan_u = 0; +@LYNX_force_tan_u = set(0,1,0);" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/attr_LYNX_force_tan_u4.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/write_LYNX_vec_tan_u.init" +Content-Type: text/plain + +type = volumewrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/write_LYNX_vec_tan_u.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 8.33672 -4.85975 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +2 "output1" +} +inputsNamed3 +{ +0 vdb_activate 2 1 "input1" +1 unit_transform_scale 1 1 "input2" +} +inputs +{ +0 vdb_activate 0 1 +1 unit_transform_scale 0 1 +} +stat +{ + create 1543257192 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/write_LYNX_vec_tan_u.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +bindeach [ 0 locks=0 ] ( "off" ) +snippet [ 0 locks=0 ] ( "vector @LYNX_vec_tan_u=0; +int handle = pcopen(1,\"P\",@P,1,1); +@LYNX_vec_tan_u = pcfilter(handle,\"LYNX_force_tan_u\");" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +vex_geometrygenerator [ 0 locks=0 ] ( "off" ) +vdb_signedflood [ 0 locks=0 ] ( "on" ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/write_LYNX_vec_tan_u.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/write_LYNX_sdf_mask.init" +Content-Type: text/plain + +type = volumewrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/write_LYNX_sdf_mask.def" +Content-Type: text/plain + +sopflags sopflags = +comment "Writes \"broken\" sdf > only used for inside/outside testing" +position 4.18319 -4.85975 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on displaycomment on +outputsNamed3 +{ +2 "output1" +} +inputsNamed3 +{ +0 vdb_activate1 2 1 "input1" +1 LYNX_sdf_full 1 1 "input2" +} +inputs +{ +0 vdb_activate1 0 1 +1 LYNX_sdf_full 0 1 +} +stat +{ + create 1543257192 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Shape_Data/write_LYNX_sdf_mask.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +bindeach [ 0 locks=0 ] ( "off" ) +snippet [ 0 locks=0 ] ( "int @LYNX_sdf_mask; +vector @P; + +int force_shape_distance_remap_toggle = chi(\"../../force_shape_distance_remap_toggle\"); +float force_shape_distance_sdf_remap_x = ch(\"../../force_shape_distance_sdf_remap_x\"); +float force_shape_distance_sdf_remap_y = ch(\"../../force_shape_distance_sdf_remap_y\"); + +matrix sweep_transform = maketransform(0,0,set(0,0,0),-chv(\"../../force_shape_sweep_transform_r_\"),set(1,1,1)); +float sweep_angle = radians((180 - ch(\"../../force_shape_sweep_angle\"))); +vector sweep_P = @P * sweep_transform; sweep_P = normalize(set(sweep_P[0],0,sweep_P[2])); +int sweep_bool = (sweep_angle > atan2(dot(set(0,0,-1), sweep_P), dot(set(-1,0,0), sweep_P)))?0:1; + +float force_shape_vol_sdf = volumesample(1,0,@P); +int force_shape_vol_mask = force_shape_distance_remap_toggle?force_shape_vol_sdf 0 = Geometry | 1 = Volume +int wrangle_type = 1; + +`chs(\"../solver_force_general_kernel/snippet\")` + +if (force_binding!=3) +{ + if(force_wind_toggle){ + // Copy of Pop Wind(targetv) Quadratic Calculation + vector LYNX_wind = @LYNX_force - LYNX_force; + force_wind_airresist = force_global_strength_falloff * (force_mass_toggle?force_wind_airresist*(1/mass):force_wind_airresist); + LYNX_wind = LYNX_wind * (1/((force_wind_airresist * @TimeInc * length(LYNX_wind))+1)); + @LYNX_force = LYNX_wind + LYNX_force; + } + else{ + @LYNX_force += force_global_strength_falloff * (force_mass_toggle?LYNX_force*mass:LYNX_force) * @TimeInc; + } +} +else{ + @LYNX_force += force_global_strength_falloff * LYNX_force; +}" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( "`LYNX_force + \" \" +chs(\"../force_vex_binding_export\")`" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 8 locks=0 ] ( 1 ) +bindinputmenu1 [ 0 locks=0 ] ( "none" ) +bindgeoinput1 [ 0 locks=0 ] ( "" ) +binddopinput1 [ 0 locks=0 ] ( "" ) +bindinputmenu2 [ 0 locks=0 ] ( [ bindinputmenu2 2 ] ) +bindgeoinput2 [ 0 locks=0 ] ( "" ) +binddopinput2 [ 0 locks=0 ] ( `chs(\"../force_shape_data_path_objname\")+\"/\"+chs(\"../force_shape_data_path_subpath\")` ) +bindinputmenu3 [ 8 locks=0 ] ( "dopdata" ) +bindgeoinput3 [ 0 locks=0 ] ( `chsop(\"../force_vex_input_3_path_sop\")` ) +binddopinput3 [ 0 locks=0 ] ( `chs(\"../force_transform_data_path_objname\")+\"/\"+chs(\"../force_transform_data_path_subpath\")` ) +bindinputmenu4 [ 0 locks=0 ] ( [ bindinputmenu4 0 ] ) +bindgeoinput4 [ 0 locks=0 ] ( `chsop(\"../force_vex_input_3_path_sop\")` ) +binddopinput4 [ 0 locks=0 ] ( `chs(\"../force_vex_input_3_path_dop\")` ) +usetimestep [ 0 locks=0 ] ( "on" ) +timescale [ 0 locks=0 ] ( 1 ) +binddata1 [ 0 locks=0 ] ( "`ifs (ch(\"../force_binding\")==3, chs(\"../force_binding_field\"),\"vel\")`" ) +bindparm1 [ 0 locks=0 ] ( LYNX_force ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/solver_force_vol.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/solver_force_geo.init" +Content-Type: text/plain + +type = geometrywrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/solver_force_geo.def" +Content-Type: text/plain + +comment "" +position 2.72485 -2.19989 +connectornextid 1 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +0 "output1" +} +inputsNamed3 +{ +} +inputs +{ +} +stat +{ + create 1543259542 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/solver_force_geo.chn" +Content-Type: text/plain + +{ + channel bindinputmenu2 { + lefttype = extend + righttype = extend + default = 2 + flags = 0 + start = -0.041666666666666657 + segment { length = 0 value = 2 2 expr = if(ch(\"../force_shape_toggle\"),2,0) } + } + channel bindinputmenu4 { + lefttype = extend + righttype = extend + flags = 0 + segment { length = 0 expr = ch(\"../force_vex_input_3_type\") } + } + } + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/solver_force_geo.parm" +Content-Type: text/plain + +{ +version 0.8 +folder1 [ 0 locks=0 ] ( 0 0 0 ) +bindgroup [ 8 locks=0 ] ( `chs(\"../force_binding_geometry_group\")` ) +bindgrouptype [ 0 locks=0 ] ( "guess" ) +bindclass [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 100 ) +vex_threadjobsize [ 0 locks=0 ] ( 32 ) +snippet [ 0 locks=0 ] ( "// Bindings +vector @P; +vector @targetv; +float @airresist; +vector @force; +vector @LYNX_force; +float mass = haspointattrib(0,\"mass\")?point(0,\"mass\",@ptnum):1.0; + +// Wrangle Type Overrides > 0 = Geometry | 1 = Volume +int wrangle_type = 0; + +`chs(\"../solver_force_general_kernel/snippet\")` + +if (force_binding!=3) +{ + if(force_wind_toggle){ + // Copy of addwind vop | \"IF\" is \"Inverse\" because solver inverse multiplies it. + force_wind_airresist = force_global_strength_falloff * (force_mass_toggle?force_wind_airresist:force_wind_airresist * mass); + @targetv = ((force_wind_airresist * LYNX_force) + (@airresist * @targetv)) / (force_wind_airresist + @airresist); + @airresist = force_wind_airresist + @airresist; + } + else{ + @force += force_global_strength_falloff * (force_mass_toggle?LYNX_force:LYNX_force * mass); + } +} +else{ + @LYNX_force += force_global_strength_falloff * LYNX_force; +} +" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +bindgeo [ 0 locks=0 ] ( "`ifs (ch(\"../force_binding\")==3, chs(\"../force_binding_geometry\"),\"Geometry\")`" ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( "`ifs (ch(\"../force_binding\")==3,\"LYNX_force\",ifs(ch(\"../force_wind_toggle\")==1,\"targetv airresist\",\"force\")) + \" \" +chs(\"../force_vex_binding_export\")`" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 1 ) +bindfield_num [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +bindinputmenu1 [ 0 locks=0 ] ( "selfraw" ) +bindgeoinput1 [ 0 locks=0 ] ( "" ) +binddopinput1 [ 0 locks=0 ] ( "" ) +bindinputmenu2 [ 8 locks=0 ] ( [ bindinputmenu2 2 ] ) +bindgeoinput2 [ 0 locks=0 ] ( "" ) +binddopinput2 [ 0 locks=0 ] ( `chs(\"../force_shape_data_path_objname\")+\"/\"+chs(\"../force_shape_data_path_subpath\")` ) +bindinputmenu3 [ 8 locks=0 ] ( "dopdata" ) +bindgeoinput3 [ 0 locks=0 ] ( `chsop(\"../force_vex_input_3_path_sop\")` ) +binddopinput3 [ 0 locks=0 ] ( `chs(\"../force_transform_data_path_objname\")+\"/\"+chs(\"../force_transform_data_path_subpath\")` ) +bindinputmenu4 [ 0 locks=0 ] ( [ bindinputmenu4 0 ] ) +bindgeoinput4 [ 0 locks=0 ] ( `chsop(\"../force_vex_input_3_path_sop\")` ) +binddopinput4 [ 0 locks=0 ] ( `chs(\"../force_vex_input_3_path_dop\")` ) +usetimestep [ 0 locks=0 ] ( "on" ) +timescale [ 0 locks=0 ] ( 1 ) +binddata1 [ 8 locks=0 ] ( `chs(\"../force_binding_geometry_attribute\")` ) +bindparm1 [ 0 locks=0 ] ( LYNX_force ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/solver_force_geo.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/solver_force_general_kernel.init" +Content-Type: text/plain + +type = geometrywrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/solver_force_general_kernel.def" +Content-Type: text/plain + +comment "" +position 4.46376 -1.18376 +connectornextid 0 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +} +inputsNamed3 +{ +} +inputs +{ +} +stat +{ + create 1551876069 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/solver_force_general_kernel.parm" +Content-Type: text/plain + +{ +version 0.8 +folder1 [ 0 locks=0 ] ( 0 0 0 ) +bindgroup [ 0 locks=0 ] ( "" ) +bindgrouptype [ 0 locks=0 ] ( "guess" ) +bindclass [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 100 ) +vex_threadjobsize [ 0 locks=0 ] ( 32 ) +snippet [ 0 locks=0 ] ( "// Import Libs for noise functions +#include + +// Force Parameters (Must do this for user vex overides) +int force_binding = chi(\"../force_binding\"); +int force_wind_toggle = chi(\"../force_wind_toggle\"); +float force_wind_airresist = ch(\"../force_wind_airresist\"); +int force_mass_toggle = chi(\"../force_mass_toggle\"); + +string force_seed_attribute = ch(\"../force_seed_attribute\"); +int force_shape_type = chi(\"../force_shape_type\"); + +float force_global_strength = ch(\"../force_global_strength\"); +float force_global_strength_geometry = ch(\"../force_global_strength_geometry\"); +float force_global_strength_volume = ch(\"../force_global_strength_volume\"); +int force_global_strength_rand_toggle = chi(\"../force_global_strength_rand_toggle\"); +float force_global_strength_rand_x = ch(\"../force_global_strength_rand_x\"); +float force_global_strength_rand_y = ch(\"../force_global_strength_rand_y\"); +int force_global_strength_shape_general_falloff_reverse_toggle = chi(\"../force_global_strength_shape_general_falloff_reverse_toggle\"); +int force_global_strength_shape_curve_falloff_reverse_toggle = chi(\"../force_global_strength_shape_curve_falloff_remap_reverse_toggle\"); + +int force_noise_toggle = chi(\"../force_noise_toggle\"); +string force_noise_type = ch(\"../force_noise_type\"); +float force_noise_strength = ch(\"../force_noise_strength\"); + +float force_noise_attenuation = ch(\"../force_noise_attenuation\"); +float force_noise_roughness = ch(\"../force_noise_roughness\"); +int force_noise_turbulence = chi(\"../force_noise_turbulence\"); +int force_noise_mask_toggle = chi(\"../force_noise_mask_toggle\"); +int force_noise_mask_sign_toggle = chi(\"../force_noise_mask_sign_toggle\"); +float force_noise_mask_sign_clamp_min = ch(\"../force_noise_mask_sign_clamp_x\"); +float force_noise_mask_sign_clamp_max = ch(\"../force_noise_mask_sign_clamp_y\"); +int force_noise_sdf_toggle = chi(\"../force_noise_sdf_toggle\"); +float force_noise_sdf_influence = ch(\"../force_noise_sdf_influence\"); +int force_noise_sdf_bounce_toggle = chi(\"../force_noise_sdf_bounce_toggle\"); + +int force_noise_local_toggle = chi(\"../force_noise_local_toggle\"); +vector force_noise_scale_uniform = ch(\"../force_noise_scale_uniform\"); +vector force_noise_scale = chv(\"../force_noise_scale_\"); +vector force_noise_offset = chv(\"../force_noise_offset_\"); + +float force_noise_time = ch(\"../force_noise_time\"); +float force_noise_time_offset = ch(\"../force_noise_time_offset\"); +float force_noise_time_scale = ch(\"../force_noise_time_scale\"); + +int force_flow_toggle = chi(\"../force_flow_toggle\"); +float force_flow_axis_along_strength = ch(\"../force_flow_axis_along_strength\"); +float force_flow_axis_orbit_strength = ch(\"../force_flow_axis_orbit_strength\"); +float force_flow_axis_suction_strength = ch(\"../force_flow_axis_suction_strength\"); +float force_flow_vector_strength = ch(\"../force_flow_vector_strength\"); +vector force_flow_vector_direction = chv(\"../force_flow_vector_direction_\"); +float force_flow_center_suction_strength = ch(\"../force_flow_center_suction_strength\"); + +int force_shape_toggle = chi(\"../force_shape_toggle\"); +int force_shape_invert_toggle = chi(\"../force_shape_invert_toggle\"); +int force_shape_distance_remap_toggle = chi(\"../force_shape_distance_remap_toggle\"); +float force_shape_distance_sdf_remap_x = ch(\"../force_shape_distance_sdf_remap_x\"); +float force_shape_distance_sdf_remap_y = ch(\"../force_shape_distance_sdf_remap_y\"); +float force_shape_distance_curve_remap_x = ch(\"../force_shape_distance_curve_remap_x\"); +float force_shape_distance_curve_remap_y = ch(\"../force_shape_distance_curve_remap_y\"); +int force_shape_gradient_toggle = chi(\"../force_shape_gradient_toggle\"); +float force_shape_gradient_strength = ch(\"../force_shape_gradient_strength\"); +float force_shape_gradient_rotate = ch(\"../force_shape_gradient_rotate\"); +int force_shape_vol_toggle = chi(\"../force_shape_vol_toggle\"); +float force_shape_vol_N_strength = ch(\"../force_shape_vol_N_strength\"); +float force_shape_vol_tan_u_strength = ch(\"../force_shape_vol_tan_u_strength\"); +float force_shape_vol_tan_v_strength = ch(\"../force_shape_vol_tan_v_strength\"); +int force_shape_curve_toggle = chi(\"../force_shape_curve_toggle\"); +int force_shape_curve_interpolate_toggle = chi(\"../force_shape_curve_interpolate_toggle\"); +float force_shape_curve_radius_max = detail(1,\"LYNX_force_shape_curve_radius_max\",0); +int force_shape_curve_along_toggle = chi(\"../force_shape_curve_along_toggle\"); +int force_shape_curve_suction_toggle = chi(\"../force_shape_curve_suction_toggle\"); +int force_shape_curve_orbit_toggle = chi(\"../force_shape_curve_orbit_toggle\"); +int force_shape_curve_direction_toggle = chi(\"../force_shape_curve_direction_toggle\"); +int force_shape_curve_along_strength_falloff_remap_reverse_toggle = chi(\"../force_shape_curve_along_strength_falloff_remap_reverse_toggle\"); +int force_shape_curve_suction_strength_falloff_remap_reverse_toggle = chi(\"../force_shape_curve_suction_strength_falloff_remap_reverse_toggle\"); +int force_shape_curve_orbit_strength_falloff_remap_reverse_toggle = chi(\"../force_shape_curve_orbit_strength_falloff_remap_reverse_toggle\"); +int force_shape_curve_direction_strength_falloff_remap_reverse_toggle = chi(\"../force_shape_curve_direction_strength_falloff_remap_reverse_toggle\"); + +// Force Transform +matrix force_transform_mat = detail(2,\"force_transform_mat\"); +matrix force_transform_rotate_mat = detail(2,\"force_transform_rotate_mat\"); +vector force_P_local = @P * invert(force_transform_mat); + +// Force Global Falloff | Controls Airresist Strength | Early Exit Based On Mask Shape for Faster Performance +float force_global_strength_falloff = 1; +int force_shape_curve_pt = -1; +float force_shape_distance_curve = force_shape_curve_radius_max; +if (force_shape_toggle){ + if (force_shape_type!=5){ + float force_shape_vol_mask = volumesample(1,\"LYNX_sdf_mask\",force_P_local); + float force_shape_distance_sdf_uv = 1; + if (force_shape_vol_mask==1){ + float force_shape_distance = volumesample(1,\"LYNX_sdf_full\",force_P_local); + force_shape_distance_sdf_uv = force_shape_distance_remap_toggle?fit(force_shape_distance,force_shape_distance_sdf_remap_x,force_shape_distance_sdf_remap_y,0,1):fit(force_shape_distance,-.5,0,0,1); + }else{ + if (force_shape_invert_toggle==0){return;} + } + force_global_strength_falloff = chramp(\"../force_global_strength_shape_general_falloff_remap\",force_global_strength_shape_general_falloff_reverse_toggle?1-force_shape_distance_sdf_uv:force_shape_distance_sdf_uv); + } + else{ + float force_shape_curve_pt_LYNX_force_shape_curve_global_strength = 0; + float force_shape_curve_pt_LYNX_force_shape_curve_global_radius = 0; + float force_shape_distance_curve_uv = 1; + int force_shape_curve_pts[]; + if (force_shape_invert_toggle==0){ + force_shape_curve_pts = pcfind(1,\"P\",force_P_local,force_shape_curve_radius_max,1);} + else{ + force_shape_curve_pts = pcfind(1,\"P\",force_P_local,length(getbbox_size(0))+1,1); + } + if (len(force_shape_curve_pts)>0) + { + force_shape_curve_pt = force_shape_curve_pts[0]; + vector force_shape_curve_pt_P = point(1,\"P\",force_shape_curve_pt); + force_shape_curve_pt_LYNX_force_shape_curve_global_strength = point(1,\"LYNX_force_shape_curve_global_strength\",force_shape_curve_pt); + force_shape_curve_pt_LYNX_force_shape_curve_global_radius = point(1,\"LYNX_force_shape_curve_global_radius\",force_shape_curve_pt); + force_shape_distance_curve = distance(force_shape_curve_pt_P,force_P_local); + force_shape_distance_curve_uv = fit(distance(force_shape_curve_pt_P,force_P_local),0,force_shape_curve_pt_LYNX_force_shape_curve_global_radius,0,1); + if (force_shape_invert_toggle==0 && (force_shape_distance_curve>force_shape_curve_pt_LYNX_force_shape_curve_global_radius)){return;} + }else{ + if (force_shape_invert_toggle==0){return;} + } + force_global_strength_falloff = chramp(\"../force_global_strength_shape_curve_falloff_remap\",force_global_strength_shape_curve_falloff_reverse_toggle?1-force_shape_distance_curve_uv:force_shape_distance_curve_uv) * force_shape_curve_pt_LYNX_force_shape_curve_global_strength; + } +} + +// Force Bindings +float seed = haspointattrib(0,force_seed_attribute)?float(point(0,force_seed_attribute,@ptnum)):float(@ptnum); + +// Load Vex Pre Code +if (chi(\"../force_vex_pre_toggle\")) +{ +`chs(\"../force_vex_pre_code\")` +} + +// Force Globals +if (wrangle_type == 0){ + force_global_strength *= force_global_strength_geometry * (force_global_strength_rand_toggle?fit01(rand(seed),force_global_strength_rand_x,force_global_strength_rand_y):1); +} +if (wrangle_type == 1){ + force_global_strength *= force_global_strength_volume; +} + + +// Force Noise +vector force_noise = 0; +if(force_noise_toggle){ + if(force_noise_strength!=0){ + vector4 force_noise_P = @P; + vector4 force_noise_shift = force_noise_offset; + vector4 force_noise_size = 1/(force_noise_scale*force_noise_scale_uniform); + if(force_noise_local_toggle || force_noise_sdf_toggle){force_noise_P = force_P_local;} + + setcomp(force_noise_P,force_noise_time+force_noise_time_offset,3); + setcomp(force_noise_shift,0,3); + setcomp(force_noise_size,force_noise_time_scale,3); + + if (force_noise_type == \"pnoise_4d\"){ + if (force_shape_toggle==1 && force_shape_type != 5 && force_noise_sdf_toggle==1){ + force_noise = vop_curlNoiseVP(force_noise_P, force_noise_size, force_noise_shift, {0,0,0}, \"pnoise\", \"opinput:1\", force_noise_turbulence, force_noise_sdf_bounce_toggle, force_noise_strength*force_noise_scale_uniform, force_noise_roughness, force_noise_attenuation, 1, force_noise_sdf_influence, 0.0001) * .03; + } + else{ + force_noise = vop_curlNoiseVP(force_noise_P, force_noise_size, force_noise_shift, {0,0,0}, \"pnoise\", \"\", force_noise_turbulence, 0, force_noise_strength*force_noise_scale_uniform, force_noise_roughness, force_noise_attenuation, 1, 1, 0.0001); + } + }else{ + force_noise = vop_curlNoiseVV(set(force_noise_P.x,force_noise_P.y,force_noise_P.z), set(force_noise_size.x,force_noise_size.y,force_noise_size.z), force_noise_offset, {0,0,0}, force_noise_type, \"\", force_noise_turbulence, 0, force_noise_strength*force_noise_scale_uniform, force_noise_roughness, force_noise_attenuation, 1, 1, 0.0001); + } + + if(force_noise_local_toggle || force_noise_sdf_toggle){force_noise *= force_transform_rotate_mat;} + + if(force_noise_mask_toggle){ + if (force_noise_mask_sign_toggle){ + force_global_strength *= clamp(length(force_noise) * sign(force_noise),force_noise_mask_sign_clamp_min,force_noise_mask_sign_clamp_max); + } + else{ + force_global_strength *= length(force_noise); + } + force_noise = set(0,0,0); + } + } +} + +// Force Flow +vector force_flow = 0; +if(force_flow_toggle){ + vector force_flow_aim_center = @P - (set(force_transform_mat.wx,force_transform_mat.wy,force_transform_mat.wz)); + vector force_flow_axis; + if(force_flow_axis_along_strength!=0||force_flow_axis_orbit_strength!=0||force_flow_axis_suction_strength!=0){ + vector force_flow_axis_along = normalize(set(force_transform_mat.yx,force_transform_mat.yy,force_transform_mat.yz)); + vector force_flow_axis_orbit = cross(normalize(force_flow_aim_center),force_flow_axis_along); + vector force_flow_axis_suction = cross(force_flow_axis_along,force_flow_axis_orbit); + force_flow_axis = force_flow_axis_along*force_flow_axis_along_strength+force_flow_axis_orbit*force_flow_axis_orbit_strength*length(force_P_local)+force_flow_axis_suction*force_flow_axis_suction_strength; + } + + vector force_flow_vector = force_flow_vector_direction * force_flow_vector_strength; + vector force_flow_center_suction = normalize(force_flow_aim_center) * force_flow_center_suction_strength; + + force_flow = force_flow_axis + force_flow_vector + force_flow_center_suction; +} + +// Force Gradient +vector force_shape = 0; +if(force_shape_gradient_toggle && force_shape_type!=5){ + if(force_shape_gradient_strength!=0){ + vector force_shape_gradient = normalize(volumesamplev(1,\"LYNX_vec_gradient\",force_P_local)); + if (force_shape_gradient_rotate!=0){ + matrix force_shape_gradient_rotate_matrix = ident(); + vector force_shape_gradient_rotate_N = normalize(volumegradient(1,\"LYNX_sdf_full\",force_P_local)); + rotate(force_shape_gradient_rotate_matrix,radians(force_shape_gradient_rotate),force_shape_gradient_rotate_N); + force_shape_gradient *= force_shape_gradient_rotate_matrix; + } + force_shape += (force_shape_gradient*force_shape_gradient_strength) * force_transform_rotate_mat; + } +} + +// Force Volume +if(force_shape_vol_toggle && force_shape_type!=5){ + if(force_shape_vol_N_strength!=0||force_shape_vol_tan_u_strength!=0||force_shape_vol_tan_v_strength!=0){ + vector force_shape_vol_N = normalize(volumegradient(1,\"LYNX_sdf_full\",force_P_local)); + vector force_shape_vol_tan_u = normalize(volumesamplev(1,\"LYNX_vec_tan_u\",force_P_local)); + vector force_shape_vol_tan_v = cross(force_shape_vol_N,force_shape_vol_tan_u); + force_shape += (force_shape_vol_N*force_shape_vol_N_strength+force_shape_vol_tan_u*force_shape_vol_tan_u_strength+force_shape_vol_tan_v*force_shape_vol_tan_v_strength) * force_transform_rotate_mat; + } +} + +// Force Curve > Needs Code Refactoring +if(force_shape_curve_toggle && force_shape_type==5){ + if (force_shape_curve_pt!=-1) + { + float force_shape_curve_values_float[]; + float force_shape_curve_value_float; + vector force_shape_curve_values_vector[]; + vector force_shape_curve_value_vector; + string force_shape_curve_attr_float[] = { + \"LYNX_force_shape_curve_along_strength\",\"LYNX_force_shape_curve_along_radius\", + \"LYNX_force_shape_curve_suction_strength\",\"LYNX_force_shape_curve_suction_radius\", + \"LYNX_force_shape_curve_orbit_strength\",\"LYNX_force_shape_curve_orbit_radius\", + \"LYNX_force_shape_curve_direction_strength\",\"LYNX_force_shape_curve_direction_radius\" + }; + string force_shape_curve_attr_vector[] = {\"P\",\"LYNX_force_tan_u\",\"LYNX_force_N\",\"LYNX_force_shape_curve_direction\"}; + if(force_shape_curve_interpolate_toggle==0){ + // Point Value + foreach(string attr;force_shape_curve_attr_float){ + force_shape_curve_value_float = point(1,attr,force_shape_curve_pt); + append(force_shape_curve_values_float,force_shape_curve_value_float); + } + foreach(string attr;force_shape_curve_attr_vector){ + force_shape_curve_value_vector = point(1,attr,force_shape_curve_pt); + append(force_shape_curve_values_vector,force_shape_curve_value_vector); + } + }else{ + // Average Neighbour Values + int force_shape_curve_pt_n[] = neighbours(1,force_shape_curve_pt); + foreach(string attr;force_shape_curve_attr_float){ + force_shape_curve_value_float = point(1,attr,force_shape_curve_pt); + foreach(int n;force_shape_curve_pt_n){ + force_shape_curve_value_float+=point(1,attr,n); + } + force_shape_curve_value_float=force_shape_curve_value_float/(len(force_shape_curve_pt_n)+1); + append(force_shape_curve_values_float,force_shape_curve_value_float); + } + foreach(string attr;force_shape_curve_attr_vector){ + force_shape_curve_value_vector = point(1,attr,force_shape_curve_pt); + foreach(int n;force_shape_curve_pt_n){ + force_shape_curve_value_vector+=point(1,attr,n); + } + force_shape_curve_value_vector=force_shape_curve_value_vector/(len(force_shape_curve_pt_n)+1); + append(force_shape_curve_values_vector,force_shape_curve_value_vector); + } + } + float force_shape_curve_along_strength_falloff_uv = fit(force_shape_distance_curve,0,force_shape_curve_values_float[1],0,1); + float force_shape_curve_suction_strength_falloff_uv = fit(force_shape_distance_curve,0,force_shape_curve_values_float[3],0,1); + float force_shape_curve_orbit_strength_falloff_uv = fit(force_shape_distance_curve,0,force_shape_curve_values_float[5],0,1); + float force_shape_curve_direction_strength_falloff_uv = fit(force_shape_distance_curve,0,force_shape_curve_values_float[7],0,1); + vector force_shape_curve_along = force_shape_curve_along_toggle==0?set(0,0,0):normalize(force_shape_curve_values_vector[1]) * force_shape_curve_values_float[0] * chramp(\"../force_shape_curve_along_strength_falloff_remap\",force_shape_curve_along_strength_falloff_remap_reverse_toggle?1-force_shape_curve_along_strength_falloff_uv:force_shape_curve_along_strength_falloff_uv); + vector force_shape_curve_suction = force_shape_curve_suction_toggle==0?set(0,0,0):normalize(force_P_local-force_shape_curve_values_vector[0]) * force_shape_curve_values_float[2] * chramp(\"../force_shape_curve_suction_strength_falloff_remap\",force_shape_curve_suction_strength_falloff_remap_reverse_toggle?1-force_shape_curve_suction_strength_falloff_uv:force_shape_curve_suction_strength_falloff_uv); + vector force_shape_curve_orbit = force_shape_curve_orbit_toggle==0?set(0,0,0):cross(normalize(force_P_local-force_shape_curve_values_vector[0]),normalize(force_shape_curve_values_vector[1])) * force_shape_curve_values_float[4] * chramp(\"../force_shape_curve_orbit_strength_falloff_remap\",force_shape_curve_orbit_strength_falloff_remap_reverse_toggle?1-force_shape_curve_orbit_strength_falloff_uv:force_shape_curve_orbit_strength_falloff_uv); + vector force_shape_curve_direction = force_shape_curve_direction_toggle==0?set(0,0,0):normalize(force_shape_curve_values_vector[3]) * force_shape_curve_values_float[6] * chramp(\"../force_shape_curve_direction_strength_falloff_remap\",force_shape_curve_direction_strength_falloff_remap_reverse_toggle?1-force_shape_curve_direction_strength_falloff_uv:force_shape_curve_direction_strength_falloff_uv); + if (force_shape_invert_toggle==0){ + force_shape_curve_along *= force_shape_distance_curve>force_shape_curve_values_float[1]?0:1; + force_shape_curve_suction *= force_shape_distance_curve>force_shape_curve_values_float[3]?0:1; + force_shape_curve_orbit *= force_shape_distance_curve>force_shape_curve_values_float[5]?0:1; + force_shape_curve_direction *= force_shape_distance_curve>force_shape_curve_values_float[7]?0:1; + } + force_shape += (force_shape_curve_along + force_shape_curve_suction + force_shape_curve_orbit + force_shape_curve_direction) * force_transform_rotate_mat; + } +} + +// Force Mode +vector LYNX_force = force_global_strength * (force_noise + force_flow + force_shape); + +// Load Vex Post Code +if (chi(\"../force_vex_post_toggle\")) +{ +`chs(\"../force_vex_post_code\")` +}" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +bindgeo [ 0 locks=0 ] ( Geometry ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +bindfield_num [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +bindinputmenu1 [ 0 locks=0 ] ( "none" ) +bindgeoinput1 [ 0 locks=0 ] ( "" ) +binddopinput1 [ 0 locks=0 ] ( "" ) +bindinputmenu2 [ 0 locks=0 ] ( "none" ) +bindgeoinput2 [ 0 locks=0 ] ( "" ) +binddopinput2 [ 0 locks=0 ] ( "" ) +bindinputmenu3 [ 0 locks=0 ] ( "none" ) +bindgeoinput3 [ 0 locks=0 ] ( "" ) +binddopinput3 [ 0 locks=0 ] ( "" ) +bindinputmenu4 [ 0 locks=0 ] ( "none" ) +bindgeoinput4 [ 0 locks=0 ] ( "" ) +binddopinput4 [ 0 locks=0 ] ( "" ) +usetimestep [ 0 locks=0 ] ( "on" ) +timescale [ 8 locks=0 ] ( 1 ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/solver_force_general_kernel.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/set_network_type_to_solver.init" +Content-Type: text/plain + +type = geometryvop +matchesdef = 0 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/set_network_type_to_solver.def" +Content-Type: text/plain + +comment "" +position 1.54457 5.00155 +connectornextid 0 +flags = lock off model off template off footprint off xray off bypass on display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +} +inputs +{ +} +stat +{ + create 1552503036 + modify 1563529767 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/set_network_type_to_solver.spareparmdef" +Content-Type: text/plain + + parm { + name "bindgroup" + baseparm + label "Group" + export none + } + parm { + name "bindgrouptype" + baseparm + label "Group Type" + export none + } + parm { + name "bindclass" + baseparm + label "Run Over" + export none + } + parm { + name "vex_numcount" + baseparm + label "Number Count" + export none + } + parm { + name "vex_threadjobsize" + baseparm + label "Thread Job Size" + export none + } + group { + name "stdswitcher5" + label "Vex Setup" + + parm { + name "vexsrc" + baseparm + label "Vex Source" + export all + } + parm { + name "vexshoppath" + baseparm + label "Shop Path" + export all + } + parm { + name "vexscript" + baseparm + label "Script" + export none + } + parm { + name "vexclear" + baseparm + label "Re-load VEX Functions" + export none + } + parm { + name "vop_compiler" + baseparm + label "Compiler" + export none + } + parm { + name "vop_forcecompile" + baseparm + label "Force Compile" + export none + } + parm { + name "vex_cwdpath" + baseparm + label "Evaluation Node Path" + export none + } + parm { + name "vex_outputmask" + baseparm + label "Export Parameters" + export none + } + parm { + name "vex_multithread" + baseparm + label "Enable Multithreading" + export none + } + } + + group { + name "stdswitcher5_1" + label "Data Bindings" + + parm { + name "bindgeo" + baseparm + label "Geometry" + export none + } + parm { + name "autobind" + baseparm + label "Autobind by Name" + export none + } + multiparm { + name "bindings" + label "Attribute Bindings" + baseparm + default 0 + parmtag { "multistartoffset" "1" } + + parm { + name "binddata#" + baseparm + label "Attribute Name" + export none + } + parm { + name "bindparm#" + baseparm + label "VEX Parameter" + export none + } + } + + multiparm { + name "bindfield_num" + label "Field Bindings" + baseparm + default 0 + parmtag { "multistartoffset" "1" } + + parm { + name "bindfield_data#" + baseparm + label "Field Name" + export none + } + parm { + name "bindfield_parm#" + baseparm + label "VEX Parameter" + export none + } + } + + parm { + name "groupautobind" + baseparm + label "Autobind Groups by Name" + export none + } + multiparm { + name "groupbindings" + label "Group Bindings" + baseparm + default 0 + parmtag { "multistartoffset" "1" } + + parm { + name "bindgroupname#" + baseparm + label "Group Name" + export none + } + parm { + name "bindgroupparm#" + baseparm + label "VEX Parameter" + export none + } + } + + parm { + name "vex_updatenmls" + baseparm + label "Update Normals If Displaced" + export none + } + } + + group { + name "stdswitcher5_2" + label "Inputs" + + parm { + name "bindinputmenu1" + baseparm + label "Input 1" + export none + } + parm { + name "bindgeoinput1" + baseparm + label "SOP Path" + export none + } + parm { + name "binddopinput1" + baseparm + label "DOP Data" + export none + } + parm { + name "bindinputmenu2" + baseparm + label "Input 2" + export none + } + parm { + name "bindgeoinput2" + baseparm + label "SOP Path" + export none + } + parm { + name "binddopinput2" + baseparm + label "DOP Data" + export none + } + parm { + name "bindinputmenu3" + baseparm + label "Input 3" + export none + } + parm { + name "bindgeoinput3" + baseparm + label "SOP Path" + export none + } + parm { + name "binddopinput3" + baseparm + label "DOP Data" + export none + } + parm { + name "bindinputmenu4" + baseparm + label "Input 4" + export none + } + parm { + name "bindgeoinput4" + baseparm + label "SOP Path" + export none + } + parm { + name "binddopinput4" + baseparm + label "DOP Data" + export none + } + } + + group { + name "stdswitcher5_3" + label "Solver" + + parm { + name "usetimestep" + baseparm + label "Use Timestep" + export none + } + parm { + name "timescale" + baseparm + label "Time Scale" + export none + } + parm { + name "addaffectors" + baseparm + label "Make Objects Mutual Affectors" + export none + } + parm { + name "group" + baseparm + label "Group" + export none + } + parm { + name "dataname" + baseparm + label "Data Name" + export none + } + parm { + name "uniquedataname" + baseparm + label "Unique Data Name" + export none + } + parm { + name "solverperobject" + baseparm + label "Solver Per Object" + export none + } + } + + parm { + name "ptnum" + label "Point Number" + type integer + invisible + default { "0" } + range { 0 10 } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "vtxnum" + label "Vertex Number" + type integer + invisible + default { "0" } + range { 0 10 } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "primnum" + label "Primitive Number" + type integer + invisible + default { "0" } + range { 0 10 } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "id" + label "Id" + type integer + invisible + default { "-1" } + range { 0 10 } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "numpt" + label "Number of Points" + type integer + invisible + default { "0" } + range { 0 10 } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "numvtx" + label "Number of Vertices" + type integer + invisible + default { "0" } + range { 0 10 } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "numprim" + label "Number of Prims" + type integer + invisible + default { "0" } + range { 0 10 } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "Time" + label "Time" + type float + invisible + default { "0" } + range { 0 1 } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "TimeInc" + label "Time Inc" + type float + invisible + default { "0" } + range { 0 1 } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "Frame" + label "Frame" + type float + invisible + default { "0" } + range { 0 1 } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "life" + label "Life" + type float + invisible + default { "0" } + range { 0 1 } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "age" + label "Age" + type float + invisible + default { "0" } + range { 0 1 } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "OpInput2" + label "Second Input" + type string + invisible + default { "" } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "OpInput3" + label "Third Input" + type string + invisible + default { "" } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "OpInput4" + label "Fourth Input" + type string + invisible + default { "" } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "OpInput1" + label "First Input" + type string + invisible + default { "" } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "uv" + label "UV" + type float + invisible + size 3 + default { "0" "0" "0" } + range { 0 10 } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "P" + label "P" + type float + invisible + size 3 + default { "0" "0" "0" } + range { 0 10 } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "v" + label "Velocity" + type float + invisible + size 3 + default { "0" "0" "0" } + range { 0 10 } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "force" + label "Force" + type float + invisible + size 3 + default { "0" "0" "0" } + range { 0 10 } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "Cd" + label "Cd" + type float + invisible + size 3 + default { "1" "1" "1" } + range { 0 10 } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + parm { + name "N" + label "N" + type float + invisible + size 3 + default { "0" "0" "0" } + range { 0 10 } + parmtag { "parmvop" "1" } + parmtag { "shaderparmcontexts" "cvex" } + } + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/set_network_type_to_solver.parm" +Content-Type: text/plain + +{ +version 0.8 +bindgroup [ 0 locks=0 ] ( "" ) +bindgrouptype [ 0 locks=0 ] ( "guess" ) +bindclass [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 100 ) +vex_threadjobsize [ 0 locks=0 ] ( 32 ) +stdswitcher [ 0 locks=0 ] ( 0 0 0 0 ) +vexsrc [ 0 locks=0 ] ( "myself" ) +vexshoppath [ 0 locks=0 ] ( "" ) +vexscript [ 0 locks=0 ] ( "" ) +vexclear [ 0 locks=0 ] ( 0 ) +vop_compiler [ 0 locks=0 ] ( "vcc -q $VOP_INCLUDEPATH -o $VOP_OBJECTFILE -e $VOP_ERRORFILE $VOP_SOURCEFILE" ) +vop_forcecompile [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( "" ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_multithread [ 0 locks=0 ] ( "on" ) +bindgeo [ 0 locks=0 ] ( Geometry ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +bindfield_num [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +bindinputmenu1 [ 0 locks=0 ] ( "none" ) +bindgeoinput1 [ 0 locks=0 ] ( "" ) +binddopinput1 [ 0 locks=0 ] ( "" ) +bindinputmenu2 [ 0 locks=0 ] ( "none" ) +bindgeoinput2 [ 0 locks=0 ] ( "" ) +binddopinput2 [ 0 locks=0 ] ( "" ) +bindinputmenu3 [ 0 locks=0 ] ( "none" ) +bindgeoinput3 [ 0 locks=0 ] ( "" ) +binddopinput3 [ 0 locks=0 ] ( "" ) +bindinputmenu4 [ 0 locks=0 ] ( "none" ) +bindgeoinput4 [ 0 locks=0 ] ( "" ) +binddopinput4 [ 0 locks=0 ] ( "" ) +usetimestep [ 0 locks=0 ] ( "on" ) +timescale [ 0 locks=0 ] ( 1 ) +addaffectors [ 0 locks=0 ] ( "on" ) +group [ 0 locks=0 ] ( * ) +dataname [ 0 locks=0 ] ( $OS ) +uniquedataname [ 0 locks=0 ] ( "on" ) +solverperobject [ 0 locks=0 ] ( "off" ) +stdswitcher5 [ 0 locks=0 ] ( 0 0 0 0 ) +ptnum [ 0 locks=0 ] ( 0 ) +vtxnum [ 0 locks=0 ] ( 0 ) +primnum [ 0 locks=0 ] ( 0 ) +id [ 0 locks=0 ] ( -1 ) +numpt [ 0 locks=0 ] ( 0 ) +numvtx [ 0 locks=0 ] ( 0 ) +numprim [ 0 locks=0 ] ( 0 ) +Time [ 0 locks=0 ] ( 0 ) +TimeInc [ 0 locks=0 ] ( 0 ) +Frame [ 0 locks=0 ] ( 0 ) +life [ 0 locks=0 ] ( 0 ) +age [ 0 locks=0 ] ( 0 ) +OpInput2 [ 0 locks=0 ] ( "" ) +OpInput3 [ 0 locks=0 ] ( "" ) +OpInput4 [ 0 locks=0 ] ( "" ) +OpInput1 [ 0 locks=0 ] ( "" ) +uv [ 0 locks=0 ] ( 0 0 0 ) +P [ 0 locks=0 ] ( 0 0 0 ) +v [ 0 locks=0 ] ( 0 0 0 ) +force [ 0 locks=0 ] ( 0 0 0 ) +Cd [ 0 locks=0 ] ( 1 1 1 ) +N [ 0 locks=0 ] ( 0 0 0 ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/set_network_type_to_solver.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"17.5.229" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/set_network_type_to_solver/geometryvopglobal1.init" +Content-Type: text/plain + +type = geometryvopglobal::2.0 +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/set_network_type_to_solver/geometryvopglobal1.def" +Content-Type: text/plain + +comment "" +position 1.90579 1.97631 +connectornextid 0 +flags = lock off model off template off footprint off xray off bypass off display on render on highlight off unload off savedata off compress on colordefault on exposed on lowdetail off mediumdetail off highdetail on material off +outputsNamed3 +{ +} +inputsNamed3 +{ +} +inputs +{ +} +stat +{ + create 1552503036 + modify 1552503041 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/set_network_type_to_solver/geometryvopglobal1.parm" +Content-Type: text/plain + +{ +version 0.8 +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/set_network_type_to_solver/geometryvopglobal1.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/set_network_type_to_solver/geometryvopoutput1.init" +Content-Type: text/plain + +type = geometryvopoutput +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/set_network_type_to_solver/geometryvopoutput1.def" +Content-Type: text/plain + +comment "" +position 6.64696 3.67056 +connectornextid 5 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on lowdetail off mediumdetail off highdetail on material off +outputsNamed3 +{ +} +inputsNamed3 +{ +0 "" "" 1 "P" +1 "" "" 1 "v" +2 "" "" 1 "force" +3 "" "" 1 "Cd" +4 "" "" 1 "N" +} +inputs +{ +0 "" 0 1 +1 "" 0 1 +2 "" 0 1 +3 "" 0 1 +4 "" 0 1 +} +stat +{ + create 1552503036 + modify 1552503037 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/set_network_type_to_solver/geometryvopoutput1.parm" +Content-Type: text/plain + +{ +version 0.8 +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/set_network_type_to_solver/geometryvopoutput1.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data.init" +Content-Type: text/plain + +type = sopgeo +matchesdef = 0 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data.def" +Content-Type: text/plain + +comment "" +position 2.61858 4.35064 +connectornextid 2 +flags = lock off model off template on footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 "" "" 1 "input1" +} +inputs +{ +0 "" 0 1 +} +stat +{ + create 1543255759 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data.chn" +Content-Type: text/plain + +{ + channel time { + lefttype = extend + righttype = extend + flags = 0 + start = -0.041666666666666664 + segment { length = 0 expr = $T } + } + channel transformtime { + lefttype = extend + righttype = extend + flags = 0 + start = -0.041666666666666664 + segment { length = 0 expr = $T } + } + channel letsopsinterpolate { + lefttype = extend + righttype = extend + default = 1 + flags = 0 + segment { length = 0 value = 1 1 expr = ch(\"../force_transform_data_time_interpolate_toggle\") } + } + } + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data.parm" +Content-Type: text/plain + +{ +version 0.8 +parmop_usesoppath [ 0 locks=0 ] ( "initial" ) +usesoppath [ 0 locks=0 ] ( "off" ) +parmop_soppath [ 0 locks=0 ] ( "default" ) +soppath [ 0 locks=0 ] ( "" ) +parmop_primgroup [ 0 locks=0 ] ( "never" ) +primgroup [ 0 locks=0 ] ( "" ) +parmop_time [ 0 locks=0 ] ( "always" ) +time [ 0 locks=0 ] ( [ time 0.83333333333333337 ] ) +parmop_usetransform [ 0 locks=0 ] ( "never" ) +usetransform [ 0 locks=0 ] ( "off" ) +parmop_transformtime [ 0 locks=0 ] ( "default" ) +transformtime [ 0 locks=0 ] ( [ transformtime -0.041666666666666664 ] ) +parmop_letsopsinterpolate [ 0 locks=0 ] ( "initial" ) +letsopsinterpolate [ 8 locks=0 ] ( [ letsopsinterpolate 1 ] ) +parmop_positionpath [ 0 locks=0 ] ( "never" ) +positionpath [ 0 locks=0 ] ( ../Position ) +parmop_numstamps [ 0 locks=0 ] ( "never" ) +numstamps [ 0 locks=0 ] ( 0 ) +defaultparmop [ 0 locks=0 ] ( "initial" ) +sharedata [ 0 locks=0 ] ( "onestep" ) +activation [ 0 locks=0 ] ( 1 ) +activationrules [ 0 locks=0 ] ( 0 ) +group [ 0 locks=0 ] ( * ) +dataname [ 8 locks=0 ] ( LYNX_Force_General_Transform_Data`strreplace(strreplace(strreplace(opfullpath(\".\"),$DOPNET,\"\"),\"/\"+opname(\".\"),\"\"),\"/\",\"_\")` ) +uniquedataname [ 0 locks=0 ] ( "off" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"17.5.229" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/polypath2.init" +Content-Type: text/plain + +type = polypath +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/polypath2.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 26.5319 4.34514 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 convert1 1 1 "input1" +} +inputs +{ +0 convert1 0 1 +} +stat +{ + create 1553200661 + modify 1563478902 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/polypath2.parm" +Content-Type: text/plain + +{ +version 0.8 +connectends [ 0 locks=0 ] ( "on" ) +maxendptdist [ 0 locks=0 ] ( 0.0001 ) +connectonlytoends [ 0 locks=0 ] ( "on" ) +closeloops [ 0 locks=0 ] ( "off" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/polypath2.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/attr_LYNX_force_tan_u_invert.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/attr_LYNX_force_tan_u_invert.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 26.5289 -0.853213 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 attr_LYNX_force_tan_u 1 1 "input1" +} +inputs +{ +0 attr_LYNX_force_tan_u 0 1 +} +stat +{ + create 1555773969 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/attr_LYNX_force_tan_u_invert.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "point" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "vector @LYNX_force_tan_u; +@LYNX_force_tan_u *= -1;" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/attr_LYNX_force_tan_u_invert.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/attr_force_transform_pin_mat.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/attr_force_transform_pin_mat.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 26.5289 -10.4227 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 "" "" 1 "input1" +2 carve1 1 1 "input2" +} +inputs +{ +0 "" 0 1 +1 carve1 0 1 +} +stat +{ + create 1563442922 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/attr_force_transform_pin_mat.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "detail" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "matrix @force_transform_pin_mat; + +vector P = point(1,\"P\",0); +vector LYNX_force_N = normalize(point(1,\"LYNX_force_N\",0)); +vector LYNX_force_tan_u = normalize(point(1,\"LYNX_force_tan_u\",0)); + +@force_transform_pin_mat = maketransform(LYNX_force_tan_u,LYNX_force_N,P);" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/attr_force_transform_pin_mat.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/attr_force_transform_mat_manipulate_by_force_transform_pin_mat.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/attr_force_transform_mat_manipulate_by_force_transform_pin_mat.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 11.6764 -12.443 +connectornextid 3 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 merge1 1 1 "input1" +2 switch_pin_type 2 1 "input2" +} +inputs +{ +0 merge1 0 1 +1 switch_pin_type 0 1 +} +stat +{ + create 1563442922 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/attr_force_transform_mat_manipulate_by_force_transform_pin_mat.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "detail" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "matrix @force_transform_mat; +matrix @force_transform_rotate_mat; + +matrix force_transform_pin_mat = detail(1,\"force_transform_pin_mat\"); +@force_transform_mat *= force_transform_pin_mat; + +matrix force_transform_pin_rotate_mat = force_transform_pin_mat; +force_transform_pin_rotate_mat.wx = 0; +force_transform_pin_rotate_mat.wy = 0; +force_transform_pin_rotate_mat.wz = 0; +@force_transform_rotate_mat *= force_transform_pin_rotate_mat;" ) +exportlist [ 0 locks=0 ] ( * ) +vex_strict [ 0 locks=0 ] ( "off" ) +autobind [ 0 locks=0 ] ( "on" ) +bindings [ 0 locks=0 ] ( 0 ) +groupautobind [ 0 locks=0 ] ( "on" ) +groupbindings [ 0 locks=0 ] ( 0 ) +vex_cwdpath [ 0 locks=0 ] ( . ) +vex_outputmask [ 0 locks=0 ] ( * ) +vex_updatenmls [ 0 locks=0 ] ( "off" ) +vex_matchattrib [ 0 locks=0 ] ( id ) +vex_inplace [ 0 locks=0 ] ( "off" ) +vex_selectiongroup [ 0 locks=0 ] ( "" ) +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/attr_force_transform_mat_manipulate_by_force_transform_pin_mat.userdata" +Content-Type: text/plain + +{ + "___Version___":{ + "type":"string", + "value":"" + } +} + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/attr_LYNX_force_N.init" +Content-Type: text/plain + +type = attribwrangle +matchesdef = 1 + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/attr_LYNX_force_N.def" +Content-Type: text/plain + +sopflags sopflags = +comment "" +position 27.3726 -1.70576 +connectornextid 2 +flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on +outputsNamed3 +{ +1 "output1" +} +inputsNamed3 +{ +0 attr_LYNX_force_tan_u_invert 1 1 "input1" +} +inputs +{ +0 attr_LYNX_force_tan_u_invert 0 1 +} +stat +{ + create 1553362865 + modify 1563529766 + author LYNX@LucaScheller + access 0777 +} +color UT_Color RGB 0.8 0.8 0.8 +delscript "" +exprlanguage hscript +end + +--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY +Content-Disposition: attachment; filename="hdaroot/Force_Transform_Data/attr_LYNX_force_N.parm" +Content-Type: text/plain + +{ +version 0.8 +folder0 [ 0 locks=0 ] ( 0 0 ) +group [ 0 locks=0 ] ( "" ) +grouptype [ 0 locks=0 ] ( "guess" ) +class [ 0 locks=0 ] ( "primitive" ) +vex_numcount [ 0 locks=0 ] ( 10 ) +vex_threadjobsize [ 0 locks=0 ] ( 1024 ) +snippet [ 0 locks=0 ] ( "int prim_pts[] = primpoints(0, @primnum); +int prim_pts_count = len(prim_pts); + +vector tan_u_list_first = normalize(point(0, \"P\", prim_pts[1]) - point(0, \"P\", prim_pts[0])); +vector N_first = normalize(haspointattrib(0,\"N\")?point(0,\"N\",prim_pts[0]):set(0,1,0)); +N_first = normalize(cross(tan_u_list_first, cross(N_first, tan_u_list_first))); + +// forward declarations +vector tan_v_list; +vector tan_u_list[]; +vector N_list[]; +float theta = 0; + +// fill arrays +for (int i = 0; i0):\n return str(object.options().field(\"objid\")) +\"|\"+ object.name() +\"|\"+ \"Solver/\" + subdata.keys()[0]+\"|\"+n_p_force_transform_data_path_name\n\nreturn \"False\"" python ] } + hidewhen "{ debug == 0 }" + } + parm { + name "force_transform_data_path_objid" + label "force_transform_data_path_objid" + type string + default { [ "n = hou.pwd()\nn_p_force_transform_data_path_calculation = n.parm(\"force_transform_data_path_calculation\").eval()\nif (n_p_force_transform_data_path_calculation == \"False\"): return \"False\"\nreturn n_p_force_transform_data_path_calculation.split(\"|\")[0]" python ] } + hidewhen "{ debug == 0 }" + } + parm { + name "force_transform_data_path_objname" + label "force_transform_data_path_objname" + type string + default { [ "n = hou.pwd()\nn_p_force_transform_data_path_calculation = n.parm(\"force_transform_data_path_calculation\").eval()\nif (n_p_force_transform_data_path_calculation == \"False\"): return \"False\"\nreturn n_p_force_transform_data_path_calculation.split(\"|\")[1]" python ] } + hidewhen "{ debug == 0 }" + } + parm { + name "force_transform_data_path_subpath" + label "force_transform_data_path_subpath" + type string + default { [ "n = hou.pwd()\nn_p_force_transform_data_path_calculation = n.parm(\"force_transform_data_path_calculation\").eval()\nif (n_p_force_transform_data_path_calculation == \"False\"): return \"False\"\nreturn n_p_force_transform_data_path_calculation.split(\"|\")[2]" python ] } + hidewhen "{ debug == 0 }" + } + parm { + name "force_transform_data_path_name" + label "force_transform_data_path_name" + type string + default { [ "n = hou.pwd()\nn_p_force_transform_data_path_calculation = n.parm(\"force_transform_data_path_calculation\").eval()\nif (n_p_force_transform_data_path_calculation == \"False\"): return \"False\"\nreturn n_p_force_transform_data_path_calculation.split(\"|\")[3]" python ] } + hidewhen "{ debug == 0 }" + } + } + + } + + group { + name "force_transform_folder_1" + label "Shape" + + parm { + name "force_shape_toggle" + label "Enable" + type toggle + default { "on" } + parmtag { "script_callback" "" } + parmtag { "script_callback_language" "python" } + } + parm { + name "force_shape_type" + label "Shape" + type integer + joinnext + default { "1" } + hidewhen "{ force_shape_toggle == 0 } { force_shape_data_isInternal == 0 }" + menu { + "box" "Box" + "sphere" "Sphere" + "tube" "Tube" + "torus" "Torus" + "custom" "Custom" + "curve" "Curve" + } + range { 0 10 } + } + parm { + name "force_shape_custom_geo_path" + label "force_shape_custom_geo_path" + type oppath + nolabel + joinnext + default { "" } + hidewhen "{ force_shape_type != 4 } { force_shape_toggle == 0 } { force_shape_data_isInternal == 0 }" + parmtag { "opfilter" "!!SOP!!" } + parmtag { "oprelative" "." } + parmtag { "script_callback" "hou.phm().force_shape_geo_path_update()" } + parmtag { "script_callback_language" "python" } + } + parm { + name "force_shape_curve_geo_path" + label "force_shape_custom_geo_path" + type oppath + nolabel + default { "" } + hidewhen "{ force_shape_type != 5 } { force_shape_toggle == 0 } { force_shape_data_isInternal == 0 }" + parmtag { "opfilter" "!!SOP!!" } + parmtag { "oprelative" "." } + parmtag { "script_callback" "" } + parmtag { "script_callback_language" "python" } + } + groupsimple { + name "force_shape_settings_folder" + label "Shape Settings" + hidewhen "{ force_shape_toggle == 0 }" + + parm { + name "force_shape_vdb_size" + label "Vdb Size" + type float + default { "0.01" } + help "Lower this value if stepping occurs." + hidewhen "{ force_shape_toggle == 0 } { force_shape_type == 5 } { force_shape_data_isInternal == 0 }" + range { 0! 0.1 } + } + parm { + name "force_shape_invert_toggle" + label "Invert Shape" + type toggle + joinnext + default { "off" } + help "Inverts the force shape. This allows the force to effect outside of its shape. Automatically toggles the \"Reverse\" checkbox for the falloff." + hidewhen "{ force_shape_toggle == 0 }" + parmtag { "script_callback" "hou.phm().force_shape_invert_update()" } + parmtag { "script_callback_language" "python" } + } + parm { + name "force_shape_distance_remap_toggle" + label "Remap Distance" + type toggle + joinnext + default { "off" } + hidewhen "{ force_shape_toggle == 0 } { force_shape_type == 5 }" + } + parm { + name "force_shape_distance_sdf_remap_" + label "Min/Max" + type vector2 + size 2 + default { "0" "0.15" } + disablewhen "{ force_shape_distance_remap_toggle == 0 }" + hidewhen "{ force_shape_toggle == 0 } { force_shape_type == 5 }" + range { -0.5! 0.5 } + } + parm { + name "force_shape_custom_attribute_tan_u" + label "Tan U Attribute" + type string + default { "LYNX_force_tan_u" } + hidewhen "{ force_shape_type != 4 } { force_shape_data_isInternal == 0 }" + } + parm { + name "force_shape_torus_width" + label "Width" + type float + default { "0.2" } + hidewhen "{ force_shape_type != 3 } { force_shape_data_isInternal == 0 }" + range { 0! 0.5! } + } + parm { + name "force_shape_tube_width_" + label "Width Bottom/Top" + type float + size 2 + default { "1" "1" } + hidewhen "{ force_shape_type != 2 } { force_shape_data_isInternal == 0 }" + range { 0! 1! } + } + parm { + name "force_shape_tube_width_remap_reverse_toggle" + label "Reverse" + type toggle + joinnext + default { "off" } + hidewhen "{ force_shape_type != 2 } { force_shape_data_isInternal == 0 }" + } + parm { + name "force_shape_tube_width_remap" + label "Width Remap" + type ramp_flt + default { "2" } + hidewhen "{ force_shape_type != 2 } { force_shape_data_isInternal == 0 }" + range { 1! 10 } + parmtag { "rampbasisdefault" "bspline" } + parmtag { "rampfloatdefault" "1pos ( 0 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 1 ) 2value ( 1 ) 2interp ( bspline )" } + parmtag { "rampshowcontrolsdefault" "0" } + } + parm { + name "force_shape_curve_reverse_toggle" + label "Reverse Curve" + type toggle + joinnext + default { "off" } + hidewhen "{ force_shape_type != 5 }" + range { 0! 1! } + } + parm { + name "force_shape_curve_interpolate_toggle" + label "Interpolate Neighbours" + type toggle + joinnext + default { "off" } + help "Interpolate neighbours when looking up point attributes. Enabling this is slower, but can resolve interpolation problems." + hidewhen "{ force_shape_type != 5 }" + range { 0! 1! } + } + parm { + name "force_shape_curve_resample_toggle" + label "Resample" + type toggle + joinnext + default { "off" } + hidewhen "{ force_shape_type != 5 }" + range { 0! 1! } + } + parm { + name "force_shape_curve_resample_length" + label "Length" + type float + default { "0.1" } + disablewhen "{ force_shape_curve_resample_toggle == 0 }" + hidewhen "{ force_shape_type != 5 }" + range { 0! 1 } + } + parm { + name "force_shape_curve_carve_toggle" + label "Carve" + type toggle + joinnext + default { "off" } + hidewhen "{ force_shape_type != 5 }" + range { 0! 1! } + } + parm { + name "force_shape_curve_carve_" + label "Length" + type float + size 2 + default { "0" "1" } + disablewhen "{ force_shape_curve_carve_toggle == 0 }" + hidewhen "{ force_shape_type != 5 }" + range { 0! 1! } + } + parm { + name "force_shape_curve_attribute_direction" + label "Custom Direction" + type string + joinnext + default { "v" } + hidewhen "{ force_shape_type != 5 }" + } + parm { + name "force_shape_curve_attribute_normal" + label "Normal Attribute" + type string + joinnext + default { "N" } + help "The normal of the curve will be automatically calculated if the attribute doesn't exist." + hidewhen "{ force_shape_type != 5 }" + } + parm { + name "force_shape_curve_attribute_uv" + label "UV Attribute" + type string + default { "uv" } + help "Ramps that are mapped along the curve take this uv attribute as their u position. This attribute will be created automatically if it doesn't exist." + hidewhen "{ force_shape_type != 5 }" + } + groupsimple { + name "force_shape_curve_global_radius_folder" + label "Global" + hidewhen "{ force_shape_type != 5 }" + + parm { + name "force_shape_curve_global_radius" + label "Radius" + type float + default { "1" } + range { 0! 10 } + } + parm { + name "force_shape_curve_global_radius_remap_reverse_toggle" + label "Reverse" + type toggle + joinnext + default { "off" } + } + parm { + name "force_shape_curve_global_radius_remap" + label "Radius Along Curve" + type ramp_flt + default { "2" } + range { 1! 10 } + parmtag { "rampbasisdefault" "bspline" } + parmtag { "rampfloatdefault" "1pos ( 0 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 1 ) 2value ( 1 ) 2interp ( bspline )" } + parmtag { "rampshowcontrolsdefault" "0" } + } + } + + groupsimple { + name "force_shape_curve_along_radius_folder" + label "Along" + hidewhen "{ force_shape_type != 5 } { force_shape_curve_toggle == 0 } { force_shape_curve_along_toggle == 0 }" + + parm { + name "force_shape_curve_along_radius" + label "Radius" + type float + default { "1" } + range { 0! 10 } + } + parm { + name "force_shape_curve_along_radius_remap_reverse_toggle" + label "Reverse" + type toggle + joinnext + default { "off" } + } + parm { + name "force_shape_curve_along_radius_remap" + label "Radius Along Curve" + type ramp_flt + default { "2" } + range { 1! 10 } + parmtag { "rampbasisdefault" "bspline" } + parmtag { "rampfloatdefault" "1pos ( 0 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 1 ) 2value ( 1 ) 2interp ( bspline )" } + parmtag { "rampshowcontrolsdefault" "0" } + } + } + + groupsimple { + name "force_shape_curve_suction_radius_folder" + label "Away From" + hidewhen "{ force_shape_type != 5 } { force_shape_curve_toggle == 0 } { force_shape_curve_suction_toggle == 0 }" + + parm { + name "force_shape_curve_suction_radius" + label "Radius" + type float + default { "1" } + range { 0! 10 } + } + parm { + name "force_shape_curve_suction_radius_remap_reverse_toggle" + label "Reverse" + type toggle + joinnext + default { "off" } + } + parm { + name "force_shape_curve_suction_radius_remap" + label "Radius Along Curve" + type ramp_flt + default { "2" } + range { 1! 10 } + parmtag { "rampbasisdefault" "bspline" } + parmtag { "rampfloatdefault" "1pos ( 0 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 1 ) 2value ( 1 ) 2interp ( bspline )" } + parmtag { "rampshowcontrolsdefault" "0" } + } + } + + groupsimple { + name "force_shape_curve_orbit_radius_folder" + label "Orbit" + hidewhen "{ force_shape_type != 5 } { force_shape_curve_toggle == 0 } { force_shape_curve_orbit_toggle == 0 }" + + parm { + name "force_shape_curve_orbit_radius" + label "Radius" + type float + default { "1" } + range { 0! 10 } + } + parm { + name "force_shape_curve_orbit_radius_remap_reverse_toggle" + label "Reverse" + type toggle + joinnext + default { "off" } + } + parm { + name "force_shape_curve_orbit_radius_remap" + label "Radius Along Curve" + type ramp_flt + default { "2" } + range { 1! 10 } + parmtag { "rampbasisdefault" "bspline" } + parmtag { "rampfloatdefault" "1pos ( 0 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 1 ) 2value ( 1 ) 2interp ( bspline )" } + parmtag { "rampshowcontrolsdefault" "0" } + } + } + + groupsimple { + name "force_shape_curve_direction_radius_folder" + label "Custom Direction" + hidewhen "{ force_shape_type != 5 } { force_shape_curve_toggle == 0 } { force_shape_curve_direction_toggle == 0 }" + + parm { + name "force_shape_curve_direction_radius" + label "Radius" + type float + default { "1" } + range { 0! 10 } + } + parm { + name "force_shape_curve_direction_radius_remap_reverse_toggle" + label "Reverse" + type toggle + joinnext + default { "off" } + } + parm { + name "force_shape_curve_direction_radius_remap" + label "Radius Along Curve" + type ramp_flt + default { "2" } + range { 1! 10 } + parmtag { "rampbasisdefault" "bspline" } + parmtag { "rampfloatdefault" "1pos ( 0 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 1 ) 2value ( 1 ) 2interp ( bspline )" } + parmtag { "rampshowcontrolsdefault" "0" } + } + } + + groupsimple { + name "force_shape_sweep_folder" + label "Sweep Settings" + hidewhen "{ force_shape_toggle == 0 } { force_shape_type == 5 } { force_shape_data_isInternal == 0 }" + + parm { + name "force_shape_sweep_angle" + label "Angle" + type float + default { "360" } + range { 0! 360! } + } + parm { + name "force_shape_sweep_transform_r_" + label "Rotate" + type vector + size 3 + default { "0" "0" "0" } + range { -360 360 } + } + } + + } + + groupcollapsible { + name "force_shape_advanced_settings_folder" + label "Advanced Settings" + hidewhen "{ force_shape_toggle == 0 }" + + parm { + name "force_shape_data_isInternal" + label "force_shape_data_isExternal" + type integer + invisible + nolabel + default { [ "strcmp(chs(\"force_shape_data_path_relative\"),\".\")==0" hscript-expr ] } + range { 0 10 } + } + parm { + name "force_shape_data_time_interpolate_toggle" + label "Time Interpolate Data" + type toggle + default { "off" } + hidewhen "{ force_shape_data_isInternal == 0 }" + } + parm { + name "force_shape_data_path_relative" + label "Data Path" + type oppath + default { "." } + help "When using many forces with the same shape settings, one can use reuse the shape data for the different fields." + hidewhen "{ force_shape_type == 5 }" + parmtag { "oprelative" "." } + parmtag { "script_callback" "hou.phm().force_shape_data_path_absolute_update()" } + parmtag { "script_callback_language" "python" } + } + parm { + name "force_shape_data_path_absolute" + label "force_shape_data_path_absolute" + type string + default { "`opfullpath(chs(\"force_shape_data_path_relative\"))`" } + hidewhen "{ debug == 0 }" + parmtag { "script_callback" "" } + parmtag { "script_callback_language" "python" } + } + parm { + name "force_shape_data_path_calculation" + label "force_shape_data_path_calculation" + type string + default { [ "n = hou.pwd()\nif (n.parm(\"force_shape_toggle\").eval()==0): return \"False\"\n\nn_p_force_shape_data_path_abosolute = n.parm(\"force_shape_data_path_absolute\").eval()\nn_dop = n.dopNetNode().simulation()\nn_dop_path = n.dopNetNode().path()\nn_dop_objects = n_dop.objects()\n\nn_p_force_shape_data_path_name = \"LYNX_Force_General_Shape_Data_\"+n_p_force_shape_data_path_abosolute.replace(n_dop_path+\"/\",\"\").replace(\"/\",\"_\");\n\nfor object in n_dop_objects:\n data = object.findSubData(\"Solver\")\n if data==None: continue\n subdata = data.findAllSubData(\"*\"+n_p_force_shape_data_path_name,recurse=True)\n if(len(subdata)>0):\n return str(object.options().field(\"objid\")) +\"|\"+ object.name() +\"|\"+ \"Solver/\" + subdata.keys()[0]+\"|\"+n_p_force_shape_data_path_name\n\nreturn \"False\"" python ] } + hidewhen "{ debug == 0 }" + } + parm { + name "force_shape_data_path_objid" + label "force_shape_data_path_objid" + type string + default { [ "n = hou.pwd()\nn_p_force_shape_data_path_calculation = n.parm(\"force_shape_data_path_calculation\").eval()\nif (n_p_force_shape_data_path_calculation == \"False\"): return \"False\"\nreturn n_p_force_shape_data_path_calculation.split(\"|\")[0]" python ] } + hidewhen "{ debug == 0 }" + } + parm { + name "force_shape_data_path_objname" + label "force_shape_data_path_objname" + type string + default { [ "n = hou.pwd()\nn_p_force_shape_data_path_calculation = n.parm(\"force_shape_data_path_calculation\").eval()\nif (n_p_force_shape_data_path_calculation == \"False\"): return \"False\"\nreturn n_p_force_shape_data_path_calculation.split(\"|\")[1]" python ] } + hidewhen "{ debug == 0 }" + } + parm { + name "force_shape_data_path_subpath" + label "force_shape_data_path_subpath" + type string + default { [ "n = hou.pwd()\nn_p_force_shape_data_path_calculation = n.parm(\"force_shape_data_path_calculation\").eval()\nif (n_p_force_shape_data_path_calculation == \"False\"): return \"False\"\nreturn n_p_force_shape_data_path_calculation.split(\"|\")[2]" python ] } + hidewhen "{ debug == 0 }" + } + parm { + name "force_shape_data_path_name" + label "force_shape_data_path_name" + type string + default { [ "n = hou.pwd()\nn_p_force_shape_data_path_calculation = n.parm(\"force_shape_data_path_calculation\").eval()\nif (n_p_force_shape_data_path_calculation == \"False\"): return \"False\"\nreturn n_p_force_shape_data_path_calculation.split(\"|\")[3]" python ] } + hidewhen "{ debug == 0 }" + } + } + + } + + group { + name "force_transform_folder_2" + label "Strength" + + groupsimple { + name "force_global_strength_folder" + label "Global" + + parm { + name "force_global_strength" + label "Strength Global" + type float + default { "1" } + range { -10 10 } + } + parm { + name "force_global_strength_geometry" + label "Strength Geometry" + type float + joinnext + default { "1" } + disablewhen "{ force_binding == 1 } { force_binding == 3 force_binding_geometry_toggle == 0 }" + range { -10 10 } + } + parm { + name "force_global_strength_volume" + label "Strength Volume" + type float + default { "1" } + disablewhen "{ force_binding == 0 } { force_binding == 3 force_binding_field_toggle == 0 }" + range { -10 10 } + } + parm { + name "force_global_strength_rand_toggle" + label "Randomize" + type toggle + joinnext + default { "off" } + help "Randomize strength. This works on Geometry only." + parmtag { "script_callback" "" } + } + parm { + name "force_global_strength_rand_" + label "force_global_strength_rand" + type vector2 + nolabel + size 2 + default { "0.9" "1.1" } + disablewhen "{ force_global_strength_rand_toggle == 0 }" + range { -1 1 } + } + parm { + name "force_global_strength_shape_general_falloff_reverse_toggle" + label "Reverse" + type toggle + joinnext + default { "off" } + hidewhen "{ force_shape_toggle == 0 } { force_shape_type == 5 }" + } + parm { + name "force_global_strength_shape_general_falloff_remap" + label "Falloff" + type ramp_flt + default { "2" } + hidewhen "{ force_shape_toggle == 0 } { force_shape_type == 5 }" + range { 1! 10 } + parmtag { "autoscope" "0000000000000000" } + parmtag { "rampbasisdefault" "bspline" } + parmtag { "rampfloatdefault" "1pos ( 0 ) 1value ( 1 ) 1interp ( catmull-rom ) 2pos ( 1 ) 2value ( 0 ) 2interp ( catmull-rom )" } + parmtag { "rampshowcontrolsdefault" "0" } + } + group { + name "force_global_strength_shape_curve_falloff_folder" + label "Strength Falloff" + hidewhen "{ force_shape_type != 5 }" + + parm { + name "force_global_strength_shape_curve_falloff_remap_reverse_toggle" + label "Reverse" + type toggle + joinnext + default { "off" } + } + parm { + name "force_global_strength_shape_curve_falloff_remap" + label "Strength Falloff" + type ramp_flt + default { "2" } + range { 1! 10 } + parmtag { "rampbasisdefault" "bspline" } + parmtag { "rampfloatdefault" "1pos ( 0.89999997615814209 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 1 ) 2value ( 0 ) 2interp ( bspline )" } + parmtag { "rampshowcontrolsdefault" "0" } + } + } + + group { + name "force_global_strength_shape_curve_falloff_folder_1" + label "Strength Along Curve" + tabbreak + + parm { + name "force_global_strength_shape_curve_along_remap_reverse_toggle" + label "Reverse" + type toggle + joinnext + default { "off" } + } + parm { + name "force_global_strength_shape_curve_along_remap" + label "Strength Along Curve" + type ramp_flt + default { "2" } + range { 1! 10 } + parmtag { "rampbasisdefault" "bspline" } + parmtag { "rampfloatdefault" "1pos ( 0 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 1 ) 2value ( 1 ) 2interp ( bspline )" } + parmtag { "rampshowcontrolsdefault" "0" } + } + } + + } + + groupsimple { + name "force_noise_strength_folder" + label "Noise" + + parm { + name "force_noise_toggle" + label "Enable" + type toggle + default { "off" } + } + parm { + name "force_noise_type" + label "Type" + type string + joinnext + default { "pnoise_4d" } + hidewhen "{ force_noise_toggle == 0 }" + menu { + "pnoise_4d" "Perlin Noise Animated" + "pnoise" "Perlin Noise" + "onoise" "Original Perlin Noise" + "snoise" "Sparse Convolution Noise" + "anoise " "Alligator Noise" + "xnoise" "Simplex Noise" + "exact_pnoise" "Analytic Perlin Noise" + "exact_xnoise" "Analytic Simplex Noise" + } + } + parm { + name "force_noise_strength" + label "Strength" + type float + default { "0.25" } + hidewhen "{ force_noise_toggle == 0 }" + range { -10 10 } + } + groupsimple { + name "force_noise_strength_general_settings_folder" + label "General Settings" + hidewhen "{ force_noise_toggle == 0 }" + + parm { + name "force_noise_attenuation" + label "Attenuation" + type float + joinnext + default { "1" } + hidewhen "{ force_noise_toggle == 0 }" + range { 0! 1! } + } + parm { + name "force_noise_roughness" + label "Roughness" + type float + joinnext + default { "0.5" } + hidewhen "{ force_noise_toggle == 0 }" + range { 0! 1! } + } + parm { + name "force_noise_turbulence" + label "Turbulence" + type integer + default { "3" } + hidewhen "{ force_noise_toggle == 0 }" + range { 0! 10 } + } + parm { + name "force_noise_mask_toggle" + label "Influence Strength Only" + type toggle + joinnext + default { "0" } + help "Enable the noise to only act as a mask. It only influences the force strength, not the force direction." + } + parm { + name "force_noise_mask_sign_toggle" + label "Allow Negativ Values" + type toggle + joinnext + default { "0" } + disablewhen "{ force_noise_mask_toggle == 0 }" + } + parm { + name "force_noise_mask_sign_clamp_" + label "Clamp to Min/Max" + type vector2 + size 2 + default { "0" "1e+06" } + disablewhen "{ force_noise_mask_sign_toggle == 0 } { force_noise_mask_toggle == 0 }" + range { 0 10 } + } + } + + groupsimple { + name "force_noise_strength_transform_settings_folder" + label "Transform Settings" + hidewhen "{ force_noise_toggle == 0 }" + + parm { + name "force_noise_scale_uniform" + label "Scale" + type float + joinnext + default { "0.5" } + range { 0! 10 } + } + parm { + name "force_noise_local_toggle" + label "Transform Noise By Force Transform" + type toggle + default { "off" } + disablewhen "{ force_noise_sdf_toggle == 1 }" + } + parm { + name "force_noise_scale_" + label "Size" + type vector + size 3 + default { "1" "1" "1" } + range { 0! 1 } + } + parm { + name "force_noise_offset_" + label "Offset" + type vector + size 3 + default { "0" "0" "0" } + range { -1 1 } + } + } + + groupsimple { + name "force_noise_strength_type_settings_folder" + label "Type Settings" + hidewhen "{ force_noise_type != pnoise_4d } { force_noise_toggle == 0 }" + + parm { + name "force_noise_time" + label "Time" + type float + joinnext + default { [ "$ST" hscript-expr ] } + range { 0 10 } + } + parm { + name "force_noise_time_offset" + label "Time Offset" + type float + joinnext + default { "0" } + range { 0 10 } + } + parm { + name "force_noise_time_scale" + label "Time Scale" + type float + default { "0.25" } + range { 0 2 } + } + parm { + name "force_noise_sdf_toggle" + label "Curl Noise Around Sdf" + type toggle + joinnext + default { "0" } + help "Curl the noise around the sdf. Remapping the sdf in the shape tab is strongly recommended." + hidewhen "{ force_shape_type == 5 }" + } + parm { + name "force_noise_sdf_influence" + label "Influence Strength" + type float + joinnext + default { "2" } + disablewhen "{ force_noise_sdf_toggle == 0 }" + hidewhen "{ force_shape_type == 5 }" + range { 0! 10 } + } + parm { + name "force_noise_sdf_bounce_toggle" + label "Push Outwards" + type toggle + default { "0" } + help "Orient the noise inside the volume to point towards the surface." + disablewhen "{ force_noise_sdf_toggle == 0 }" + hidewhen "{ force_shape_type == 5 }" + } + } + + } + + groupsimple { + name "force_flow_strength_folder" + label "Flow" + + parm { + name "force_flow_toggle" + label "Enable" + type toggle + default { "on" } + } + groupsimple { + name "force_flow_axis_strength_folder" + label "Axis" + hidewhen "{ force_flow_toggle == 0 }" + + parm { + name "force_flow_axis_along_strength" + label "Along Axis" + type float + default { "1" } + range { -10 10 } + } + parm { + name "force_flow_axis_suction_strength" + label "Away From Axis" + type float + default { "0" } + range { -10 10 } + } + parm { + name "force_flow_axis_orbit_strength" + label "Orbit Around Axis" + type float + default { "0" } + range { -10 10 } + } + } + + groupsimple { + name "force_flow_vector_strength_folder" + label "Vector" + hidewhen "{ force_flow_toggle == 0 }" + + parm { + name "force_flow_vector_strength" + label "Strength" + type float + default { "0" } + range { -10 10 } + } + parm { + name "force_flow_vector_direction_" + label "Direction" + type vector + size 3 + default { "0" "-1" "0" } + range { -10 10 } + } + } + + groupsimple { + name "force_flow_center_strength_folder" + label "Center" + hidewhen "{ force_flow_toggle == 0 }" + + parm { + name "force_flow_center_suction_strength" + label "Away From Center" + type float + default { "0" } + range { -10 10 } + } + } + + } + + groupsimple { + name "force_shape_folder" + label "Shape" + hidewhen "{ force_shape_toggle == 0 }" + + groupsimple { + name "force_shape_curve_strength_folder" + label "Curve" + hidewhen "{ force_shape_type != 5 }" + + parm { + name "force_shape_curve_toggle" + label "Enable" + type toggle + default { "off" } + } + groupsimple { + name "force_shape_curve_along_strength_folder" + label "Along" + hidewhen "{ force_shape_curve_toggle == 0 } { force_shape_type != 5 }" + + parm { + name "force_shape_curve_along_toggle" + label "Enable" + type toggle + default { "off" } + } + parm { + name "force_shape_curve_along_strength" + label "Strength" + type float + default { "1" } + hidewhen "{ force_shape_curve_along_toggle == 0 }" + range { -10 10 } + } + group { + name "force_shape_curve_along_strength_falloff_folder" + label "Strength Falloff" + hidewhen "{ force_shape_curve_along_toggle == 0 }" + + parm { + name "force_shape_curve_along_strength_falloff_remap_reverse_toggle" + label "Reverse" + type toggle + joinnext + default { "off" } + } + parm { + name "force_shape_curve_along_strength_falloff_remap" + label "Strength Falloff" + type ramp_flt + default { "2" } + range { 1! 10 } + parmtag { "rampbasisdefault" "bspline" } + parmtag { "rampfloatdefault" "1pos ( 0 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 1 ) 2value ( 0 ) 2interp ( bspline )" } + parmtag { "rampshowcontrolsdefault" "0" } + } + } + + group { + name "force_shape_curve_along_strength_falloff_folder_1" + label "Strength Along Curve" + tabbreak + + parm { + name "force_shape_curve_along_strength_along_remap_reverse_toggle" + label "Reverse" + type toggle + joinnext + default { "off" } + } + parm { + name "force_shape_curve_along_strength_along_remap" + label "Strength Along Curve" + type ramp_flt + default { "2" } + range { 1! 10 } + parmtag { "rampbasisdefault" "bspline" } + parmtag { "rampfloatdefault" "1pos ( 0 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 1 ) 2value ( 1 ) 2interp ( bspline )" } + parmtag { "rampshowcontrolsdefault" "0" } + } + } + + } + + groupsimple { + name "force_shape_curve_suction_strength_folder" + label "Away From" + hidewhen "{ force_shape_toggle == 0 } { force_shape_curve_toggle == 0 } { force_shape_type != 5 }" + + parm { + name "force_shape_curve_suction_toggle" + label "Enable" + type toggle + default { "off" } + } + parm { + name "force_shape_curve_suction_strength" + label "Strength" + type float + default { "-1" } + hidewhen "{ force_shape_curve_suction_toggle == 0 }" + range { -10 10 } + } + group { + name "force_shape_curve_suction_strength_falloff_folder" + label "Strength Falloff" + hidewhen "{ force_shape_curve_suction_toggle == 0 }" + + parm { + name "force_shape_curve_suction_strength_falloff_remap_reverse_toggle" + label "Reverse" + type toggle + joinnext + default { "off" } + } + parm { + name "force_shape_curve_suction_strength_falloff_remap" + label "Strength Falloff" + type ramp_flt + default { "2" } + range { 1! 10 } + parmtag { "rampbasisdefault" "bspline" } + parmtag { "rampfloatdefault" "1pos ( 0 ) 1value ( 0 ) 1interp ( bspline ) 2pos ( 1 ) 2value ( 1 ) 2interp ( bspline )" } + parmtag { "rampshowcontrolsdefault" "0" } + } + } + + group { + name "force_shape_curve_suction_strength_falloff_folder_1" + label "Strength Along Curve" + tabbreak + + parm { + name "force_shape_curve_suction_strength_along_remap_reverse_toggle" + label "Reverse" + type toggle + joinnext + default { "off" } + } + parm { + name "force_shape_curve_suction_strength_along_remap" + label "Strength Along Curve" + type ramp_flt + default { "2" } + range { 1! 10 } + parmtag { "rampbasisdefault" "bspline" } + parmtag { "rampfloatdefault" "1pos ( 0 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 1 ) 2value ( 1 ) 2interp ( bspline )" } + parmtag { "rampshowcontrolsdefault" "0" } + } + } + + } + + groupsimple { + name "force_shape_curve_orbit_strength_folder" + label "Orbit" + hidewhen "{ force_shape_toggle == 0 } { force_shape_curve_toggle == 0 } { force_shape_type != 5 }" + + parm { + name "force_shape_curve_orbit_toggle" + label "Enable" + type toggle + default { "off" } + } + parm { + name "force_shape_curve_orbit_strength" + label "Strength" + type float + default { "1" } + hidewhen "{ force_shape_curve_orbit_toggle == 0 }" + range { -10 10 } + } + group { + name "force_shape_curve_orbit_strength_falloff_folder" + label "Strength Falloff" + hidewhen "{ force_shape_curve_orbit_toggle == 0 }" + + parm { + name "force_shape_curve_orbit_strength_falloff_remap_reverse_toggle" + label "Reverse" + type toggle + joinnext + default { "off" } + } + parm { + name "force_shape_curve_orbit_strength_falloff_remap" + label "Strength Falloff" + type ramp_flt + default { "2" } + range { 1! 10 } + parmtag { "rampbasisdefault" "bspline" } + parmtag { "rampfloatdefault" "1pos ( 0 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 1 ) 2value ( 0 ) 2interp ( bspline )" } + parmtag { "rampshowcontrolsdefault" "0" } + } + } + + group { + name "force_shape_curve_orbit_strength_falloff_folder_1" + label "Strength Along Curve" + tabbreak + + parm { + name "force_shape_curve_orbit_strength_along_remap_reverse_toggle" + label "Reverse" + type toggle + joinnext + default { "off" } + } + parm { + name "force_shape_curve_orbit_strength_along_remap" + label "Strength Along Curve" + type ramp_flt + default { "2" } + range { 1! 10 } + parmtag { "rampbasisdefault" "bspline" } + parmtag { "rampfloatdefault" "1pos ( 0 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 1 ) 2value ( 1 ) 2interp ( bspline )" } + parmtag { "rampshowcontrolsdefault" "0" } + } + } + + } + + groupsimple { + name "force_shape_curve_direction_strength_folder" + label "Custom Direction" + hidewhen "{ force_shape_toggle == 0 } { force_shape_curve_toggle == 0 } { force_shape_type != 5 }" + + parm { + name "force_shape_curve_direction_toggle" + label "Enable" + type toggle + default { "off" } + } + parm { + name "force_shape_curve_direction_strength" + label "Strength" + type float + default { "1" } + hidewhen "{ force_shape_curve_direction_toggle == 0 }" + range { -10 10 } + } + group { + name "force_shape_curve_direction_strength_falloff_folder2" + label "Strength Falloff" + hidewhen "{ force_shape_curve_direction_toggle == 0 }" + + parm { + name "force_shape_curve_direction_strength_falloff_remap_reverse_toggle" + label "Reverse" + type toggle + joinnext + default { "off" } + } + parm { + name "force_shape_curve_direction_strength_falloff_remap" + label "Strength Falloff" + type ramp_flt + default { "2" } + range { 1! 10 } + parmtag { "rampbasisdefault" "bspline" } + parmtag { "rampfloatdefault" "1pos ( 0 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 1 ) 2value ( 0 ) 2interp ( bspline )" } + parmtag { "rampshowcontrolsdefault" "0" } + } + } + + group { + name "force_shape_curve_direction_strength_falloff_folder2_1" + label "Strength Along Curve" + tabbreak + + parm { + name "force_shape_curve_direction_strength_along_remap_reverse_toggle" + label "Reverse" + type toggle + joinnext + default { "off" } + } + parm { + name "force_shape_curve_direction_strength_along_remap" + label "Strength Along Curve" + type ramp_flt + default { "2" } + range { 1! 10 } + parmtag { "rampbasisdefault" "bspline" } + parmtag { "rampfloatdefault" "1pos ( 0 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 1 ) 2value ( 1 ) 2interp ( bspline )" } + parmtag { "rampshowcontrolsdefault" "0" } + } + } + + } + + } + + groupsimple { + name "force_shape_gradient_folder" + label "Gradient" + hidewhen "{ force_shape_type == 5 }" + + parm { + name "force_shape_gradient_toggle" + label "Enable" + type toggle + default { "off" } + } + parm { + name "force_shape_gradient_axis" + label "Gradient Along" + type ordinal + joinnext + default { "x" } + hidewhen "{ force_shape_gradient_toggle == 0 }" + menu { + "x" "X Component" + "y" "Y Component" + "z" "Z Component" + } + } + parm { + name "force_shape_gradient_strength" + label "Strength" + type float + joinnext + default { "0" } + hidewhen "{ force_shape_toggle == 0 } { force_shape_gradient_toggle == 0 } { force_shape_type == 5 }" + range { -10 10 } + } + parm { + name "force_shape_gradient_rotate" + label "Rotate" + type float + default { "0" } + hidewhen "{ force_shape_toggle == 0 } { force_shape_gradient_toggle == 0 } { force_shape_type == 5 }" + range { -180 180 } + } + } + + groupsimple { + name "force_shape_volume_folder" + label "Volume" + hidewhen "{ force_shape_type == 5 }" + + parm { + name "force_shape_vol_toggle" + label "Enable" + type toggle + default { "off" } + } + parm { + name "force_shape_vol_N_strength" + label "Along Normal" + type float + default { "0" } + hidewhen "{ force_shape_toggle == 0 } { force_shape_vol_toggle == 0 } { force_shape_type == 5 }" + range { -10 10 } + } + parm { + name "force_shape_vol_tan_u_strength" + label "Along Tangent" + type float + default { "0" } + hidewhen "{ force_shape_toggle == 0 } { force_shape_vol_toggle == 0 } { force_shape_type == 5 }" + range { -10 10 } + } + parm { + name "force_shape_vol_tan_v_strength" + label "Along BiTangent" + type float + default { "0" } + hidewhen "{ force_shape_toggle == 0 } { force_shape_vol_toggle == 0 } { force_shape_type == 5 }" + range { -10 10 } + } + } + + } + + groupsimple { + name "force_vex_strength_folder" + label "Vex" + + parm { + name "force_vex_pre_toggle" + label "Pre Force Calculation" + type toggle + joinnext + default { "off" } + } + parm { + name "force_vex_post_toggle" + label "Post Force Calculation" + type toggle + joinnext + default { "off" } + } + parm { + name "force_vex_binding_export" + label "Additional Bindings" + type string + default { "" } + help "If one binds attributes via the \"@\" syntax make sure to write the name of the attribute here. If not the attribute is not bound to be exported." + } + groupcollapsible { + name "force_vex_advanced_settings" + label "Advanced Settings" + + parm { + name "force_vex_input_3_type" + label " Additional Input (Idx 3)" + type integer + joinnext + default { "0" } + help "Access custom data via input index 3." + menu { + "NONE" "None" + "SOP" "SOP" + "DOPDATA" "DOP Data" + } + range { 0 10 } + } + parm { + name "force_vex_input_3_path_sop" + label "force_vex_input_3_path" + type oppath + nolabel + joinnext + default { "" } + hidewhen "{ force_vex_input_3_type == 2 } { force_vex_input_3_type == 0 }" + parmtag { "editor" "0" } + parmtag { "oprelative" "." } + } + parm { + name "force_vex_input_3_path_dop" + label "force_vex_input_3_path" + type string + nolabel + default { "" } + hidewhen "{ force_vex_input_3_type == 1 } { force_vex_input_3_type == 0 }" + } + } + + parm { + name "force_vex_pre_code" + label "Pre Force Calculation Vex Code" + type string + default { "//Manipulate Parameters. Mass and Seed are available as \"mass\"/\"seed\".\n//Parameters are bound to vex variables e.g. \n//force_global_strength = force_global_strength * rand(@id);" } + hidewhen "{ force_vex_pre_toggle == 0 }" + parmtag { "editor" "1" } + parmtag { "editorlang" "vex" } + parmtag { "editorlines" "10-25" } + } + parm { + name "force_vex_post_code" + label "Post Force Calculation Vex Code" + type string + default { "//Manipulate LYNX_force. This code is applied after force calculation.\n//If using it for custom attributes (not v/force/targetv/airresist), multiply it with @TimeInc.\n" } + hidewhen "{ force_vex_post_toggle == 0 }" + parmtag { "editor" "1" } + parmtag { "editorlang" "vex" } + parmtag { "editorlines" "10-25" } + } + } + + } + +} diff --git a/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/ExtraFileOptions b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/ExtraFileOptions new file mode 100644 index 0000000..16c7113 --- /dev/null +++ b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/ExtraFileOptions @@ -0,0 +1,42 @@ +{ + "LYNX_logo.svg/Cursor":{ + "type":"intarray", + "value":[1,1] + }, + "LYNX_logo.svg/IsExpr":{ + "type":"bool", + "value":false + }, + "LYNX_logo.svg/IsPython":{ + "type":"bool", + "value":false + }, + "LYNX_logo.svg/IsScript":{ + "type":"bool", + "value":false + }, + "LYNX_logo.svg/Source":{ + "type":"string", + "value":"S:/LYNX_logo.svg" + }, + "PythonModule/Cursor":{ + "type":"intarray", + "value":[18,124] + }, + "PythonModule/IsExpr":{ + "type":"bool", + "value":false + }, + "PythonModule/IsPython":{ + "type":"bool", + "value":true + }, + "PythonModule/IsScript":{ + "type":"bool", + "value":true + }, + "PythonModule/Source":{ + "type":"string", + "value":"" + } +} diff --git a/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Help b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Help new file mode 100644 index 0000000..58afaa4 --- /dev/null +++ b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Help @@ -0,0 +1,273 @@ +#type: node +#context: dop +#icon: opdef:.?LYNX_logo.svg + + += LYNX Force General = + +"""Manipulate your simulation with intuitive controls. The main goal of this node is to replace the default dop force nodes and unify all the settings in one place. Additional features include masking the influence by shape and support for both geometry and volumes.""" +:vimeo: Tutorial + #id: 325545103 + + +== Overview == +#id: force_overview + +Features: +* Simple to use interface with handles in the 3d viewport +* Presets to “hit the ground running” +* Easily slide the shape along any curve or pin it to a deforming polygon +* Masking the force by shapes with fine tunable falloff settings +* Guides to visualize force strength/direction/masks +* Vex overrides with support for an additional input/custom bindings(attributes & groups) + +By default [Enable Wind|#force_wind_toggle] is toggled on, which means `targetv`/`airresist` are updated. Disabling this updates the `force` attribute. By changing the [Binding|#force_binding] to [Custom|#force_binding_custom] you can manipulate any simulation data you desire. +See [Binding|#force_binding] for more information. +:tip: + It can also be used as a drag force by having [Enable Wind|#force_wind_toggle] on and having the [Force Global Strength|#force_global_strength] set to zero. You can use [Wind Speed Matching|#force_wind_airresist] parameter to control how fast the simulation conforms to the wind (or in this case drag). Use the [drag preset|#force_preset_drag] to jump to this feature. + +@outputs + +Output: + Plug this into your solver of your choice, usually the pre/post solve input. + :warning: This node always goes into the *top* of your solvers. + + +@parameters + +== Presets == +#id: force_preset + +Gravity Geometry: + Set the force to act the same way as the [Node:dop/gravity] for geometry. +Gravity Volume: + Set the force to act the same way as the [Node:dop/gravity] for volumes. The only difference to the `Gravity Geometry` preset is that this multiplies the force by the mass (in case of fields density). +Drag: + #id: force_preset_drag + Set the force to act the same way as the [Node:dop/popdrag]. +Tornado: + This preset demonstrates the forces visualizers ;) +Sweep Animation: + This preset demonstrates animating the shape sweep. If the shape is only transformed then no data has to be recalculated per frame. This preset shows that animating the sweep causes a recalculation of the internal vdbs, that used to calculate the force, per frame. Try to keep your vdb size as low resolution as possible to keep the performance as fast as possible without introducing stepping. +Volume: + This preset demonstrates the volume forces. You can control the individual volume directions (along Volume Normal/Tangent/BiTangent) in the [Volume|#force_shape_vol] strength settings. +Vex: + #id: force_preset_vex + This preset demonstrates the vex capabilities of this force. You can override almost all of the parameters in the [Pre Force Calculation Vex Code|#force_vex] by binding it with its parameter name. + For example to randomize the strength of the [flow along axis force|#force_flow] you can type: + {{{ + #!vex + force_flow_axis_along = force_flow_axis_along * rand(@id); + }}} +Noise Sdf Flow: + #id: force_preset_noise_sdf + This preset demonstrates the advanced feature of pushing geometry around the sdf curl noise field of the geometry. This can be used to make abstract effects like in this video Entagma | Curl Noise Flow https://vimeo.com/169438746 very easily. + :tip: + Using this preset with [Gradient Force|#force_shape_gradient] can create some cool effects too! + + +== General == +#id: force_general + +Preset: + Switch through different presets to get a feel for what the force can do. See [Presets|#force_preset]. + +Activation: + #id: force_toggle + Enable/Disable the force + +Binding: + #id: force_binding + Here you can change what data should be manipulated by the force. By default it only updates geometry data. It can influence: + * `Geometry` data. By default the force acts a wind force and updates the `targetv`/`airresist` values. Toggling [Enable Wind|#force_wind_toggle] off, makes the force update the `force` attribute. + * `Volume` data a.k.a. fields in the dop context. Since volume related solvers don't have `targetv`/`airresist` fields, it does an approximation when [Enable Wind|#force_wind_toggle] is toggled on. If it's off then it adds the force to the `vel` field in the same way the `force` attribute is added to the v attribute. + * `All` data, both geometry and volumes are manipulated as described above. + * `Custom` data. This binding option allows for custom data binds. This is for experienced users:) Here you can choose the geometry data container and the corresponding geometry attribute or the field to be manipulated. + #id: force_binding_custom + :tip: The force is added to the data binding. See the `solver_force_geo`/`solver_force_vol` nodes inside this asset for more information on how the force is calculated. + +Enable Mass/Density: + #id: force_mass_toggle + Enable/Disable the influence of mass on the force. When the binding influences the volumes a.k.a. dop fields it uses the density field to determine the mass. + +Seed Attribute: + #id: force_seed_attribute + Here you can set the seed attribute used in vex calls to the `rand` function when calculating the force. If the attribute isn't found, the point number is used. + :note: This is ignored for volumes. Volumes don't get influenced by any randomization parameters. + +Enable Wind: + #id: force_wind_toggle + Enable/Disable the force to act as a wind force. See [Overview|#force_overview]/[Binding|#force_binding] for more details. + +Wind Speed Matching: + #id: force_wind_airresist + This let's you control how fast the velocity conforms to the wind force. + :tip: When setting the [Force Global Strength|#force_global_strength] to zero, this value controls the drag strength. See [Overview|#force_overview] for more details. + + +== Guides == +"""Controls the visualization of the force in the viewport.""" + +Guide types: + * General Guides: Visualize all `flow` forces. + * Streamer Guides: Displays a slice plane. The plane can be visualized through vectors or colored gradients. This let's you preview the force very thoroughly, so you can save time on simulating :) +Enable / Show General Guides / Show Streamer Guides: + Toggles the respective guide type + +General Guides Settings: + * Guide Mask: Here you can hide individual guides. Since there are quite a few, masking some can clean up the viewport quite a bit. To find out the name of the guides you can mask, toggle the drop down menu. + #id: force_guide_general_mask + * Color: The color of the guide. + * Viz Max: This is a clamp on the strength values on the respective flow force, so that the force visualization doesn't get enormous in the viewport. + * Vdb Resolution Scale: Only visible if a custom shape is being used. See the [tip|#force_guide_resolution_scale] below for more information. + * Curve Resample Scale/Marker Count: Only visible when using curve related features. `Curve Resample Scale` is a scale on the curve resampling when resampling the curve. `Marker Count` controls how many preview markers per curve are drawn to visualize the force. +Streamer Guides Settings: + #id: force_guide_streamers + * Mode: Here you can choose between `vector` and `gradient`. The `vector` option shows you preview lines similar to what you get with visualizers set to marker>vector. This is great to get a detailed preview of the force effect. The `gradient` option shows you the absolute value of the force strength in a color preview. This can be thought of as a heatmap of you force, great to visualize falloffs without overcrowding the viewport. + * Color: The color of the guide. + * Viz Scale: This is a scale on the strength values of the force, so that the force visualization doesn't get enormous in the viewport. + :tip: When the mode is set to `gradient` this can be used to scale down the gradient preview colors so that falloffs don't "burn out" if the force strength is really high. + * Grid Options: This sets the orientation/position of the slice plane as well as the preview resolution. +#id: force_guide_resolution_scale +:tip: If you set the `Resolution Scale`/`Vdb Resolution Scale` to 1 then the grid/vdb geometry has the same resolution as the vdbs the force uses internally to mask your force. You can use this to preview how dense you vdb grid is. This is a great way to see if stepping could occur or not. + + +== Transform == +#id: force_transform +"""Control the transform of the force. You can also tweak these paramters by switching on the handles in the viewport.""" + +Transform Settings: + * Control the transform of the force field via the translate, rotate, scale, uniform scale and pivot parameters. + +Transform Pin Settings: + This let's you pretransform the transform by pinning it either to a polygon geometry or to a curve. + :tip: + To hide the pin geometry visualization, enter `^transform_pin` in the [Guide Mask|#force_guide_general_mask] parameter. This can increase playback speed quite a bit! + * Pin Transform To Polygon: + #id: force_transform_pin_polygon + The force is pinned to the nearest point on the input geometry on the `Snap Frame` and transformed with the transform of the point on all other frames. + * Pin Transform To Curve: + The force is pinned to an input curve. + * Position Along Curve: Position of the pinning along the curve. + * Reverse Curve: Reverse the curve point order, thus reversing the `Position Along Curve` coordinate. + * Resample Curve: You can resample the curve to a higher resolution so that no visual stepping occurs when moving along it. + * Normal Attribute: The normal attribute sets the up direction of the curve. When using the twist attributes below, this controls the initial twist. If the normal attribute doesn't exist on the curve it will be created. + * UV Attribute: The uv attribute controls the uv range for the twist ramp below. If the uv attribute doesn't exist on the curve it will be created. + * Twist Min/Max/Offset/Remap: Use this to twist the orientation of the pinning. The ramp is sampled along the uv and is then scaled to the range set by the min and max values. The normal is then rotated by this amount of degrees plus the offset parameter at every curve point. + +Transform Advanced Settings: + * Time Interpolate Data: Evaluate the transform data on subframes. This can be a bit more expensive to calculate when using pinning. + * Transform Order: This sets in which order the transform is calculated. + +== Shape == +"""Here you can set the shape of the force field.""" + +Enable: + #id: force_shape_toggle + Enable/Disable the force shape. Toggling this on allows the force to be only applied inside the shape. If it is off then the force is applied everywhere. Disabling it essentially gives you the pop forces all in one node. +Shape: + #id: force_shape_type + Choose between different shapes or plug in your own. Curves are also supported. + + Shape Shared Settings: + #id: force_shape_shared_settings + * Vdb Size: Lower this value if stepping occurs, but be carefull! Settings this too low can cause excessive computation. Internally the force influence is masked by a set of vdbs. This controlls the resolution of these fields. See this [tip|#force_guide_resolution_scale], for more information on how to visualize the resolution. + * Invert Shape: Here you can invert the mask. Toggling this automatically inverts the [falloff|#force_global_strength_shape_falloff] ramp. + #id: force_shape_invert_toggle + :warning: Only inverting the [falloff|#force_global_strength_shape_falloff] ramp still masks everything outside of the force shape. Enabling `Invert Shape` allows the force to manipulate the simulation outside of the shape too. + * Remap Distance: Here you can remap the input range of the mask. This range is then remaped by the [falloff|#force_global_strength_shape_falloff] ramp. This allows you to create a padding around the shape instead of only masking the inside. Turn on [Streamer Guides|#force_guide_streamers] to visualize this in the viewport. + * Sweep Settings: You can cut the shape like a cake. Imagine cutting it from a top view. The angle controls the slice size, the rotate parameter rotates the cake before cutting it. + :warning: Animating this causes the internal vdbs to be recalculated every frame. Make sure your vdb size is not too low to still have a good performance. + +Shape Respective Settings: + #id: force_shape_respective_settings + * Tube Shape Settings: You can control the shape of the tube by changing the top/bottom radius or even completely remap the width along its height. + * Torus Shape Settings: Change the band width of the torus. + * Custom Shape Settings: + :warning: + When using a custom shape it is not recommended to have any transform animation or geometry deformation on the incoming shape as this can cause excessive computation. When having transform animation, see the tip below for the work-around. + :tip: + Internally the custom shape is transformed to be the size of 1 unit since this is needed to calculate the internal data. For convenience the transform of the force is reverse manipulated when using custom shapes so that the shape ends up at the same position as the selected input. This is only done once at the time of selecting the custom shape. + :tip: + If you have a non-deforming geometry that is transformed you can feed in a rest frame that has no animation into the custom shape and then use [Pin Transform To Polygon|#force_transform_pin_polygon] to keep the animated transform. This keeps the force from recalculating internal vdb data and ensures fast calculation times while still using the animation. + * Tan U Attribute: The Tan U attribute let's you specify the attribute to be used to set the direction of the [Along Volume Tangent|#force_shape_vol] force. The BiTangent is evaluated by calculating the cross product of the Normal and the BiTangent. + * Curve Shape Settings: + :tip: You can also use the curve as a mask only to control the flow or noise force values. + :tip: You can override any curve value by creating the following point attributes before feeding the curve into the force node. + Attribute names are respectively: + * Radius Attributes: + `LYNX_force_shape_curve_global_radius`, + `LYNX_force_shape_curve_along_radius`,`LYNX_force_shape_curve_suction_radius`, + `LYNX_force_shape_curve_orbit_radius`,`LYNX_force_shape_curve_direction_radius`, + * Strength Attributes: + `LYNX_force_shape_curve_global_strength`, + `LYNX_force_shape_curve_along_strength`,`LYNX_force_shape_curve_suction_strength`, + `LYNX_force_shape_curve_orbit_strength`,`LYNX_force_shape_curve_direction_strength` + * Reverse/Carve Curve: Here you can reverse the direction of the input curve or also carve it (cut it at the ends). + * Resample/Interpolate Neighbours: Alternatively you can also resample the curve to a higher resolution. The `Interpolate Neighbours` option interpolates the curve attributes needed to calculate the force over multiple points instead of just the closest point. This is a bit more expensive to calculate but it can solve stepping issues. It can be a good alternative to increasing the curve resolution in some cases though as interpolation always produces smooth results independent of resolution. + :warning: The resolution of the curve heavily influences how well the force is calculated. Make sure it is always sufficiently subdivided. If you see stepping around steep angles in the curve, lower the resample length or turn on `Interpolate Neighbours`. + * Custom Direction: Here you can set the vector attribute that controls the force direction for the `Custom Direction` curve force. + * Normal Attribute: Here you can define the normal attribute that controls the normal of the curve. If the attribute is not found, it will be automatically created. + * UV Attribute: Here you can define a custom uv attribute. If the attribute is not found, uvs are automatically created. + :tip: Creating uvs beforehand allows the carve to be "static". This means that the ramp values are not set to the current length, but always to the whole input range. + * Curve Widths: With these ramps you control the radius of the respective [curve force|#force_shape_curve] set in the `strength` tab. + :note: The radius controls are only shown for the [curve forces|#force_shape_curve] enabled in the `strength` tab. + +Shape Advanced Settings: + * Time Interpolate Data: Evaluate the shape data even on subframes. You should only uses this if nothing else has worked to get rid of stepping artifacts. This causes excessive calculation on subframes if the force shape has to be recalculated (For example when animating the sweep). + * Data Path: The data path to the force. + :tip: If you have a lot of instances of LYNX_force_general in your scene, a lot of vdbs have to be created for calculating the force. This parameter allows you to select other instances of the LYNX_force_general. This way the vdb data is linked between the forces, which creates a lower memory foot print. If the data is linked a `External Data` visualizer is shown in the viewport. The disadvantage of this is that you are limited to the same shape. Make sure that the linked node is upstream of this node or else this node can't find the data. + :note: This option is not available with the [Shape|#force_shape_type] type set to `Curve`. + + +== Strength == +"""Here you set the individual force strengths.""" + +Global Strength Settings: + #id: force_global_strength + * Strength Global: You can use this to multiply the final strength of the force. + * Strength Geometry / Volume: Here you have another strength multiplier for geometry and volume. Use this when the [Binding|#force_binding] is set to `all` or `custom` to adjust the strength individually to the respective binding types. + * Randomize: Randomly multiply the force strength by a random value with the seed being set by the [Seed Attribute|#force_seed_attribute]. + :tip: You can use this to get rid of substepping related problems or to break up your simulation. A bit of randomness never hurts;) + :note: This is ignored for volumes. Volumes don't get influenced by any randomization parameters. + * Falloff: + #id: force_global_strength_shape_falloff + This lets you remap the falloff. Turning on [Streamer Guides|#force_guide_streamers] is highly recommended to get an interactive preview of the falloff. The input range can be remapped in the shape tab, see [Force Shape Shared Settings|#force_shape_shared_settings]. + :warning: When using the force field as a wind force, this can be thought of as the opacity of the force. When using `Curve` as the shape, the global falloff is the opacity and the individual along/orbit/suction/custom falloffs are only multipliers to the strength. The result is that if this falloff is one and the individual falloffs are zero then the force acts as a drag field. + :note: The falloff controls are only visible when the [shape|#force_shape_toggle] is enabled. + +Noise Strength Settings: + Here you can introduce noise to the force. Since most settings are similar to other noise related nodes only the differences are covered here: + * Transform Noise By Force Transform: Use this to "lock" the noise to local space. This means that the noise transform is modified the force transform. Turn on [Streamer Guides|#force_guide_streamers] to visualize this. + * Influence Strength Only: You can use this to multiply the strength of the force only instead of adding directional noise. Toggling this on makes the force take the length of the noise vector and mulitply it with the existing force direction. Optionally you can check on `Allow Negativ Values` to multiply the length with the signed value of the vector. This means that if the vector is negativ the value is negativ and vice versa. Alternatively you can also clamp the signed value. + :tip: Using `Allow Negativ Values` with clamping can create some harsh cutout masks. You can use this to break up your simulation and to create some not so "soft" noise looks. + * Curl Noise Around Sdf: Curls the noise around the sdf. You can use this to create some interesting surface based effects. Preferably use this with custom shape geometry. See the [Noise Sdf|#force_preset_noise_sdf] preset for more information. + +Flow Strength Settings: + #id: force_flow + Here you can set forces in regards to the transform of the force. + * Axis: Controls the force along/away/around the y-axis of the transform. + * Vector: Controls the force along a vector regardless of the transform. + * Center: Controls the force away from the transform center. + +Shape Strength Settings: + * Gradient: Controls the force along the gradient of the surface of the geometry. The gradient is determined using the new measure sop introduced in Houdini 17.5. You can set along which axis the gradient is calculated and also rotate it around the normals of the surface via the respective parameters. + :tip: You can choose the [Noise SDF Flow|#force_preset] preset and then disable the noise and instead enable this to get some cool trailing effects. + #id: force_shape_gradient + * Volume: Controls the force along the volume Normal/Tangent/BiTangent of the shape. See [Shape Respective Settings|#force_shape_respective_settings] for more information on how to set custom tangents. + #id: force_shape_vol + * Curve: Controls the force along the curve. See [Shape Respective Settings|#force_shape_respective_settings] for more information. + #id: force_shape_curve + +Vex Settings: + #id: force_vex + Here you can script vex overrides, in a similar fashion to what many pop forces provide. In the `Pre Force Calculation` vex code you can override any parameter, see the [vex|#force_preset_vex] preset for more information. In the `Post force Calculation` vex code you can manipulate the final force before it's applied to data. The force is bound to the LYNX_force variable. Most of the time you'll want to use `Pre Force Calucaltion` to manipulate parameters per point before the final force is calculated. `Post Force Calculation` is useful when binding custom data. + If you want to write an attribute then you have to add it to the `Àdditional Bindings` field. So let's say you want to write to a custom group, then write "group_CustomName" into the `Additional Bindings` field in order to export that attribute. If you need access to additional data, you can bind the 4rd Input via expanding `Advanced Settings` and selecting the data to be fed to the fourth input via the `Additional Input(Idx 3)` parameter. The acces index in the vex code is 3 since we start counting the inputs from zero. + :warning: + If masking by a shape is used the vex code is only executed for points/voxels inside the mask. + :warning: + When binding custom parameters you have to add them to the root of the vex wrangle node. This means everything has to be bound like this: + {{{ + #!vex + parm_custom = ch("../parm_custom"); + }}} diff --git a/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/IconSVG b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/IconSVG new file mode 100644 index 0000000..ba18001 --- /dev/null +++ b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/IconSVG @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/InternalFileOptions b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/InternalFileOptions new file mode 100644 index 0000000..222988a --- /dev/null +++ b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/InternalFileOptions @@ -0,0 +1,10 @@ +{ + "nodeconntype":{ + "type":"bool", + "value":false + }, + "nodeparmtype":{ + "type":"bool", + "value":false + } +} diff --git a/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/LYNX__logo.svg b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/LYNX__logo.svg new file mode 100644 index 0000000..786ecfd --- /dev/null +++ b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/LYNX__logo.svg @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/PythonModule b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/PythonModule new file mode 100644 index 0000000..817afb7 --- /dev/null +++ b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/PythonModule @@ -0,0 +1,184 @@ +def force_preset_apply(): + n = hou.pwd() + + # Revert Parms + for parm in n.parms(): + parm_skip = ["force_preset","force_transform_pin_curve_twist_remap","force_global_strength_shape_general_falloff_remap","force_global_strength_shape_curve_falloff_remap","force_global_strength_shape_curve_along_remap", + "force_shape_curve_along_strength_falloff_remap","force_shape_curve_along_strength_along_remap","force_shape_curve_suction_strength_falloff_remap","force_shape_curve_suction_strength_along_remap", + "force_shape_curve_orbit_strength_falloff_remap","force_shape_curve_orbit_strength_along_remap","force_shape_curve_direction_strength_falloff_remap","force_shape_curve_direction_strength_along_remap", + "force_shape_tube_width_remap","force_shape_curve_global_radius_remap","force_shape_curve_along_radius_remap","force_shape_curve_suction_radius_remap","force_shape_curve_orbit_radius_remap", + "force_shape_curve_direction_radius_remap"] + if parm.name() in parm_skip: continue + try: + parm.deleteAllKeyframes() + parm.revertToDefaults() + except: + pass + # Ramp Defaults Break Bug + n.parm("force_transform_pin_curve_twist_remap").set(hou.Ramp((hou.rampBasis.BSpline, hou.rampBasis.BSpline), (0, 1), (0, 1))) + n.parm("force_global_strength_shape_general_falloff_remap").set(hou.Ramp((hou.rampBasis.CatmullRom, hou.rampBasis.CatmullRom), (0, 1), (1, 0))) + n.parm("force_global_strength_shape_curve_falloff_remap").set(hou.Ramp((hou.rampBasis.BSpline, hou.rampBasis.BSpline), (.9, 1), (1, 0))) + n.parm("force_global_strength_shape_curve_along_remap").set(hou.Ramp((hou.rampBasis.BSpline, hou.rampBasis.BSpline), (0, 1), (1, 1))) + n.parm("force_shape_curve_along_strength_falloff_remap").set(hou.Ramp((hou.rampBasis.BSpline, hou.rampBasis.BSpline), (0, 1), (1, 0))) + n.parm("force_shape_curve_along_strength_along_remap").set(hou.Ramp((hou.rampBasis.BSpline, hou.rampBasis.BSpline), (0, 1), (1, 1))) + n.parm("force_shape_curve_suction_strength_falloff_remap").set(hou.Ramp((hou.rampBasis.BSpline, hou.rampBasis.BSpline), (0, 1), (0, 1))) + n.parm("force_shape_curve_suction_strength_along_remap").set(hou.Ramp((hou.rampBasis.BSpline, hou.rampBasis.BSpline), (0, 1), (1, 1))) + n.parm("force_shape_curve_orbit_strength_falloff_remap").set(hou.Ramp((hou.rampBasis.BSpline, hou.rampBasis.BSpline), (0, 1), (1, 0))) + n.parm("force_shape_curve_orbit_strength_along_remap").set(hou.Ramp((hou.rampBasis.BSpline, hou.rampBasis.BSpline), (0, 1), (1, 1))) + n.parm("force_shape_curve_direction_strength_falloff_remap").set(hou.Ramp((hou.rampBasis.BSpline, hou.rampBasis.BSpline), (0, 1), (1, 0))) + n.parm("force_shape_curve_direction_strength_along_remap").set(hou.Ramp((hou.rampBasis.BSpline, hou.rampBasis.BSpline), (0, 1), (1, 1))) + n.parm("force_shape_tube_width_remap").set(hou.Ramp((hou.rampBasis.BSpline, hou.rampBasis.BSpline), (0, 1), (1, 1))) + n.parm("force_shape_curve_global_radius_remap").set(hou.Ramp((hou.rampBasis.BSpline, hou.rampBasis.BSpline), (0, 1), (1, 1))) + n.parm("force_shape_curve_along_radius_remap").set(hou.Ramp((hou.rampBasis.BSpline, hou.rampBasis.BSpline), (0, 1), (1, 1))) + n.parm("force_shape_curve_suction_radius_remap").set(hou.Ramp((hou.rampBasis.BSpline, hou.rampBasis.BSpline), (0, 1), (1, 1))) + n.parm("force_shape_curve_orbit_radius_remap").set(hou.Ramp((hou.rampBasis.BSpline, hou.rampBasis.BSpline), (0, 1), (1, 1))) + n.parm("force_shape_curve_direction_radius_remap").set(hou.Ramp((hou.rampBasis.BSpline, hou.rampBasis.BSpline), (0, 1), (1, 1))) + + n_p_force_preset = n.parm("force_preset").eval() + + n_p_dict = {} + + # Preset Default + if (n_p_force_preset == 0): + pass + # Preset Gravity Geometry + elif(n_p_force_preset == 1): + n_p_dict["force_wind_toggle"] = 0 + n_p_dict["force_shape_toggle"] = 0 + n_p_dict["force_flow_toggle"] = 1 + n_p_dict["force_flow_axis_along_strength"] = 0 + n_p_dict["force_flow_vector_strength"] = 9.81 + n_p_dict["force_flow_vector_direction_x"] = 0 + n_p_dict["force_flow_vector_direction_y"] = -1 + n_p_dict["force_flow_vector_direction_z"] = 0 + # Preset Gravity Volume + elif(n_p_force_preset == 2): + n_p_dict["force_binding"] = 1 + n_p_dict["force_wind_toggle"] = 0 + n_p_dict["force_shape_toggle"] = 0 + n_p_dict["force_mass_toggle"] = 1 + n_p_dict["force_flow_toggle"] = 1 + n_p_dict["force_flow_axis_along_strength"] = 0 + n_p_dict["force_flow_vector_strength"] = 9.81 + n_p_dict["force_flow_vector_direction_x"] = 0 + n_p_dict["force_flow_vector_direction_y"] = -1 + n_p_dict["force_flow_vector_direction_z"] = 0 + # Preset Drag + elif(n_p_force_preset == 3): + n_p_dict["force_global_strength"] = 0 + n_p_dict["force_wind_airresist"] = 25 + # Preset Tornado + elif(n_p_force_preset == 4): + n_p_dict["force_transform_t_y"] = .75 + n_p_dict["force_transform_s_y"] = 2 + n_p_dict["force_shape_tube_width_remap"] = hou.Ramp((hou.rampBasis.BSpline, hou.rampBasis.BSpline, hou.rampBasis.BSpline), (.0, .5, 1), (1, .1, 1)) + n_p_dict["force_guide_streamers_toggle"] = 1 + n_p_dict["force_guide_streamers_mode"] = 1 + n_p_dict["force_guide_streamers_grid_transform_r"] = 0 + n_p_dict["force_global_strength"] = 2 + n_p_dict["force_global_strength_rand_toggle"] = 1 + n_p_dict["force_global_strength_rand_x"] = .75 + n_p_dict["force_global_strength_rand_y"] = 1.25 + n_p_dict["force_global_strength_shape_general_falloff_remap"] = hou.Ramp((hou.rampBasis.CatmullRom, hou.rampBasis.CatmullRom, hou.rampBasis.CatmullRom), (.25, .75, 1), (0, 1, 0)) + n_p_dict["force_noise_toggle"] = 1 + n_p_dict["force_noise_scale_uniform"] = .2 + n_p_dict["force_flow_toggle"] = 1 + n_p_dict["force_flow_axis_along_strength"] = .75 + n_p_dict["force_flow_axis_suction_strength"] = -1 + n_p_dict["force_flow_axis_orbit_strength"] = 1 + n_p_dict["force_shape_type"] = 2 + # Preset Sweep Animation + elif(n_p_force_preset == 5): + n_p_dict["force_global_strength_rand_toggle"] = 1 + n_p_dict["force_flow_toggle"] = 1 + n_p_dict["force_flow_axis_along_strength"] = 1 + n.parm("force_shape_sweep_angle").revertToDefaults() + n.parm("force_shape_sweep_angle").setExpression("$FF*10") + # Preset Volume + elif(n_p_force_preset == 6): + n_p_dict["force_shape_type"] = 3 + n_p_dict["force_global_strength_rand_toggle"] = 1 + n_p_dict["force_global_strength_shape_general_falloff_remap"] = hou.Ramp((hou.rampBasis.CatmullRom, hou.rampBasis.CatmullRom), (.85, 1), (1, 0)) + n_p_dict["force_noise_toggle"] = 1 + n_p_dict["force_noise_scale_uniform"] = .4 + n_p_dict["force_flow_toggle"] = 0 + n_p_dict["force_shape_vol_toggle"] = 1 + n_p_dict["force_shape_vol_N_strength"] = -1 + n_p_dict["force_shape_vol_tan_v_strength"] = -.5 + # Preset Vex + elif(n_p_force_preset == 7): + n_p_dict["force_global_strength_rand_toggle"] = 1 + n_p_dict["force_flow_toggle"] = 1 + n_p_dict["force_flow_axis_along_strength"] = 1 + n_p_dict["force_vex_binding_export"] = "group_LYNX_force" + n_p_dict["force_vex_post_toggle"] = 1 + n_p_dict["force_vex_post_code"] = '//Manipulate LYNX_force. This code is applied after force calculation. \nint @group_LYNX_force = 0;\nif (LYNX_force!=0){\n @group_LYNX_force = max(@group_LYNX_force,1);\n}' + # Preset Noise Sdf Flow + elif(n_p_force_preset == 8): + n_p_dict["force_binding"] = 3 + n_p_dict["force_binding_geometry_toggle"] = 1 + n_p_dict["force_shape_type"] = 4 + n_p_dict["force_shape_distance_remap_toggle"] = 1 + n_p_dict["force_shape_distance_sdf_remap_y"] = .5 + n_p_dict["force_noise_toggle"] = 1 + n_p_dict["force_noise_sdf_toggle"] = 1 + n_p_dict["force_flow_toggle"] = 0 + n_p_dict["force_vex_post_toggle"] = 1 + n_p_dict["force_vex_post_code"] = '//Manipulate LYNX_force. This code is applied after force calculation. \n@LYNX_force = 0; //Zero out v.' + + hou.ui.displayMessage(severity=hou.severityType.Warning, title="LYNX | Force",text="Please select a custom geometry in the shape tab.") + + for parm in n_p_dict.keys(): + n.parm(parm).set(n_p_dict[parm]) + +def force_shape_invert_update(): + n = hou.pwd() + n_p_force_global_strength_shape_general_falloff_reverse_toggle = n.parm("force_global_strength_shape_general_falloff_reverse_toggle").eval() + n.parm("force_global_strength_shape_general_falloff_reverse_toggle").deleteAllKeyframes() + n.parm("force_global_strength_shape_general_falloff_reverse_toggle").set(1-n_p_force_global_strength_shape_general_falloff_reverse_toggle) + + n_p_force_global_strength_shape_curve_falloff_remap_reverse_toggle = n.parm("force_global_strength_shape_curve_falloff_remap_reverse_toggle").eval() + n.parm("force_global_strength_shape_curve_falloff_remap_reverse_toggle").deleteAllKeyframes() + n.parm("force_global_strength_shape_curve_falloff_remap_reverse_toggle").set(1-n_p_force_global_strength_shape_curve_falloff_remap_reverse_toggle) + n_p_force_shape_curve_along_strength_falloff_remap_reverse_toggle = n.parm("force_shape_curve_along_strength_falloff_remap_reverse_toggle").eval() + n.parm("force_shape_curve_along_strength_falloff_remap_reverse_toggle").deleteAllKeyframes() + n.parm("force_shape_curve_along_strength_falloff_remap_reverse_toggle").set(1-n_p_force_shape_curve_along_strength_falloff_remap_reverse_toggle) + n_p_force_shape_curve_suction_strength_falloff_remap_reverse_toggle = n.parm("force_shape_curve_suction_strength_falloff_remap_reverse_toggle").eval() + n.parm("force_shape_curve_suction_strength_falloff_remap_reverse_toggle").deleteAllKeyframes() + n.parm("force_shape_curve_suction_strength_falloff_remap_reverse_toggle").set(1-n_p_force_shape_curve_suction_strength_falloff_remap_reverse_toggle) + n_p_force_shape_curve_orbit_strength_falloff_remap_reverse_toggle = n.parm("force_shape_curve_orbit_strength_falloff_remap_reverse_toggle").eval() + n.parm("force_shape_curve_orbit_strength_falloff_remap_reverse_toggle").deleteAllKeyframes() + n.parm("force_shape_curve_orbit_strength_falloff_remap_reverse_toggle").set(1-n_p_force_shape_curve_orbit_strength_falloff_remap_reverse_toggle) + n_p_force_shape_curve_direction_strength_falloff_remap_reverse_toggle = n.parm("force_shape_curve_direction_strength_falloff_remap_reverse_toggle").eval() + n.parm("force_shape_curve_direction_strength_falloff_remap_reverse_toggle").deleteAllKeyframes() + n.parm("force_shape_curve_direction_strength_falloff_remap_reverse_toggle").set(1-n_p_force_shape_curve_direction_strength_falloff_remap_reverse_toggle) + + +def force_shape_data_path_absolute_update(): + n = hou.pwd() + n_data_link = hou.node(n.parm("force_shape_data_path_absolute").eval()) + if (n_data_link==None): return + + n_data_link_p_force_shape = n_data_link.parm("force_shape_type").eval() + if (n_data_link_p_force_shape==5): + n.parm("force_shape_data_path_relative").revertToDefaults() + hou.ui.displayMessage(severity=hou.severityType.Warning, title="LYNX | Force",text="Linking data is not supported for curves.") + +def force_shape_geo_path_update(): + n = hou.pwd() + n_force_shape_custom = None + if(n.parm("force_shape_type").eval()==4): + n_force_shape_custom = n.node(n.parm("force_shape_custom_geo_path").eval()) + #elif(n.parm("force_shape_type").eval()==5): + # n_force_shape_custom = n.node(n.parm("force_shape_curve_geo_path").eval()) + + if(n_force_shape_custom!=None): + BoundingBox = n_force_shape_custom.geometry().boundingBox() + BoundingBox_size = BoundingBox.sizevec() + BoundingBox_center = BoundingBox.center() + BoundingBox_size_max = max(max(BoundingBox_size[0],BoundingBox_size[1]),BoundingBox_size[2]) + + n.parm("force_transform_t_x").set(BoundingBox_center[0]) + n.parm("force_transform_t_y").set(BoundingBox_center[1]) + n.parm("force_transform_t_z").set(BoundingBox_center[2]) + n.parm("force_transform_s_uniform").set(BoundingBox_size_max) \ No newline at end of file diff --git a/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Sections.list b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Sections.list new file mode 100644 index 0000000..d6f10fd --- /dev/null +++ b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Sections.list @@ -0,0 +1,13 @@ +"" +DialogScript DialogScript +CreateScript CreateScript +TypePropertiesOptions TypePropertiesOptions +Help Help +Tools.shelf Tools.shelf +InternalFileOptions InternalFileOptions +Contents.gz Contents.gz +Version Version +IconSVG IconSVG +PythonModule PythonModule +ExtraFileOptions ExtraFileOptions +LYNX__logo.svg LYNX_logo.svg diff --git a/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Tools.shelf b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Tools.shelf new file mode 100644 index 0000000..104faa4 --- /dev/null +++ b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Tools.shelf @@ -0,0 +1,20 @@ + + + + + + + DOP + + + $HDA_TABLE_AND_NAME + + LYNX/Force + + + diff --git a/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/TypePropertiesOptions b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/TypePropertiesOptions new file mode 100644 index 0000000..b481149 --- /dev/null +++ b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/TypePropertiesOptions @@ -0,0 +1,14 @@ +SaveSpareParms := 0; +CheckExternal := 1; +SaveIcon := 1; +GzipContents := 1; +ContentsCompressionType := 1; +UnlockOnCreate := 0; +SaveCachedCode := 0; +LockContents := 1; +MakeDefault := 1; +UseDSParms := 1; +ForbidOutsideParms := 1; +PrefixDroppedParmLabel := 0; +PrefixDroppedParmName := 0; +ParmsFromVfl := 0; diff --git a/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Version b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Version new file mode 100644 index 0000000..0b5b57b Binary files /dev/null and b/HOUDINI/HSITE/otls/LYNX_force.hda/LYNX_8_8Dop_1LYNX__force__general_8_81.3/Version differ diff --git a/HOUDINI/HSITE/otls/LYNX_force.hda/Sections.list b/HOUDINI/HSITE/otls/LYNX_force.hda/Sections.list index 2220d3d..69341d4 100644 --- a/HOUDINI/HSITE/otls/LYNX_force.hda/Sections.list +++ b/HOUDINI/HSITE/otls/LYNX_force.hda/Sections.list @@ -4,3 +4,4 @@ houdini.hdalibrary houdini.hdalibrary LYNX_8_8Dop_1LYNX__force__general_8_81.0 LYNX::Dop/LYNX_force_general::1.0 LYNX_8_8Dop_1LYNX__force__general_8_81.1 LYNX::Dop/LYNX_force_general::1.1 LYNX_8_8Dop_1LYNX__force__general_8_81.2 LYNX::Dop/LYNX_force_general::1.2 +LYNX_8_8Dop_1LYNX__force__general_8_81.3 LYNX::Dop/LYNX_force_general::1.3