diff --git a/help/icons/camera_frustum.svg b/help/icons/camera_frustum.svg
new file mode 100644
index 000000000..3520a11ce
--- /dev/null
+++ b/help/icons/camera_frustum.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/help/nodes/obj/labs--camera_frustum-1.0.txt b/help/nodes/obj/labs--camera_frustum-1.0.txt
new file mode 100644
index 000000000..e2313fa93
--- /dev/null
+++ b/help/nodes/obj/labs--camera_frustum-1.0.txt
@@ -0,0 +1,44 @@
+#type: node
+#context: sop
+#internal: labs::camera_frustum.1.0
+#icon: camera_frustum
+#tags: sidefxlabs, camera, frustum
+
+= Labs Camera Frustum =
+
+""" This OBJ sets up a camera frustum and padded frustum based on the input parent camera. """
+
+This OBJ sets up a camera frustum and padded frustum based on the input parent camera.
+It uses the parent camera's parameter values to define it's near/far planes and view angle.
+You can define a padded frustum either in the parameter panel or in the viewport thanks to the camera frustum state.
+This is useful for selections based on the camera view.
+
+@parameters
+
+ == Padding Options ==
+
+ Lower Padding:
+ #id: minpad
+ The padding on the left hand side of the camera, defined as a vector.
+
+ Upper Padding:
+ #id: maxpad
+ The padding on the right hand side of the camera, defined as a vector.
+
+ == Display Options ==
+
+ Primitive Group:
+ #id: frustum_display
+ Choose how to display the frustum geometry in the viewport: full or wireframe.
+
+ #id: frustum_output
+ Choose whether to output the original frustum only, the padded frustum only, or both.
+
+ #id: frustum_color
+ The color for the frustum
+
+ #id: padded_frustum_color
+ The color for the padded frustum
+
+@related
+- [Camera|Node:obj/cam]
diff --git a/help/nodes/sop/labs--group_by_attribute.txt b/help/nodes/sop/labs--group_by_attribute.txt
index 273f78e38..50ee6eed8 100644
--- a/help/nodes/sop/labs--group_by_attribute.txt
+++ b/help/nodes/sop/labs--group_by_attribute.txt
@@ -20,12 +20,14 @@ NOTE:
This has similar functionality to the [Partition SOP|Node:SOP/partition] but without having to deal with expressions.
@parameters
+ Group:
+ Subset of the geometry from which to get the attribute to generate groups from.
Attribute Type:
- Component Type for this attribute
+ Component Type for this attribute.
Attribute Name:
- Name of the Attribute that we would like to use to generate groups from
+ Name of the Attribute that we would like to use to generate groups from.
Group Prefix:
- Prefix to cluster the group names together. Like mat_ or col_
+ Prefix to cluster the group names together. Like mat_ or col_.
Precision:
When providing a float attribute, this will control after how many decimals the value will be truncated.
\ No newline at end of file
diff --git a/otls/camera_frustum.1.0.hda/INDEX__SECTION b/otls/camera_frustum.1.0.hda/INDEX__SECTION
new file mode 100644
index 000000000..af56e231b
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/INDEX__SECTION
@@ -0,0 +1,14 @@
+Operator: labs::camera_frustum::1.0
+Label: Labs Camera Frustum
+Path: oplib:/labs::Object/camera_frustum::1.0?labs::Object/camera_frustum::1.0
+Icon: opdef:/labs::Object/camera_frustum::1.0?IconSVG
+Table: Object
+License:
+Extra:
+User:
+Inputs: 1 to 1
+Subnet: false
+Python: false
+Empty: false
+Modified: Mon Mar 21 14:54:57 2022
+
diff --git a/otls/camera_frustum.1.0.hda/Sections.list b/otls/camera_frustum.1.0.hda/Sections.list
new file mode 100644
index 000000000..5030e73b0
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/Sections.list
@@ -0,0 +1,4 @@
+""
+INDEX__SECTION INDEX_SECTION
+houdini.hdalibrary houdini.hdalibrary
+labs_8_8Object_1camera__frustum_8_81.0 labs::Object/camera_frustum::1.0
diff --git a/otls/camera_frustum.1.0.hda/houdini.hdalibrary b/otls/camera_frustum.1.0.hda/houdini.hdalibrary
new file mode 100644
index 000000000..e69de29bb
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Contents.dir/Contents.createtimes b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Contents.dir/Contents.createtimes
new file mode 100644
index 000000000..bc0d69e9c
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Contents.dir/Contents.createtimes
@@ -0,0 +1,47 @@
+{
+ "hdaroot/polyextrude9.def":1623966442,
+ "hdaroot/transform8.def":1624296833,
+ "hdaroot/translate_xy2.def":1624296065,
+ "hdaroot/group4.def":1623848927,
+ "hdaroot/PADDED/polyfill2.def":1629192920,
+ "hdaroot/PADDED/blast11.def":1623935785,
+ "hdaroot/PADDED/clip2.def":1629192826,
+ "hdaroot/PADDED/blast10.def":1623935785,
+ "hdaroot/PADDED/null1.def":1629192775,
+ "hdaroot/PADDED/CLIPPED.def":1629187433,
+ "hdaroot/PADDED/FAR.def":1623935798,
+ "hdaroot/PADDED/clip1.def":1629192826,
+ "hdaroot/PADDED.def":1629186351,
+ "hdaroot/FRUSTUM/blast7.def":1623935785,
+ "hdaroot/FRUSTUM/output0.def":1629186351,
+ "hdaroot/FRUSTUM/NEAR.def":1623935798,
+ "hdaroot/FRUSTUM/FRUSTUM.def":1624352284,
+ "hdaroot/FRUSTUM.def":1629186351,
+ "hdaroot/FRUSTUM/blast6.def":1623935785,
+ "hdaroot/transform7.def":1624296833,
+ "hdaroot/transform4.def":1624296833,
+ "hdaroot/transform6.def":1624033531,
+ "hdaroot/color5.def":1623833865,
+ "hdaroot/FRUSTUM/FAR.def":1623935798,
+ "hdaroot/scale_xy1.def":1624296065,
+ "hdaroot/polyextrude6.def":1623966442,
+ "hdaroot/grid2.def":1624034653,
+ "hdaroot/PADDED/NEAR.def":1623935798,
+ "hdaroot/group1.def":1623848927,
+ "hdaroot/PADDED/output0.def":1629186351,
+ "hdaroot/polyextrude8.def":1623966442,
+ "hdaroot/OUT_FULL.def":1623849082,
+ "hdaroot/choose_display.def":1623833556,
+ "hdaroot/choose_frustum_to_output.def":1623833556,
+ "hdaroot/from_NDC6.def":1623746775,
+ "hdaroot/OUT_WIREFRAME.def":1623849082,
+ "hdaroot/PADDED/blast6.def":1623935785,
+ "hdaroot/make_wireframe.def":1623329450,
+ "hdaroot/merge2.def":1623833837,
+ "hdaroot/PADDED/polyfill1.def":1629192920,
+ "hdaroot/from_NDC4.def":1623746775,
+ "hdaroot/color3.def":1623833865,
+ "hdaroot/DISPLAY.def":1623833416,
+ "hdaroot/translate_xy1.def":1624296065,
+ "hdaroot.def":1647865692
+}
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Contents.dir/Contents.houdini_versions b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Contents.dir/Contents.houdini_versions
new file mode 100644
index 000000000..fe4a16758
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Contents.dir/Contents.houdini_versions
@@ -0,0 +1,46 @@
+{
+ "values":["19.0.562"
+ ],
+ "indexes":{
+ "hdaroot/group4.userdata":0,
+ "hdaroot/PADDED/polyfill2.userdata":0,
+ "hdaroot/PADDED/polyfill1.userdata":0,
+ "hdaroot/PADDED/blast10.userdata":0,
+ "hdaroot/PADDED/CLIPPED.userdata":0,
+ "hdaroot/PADDED/NEAR.userdata":0,
+ "hdaroot/FRUSTUM/output0.userdata":0,
+ "hdaroot/FRUSTUM/blast7.userdata":0,
+ "hdaroot/FRUSTUM/blast6.userdata":0,
+ "hdaroot/PADDED/blast6.userdata":0,
+ "hdaroot/FRUSTUM/FAR.userdata":0,
+ "hdaroot/FRUSTUM/NEAR.userdata":0,
+ "hdaroot/translate_xy1.userdata":0,
+ "hdaroot/transform7.userdata":0,
+ "hdaroot/transform4.userdata":0,
+ "hdaroot/transform8.userdata":0,
+ "hdaroot/FRUSTUM/FRUSTUM.userdata":0,
+ "hdaroot/translate_xy2.userdata":0,
+ "hdaroot/scale_xy1.userdata":0,
+ "hdaroot/PADDED.userdata":0,
+ "hdaroot/polyextrude6.userdata":0,
+ "hdaroot/polyextrude9.userdata":0,
+ "hdaroot/transform6.userdata":0,
+ "hdaroot/FRUSTUM.userdata":0,
+ "hdaroot/OUT_WIREFRAME.userdata":0,
+ "hdaroot/PADDED/output0.userdata":0,
+ "hdaroot/OUT_FULL.userdata":0,
+ "hdaroot/grid2.userdata":0,
+ "hdaroot/merge2.userdata":0,
+ "hdaroot/PADDED/FAR.userdata":0,
+ "hdaroot/choose_display.userdata":0,
+ "hdaroot/polyextrude8.userdata":0,
+ "hdaroot/PADDED/blast11.userdata":0,
+ "hdaroot/PADDED/clip2.userdata":0,
+ "hdaroot/group1.userdata":0,
+ "hdaroot/DISPLAY.userdata":0,
+ "hdaroot/choose_frustum_to_output.userdata":0,
+ "hdaroot/PADDED/clip1.userdata":0,
+ "hdaroot/make_wireframe.userdata":0,
+ "hdaroot/PADDED/null1.userdata":0
+ }
+}
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Contents.dir/Contents.mime b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Contents.dir/Contents.mime
new file mode 100644
index 000000000..ab59c4388
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Contents.dir/Contents.mime
@@ -0,0 +1,4652 @@
+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
+
+Object
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.init"
+Content-Type: text/plain
+
+type = labs::camera_frustum::1.0
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.def"
+Content-Type: text/plain
+
+objflags objflags = origin off
+pretransform UT_DMatrix4 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
+comment ""
+position 0.542857 2.05599
+connectornextid 0
+flags = lock off model off template off footprint off xray off bypass off display on render off highlight off unload off savedata off compress on colordefault on exposed on selectable on
+outputsNamed3
+{
+}
+inputsNamed3
+{
+}
+inputs
+{
+}
+stat
+{
+ create -1
+ modify -1
+ author Bruno_Ebe@obelix
+ 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":""
+ },
+ "___toolcount___":{
+ "type":"string",
+ "value":"4"
+ },
+ "___toolid___":{
+ "type":"string",
+ "value":"labs::object_camera_frustum::1.1"
+ },
+ "wirestyle":{
+ "type":"string",
+ "value":"rounded"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/color3.init"
+Content-Type: text/plain
+
+type = color
+matchesdef = 1
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/color3.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 3.16094 -11.3514
+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 from_NDC4 1 1 "input1"
+}
+inputs
+{
+0 from_NDC4 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ 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/color3.chn"
+Content-Type: text/plain
+
+{
+ channel colorr {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../frustum_colorr\") }
+ }
+ channel colorg {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = ch(\"../frustum_colorg\") }
+ }
+ channel colorb {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = ch(\"../frustum_colorb\") }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/color3.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( "" )
+grouptype [ 0 locks=0 ] ( "guess" )
+deleteallcolorattribs [ 0 locks=0 ] ( "off" )
+class [ 0 locks=0 ] ( 2 )
+colortype [ 0 locks=0 ] ( 0 )
+color [ 8 locks=0 ] ( [ colorr 1 ] [ colorg 1 ] [ colorb 1 ] )
+seed [ 0 locks=0 ] ( 0 )
+rampattribute [ 0 locks=0 ] ( "" )
+ramprange [ 0 locks=0 ] ( 0 1 )
+ramp [ 0 locks=0 ] ( 2 )
+ramp1pos [ 0 locks=0 ] ( 0 )
+ramp1c [ 0 locks=0 ] ( 0 0 0 )
+ramp1interp [ 0 locks=0 ] ( "linear" )
+ramp2pos [ 0 locks=0 ] ( 1 )
+ramp2c [ 0 locks=0 ] ( 1 1 1 )
+ramp2interp [ 0 locks=0 ] ( "linear" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/color3.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":""
+ },
+ "___toolcount___":{
+ "type":"string",
+ "value":"2"
+ },
+ "___toolid___":{
+ "type":"string",
+ "value":"sop_color"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/from_NDC4.init"
+Content-Type: text/plain
+
+type = attribwrangle
+matchesdef = 1
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/from_NDC4.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 3.15794 -10.3135
+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 transform6 0 1 "input1"
+}
+inputs
+{
+0 transform6 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ 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/from_NDC4.spareparmdef"
+Content-Type: text/plain
+
+ group {
+ name "folder1"
+ label "Code"
+
+ parm {
+ name "group"
+ baseparm
+ label "Group"
+ export none
+ bindselector points "Modify Points"
+ "Select the points to affect and press Enter to complete."
+ 0 1 0xffffffff 0 grouptype 0
+ }
+ parm {
+ name "grouptype"
+ baseparm
+ label "Group Type"
+ export none
+ }
+ parm {
+ name "class"
+ 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
+ }
+ parm {
+ name "snippet"
+ baseparm
+ label "VEXpression"
+ export all
+ }
+ parm {
+ name "exportlist"
+ baseparm
+ label "Attributes to Create"
+ export none
+ }
+ parm {
+ name "vex_strict"
+ baseparm
+ label "Enforce Prototypes"
+ export none
+ }
+ }
+
+ group {
+ name "folder1_1"
+ label "Bindings"
+
+ parm {
+ name "autobind"
+ baseparm
+ label "Autobind by Name"
+ export none
+ }
+ multiparm {
+ name "bindings"
+ label "Number of Bindings"
+ baseparm
+ default 0
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "multistartoffset" "1" }
+
+ parm {
+ name "bindname#"
+ baseparm
+ label "Attribute Name"
+ export none
+ }
+ parm {
+ name "bindparm#"
+ 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 { "autoscope" "0000000000000000" }
+ parmtag { "multistartoffset" "1" }
+
+ parm {
+ name "bindgroupname#"
+ baseparm
+ label "Group Name"
+ export none
+ }
+ parm {
+ name "bindgroupparm#"
+ baseparm
+ label "VEX Parameter"
+ 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_updatenmls"
+ baseparm
+ label "Update Normals If Displaced"
+ export none
+ }
+ parm {
+ name "vex_matchattrib"
+ baseparm
+ label "Attribute to Match"
+ export none
+ }
+ parm {
+ name "vex_inplace"
+ baseparm
+ label "Compute Results In Place"
+ export none
+ }
+ parm {
+ name "vex_selectiongroup"
+ baseparm
+ label "Output Selection Group"
+ export none
+ }
+ parm {
+ name "vex_precision"
+ baseparm
+ label "VEX Precision"
+ export none
+ }
+ }
+
+ parm {
+ name "camera"
+ label "Camera"
+ type oppath
+ default { "" }
+ parmtag { "oprelative" "." }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/from_NDC4.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 objspace = chsop(\"camera\");
+@P = fromNDC(objspace, @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 ] ( "" )
+vex_precision [ 0 locks=0 ] ( auto )
+folder1 [ 0 locks=0 ] ( 0 0 )
+camera [ 0 locks=0 ] ( "`opinputpath(\"..\", 0)`" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/from_NDC4.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":""
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/make_wireframe.init"
+Content-Type: text/plain
+
+type = ends
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/make_wireframe.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 6.63038 -18.7457
+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 choose_frustum_to_output 1 1 "input1"
+}
+inputs
+{
+0 choose_frustum_to_output 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ 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/make_wireframe.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( "" )
+pshapeu [ 0 locks=0 ] ( "off" )
+pshapev [ 0 locks=0 ] ( "off" )
+closeu [ 0 locks=0 ] ( "unrollshared" )
+closev [ 0 locks=0 ] ( "sameclosure" )
+clampu [ 0 locks=0 ] ( "sameclamp" )
+clampv [ 0 locks=0 ] ( "sameclamp" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/make_wireframe.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/DISPLAY.init"
+Content-Type: text/plain
+
+type = output
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/DISPLAY.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 5.26894 -22.0607
+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 choose_display 1 1 "input1"
+}
+inputs
+{
+0 choose_display 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ 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/DISPLAY.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+outputidx [ 0 locks=0 ] ( 0 )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/DISPLAY.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/choose_frustum_to_output.init"
+Content-Type: text/plain
+
+type = switch
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/choose_frustum_to_output.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 5.26894 -17.2429
+connectornextid 4
+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 FRUSTUM 1 1 "input1"
+2 (__dot1) "" 1 "input2"
+3 merge2 2 1 "input3"
+}
+inputs
+{
+0 FRUSTUM 0 1
+1 (__dot1) 0 1
+2 merge2 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ access 0777
+}
+color UT_Color RGB 0.8 1 0.7
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/choose_frustum_to_output.chn"
+Content-Type: text/plain
+
+{
+ channel input {
+ lefttype = extend
+ righttype = extend
+ default = 2
+ flags = 0
+ segment { length = 0 value = 2 2 expr = ch(\"../frustum_output\") }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/choose_frustum_to_output.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+input [ 8 locks=0 ] ( [ input 0 ] )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/choose_frustum_to_output.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/choose_display.init"
+Content-Type: text/plain
+
+type = switch
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/choose_display.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 5.26894 -21.0011
+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 OUT_FULL 1 1 "input1"
+2 OUT_WIREFRAME 1 1 "input2"
+}
+inputs
+{
+0 OUT_FULL 0 1
+1 OUT_WIREFRAME 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ access 0777
+}
+color UT_Color RGB 0.8 1 0.7
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/choose_display.chn"
+Content-Type: text/plain
+
+{
+ channel input {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = ch(\"../frustum_display\") }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/choose_display.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+input [ 8 locks=0 ] ( [ input 0 ] )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/choose_display.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/merge2.init"
+Content-Type: text/plain
+
+type = merge
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/merge2.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 7.00402 -15.9664
+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 FRUSTUM 1 1 "input1"
+1 (__dot1) "" 1 "input2"
+}
+inputs
+{
+0 FRUSTUM 0 1
+1 (__dot1) 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ 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/merge2.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/merge2.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/group1.init"
+Content-Type: text/plain
+
+type = groupcreate
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/group1.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 3.16094 -12.3514
+connectornextid 2
+flags = lock off model off template off footprint off xray off bypass off display off render off highlight on unload off savedata off compress on colordefault on exposed on
+outputsNamed3
+{
+1 "output1"
+}
+inputsNamed3
+{
+0 color3 1 1 "input1"
+}
+inputs
+{
+0 color3 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ 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/group1.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+groupname [ 0 locks=0 ] ( frustum )
+grouptype [ 0 locks=0 ] ( "primitive" )
+mergeop [ 0 locks=0 ] ( "replace" )
+folder0 [ 0 locks=0 ] ( 0 )
+groupbase [ 0 locks=0 ] ( "on" )
+basegroup [ 0 locks=0 ] ( "" )
+ordered [ 0 locks=0 ] ( "off" )
+geotype [ 0 locks=0 ] ( "all" )
+switcher3 [ 0 locks=0 ] ( 0 )
+groupbounding [ 0 locks=0 ] ( "off" )
+boundtype [ 0 locks=0 ] ( "usebbox" )
+size [ 0 locks=0 ] ( 1 1 1 )
+t [ 0 locks=0 ] ( 0 0 0 )
+includenotwhollycontained [ 0 locks=0 ] ( "off" )
+iso [ 0 locks=0 ] ( 0 )
+invertvolume [ 0 locks=0 ] ( "off" )
+switcher4 [ 0 locks=0 ] ( 0 )
+groupnormal [ 0 locks=0 ] ( "off" )
+camerapath [ 0 locks=0 ] ( "" )
+nonplanar [ 0 locks=0 ] ( "off" )
+nonplanartol [ 0 locks=0 ] ( 0.001 )
+dir [ 0 locks=0 ] ( 0 0 1 )
+angle [ 0 locks=0 ] ( 180 )
+switcher5 [ 0 locks=0 ] ( 0 )
+groupedges [ 0 locks=0 ] ( "off" )
+dominedgeangle [ 0 locks=0 ] ( "off" )
+minedgeangle [ 0 locks=0 ] ( 20 )
+domaxedgeangle [ 0 locks=0 ] ( "off" )
+maxedgeangle [ 0 locks=0 ] ( 20 )
+edgeanglebetweenedges [ 0 locks=0 ] ( "off" )
+dominedgelen [ 0 locks=0 ] ( "off" )
+minedgelen [ 0 locks=0 ] ( 0 )
+domaxedgelen [ 0 locks=0 ] ( "off" )
+maxedgelen [ 0 locks=0 ] ( 0 )
+dodepth [ 0 locks=0 ] ( "off" )
+edgestep [ 0 locks=0 ] ( 0 )
+edgeptgrp [ 0 locks=0 ] ( 0 )
+unshared [ 0 locks=0 ] ( "off" )
+boundarygroups [ 0 locks=0 ] ( "off" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/group1.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/OUT_FULL.init"
+Content-Type: text/plain
+
+type = null
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/OUT_FULL.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 3.72161 -19.3505
+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 choose_frustum_to_output 1 1 "input1"
+}
+inputs
+{
+0 choose_frustum_to_output 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ access 0777
+}
+color UT_Color RGB 0.6 0.7 0.77
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/OUT_FULL.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+copyinput [ 0 locks=0 ] ( "on" )
+cacheinput [ 0 locks=0 ] ( "off" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/OUT_FULL.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/OUT_WIREFRAME.init"
+Content-Type: text/plain
+
+type = null
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/OUT_WIREFRAME.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 6.63038 -19.8484
+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 make_wireframe 1 1 "input1"
+}
+inputs
+{
+0 make_wireframe 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ access 0777
+}
+color UT_Color RGB 0.6 0.7 0.77
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/OUT_WIREFRAME.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+copyinput [ 0 locks=0 ] ( "on" )
+cacheinput [ 0 locks=0 ] ( "off" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/OUT_WIREFRAME.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/grid2.init"
+Content-Type: text/plain
+
+type = grid
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/grid2.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 3.16094 -2.6174
+connectornextid 1
+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
+{
+0 "output1"
+}
+inputsNamed3
+{
+}
+inputs
+{
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ 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/grid2.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+type [ 0 locks=0 ] ( "poly" )
+surftype [ 0 locks=0 ] ( "quads" )
+orient [ 0 locks=0 ] ( "xy" )
+size [ 0 locks=0 ] ( 1 1 )
+t [ 8 locks=0 ] ( 0.5 0.5 0 )
+r [ 0 locks=0 ] ( 0 0 0 )
+rows [ 0 locks=0 ] ( 2 )
+cols [ 0 locks=0 ] ( 2 )
+orderu [ 0 locks=0 ] ( 4 )
+orderv [ 0 locks=0 ] ( 4 )
+interpu [ 0 locks=0 ] ( "on" )
+interpv [ 0 locks=0 ] ( "on" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/grid2.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/polyextrude6.init"
+Content-Type: text/plain
+
+type = polyextrude::2.0
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/polyextrude6.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 3.16094 -8.2736
+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 off exposed on
+outputsNamed3
+{
+1 "output1"
+}
+inputsNamed3
+{
+0 grid2 0 1 "input1"
+}
+inputs
+{
+0 grid2 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ access 0777
+}
+color UT_Color RGB 0.89 0.412 0.761
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/polyextrude6.chn"
+Content-Type: text/plain
+
+{
+ channel dist {
+ lefttype = extend
+ righttype = extend
+ default = -14.431703567504883
+ flags = 0
+ segment { length = 0 value = -14.431703567504883 -14.431703567504883 expr = "ch(opinputpath(\"..\", 0)+\"/far\") - ch(opinputpath(\"..\", 0)+\"/near\")" }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/polyextrude6.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( "" )
+splittype [ 0 locks=0 ] ( "components" )
+usesplitgroup [ 0 locks=0 ] ( "off" )
+splitgroup [ 0 locks=0 ] ( "" )
+extrusionmode [ 0 locks=0 ] ( "primnormal" )
+ptnormalsrc [ 0 locks=0 ] ( "precompute" )
+ptnormalattrib [ 0 locks=0 ] ( N )
+dist [ 8 locks=0 ] ( [ dist 0 ] )
+inset [ 0 locks=0 ] ( 0 )
+twist [ 0 locks=0 ] ( 0 )
+divs [ 0 locks=0 ] ( 1 )
+spinetype [ 0 locks=0 ] ( "straight" )
+stdswitcher [ 0 locks=0 ] ( 0 0 0 )
+xformsection [ 0 locks=0 ] ( 0 )
+xformfront [ 0 locks=0 ] ( "off" )
+xformspace [ 0 locks=0 ] ( "local" )
+rst [ 0 locks=0 ] ( "srt" )
+xyz [ 0 locks=0 ] ( "xyz" )
+translate [ 0 locks=0 ] ( 0 0 0 )
+rotate [ 0 locks=0 ] ( 0 0 0 )
+scale [ 0 locks=0 ] ( 1 1 1 )
+shear [ 0 locks=0 ] ( 0 0 0 )
+pivotxformsection [ 0 locks=0 ] ( 0 )
+pivot [ 0 locks=0 ] ( 0 0 0 )
+pivotrotate [ 0 locks=0 ] ( 0 0 0 )
+prexformsection [ 0 locks=0 ] ( 0 )
+prexform_rst [ 0 locks=0 ] ( "srt" )
+prexform_xyz [ 0 locks=0 ] ( "xyz" )
+prexform_translate [ 0 locks=0 ] ( 0 0 0 )
+prexform_rotate [ 0 locks=0 ] ( 0 0 0 )
+prexform_scale [ 0 locks=0 ] ( 1 1 1 )
+prexform_shear [ 0 locks=0 ] ( 0 0 0 )
+outputsection [ 0 locks=0 ] ( 0 )
+outputfront [ 0 locks=0 ] ( "on" )
+outputfrontgrp [ 0 locks=0 ] ( "off" )
+frontgrp [ 0 locks=0 ] ( extrudeFront )
+outputback [ 0 locks=0 ] ( "on" )
+outputbackgrp [ 0 locks=0 ] ( "off" )
+backgrp [ 0 locks=0 ] ( extrudeBack )
+outputside [ 0 locks=0 ] ( "on" )
+outputsidegrp [ 0 locks=0 ] ( "off" )
+sidegrp [ 8 locks=0 ] ( extrudeSide )
+outputfrontseamgrp [ 0 locks=0 ] ( "off" )
+frontseamgrp [ 0 locks=0 ] ( extrudeFrontSeam )
+outputbackseamgrp [ 0 locks=0 ] ( "off" )
+backseamgrp [ 0 locks=0 ] ( extrudeBackSeam )
+preservegroups [ 0 locks=0 ] ( "on" )
+insettingsection [ 0 locks=0 ] ( 0 )
+limitinset [ 0 locks=0 ] ( "on" )
+commonlimit [ 0 locks=0 ] ( "on" )
+normalsection [ 0 locks=0 ] ( 0 )
+addvertexnomrals [ 0 locks=0 ] ( "off" )
+cuspangle [ 0 locks=0 ] ( 60 )
+cuspfront [ 0 locks=0 ] ( "on" )
+cuspback [ 0 locks=0 ] ( "on" )
+uvssection [ 0 locks=0 ] ( 0 )
+genuvs [ 0 locks=0 ] ( "on" )
+uvstyle [ 0 locks=0 ] ( "proprtional" )
+uvscaling [ 0 locks=0 ] ( "matchuv" )
+shapecontrolsection [ 0 locks=0 ] ( 0 )
+frontmagnitude [ 0 locks=0 ] ( 1 )
+backmagnitude [ 0 locks=0 ] ( 1 )
+frontstiffness [ 0 locks=0 ] ( 0 )
+backstiffness [ 0 locks=0 ] ( 0 )
+interpolation [ 0 locks=0 ] ( "rotatingframe" )
+spacing [ 0 locks=0 ] ( "arclengthuniform" )
+externalspinesection [ 0 locks=0 ] ( 0 )
+reversespinedirection [ 0 locks=0 ] ( "off" )
+axialrotation [ 0 locks=0 ] ( 0 )
+frontblend [ 0 locks=0 ] ( 0.10000000000000001 )
+backblend [ 0 locks=0 ] ( 0.10000000000000001 )
+thicknesssection [ 0 locks=0 ] ( 0 )
+thicknessscale [ 0 locks=0 ] ( 1 )
+usethicknessattrib [ 0 locks=0 ] ( "on" )
+thicknessattrib [ 0 locks=0 ] ( thickness )
+usethicknessramp [ 0 locks=0 ] ( "on" )
+thicknessramp [ 0 locks=0 ] ( 2 )
+twistsection [ 0 locks=0 ] ( 0 )
+usetwistattrib [ 0 locks=0 ] ( "on" )
+twistattrib [ 0 locks=0 ] ( twist )
+usetwistramp [ 0 locks=0 ] ( "on" )
+twistramp [ 0 locks=0 ] ( 2 )
+twistscale [ 0 locks=0 ] ( 180 )
+localattribs [ 0 locks=0 ] ( 0 )
+uselocalzscaleattrib [ 0 locks=0 ] ( "off" )
+localzscaleattrib [ 0 locks=0 ] ( zscale )
+uselocalinsetscaleattrib [ 0 locks=0 ] ( "off" )
+localinsetscaleattrib [ 0 locks=0 ] ( insetscale )
+uselocaltwistattrib [ 0 locks=0 ] ( "off" )
+localtwistscaleattrib [ 0 locks=0 ] ( twistscale )
+uselocaldivsattrib [ 0 locks=0 ] ( "off" )
+locadivscaleattrib [ 0 locks=0 ] ( divsscale )
+localframeattribs [ 0 locks=0 ] ( 0 )
+uselocalxattrib [ 0 locks=0 ] ( "off" )
+localxattrib [ 0 locks=0 ] ( localx )
+uselocalzattirb [ 0 locks=0 ] ( "off" )
+localzattirb [ 0 locks=0 ] ( localz )
+uselocalctrattrib [ 0 locks=0 ] ( "off" )
+localctrattrib [ 0 locks=0 ] ( localctr )
+thicknessramp1pos [ 0 locks=0 ] ( 0 )
+thicknessramp1value [ 0 locks=0 ] ( 1 )
+thicknessramp1interp [ 0 locks=0 ] ( "catmull-rom" )
+thicknessramp2pos [ 0 locks=0 ] ( 1 )
+thicknessramp2value [ 0 locks=0 ] ( 1 )
+thicknessramp2interp [ 0 locks=0 ] ( "catmull-rom" )
+twistramp1pos [ 0 locks=0 ] ( 0 )
+twistramp1value [ 0 locks=0 ] ( 0.5 )
+twistramp1interp [ 0 locks=0 ] ( "catmull-rom" )
+twistramp2pos [ 0 locks=0 ] ( 1 )
+twistramp2value [ 0 locks=0 ] ( 0.5 )
+twistramp2interp [ 0 locks=0 ] ( "catmull-rom" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/polyextrude6.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform6.init"
+Content-Type: text/plain
+
+type = xform
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform6.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 3.16094 -9.2736
+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 off exposed on
+outputsNamed3
+{
+0 "output1"
+}
+inputsNamed3
+{
+1 polyextrude6 1 1 "input1"
+}
+inputs
+{
+0 polyextrude6 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ access 0777
+}
+color UT_Color RGB 0.89 0.412 0.761
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform6.chn"
+Content-Type: text/plain
+
+{
+ channel tz {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "-ch(opinputpath(\"..\", 0)+\"/near\")" }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform6.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( "" )
+grouptype [ 0 locks=0 ] ( "guess" )
+xOrd [ 0 locks=0 ] ( "srt" )
+rOrd [ 0 locks=0 ] ( "xyz" )
+t [ 8 locks=0 ] ( 0 0 [ tz 0 ] )
+r [ 0 locks=0 ] ( 0 0 0 )
+s [ 0 locks=0 ] ( 1 1 1 )
+shear [ 0 locks=0 ] ( 0 0 0 )
+scale [ 0 locks=0 ] ( 1 )
+parmgroup_pivotxform [ 0 locks=0 ] ( 0 )
+p [ 0 locks=0 ] ( 0 0 0 )
+pr [ 0 locks=0 ] ( 0 0 0 )
+parmgroup_prexform [ 0 locks=0 ] ( 0 )
+prexform_xOrd [ 0 locks=0 ] ( "srt" )
+prexform_rOrd [ 0 locks=0 ] ( "xyz" )
+prexform_t [ 0 locks=0 ] ( 0 0 0 )
+prexform_r [ 0 locks=0 ] ( 0 0 0 )
+prexform_s [ 0 locks=0 ] ( 1 1 1 )
+prexform_shear [ 0 locks=0 ] ( 0 0 0 )
+movecentroid [ 0 locks=0 ] ( 0 )
+attribs [ 0 locks=0 ] ( * )
+updatenmls [ 0 locks=0 ] ( "off" )
+updateaffectednmls [ 0 locks=0 ] ( "on" )
+vlength [ 0 locks=0 ] ( "on" )
+invertxform [ 0 locks=0 ] ( "off" )
+addattrib [ 0 locks=0 ] ( "off" )
+outputattrib [ 0 locks=0 ] ( xform )
+outputmerge [ 0 locks=0 ] ( "post" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform6.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/scale_xy1.init"
+Content-Type: text/plain
+
+type = xform
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/scale_xy1.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 8.37112 -5.2736
+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 transform4 1 1 "input1"
+}
+inputs
+{
+0 transform4 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ 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/scale_xy1.chn"
+Content-Type: text/plain
+
+{
+ channel sz {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = "1 + ( ch(\"../minpadz\") + ch(\"../maxpadz\") )" }
+ }
+ channel sx {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = ch(\"../frustum_scalex\") }
+ }
+ channel sy {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = ch(\"../frustum_scaley\") }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/scale_xy1.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( "" )
+grouptype [ 0 locks=0 ] ( "guess" )
+xOrd [ 0 locks=0 ] ( "srt" )
+rOrd [ 0 locks=0 ] ( "xyz" )
+t [ 0 locks=0 ] ( 0 0 0 )
+r [ 0 locks=0 ] ( 0 0 0 )
+s [ 8 locks=0 ] ( [ sx 1 ] [ sy 1 ] [ sz 1 ] )
+shear [ 0 locks=0 ] ( 0 0 0 )
+scale [ 0 locks=0 ] ( 1 )
+parmgroup_pivotxform [ 0 locks=0 ] ( 1 )
+p [ 8 locks=0 ] ( 0 0 0 )
+pr [ 0 locks=0 ] ( 0 0 0 )
+parmgroup_prexform [ 0 locks=0 ] ( 0 )
+prexform_xOrd [ 0 locks=0 ] ( "srt" )
+prexform_rOrd [ 0 locks=0 ] ( "xyz" )
+prexform_t [ 0 locks=0 ] ( 0 0 0 )
+prexform_r [ 0 locks=0 ] ( 0 0 0 )
+prexform_s [ 0 locks=0 ] ( 1 1 1 )
+prexform_shear [ 0 locks=0 ] ( 0 0 0 )
+movecentroid [ 0 locks=0 ] ( 0 )
+attribs [ 0 locks=0 ] ( * )
+updatenmls [ 0 locks=0 ] ( "off" )
+updateaffectednmls [ 0 locks=0 ] ( "on" )
+vlength [ 0 locks=0 ] ( "on" )
+invertxform [ 0 locks=0 ] ( "off" )
+addattrib [ 0 locks=0 ] ( "off" )
+outputattrib [ 0 locks=0 ] ( xform )
+outputmerge [ 0 locks=0 ] ( "post" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/scale_xy1.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform4.init"
+Content-Type: text/plain
+
+type = xform
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform4.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 8.37112 -4.2736
+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 off exposed on
+outputsNamed3
+{
+1 "output1"
+}
+inputsNamed3
+{
+0 grid2 0 1 "input1"
+}
+inputs
+{
+0 grid2 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ access 0777
+}
+color UT_Color RGB 0.518 0.561 0.741
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform4.chn"
+Content-Type: text/plain
+
+{
+ channel tx {
+ lefttype = extend
+ righttype = extend
+ default = -0.5
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 value = -0.5 -0.5 accel = 0.33333333333333331 0.33333333333333331 expr = bezier() }
+ }
+ channel ty {
+ lefttype = extend
+ righttype = extend
+ default = -0.5
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 value = -0.5 -0.5 accel = 0.33333333333333331 0.33333333333333331 expr = bezier() }
+ }
+ channel tz {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = bezier() }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform4.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( "" )
+grouptype [ 0 locks=0 ] ( "guess" )
+xOrd [ 0 locks=0 ] ( "srt" )
+rOrd [ 0 locks=0 ] ( "xyz" )
+t [ 0 locks=0 autoscope=7 autosel=4294967295 ] ( [ tx 0 ] [ ty 0 ] [ tz 0 ] )
+r [ 0 locks=0 ] ( 0 0 0 )
+s [ 0 locks=0 ] ( 1 1 1 )
+shear [ 0 locks=0 ] ( 0 0 0 )
+scale [ 0 locks=0 ] ( 1 )
+parmgroup_pivotxform [ 0 locks=0 ] ( 0 )
+p [ 0 locks=0 ] ( 0 0 0 )
+pr [ 0 locks=0 ] ( 0 0 0 )
+parmgroup_prexform [ 0 locks=0 ] ( 0 )
+prexform_xOrd [ 0 locks=0 ] ( "srt" )
+prexform_rOrd [ 0 locks=0 ] ( "xyz" )
+prexform_t [ 0 locks=0 ] ( 0 0 0 )
+prexform_r [ 0 locks=0 ] ( 0 0 0 )
+prexform_s [ 0 locks=0 ] ( 1 1 1 )
+prexform_shear [ 0 locks=0 ] ( 0 0 0 )
+movecentroid [ 0 locks=0 ] ( 0 )
+attribs [ 0 locks=0 ] ( * )
+updatenmls [ 0 locks=0 ] ( "off" )
+updateaffectednmls [ 0 locks=0 ] ( "on" )
+vlength [ 0 locks=0 ] ( "on" )
+invertxform [ 0 locks=0 ] ( "off" )
+addattrib [ 0 locks=0 ] ( "on" )
+outputattrib [ 0 locks=0 ] ( xform )
+outputmerge [ 0 locks=0 ] ( "post" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform4.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform7.init"
+Content-Type: text/plain
+
+type = xform
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform7.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 8.37112 -7.2736
+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 off exposed on
+outputsNamed3
+{
+1 "output1"
+}
+inputsNamed3
+{
+0 translate_xy1 1 1 "input1"
+}
+inputs
+{
+0 translate_xy1 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ access 0777
+}
+color UT_Color RGB 0.518 0.561 0.741
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform7.chn"
+Content-Type: text/plain
+
+{
+ channel tx {
+ lefttype = extend
+ righttype = extend
+ default = -0.55000000000000004
+ flags = 0
+ segment { length = 0 value = -0.55000000000000004 -0.55000000000000004 expr = ch(\"../transform4/tx\") }
+ }
+ channel ty {
+ lefttype = extend
+ righttype = extend
+ default = -0.5
+ flags = 0
+ segment { length = 0 value = -0.5 -0.5 expr = ch(\"../transform4/ty\") }
+ }
+ channel tz {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../transform4/tz\") }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform7.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( "" )
+grouptype [ 0 locks=0 ] ( "guess" )
+xOrd [ 0 locks=0 ] ( "srt" )
+rOrd [ 0 locks=0 ] ( "xyz" )
+t [ 8 locks=0 ] ( [ tx 0 ] [ ty 0 ] [ tz 0 ] )
+r [ 0 locks=0 ] ( 0 0 0 )
+s [ 0 locks=0 ] ( 1 1 1 )
+shear [ 0 locks=0 ] ( 0 0 0 )
+scale [ 0 locks=0 ] ( 1 )
+parmgroup_pivotxform [ 0 locks=0 ] ( 0 )
+p [ 0 locks=0 ] ( 0 0 0 )
+pr [ 0 locks=0 ] ( 0 0 0 )
+parmgroup_prexform [ 0 locks=0 ] ( 0 )
+prexform_xOrd [ 0 locks=0 ] ( "srt" )
+prexform_rOrd [ 0 locks=0 ] ( "xyz" )
+prexform_t [ 0 locks=0 ] ( 0 0 0 )
+prexform_r [ 0 locks=0 ] ( 0 0 0 )
+prexform_s [ 0 locks=0 ] ( 1 1 1 )
+prexform_shear [ 0 locks=0 ] ( 0 0 0 )
+movecentroid [ 0 locks=0 ] ( 0 )
+attribs [ 0 locks=0 ] ( * )
+updatenmls [ 0 locks=0 ] ( "off" )
+updateaffectednmls [ 0 locks=0 ] ( "on" )
+vlength [ 0 locks=0 ] ( "on" )
+invertxform [ 0 locks=0 ] ( "on" )
+addattrib [ 0 locks=0 ] ( "on" )
+outputattrib [ 0 locks=0 ] ( xform )
+outputmerge [ 0 locks=0 ] ( "post" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform7.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/translate_xy1.init"
+Content-Type: text/plain
+
+type = xform
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/translate_xy1.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 8.37112 -6.2736
+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 scale_xy1 1 1 "input1"
+}
+inputs
+{
+0 scale_xy1 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ 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/translate_xy1.chn"
+Content-Type: text/plain
+
+{
+ channel tx {
+ lefttype = extend
+ righttype = extend
+ default = 0.10000000149011612
+ flags = 0
+ segment { length = 0 value = 0.10000000149011612 0.10000000149011612 expr = ch(\"../centerx\") }
+ }
+ channel ty {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../centery\") }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/translate_xy1.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( "" )
+grouptype [ 0 locks=0 ] ( "guess" )
+xOrd [ 0 locks=0 ] ( "srt" )
+rOrd [ 0 locks=0 ] ( "xyz" )
+t [ 8 locks=0 ] ( [ tx 0 ] [ ty 0 ] 0 )
+r [ 0 locks=0 ] ( 0 0 0 )
+s [ 0 locks=0 ] ( 1 1 1 )
+shear [ 0 locks=0 ] ( 0 0 0 )
+scale [ 0 locks=0 ] ( 1 )
+parmgroup_pivotxform [ 0 locks=0 ] ( 1 )
+p [ 8 locks=0 ] ( 0 0 0 )
+pr [ 0 locks=0 ] ( 0 0 0 )
+parmgroup_prexform [ 0 locks=0 ] ( 0 )
+prexform_xOrd [ 0 locks=0 ] ( "srt" )
+prexform_rOrd [ 0 locks=0 ] ( "xyz" )
+prexform_t [ 0 locks=0 ] ( 0 0 0 )
+prexform_r [ 0 locks=0 ] ( 0 0 0 )
+prexform_s [ 0 locks=0 ] ( 1 1 1 )
+prexform_shear [ 0 locks=0 ] ( 0 0 0 )
+movecentroid [ 0 locks=0 ] ( 0 )
+attribs [ 0 locks=0 ] ( * )
+updatenmls [ 0 locks=0 ] ( "off" )
+updateaffectednmls [ 0 locks=0 ] ( "on" )
+vlength [ 0 locks=0 ] ( "on" )
+invertxform [ 0 locks=0 ] ( "off" )
+addattrib [ 0 locks=0 ] ( "off" )
+outputattrib [ 0 locks=0 ] ( xform )
+outputmerge [ 0 locks=0 ] ( "post" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/translate_xy1.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM.init"
+Content-Type: text/plain
+
+type = subnet
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 3.16094 -13.3514
+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 group1 1 1 "input1"
+}
+inputs
+{
+0 group1 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author brunoe@obelix
+ 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/FRUSTUM.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/FRUSTUM.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ },
+ "wirestyle":{
+ "type":"string",
+ "value":"rounded"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM.inp"
+Content-Type: text/plain
+
+4
+0 -5.46882 6.9345999999999988 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT"
+1 4.9799800000000003 2.416599999999999 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT"
+2 4.9799800000000003 3.5460999999999987 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT"
+3 7.2391800000000002 2.8684000179529181 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT"
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/FRUSTUM.init"
+Content-Type: text/plain
+
+type = null
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/FRUSTUM.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position -5.46882 5.8051
+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 -1
+ modify -1
+ author sidefx@calvin.local
+ access 0777
+}
+color UT_Color RGB 0.6 0.7 0.77
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/FRUSTUM.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+copyinput [ 0 locks=0 ] ( "on" )
+cacheinput [ 0 locks=0 ] ( "off" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/FRUSTUM.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/NEAR.init"
+Content-Type: text/plain
+
+type = null
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/NEAR.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position -5.46882 3.5729
+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 blast7 1 1 "input1"
+}
+inputs
+{
+0 blast7 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ access 0777
+}
+color UT_Color RGB 0.6 0.7 0.77
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/NEAR.spareparmdef"
+Content-Type: text/plain
+
+ parm {
+ name "copyinput"
+ baseparm
+ label "Copy Input (Note: Input will be still cooked if disabled)"
+ export none
+ }
+ parm {
+ name "cacheinput"
+ baseparm
+ label "Cache Input"
+ export none
+ }
+ parm {
+ name "centroid"
+ label "Centroid"
+ type vector
+ size 3
+ default { "centroid(\".\", D_X)" "centroid(\".\", D_Y)" "centroid(\".\", D_Z)" }
+ range { -1 1 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "bbox_size"
+ label "BBox size"
+ type vector
+ size 3
+ default { "bbox(\".\", D_XSIZE)" "bbox(\".\", D_YSIZE)" "bbox(\".\", D_ZSIZE)" }
+ range { -1 1 }
+ parmtag { "script_callback_language" "python" }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/NEAR.chn"
+Content-Type: text/plain
+
+{
+ channel centroidx {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "centroid(\".\", D_X)" }
+ }
+ channel centroidy {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "centroid(\".\", D_Y)" }
+ }
+ channel centroidz {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "centroid(\".\", D_Z)" }
+ }
+ channel bbox_sizex {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "bbox(\".\", D_XSIZE)" }
+ }
+ channel bbox_sizey {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "bbox(\".\", D_YSIZE)" }
+ }
+ channel bbox_sizez {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "bbox(\".\", D_ZSIZE)" }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/NEAR.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+copyinput [ 0 locks=0 ] ( "on" )
+cacheinput [ 0 locks=0 ] ( "off" )
+centroid [ 0 locks=0 ] ( [ centroidx 0 ] [ centroidy 0 ] [ centroidz 0 ] )
+bbox_size [ 0 locks=0 ] ( [ bbox_sizex 0 ] [ bbox_sizey 0 ] [ bbox_sizez 0 ] )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/NEAR.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/FAR.init"
+Content-Type: text/plain
+
+type = null
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/FAR.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position -2.22122 3.5729
+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 blast6 1 1 "input1"
+}
+inputs
+{
+0 blast6 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ access 0777
+}
+color UT_Color RGB 0.6 0.7 0.77
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/FAR.spareparmdef"
+Content-Type: text/plain
+
+ parm {
+ name "copyinput"
+ baseparm
+ label "Copy Input (Note: Input will be still cooked if disabled)"
+ export none
+ }
+ parm {
+ name "cacheinput"
+ baseparm
+ label "Cache Input"
+ export none
+ }
+ parm {
+ name "centroid"
+ label "Centroid"
+ type vector
+ size 3
+ default { "centroid(\".\", D_X)" "centroid(\".\", D_Y)" "centroid(\".\", D_Z)" }
+ range { -1 1 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "bbox_size"
+ label "BBox size"
+ type vector
+ size 3
+ default { "bbox(\".\", D_XSIZE)" "bbox(\".\", D_YSIZE)" "bbox(\".\", D_ZSIZE)" }
+ range { -1 1 }
+ parmtag { "script_callback_language" "python" }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/FAR.chn"
+Content-Type: text/plain
+
+{
+ channel centroidx {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "centroid(\".\", D_X)" }
+ }
+ channel centroidy {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "centroid(\".\", D_Y)" }
+ }
+ channel centroidz {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "centroid(\".\", D_Z)" }
+ }
+ channel bbox_sizex {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "bbox(\".\", D_XSIZE)" }
+ }
+ channel bbox_sizey {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "bbox(\".\", D_YSIZE)" }
+ }
+ channel bbox_sizez {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "bbox(\".\", D_ZSIZE)" }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/FAR.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+copyinput [ 0 locks=0 ] ( "on" )
+cacheinput [ 0 locks=0 ] ( "off" )
+centroid [ 0 locks=0 ] ( [ centroidx 0 ] [ centroidy 0 ] [ centroidz 0 ] )
+bbox_size [ 0 locks=0 ] ( [ bbox_sizex 0 ] [ bbox_sizey 0 ] [ bbox_sizez 0 ] )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/FAR.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/blast6.init"
+Content-Type: text/plain
+
+type = blast
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/blast6.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position -2.22122 4.6756
+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 FRUSTUM 1 1 "input1"
+}
+inputs
+{
+0 FRUSTUM 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ 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/FRUSTUM/blast6.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( 1 )
+grouptype [ 0 locks=0 ] ( "guess" )
+computenorms [ 0 locks=0 ] ( "off" )
+negate [ 0 locks=0 ] ( "on" )
+fillhole [ 0 locks=0 ] ( "off" )
+removegrp [ 0 locks=0 ] ( "off" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/blast6.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/blast7.init"
+Content-Type: text/plain
+
+type = blast
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/blast7.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position -5.46882 4.6756
+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 FRUSTUM 1 1 "input1"
+}
+inputs
+{
+0 FRUSTUM 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ 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/FRUSTUM/blast7.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( 0 )
+grouptype [ 0 locks=0 ] ( "guess" )
+computenorms [ 0 locks=0 ] ( "off" )
+negate [ 0 locks=0 ] ( "on" )
+fillhole [ 0 locks=0 ] ( "off" )
+removegrp [ 0 locks=0 ] ( "off" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/blast7.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/output0.init"
+Content-Type: text/plain
+
+type = output
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/output0.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position -8.68558 3.5779
+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
+{
+}
+inputsNamed3
+{
+0 FRUSTUM 1 1 "input1"
+}
+inputs
+{
+0 FRUSTUM 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author brunoe@obelix
+ 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/FRUSTUM/output0.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+outputidx [ 0 locks=0 ] ( 0 )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM/output0.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM.order"
+Content-Type: text/plain
+
+6
+FRUSTUM
+NEAR
+FAR
+blast6
+blast7
+output0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/FRUSTUM.net"
+Content-Type: text/plain
+
+1
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED.init"
+Content-Type: text/plain
+
+type = subnet
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 8.37112 -13.3514
+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 group4 1 1 "input1"
+}
+inputs
+{
+0 group4 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author brunoe@obelix
+ 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/PADDED.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/PADDED.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ },
+ "wirestyle":{
+ "type":"string",
+ "value":"rounded"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED.inp"
+Content-Type: text/plain
+
+4
+0 -4.3126575148448119 4.6619477071423621 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT"
+1 0.40340179667324261 10.733277520247743 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT"
+2 0.40340179667324261 11.862777520247743 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT"
+3 2.6626017966732425 11.185077538200662 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT"
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/NEAR.init"
+Content-Type: text/plain
+
+type = null
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/NEAR.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position -5.97089 -2.48328
+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 blast10 1 1 "input1"
+}
+inputs
+{
+0 blast10 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ access 0777
+}
+color UT_Color RGB 0.6 0.7 0.77
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/NEAR.spareparmdef"
+Content-Type: text/plain
+
+ parm {
+ name "copyinput"
+ baseparm
+ label "Copy Input (Note: Input will be still cooked if disabled)"
+ export none
+ }
+ parm {
+ name "cacheinput"
+ baseparm
+ label "Cache Input"
+ export none
+ }
+ parm {
+ name "centroid"
+ label "Centroid"
+ type vector
+ size 3
+ default { "centroid(\".\", D_X)" "centroid(\".\", D_Y)" "centroid(\".\", D_Z)" }
+ range { -1 1 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "bbox_size"
+ label "BBox size"
+ type vector
+ size 3
+ default { "bbox(\".\", D_XSIZE)" "bbox(\".\", D_YSIZE)" "bbox(\".\", D_ZSIZE)" }
+ range { -1 1 }
+ parmtag { "script_callback_language" "python" }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/NEAR.chn"
+Content-Type: text/plain
+
+{
+ channel centroidx {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "centroid(\".\", D_X)" }
+ }
+ channel centroidy {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "centroid(\".\", D_Y)" }
+ }
+ channel centroidz {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "centroid(\".\", D_Z)" }
+ }
+ channel bbox_sizex {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "bbox(\".\", D_XSIZE)" }
+ }
+ channel bbox_sizey {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "bbox(\".\", D_YSIZE)" }
+ }
+ channel bbox_sizez {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "bbox(\".\", D_ZSIZE)" }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/NEAR.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+copyinput [ 0 locks=0 ] ( "on" )
+cacheinput [ 0 locks=0 ] ( "off" )
+centroid [ 0 locks=0 ] ( [ centroidx 0 ] [ centroidy 0 ] [ centroidz 0 ] )
+bbox_size [ 0 locks=0 ] ( [ bbox_sizex 0 ] [ bbox_sizey 0 ] [ bbox_sizez 0 ] )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/NEAR.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/FAR.init"
+Content-Type: text/plain
+
+type = null
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/FAR.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position -2.93247 -2.48328
+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 blast6 1 1 "input1"
+}
+inputs
+{
+0 blast6 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ access 0777
+}
+color UT_Color RGB 0.6 0.7 0.77
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/FAR.spareparmdef"
+Content-Type: text/plain
+
+ parm {
+ name "copyinput"
+ baseparm
+ label "Copy Input (Note: Input will be still cooked if disabled)"
+ export none
+ }
+ parm {
+ name "cacheinput"
+ baseparm
+ label "Cache Input"
+ export none
+ }
+ parm {
+ name "centroid"
+ label "Centroid"
+ type vector
+ size 3
+ default { "centroid(\".\", D_X)" "centroid(\".\", D_Y)" "centroid(\".\", D_Z)" }
+ range { -1 1 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "bbox_size"
+ label "BBox size"
+ type vector
+ size 3
+ default { "bbox(\".\", D_XSIZE)" "bbox(\".\", D_YSIZE)" "bbox(\".\", D_ZSIZE)" }
+ range { -1 1 }
+ parmtag { "script_callback_language" "python" }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/FAR.chn"
+Content-Type: text/plain
+
+{
+ channel centroidx {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "centroid(\".\", D_X)" }
+ }
+ channel centroidy {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "centroid(\".\", D_Y)" }
+ }
+ channel centroidz {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "centroid(\".\", D_Z)" }
+ }
+ channel bbox_sizex {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "bbox(\".\", D_XSIZE)" }
+ }
+ channel bbox_sizey {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "bbox(\".\", D_YSIZE)" }
+ }
+ channel bbox_sizez {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "bbox(\".\", D_ZSIZE)" }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/FAR.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+copyinput [ 0 locks=0 ] ( "on" )
+cacheinput [ 0 locks=0 ] ( "off" )
+centroid [ 0 locks=0 ] ( [ centroidx 0 ] [ centroidy 0 ] [ centroidz 0 ] )
+bbox_size [ 0 locks=0 ] ( [ bbox_sizex 0 ] [ bbox_sizey 0 ] [ bbox_sizez 0 ] )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/FAR.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/blast6.init"
+Content-Type: text/plain
+
+type = blast
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/blast6.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position -2.93247 -1.38058
+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 (__dot1) "" 1 "input1"
+}
+inputs
+{
+0 (__dot1) 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ 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/PADDED/blast6.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( 1 )
+grouptype [ 0 locks=0 ] ( "guess" )
+computenorms [ 0 locks=0 ] ( "off" )
+negate [ 0 locks=0 ] ( "on" )
+fillhole [ 0 locks=0 ] ( "off" )
+removegrp [ 0 locks=0 ] ( "off" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/blast6.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/output0.init"
+Content-Type: text/plain
+
+type = output
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/output0.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position -8.55164 -2.47828
+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
+{
+}
+inputsNamed3
+{
+0 polyfill1 1 1 "input1"
+}
+inputs
+{
+0 polyfill1 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author brunoe@obelix
+ 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/PADDED/output0.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+outputidx [ 0 locks=0 ] ( 0 )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/output0.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/CLIPPED.init"
+Content-Type: text/plain
+
+type = null
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/CLIPPED.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position -0.306677 -2.48328
+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 off exposed on
+outputsNamed3
+{
+}
+inputsNamed3
+{
+0 blast11 1 1 "input1"
+}
+inputs
+{
+0 blast11 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author brunoe@obelix
+ access 0777
+}
+color UT_Color RGB 0.616 0.871 0.769
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/CLIPPED.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+copyinput [ 0 locks=0 ] ( "on" )
+cacheinput [ 0 locks=0 ] ( "off" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/CLIPPED.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/null1.init"
+Content-Type: text/plain
+
+type = null
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/null1.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position -4.31265 3.67441
+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 -1
+ modify -1
+ author brunoe@obelix
+ access 0777
+}
+color UT_Color RGB 0.6 0.7 0.77
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/null1.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+copyinput [ 0 locks=0 ] ( "on" )
+cacheinput [ 0 locks=0 ] ( "off" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/null1.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/clip1.init"
+Content-Type: text/plain
+
+type = clip
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/clip1.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position -8.55164 0.878419
+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 (__dot1) "" 1 "input1"
+}
+inputs
+{
+0 (__dot1) 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author brunoe@obelix
+ 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/PADDED/clip1.chn"
+Content-Type: text/plain
+
+{
+ channel originz {
+ lefttype = extend
+ righttype = extend
+ default = -2.4000000357627869
+ flags = 0
+ segment { length = 0 value = -2.4000000357627869 -2.4000000357627869 expr = "-ch(opinputpath(\"../..\", 0)+\"/near\") + ch(\"../../minpadz\")" }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/clip1.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( "" )
+clipop [ 0 locks=0 ] ( "below" )
+origin [ 8 locks=0 ] ( 0 0 [ originz 0 ] )
+dist [ 0 locks=0 ] ( 0 )
+dir [ 0 locks=0 ] ( 0 0 1 )
+newg [ 0 locks=0 ] ( "off" )
+above [ 0 locks=0 ] ( above_plane )
+below [ 0 locks=0 ] ( below_plane )
+clippts [ 0 locks=0 ] ( "on" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/clip1.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/blast10.init"
+Content-Type: text/plain
+
+type = blast
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/blast10.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position -5.97089 -1.38058
+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 polyfill1 1 1 "input1"
+}
+inputs
+{
+0 polyfill1 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ 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/PADDED/blast10.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( 5 )
+grouptype [ 0 locks=0 ] ( "guess" )
+computenorms [ 0 locks=0 ] ( "off" )
+negate [ 0 locks=0 ] ( "on" )
+fillhole [ 0 locks=0 ] ( "off" )
+removegrp [ 0 locks=0 ] ( "off" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/blast10.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/polyfill1.init"
+Content-Type: text/plain
+
+type = polyfill
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/polyfill1.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position -8.55164 -0.251081
+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 clip1 1 1 "input1"
+}
+inputs
+{
+0 clip1 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author brunoe@obelix
+ 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/PADDED/polyfill1.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( "" )
+fillmode [ 0 locks=0 ] ( "quads" )
+completeloops [ 0 locks=0 ] ( "on" )
+reverse [ 0 locks=0 ] ( "off" )
+uniquepoints [ 0 locks=0 ] ( "off" )
+updatenorms [ 0 locks=0 ] ( "on" )
+looptoggle [ 0 locks=0 ] ( "off" )
+loopdistance [ 0 locks=0 ] ( 0.25 )
+smoothtoggle [ 0 locks=0 ] ( "on" )
+smoothstrength [ 0 locks=0 ] ( 50 )
+perfectgrid [ 0 locks=0 ] ( 0 )
+corneroffset [ 0 locks=0 ] ( 0 )
+customcornerstoggle [ 0 locks=0 ] ( "off" )
+customcorners [ 0 locks=0 ] ( "" )
+subdivtoggle [ 0 locks=0 ] ( "on" )
+translate [ 0 locks=0 ] ( 0.25 )
+tangentstrength [ 0 locks=0 ] ( 0.40000000000000002 )
+groups [ 0 locks=0 ] ( 0 )
+patchgrouptoggle [ 0 locks=0 ] ( "off" )
+patchgroup [ 0 locks=0 ] ( patch )
+loopgrouptoggle [ 0 locks=0 ] ( "off" )
+loopgroup [ 0 locks=0 ] ( loopgroup )
+groupappend [ 0 locks=0 ] ( "off" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/polyfill1.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/clip2.init"
+Content-Type: text/plain
+
+type = clip
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/clip2.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position -0.306677 0.61942
+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 (__dot1) "" 1 "input1"
+}
+inputs
+{
+0 (__dot1) 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author brunoe@obelix
+ 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/PADDED/clip2.chn"
+Content-Type: text/plain
+
+{
+ channel originz {
+ lefttype = extend
+ righttype = extend
+ default = -2.4000000357627869
+ flags = 0
+ segment { length = 0 value = -2.4000000357627869 -2.4000000357627869 expr = "-ch(opinputpath(\"../..\", 0)+\"/near\")" }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/clip2.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( "" )
+clipop [ 0 locks=0 ] ( "below" )
+origin [ 8 locks=0 ] ( 0 0 [ originz 0 ] )
+dist [ 0 locks=0 ] ( 0 )
+dir [ 0 locks=0 ] ( 0 0 1 )
+newg [ 0 locks=0 ] ( "off" )
+above [ 0 locks=0 ] ( above_plane )
+below [ 0 locks=0 ] ( below_plane )
+clippts [ 0 locks=0 ] ( "on" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/clip2.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/blast11.init"
+Content-Type: text/plain
+
+type = blast
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/blast11.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position -0.306677 -1.38058
+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 polyfill2 1 1 "input1"
+}
+inputs
+{
+0 polyfill2 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ 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/PADDED/blast11.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( 5 )
+grouptype [ 0 locks=0 ] ( "guess" )
+computenorms [ 0 locks=0 ] ( "off" )
+negate [ 0 locks=0 ] ( "on" )
+fillhole [ 0 locks=0 ] ( "off" )
+removegrp [ 0 locks=0 ] ( "off" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/blast11.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/polyfill2.init"
+Content-Type: text/plain
+
+type = polyfill
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/polyfill2.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position -0.306677 -0.38058
+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 clip2 1 1 "input1"
+}
+inputs
+{
+0 clip2 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author brunoe@obelix
+ 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/PADDED/polyfill2.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( "" )
+fillmode [ 0 locks=0 ] ( "quads" )
+completeloops [ 0 locks=0 ] ( "on" )
+reverse [ 0 locks=0 ] ( "off" )
+uniquepoints [ 0 locks=0 ] ( "off" )
+updatenorms [ 0 locks=0 ] ( "on" )
+looptoggle [ 0 locks=0 ] ( "off" )
+loopdistance [ 0 locks=0 ] ( 0.25 )
+smoothtoggle [ 0 locks=0 ] ( "on" )
+smoothstrength [ 0 locks=0 ] ( 50 )
+perfectgrid [ 0 locks=0 ] ( 0 )
+corneroffset [ 0 locks=0 ] ( 0 )
+customcornerstoggle [ 0 locks=0 ] ( "off" )
+customcorners [ 0 locks=0 ] ( "" )
+subdivtoggle [ 0 locks=0 ] ( "on" )
+translate [ 0 locks=0 ] ( 0.25 )
+tangentstrength [ 0 locks=0 ] ( 0.40000000000000002 )
+groups [ 0 locks=0 ] ( 0 )
+patchgrouptoggle [ 0 locks=0 ] ( "off" )
+patchgroup [ 0 locks=0 ] ( patch )
+loopgrouptoggle [ 0 locks=0 ] ( "off" )
+loopgroup [ 0 locks=0 ] ( loopgroup )
+groupappend [ 0 locks=0 ] ( "off" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/polyfill2.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED/__dot1.networkdotinit"
+Content-Type: text/plain
+
+{
+ "version":1,
+ "posx":-3.81265752602068231,
+ "posy":3.14850981288898923,
+ "pinned":false,
+ "color":"FROMOUTPUT",
+ "input":"null1 0 1"
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED.order"
+Content-Type: text/plain
+
+12
+NEAR
+FAR
+blast6
+output0
+CLIPPED
+null1
+clip1
+blast10
+polyfill1
+clip2
+blast11
+polyfill2
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/PADDED.net"
+Content-Type: text/plain
+
+1
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/from_NDC6.init"
+Content-Type: text/plain
+
+type = attribwrangle
+matchesdef = 1
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/from_NDC6.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 8.36812 -10.3135
+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 polyextrude8 1 1 "input1"
+}
+inputs
+{
+0 polyextrude8 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ 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/from_NDC6.spareparmdef"
+Content-Type: text/plain
+
+ group {
+ name "folder1"
+ label "Code"
+
+ parm {
+ name "group"
+ baseparm
+ label "Group"
+ export none
+ bindselector points "Modify Points"
+ "Select the points to affect and press Enter to complete."
+ 0 1 0xffffffff 0 grouptype 0
+ }
+ parm {
+ name "grouptype"
+ baseparm
+ label "Group Type"
+ export none
+ }
+ parm {
+ name "class"
+ 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
+ }
+ parm {
+ name "snippet"
+ baseparm
+ label "VEXpression"
+ export all
+ }
+ parm {
+ name "exportlist"
+ baseparm
+ label "Attributes to Create"
+ export none
+ }
+ parm {
+ name "vex_strict"
+ baseparm
+ label "Enforce Prototypes"
+ export none
+ }
+ }
+
+ group {
+ name "folder1_1"
+ label "Bindings"
+
+ parm {
+ name "autobind"
+ baseparm
+ label "Autobind by Name"
+ export none
+ }
+ multiparm {
+ name "bindings"
+ label "Number of Bindings"
+ baseparm
+ default 0
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "multistartoffset" "1" }
+
+ parm {
+ name "bindname#"
+ baseparm
+ label "Attribute Name"
+ export none
+ }
+ parm {
+ name "bindparm#"
+ 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 { "autoscope" "0000000000000000" }
+ parmtag { "multistartoffset" "1" }
+
+ parm {
+ name "bindgroupname#"
+ baseparm
+ label "Group Name"
+ export none
+ }
+ parm {
+ name "bindgroupparm#"
+ baseparm
+ label "VEX Parameter"
+ 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_updatenmls"
+ baseparm
+ label "Update Normals If Displaced"
+ export none
+ }
+ parm {
+ name "vex_matchattrib"
+ baseparm
+ label "Attribute to Match"
+ export none
+ }
+ parm {
+ name "vex_inplace"
+ baseparm
+ label "Compute Results In Place"
+ export none
+ }
+ parm {
+ name "vex_selectiongroup"
+ baseparm
+ label "Output Selection Group"
+ export none
+ }
+ parm {
+ name "vex_precision"
+ baseparm
+ label "VEX Precision"
+ export none
+ }
+ }
+
+ parm {
+ name "camera"
+ label "Camera"
+ type oppath
+ default { "" }
+ parmtag { "oprelative" "." }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/from_NDC6.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 objspace = chsop(\"camera\");
+@P = fromNDC(objspace, @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 ] ( "" )
+vex_precision [ 0 locks=0 ] ( auto )
+folder1 [ 0 locks=0 ] ( 0 0 )
+camera [ 0 locks=0 ] ( "`opinputpath(\"..\", 0)`" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/from_NDC6.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":""
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/polyextrude8.init"
+Content-Type: text/plain
+
+type = polyextrude::2.0
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/polyextrude8.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 8.37112 -8.2736
+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 off exposed on
+outputsNamed3
+{
+1 "output1"
+}
+inputsNamed3
+{
+0 transform7 1 1 "input1"
+}
+inputs
+{
+0 transform7 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ access 0777
+}
+color UT_Color RGB 0.89 0.412 0.761
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/polyextrude8.chn"
+Content-Type: text/plain
+
+{
+ channel dist {
+ lefttype = extend
+ righttype = extend
+ default = -14.431703567504883
+ flags = 0
+ segment { length = 0 value = -14.431703567504883 -14.431703567504883 expr = "ch(opinputpath(\"..\", 0)+\"/far\") + ch(\"../maxpadz\")" }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/polyextrude8.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( "" )
+splittype [ 0 locks=0 ] ( "components" )
+usesplitgroup [ 0 locks=0 ] ( "off" )
+splitgroup [ 0 locks=0 ] ( "" )
+extrusionmode [ 0 locks=0 ] ( "primnormal" )
+ptnormalsrc [ 0 locks=0 ] ( "precompute" )
+ptnormalattrib [ 0 locks=0 ] ( N )
+dist [ 8 locks=0 ] ( [ dist 0 ] )
+inset [ 0 locks=0 ] ( 0 )
+twist [ 0 locks=0 ] ( 0 )
+divs [ 0 locks=0 ] ( 1 )
+spinetype [ 0 locks=0 ] ( "straight" )
+stdswitcher [ 0 locks=0 ] ( 0 0 0 )
+xformsection [ 0 locks=0 ] ( 0 )
+xformfront [ 0 locks=0 ] ( "off" )
+xformspace [ 0 locks=0 ] ( "local" )
+rst [ 0 locks=0 ] ( "srt" )
+xyz [ 0 locks=0 ] ( "xyz" )
+translate [ 0 locks=0 ] ( 0 0 0 )
+rotate [ 0 locks=0 ] ( 0 0 0 )
+scale [ 0 locks=0 ] ( 1 1 1 )
+shear [ 0 locks=0 ] ( 0 0 0 )
+pivotxformsection [ 0 locks=0 ] ( 0 )
+pivot [ 0 locks=0 ] ( 0 0 0 )
+pivotrotate [ 0 locks=0 ] ( 0 0 0 )
+prexformsection [ 0 locks=0 ] ( 0 )
+prexform_rst [ 0 locks=0 ] ( "srt" )
+prexform_xyz [ 0 locks=0 ] ( "xyz" )
+prexform_translate [ 0 locks=0 ] ( 0 0 0 )
+prexform_rotate [ 0 locks=0 ] ( 0 0 0 )
+prexform_scale [ 0 locks=0 ] ( 1 1 1 )
+prexform_shear [ 0 locks=0 ] ( 0 0 0 )
+outputsection [ 0 locks=0 ] ( 0 )
+outputfront [ 0 locks=0 ] ( "on" )
+outputfrontgrp [ 0 locks=0 ] ( "off" )
+frontgrp [ 0 locks=0 ] ( extrudeFront )
+outputback [ 0 locks=0 ] ( "on" )
+outputbackgrp [ 0 locks=0 ] ( "off" )
+backgrp [ 0 locks=0 ] ( extrudeBack )
+outputside [ 0 locks=0 ] ( "on" )
+outputsidegrp [ 0 locks=0 ] ( "off" )
+sidegrp [ 8 locks=0 ] ( extrudeSide )
+outputfrontseamgrp [ 0 locks=0 ] ( "off" )
+frontseamgrp [ 0 locks=0 ] ( extrudeFrontSeam )
+outputbackseamgrp [ 0 locks=0 ] ( "off" )
+backseamgrp [ 0 locks=0 ] ( extrudeBackSeam )
+preservegroups [ 0 locks=0 ] ( "on" )
+insettingsection [ 0 locks=0 ] ( 0 )
+limitinset [ 0 locks=0 ] ( "on" )
+commonlimit [ 0 locks=0 ] ( "on" )
+normalsection [ 0 locks=0 ] ( 0 )
+addvertexnomrals [ 0 locks=0 ] ( "off" )
+cuspangle [ 0 locks=0 ] ( 60 )
+cuspfront [ 0 locks=0 ] ( "on" )
+cuspback [ 0 locks=0 ] ( "on" )
+uvssection [ 0 locks=0 ] ( 0 )
+genuvs [ 0 locks=0 ] ( "on" )
+uvstyle [ 0 locks=0 ] ( "proprtional" )
+uvscaling [ 0 locks=0 ] ( "matchuv" )
+shapecontrolsection [ 0 locks=0 ] ( 0 )
+frontmagnitude [ 0 locks=0 ] ( 1 )
+backmagnitude [ 0 locks=0 ] ( 1 )
+frontstiffness [ 0 locks=0 ] ( 0 )
+backstiffness [ 0 locks=0 ] ( 0 )
+interpolation [ 0 locks=0 ] ( "rotatingframe" )
+spacing [ 0 locks=0 ] ( "arclengthuniform" )
+externalspinesection [ 0 locks=0 ] ( 0 )
+reversespinedirection [ 0 locks=0 ] ( "off" )
+axialrotation [ 0 locks=0 ] ( 0 )
+frontblend [ 0 locks=0 ] ( 0.10000000000000001 )
+backblend [ 0 locks=0 ] ( 0.10000000000000001 )
+thicknesssection [ 0 locks=0 ] ( 0 )
+thicknessscale [ 0 locks=0 ] ( 1 )
+usethicknessattrib [ 0 locks=0 ] ( "on" )
+thicknessattrib [ 0 locks=0 ] ( thickness )
+usethicknessramp [ 0 locks=0 ] ( "on" )
+thicknessramp [ 0 locks=0 ] ( 2 )
+twistsection [ 0 locks=0 ] ( 0 )
+usetwistattrib [ 0 locks=0 ] ( "on" )
+twistattrib [ 0 locks=0 ] ( twist )
+usetwistramp [ 0 locks=0 ] ( "on" )
+twistramp [ 0 locks=0 ] ( 2 )
+twistscale [ 0 locks=0 ] ( 180 )
+localattribs [ 0 locks=0 ] ( 0 )
+uselocalzscaleattrib [ 0 locks=0 ] ( "off" )
+localzscaleattrib [ 0 locks=0 ] ( zscale )
+uselocalinsetscaleattrib [ 0 locks=0 ] ( "off" )
+localinsetscaleattrib [ 0 locks=0 ] ( insetscale )
+uselocaltwistattrib [ 0 locks=0 ] ( "off" )
+localtwistscaleattrib [ 0 locks=0 ] ( twistscale )
+uselocaldivsattrib [ 0 locks=0 ] ( "off" )
+locadivscaleattrib [ 0 locks=0 ] ( divsscale )
+localframeattribs [ 0 locks=0 ] ( 0 )
+uselocalxattrib [ 0 locks=0 ] ( "off" )
+localxattrib [ 0 locks=0 ] ( localx )
+uselocalzattirb [ 0 locks=0 ] ( "off" )
+localzattirb [ 0 locks=0 ] ( localz )
+uselocalctrattrib [ 0 locks=0 ] ( "off" )
+localctrattrib [ 0 locks=0 ] ( localctr )
+thicknessramp1pos [ 0 locks=0 ] ( 0 )
+thicknessramp1value [ 0 locks=0 ] ( 1 )
+thicknessramp1interp [ 0 locks=0 ] ( "catmull-rom" )
+thicknessramp2pos [ 0 locks=0 ] ( 1 )
+thicknessramp2value [ 0 locks=0 ] ( 1 )
+thicknessramp2interp [ 0 locks=0 ] ( "catmull-rom" )
+twistramp1pos [ 0 locks=0 ] ( 0 )
+twistramp1value [ 0 locks=0 ] ( 0.5 )
+twistramp1interp [ 0 locks=0 ] ( "catmull-rom" )
+twistramp2pos [ 0 locks=0 ] ( 1 )
+twistramp2value [ 0 locks=0 ] ( 0.5 )
+twistramp2interp [ 0 locks=0 ] ( "catmull-rom" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/polyextrude8.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/group4.init"
+Content-Type: text/plain
+
+type = groupcreate
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/group4.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 8.37112 -12.3514
+connectornextid 2
+flags = lock off model off template off footprint off xray off bypass off display off render off highlight on unload off savedata off compress on colordefault on exposed on
+outputsNamed3
+{
+1 "output1"
+}
+inputsNamed3
+{
+0 color5 1 1 "input1"
+}
+inputs
+{
+0 color5 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ 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/group4.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+groupname [ 0 locks=0 ] ( frustum_padded )
+grouptype [ 0 locks=0 ] ( "primitive" )
+mergeop [ 0 locks=0 ] ( "replace" )
+folder0 [ 0 locks=0 ] ( 0 )
+groupbase [ 0 locks=0 ] ( "on" )
+basegroup [ 0 locks=0 ] ( "" )
+ordered [ 0 locks=0 ] ( "off" )
+geotype [ 0 locks=0 ] ( "all" )
+switcher3 [ 0 locks=0 ] ( 0 )
+groupbounding [ 0 locks=0 ] ( "off" )
+boundtype [ 0 locks=0 ] ( "usebbox" )
+size [ 0 locks=0 ] ( 1 1 1 )
+t [ 0 locks=0 ] ( 0 0 0 )
+includenotwhollycontained [ 0 locks=0 ] ( "off" )
+iso [ 0 locks=0 ] ( 0 )
+invertvolume [ 0 locks=0 ] ( "off" )
+switcher4 [ 0 locks=0 ] ( 0 )
+groupnormal [ 0 locks=0 ] ( "off" )
+camerapath [ 0 locks=0 ] ( "" )
+nonplanar [ 0 locks=0 ] ( "off" )
+nonplanartol [ 0 locks=0 ] ( 0.001 )
+dir [ 0 locks=0 ] ( 0 0 1 )
+angle [ 0 locks=0 ] ( 180 )
+switcher5 [ 0 locks=0 ] ( 0 )
+groupedges [ 0 locks=0 ] ( "off" )
+dominedgeangle [ 0 locks=0 ] ( "off" )
+minedgeangle [ 0 locks=0 ] ( 20 )
+domaxedgeangle [ 0 locks=0 ] ( "off" )
+maxedgeangle [ 0 locks=0 ] ( 20 )
+edgeanglebetweenedges [ 0 locks=0 ] ( "off" )
+dominedgelen [ 0 locks=0 ] ( "off" )
+minedgelen [ 0 locks=0 ] ( 0 )
+domaxedgelen [ 0 locks=0 ] ( "off" )
+maxedgelen [ 0 locks=0 ] ( 0 )
+dodepth [ 0 locks=0 ] ( "off" )
+edgestep [ 0 locks=0 ] ( 0 )
+edgeptgrp [ 0 locks=0 ] ( 0 )
+unshared [ 0 locks=0 ] ( "off" )
+boundarygroups [ 0 locks=0 ] ( "off" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/group4.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/color5.init"
+Content-Type: text/plain
+
+type = color
+matchesdef = 1
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/color5.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 8.37112 -11.3514
+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 from_NDC6 1 1 "input1"
+}
+inputs
+{
+0 from_NDC6 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ 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/color5.chn"
+Content-Type: text/plain
+
+{
+ channel colorr {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../padded_frustum_colorr\") }
+ }
+ channel colorg {
+ lefttype = extend
+ righttype = extend
+ default = 0.5
+ flags = 0
+ segment { length = 0 value = 0.5 0.5 expr = ch(\"../padded_frustum_colorg\") }
+ }
+ channel colorb {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = ch(\"../padded_frustum_colorb\") }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/color5.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( "" )
+grouptype [ 0 locks=0 ] ( "guess" )
+deleteallcolorattribs [ 0 locks=0 ] ( "off" )
+class [ 0 locks=0 ] ( 2 )
+colortype [ 0 locks=0 ] ( 0 )
+color [ 8 locks=0 ] ( [ colorr 1 ] [ colorg 1 ] [ colorb 1 ] )
+seed [ 0 locks=0 ] ( 0 )
+rampattribute [ 0 locks=0 ] ( "" )
+ramprange [ 0 locks=0 ] ( 0 1 )
+ramp [ 0 locks=0 ] ( 2 )
+ramp1pos [ 0 locks=0 ] ( 0 )
+ramp1c [ 0 locks=0 ] ( 0 0 0 )
+ramp1interp [ 0 locks=0 ] ( "linear" )
+ramp2pos [ 0 locks=0 ] ( 1 )
+ramp2c [ 0 locks=0 ] ( 1 1 1 )
+ramp2interp [ 0 locks=0 ] ( "linear" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/color5.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":""
+ },
+ "___toolcount___":{
+ "type":"string",
+ "value":"2"
+ },
+ "___toolid___":{
+ "type":"string",
+ "value":"sop_color"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/translate_xy2.init"
+Content-Type: text/plain
+
+type = xform
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/translate_xy2.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 11.5058 -6.2736
+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 scale_xy1 1 1 "input1"
+}
+inputs
+{
+0 scale_xy1 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ 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/translate_xy2.chn"
+Content-Type: text/plain
+
+{
+ channel tx {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "( ch(\"../maxpadx\") - ch(\"../minpadx\") )/2" }
+ }
+ channel ty {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "(ch(\"../maxpady\") - ch(\"../minpady\"))/2" }
+ }
+ channel tz {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = 0 }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/translate_xy2.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( "" )
+grouptype [ 0 locks=0 ] ( "guess" )
+xOrd [ 0 locks=0 ] ( "srt" )
+rOrd [ 0 locks=0 ] ( "xyz" )
+t [ 8 locks=0 ] ( [ tx 0 ] [ ty 0 ] [ tz 0 ] )
+r [ 0 locks=0 ] ( 0 0 0 )
+s [ 0 locks=0 ] ( 1 1 1 )
+shear [ 0 locks=0 ] ( 0 0 0 )
+scale [ 0 locks=0 ] ( 1 )
+parmgroup_pivotxform [ 0 locks=0 ] ( 1 )
+p [ 8 locks=0 ] ( 0 0 0 )
+pr [ 0 locks=0 ] ( 0 0 0 )
+parmgroup_prexform [ 0 locks=0 ] ( 0 )
+prexform_xOrd [ 0 locks=0 ] ( "srt" )
+prexform_rOrd [ 0 locks=0 ] ( "xyz" )
+prexform_t [ 0 locks=0 ] ( 0 0 0 )
+prexform_r [ 0 locks=0 ] ( 0 0 0 )
+prexform_s [ 0 locks=0 ] ( 1 1 1 )
+prexform_shear [ 0 locks=0 ] ( 0 0 0 )
+movecentroid [ 0 locks=0 ] ( 0 )
+attribs [ 0 locks=0 ] ( * )
+updatenmls [ 0 locks=0 ] ( "off" )
+updateaffectednmls [ 0 locks=0 ] ( "on" )
+vlength [ 0 locks=0 ] ( "on" )
+invertxform [ 0 locks=0 ] ( "off" )
+addattrib [ 0 locks=0 ] ( "off" )
+outputattrib [ 0 locks=0 ] ( xform )
+outputmerge [ 0 locks=0 ] ( "post" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/translate_xy2.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform8.init"
+Content-Type: text/plain
+
+type = xform
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform8.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 11.5058 -7.43858
+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 off exposed on
+outputsNamed3
+{
+1 "output1"
+}
+inputsNamed3
+{
+0 translate_xy2 1 1 "input1"
+}
+inputs
+{
+0 translate_xy2 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ access 0777
+}
+color UT_Color RGB 0.518 0.561 0.741
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform8.chn"
+Content-Type: text/plain
+
+{
+ channel tx {
+ lefttype = extend
+ righttype = extend
+ default = -0.55000000000000004
+ flags = 0
+ segment { length = 0 value = -0.55000000000000004 -0.55000000000000004 expr = ch(\"../transform4/tx\") }
+ }
+ channel ty {
+ lefttype = extend
+ righttype = extend
+ default = -0.5
+ flags = 0
+ segment { length = 0 value = -0.5 -0.5 expr = ch(\"../transform4/ty\") }
+ }
+ channel tz {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../transform4/tz\") }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform8.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( "" )
+grouptype [ 0 locks=0 ] ( "guess" )
+xOrd [ 0 locks=0 ] ( "srt" )
+rOrd [ 0 locks=0 ] ( "xyz" )
+t [ 8 locks=0 ] ( [ tx 0 ] [ ty 0 ] [ tz 0 ] )
+r [ 0 locks=0 ] ( 0 0 0 )
+s [ 0 locks=0 ] ( 1 1 1 )
+shear [ 0 locks=0 ] ( 0 0 0 )
+scale [ 0 locks=0 ] ( 1 )
+parmgroup_pivotxform [ 0 locks=0 ] ( 0 )
+p [ 0 locks=0 ] ( 0 0 0 )
+pr [ 0 locks=0 ] ( 0 0 0 )
+parmgroup_prexform [ 0 locks=0 ] ( 0 )
+prexform_xOrd [ 0 locks=0 ] ( "srt" )
+prexform_rOrd [ 0 locks=0 ] ( "xyz" )
+prexform_t [ 0 locks=0 ] ( 0 0 0 )
+prexform_r [ 0 locks=0 ] ( 0 0 0 )
+prexform_s [ 0 locks=0 ] ( 1 1 1 )
+prexform_shear [ 0 locks=0 ] ( 0 0 0 )
+movecentroid [ 0 locks=0 ] ( 0 )
+attribs [ 0 locks=0 ] ( * )
+updatenmls [ 0 locks=0 ] ( "off" )
+updateaffectednmls [ 0 locks=0 ] ( "on" )
+vlength [ 0 locks=0 ] ( "on" )
+invertxform [ 0 locks=0 ] ( "on" )
+addattrib [ 0 locks=0 ] ( "on" )
+outputattrib [ 0 locks=0 ] ( xform )
+outputmerge [ 0 locks=0 ] ( "post" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/transform8.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/polyextrude9.init"
+Content-Type: text/plain
+
+type = polyextrude::2.0
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/polyextrude9.def"
+Content-Type: text/plain
+
+sopflags sopflags =
+comment ""
+position 11.5058 -8.43858
+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 off exposed on
+outputsNamed3
+{
+1 "output1"
+}
+inputsNamed3
+{
+0 transform8 1 1 "input1"
+}
+inputs
+{
+0 transform8 0 1
+}
+stat
+{
+ create -1
+ modify -1
+ author sidefx@calvin.local
+ access 0777
+}
+color UT_Color RGB 0.89 0.412 0.761
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/polyextrude9.chn"
+Content-Type: text/plain
+
+{
+ channel dist {
+ lefttype = extend
+ righttype = extend
+ default = -14.431703567504883
+ flags = 0
+ segment { length = 0 value = -14.431703567504883 -14.431703567504883 expr = "ch(opinputpath(\"..\", 0)+\"/far\") + ch(\"../maxpadz\")" }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/polyextrude9.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+group [ 0 locks=0 ] ( "" )
+splittype [ 0 locks=0 ] ( "components" )
+usesplitgroup [ 0 locks=0 ] ( "off" )
+splitgroup [ 0 locks=0 ] ( "" )
+extrusionmode [ 0 locks=0 ] ( "primnormal" )
+ptnormalsrc [ 0 locks=0 ] ( "precompute" )
+ptnormalattrib [ 0 locks=0 ] ( N )
+dist [ 8 locks=0 ] ( [ dist 0 ] )
+inset [ 0 locks=0 ] ( 0 )
+twist [ 0 locks=0 ] ( 0 )
+divs [ 0 locks=0 ] ( 1 )
+spinetype [ 0 locks=0 ] ( "straight" )
+stdswitcher [ 0 locks=0 ] ( 0 0 0 )
+xformsection [ 0 locks=0 ] ( 0 )
+xformfront [ 0 locks=0 ] ( "off" )
+xformspace [ 0 locks=0 ] ( "local" )
+rst [ 0 locks=0 ] ( "srt" )
+xyz [ 0 locks=0 ] ( "xyz" )
+translate [ 0 locks=0 ] ( 0 0 0 )
+rotate [ 0 locks=0 ] ( 0 0 0 )
+scale [ 0 locks=0 ] ( 1 1 1 )
+shear [ 0 locks=0 ] ( 0 0 0 )
+pivotxformsection [ 0 locks=0 ] ( 0 )
+pivot [ 0 locks=0 ] ( 0 0 0 )
+pivotrotate [ 0 locks=0 ] ( 0 0 0 )
+prexformsection [ 0 locks=0 ] ( 0 )
+prexform_rst [ 0 locks=0 ] ( "srt" )
+prexform_xyz [ 0 locks=0 ] ( "xyz" )
+prexform_translate [ 0 locks=0 ] ( 0 0 0 )
+prexform_rotate [ 0 locks=0 ] ( 0 0 0 )
+prexform_scale [ 0 locks=0 ] ( 1 1 1 )
+prexform_shear [ 0 locks=0 ] ( 0 0 0 )
+outputsection [ 0 locks=0 ] ( 0 )
+outputfront [ 0 locks=0 ] ( "on" )
+outputfrontgrp [ 0 locks=0 ] ( "off" )
+frontgrp [ 0 locks=0 ] ( extrudeFront )
+outputback [ 0 locks=0 ] ( "on" )
+outputbackgrp [ 0 locks=0 ] ( "off" )
+backgrp [ 0 locks=0 ] ( extrudeBack )
+outputside [ 0 locks=0 ] ( "on" )
+outputsidegrp [ 0 locks=0 ] ( "off" )
+sidegrp [ 8 locks=0 ] ( extrudeSide )
+outputfrontseamgrp [ 0 locks=0 ] ( "off" )
+frontseamgrp [ 0 locks=0 ] ( extrudeFrontSeam )
+outputbackseamgrp [ 0 locks=0 ] ( "off" )
+backseamgrp [ 0 locks=0 ] ( extrudeBackSeam )
+preservegroups [ 0 locks=0 ] ( "on" )
+insettingsection [ 0 locks=0 ] ( 0 )
+limitinset [ 0 locks=0 ] ( "on" )
+commonlimit [ 0 locks=0 ] ( "on" )
+normalsection [ 0 locks=0 ] ( 0 )
+addvertexnomrals [ 0 locks=0 ] ( "off" )
+cuspangle [ 0 locks=0 ] ( 60 )
+cuspfront [ 0 locks=0 ] ( "on" )
+cuspback [ 0 locks=0 ] ( "on" )
+uvssection [ 0 locks=0 ] ( 0 )
+genuvs [ 0 locks=0 ] ( "on" )
+uvstyle [ 0 locks=0 ] ( "proprtional" )
+uvscaling [ 0 locks=0 ] ( "matchuv" )
+shapecontrolsection [ 0 locks=0 ] ( 0 )
+frontmagnitude [ 0 locks=0 ] ( 1 )
+backmagnitude [ 0 locks=0 ] ( 1 )
+frontstiffness [ 0 locks=0 ] ( 0 )
+backstiffness [ 0 locks=0 ] ( 0 )
+interpolation [ 0 locks=0 ] ( "rotatingframe" )
+spacing [ 0 locks=0 ] ( "arclengthuniform" )
+externalspinesection [ 0 locks=0 ] ( 0 )
+reversespinedirection [ 0 locks=0 ] ( "off" )
+axialrotation [ 0 locks=0 ] ( 0 )
+frontblend [ 0 locks=0 ] ( 0.10000000000000001 )
+backblend [ 0 locks=0 ] ( 0.10000000000000001 )
+thicknesssection [ 0 locks=0 ] ( 0 )
+thicknessscale [ 0 locks=0 ] ( 1 )
+usethicknessattrib [ 0 locks=0 ] ( "on" )
+thicknessattrib [ 0 locks=0 ] ( thickness )
+usethicknessramp [ 0 locks=0 ] ( "on" )
+thicknessramp [ 0 locks=0 ] ( 2 )
+twistsection [ 0 locks=0 ] ( 0 )
+usetwistattrib [ 0 locks=0 ] ( "on" )
+twistattrib [ 0 locks=0 ] ( twist )
+usetwistramp [ 0 locks=0 ] ( "on" )
+twistramp [ 0 locks=0 ] ( 2 )
+twistscale [ 0 locks=0 ] ( 180 )
+localattribs [ 0 locks=0 ] ( 0 )
+uselocalzscaleattrib [ 0 locks=0 ] ( "off" )
+localzscaleattrib [ 0 locks=0 ] ( zscale )
+uselocalinsetscaleattrib [ 0 locks=0 ] ( "off" )
+localinsetscaleattrib [ 0 locks=0 ] ( insetscale )
+uselocaltwistattrib [ 0 locks=0 ] ( "off" )
+localtwistscaleattrib [ 0 locks=0 ] ( twistscale )
+uselocaldivsattrib [ 0 locks=0 ] ( "off" )
+locadivscaleattrib [ 0 locks=0 ] ( divsscale )
+localframeattribs [ 0 locks=0 ] ( 0 )
+uselocalxattrib [ 0 locks=0 ] ( "off" )
+localxattrib [ 0 locks=0 ] ( localx )
+uselocalzattirb [ 0 locks=0 ] ( "off" )
+localzattirb [ 0 locks=0 ] ( localz )
+uselocalctrattrib [ 0 locks=0 ] ( "off" )
+localctrattrib [ 0 locks=0 ] ( localctr )
+thicknessramp1pos [ 0 locks=0 ] ( 0 )
+thicknessramp1value [ 0 locks=0 ] ( 1 )
+thicknessramp1interp [ 0 locks=0 ] ( "catmull-rom" )
+thicknessramp2pos [ 0 locks=0 ] ( 1 )
+thicknessramp2value [ 0 locks=0 ] ( 1 )
+thicknessramp2interp [ 0 locks=0 ] ( "catmull-rom" )
+twistramp1pos [ 0 locks=0 ] ( 0 )
+twistramp1value [ 0 locks=0 ] ( 0.5 )
+twistramp1interp [ 0 locks=0 ] ( "catmull-rom" )
+twistramp2pos [ 0 locks=0 ] ( 1 )
+twistramp2value [ 0 locks=0 ] ( 0.5 )
+twistramp2interp [ 0 locks=0 ] ( "catmull-rom" )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/polyextrude9.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":"___EXTERNAL___"
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/__dot1.networkdotinit"
+Content-Type: text/plain
+
+{
+ "version":1,
+ "posx":8.87111999999999945,
+ "posy":-14.2014000000000014,
+ "pinned":false,
+ "color":"FROMOUTPUT",
+ "input":"PADDED 0 1"
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.order"
+Content-Type: text/plain
+
+26
+color3
+from_NDC4
+make_wireframe
+DISPLAY
+choose_frustum_to_output
+choose_display
+merge2
+group1
+OUT_FULL
+OUT_WIREFRAME
+grid2
+polyextrude6
+transform6
+scale_xy1
+transform4
+transform7
+translate_xy1
+FRUSTUM
+PADDED
+from_NDC6
+polyextrude8
+group4
+color5
+translate_xy2
+transform8
+polyextrude9
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.net"
+Content-Type: text/plain
+
+1
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY--
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Contents.dir/Contents.modtimes b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Contents.dir/Contents.modtimes
new file mode 100644
index 000000000..f7e9152bc
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Contents.dir/Contents.modtimes
@@ -0,0 +1,47 @@
+{
+ "hdaroot/polyextrude9.def":1647621470,
+ "hdaroot/transform8.def":1629205275,
+ "hdaroot/translate_xy2.def":1629206386,
+ "hdaroot/group4.def":1629193153,
+ "hdaroot/PADDED/polyfill2.def":1629210575,
+ "hdaroot/PADDED/blast11.def":1629206254,
+ "hdaroot/PADDED/clip2.def":1647621470,
+ "hdaroot/PADDED/blast10.def":1629192992,
+ "hdaroot/PADDED/null1.def":1629206235,
+ "hdaroot/PADDED/CLIPPED.def":1629210575,
+ "hdaroot/PADDED/FAR.def":1629210576,
+ "hdaroot/PADDED/clip1.def":1647621470,
+ "hdaroot/PADDED.def":1629210577,
+ "hdaroot/FRUSTUM/blast7.def":1629186351,
+ "hdaroot/FRUSTUM/output0.def":1629210633,
+ "hdaroot/FRUSTUM/NEAR.def":1629210631,
+ "hdaroot/FRUSTUM/FRUSTUM.def":1629186375,
+ "hdaroot/FRUSTUM.def":1629210632,
+ "hdaroot/FRUSTUM/blast6.def":1629186375,
+ "hdaroot/transform7.def":1629210516,
+ "hdaroot/transform4.def":1629193174,
+ "hdaroot/transform6.def":1647621470,
+ "hdaroot/color5.def":1629210489,
+ "hdaroot/FRUSTUM/FAR.def":1629210630,
+ "hdaroot/scale_xy1.def":1629207180,
+ "hdaroot/polyextrude6.def":1647621470,
+ "hdaroot/grid2.def":1629206403,
+ "hdaroot/PADDED/NEAR.def":1629210577,
+ "hdaroot/group1.def":1629193165,
+ "hdaroot/PADDED/output0.def":1629210587,
+ "hdaroot/polyextrude8.def":1647621470,
+ "hdaroot/OUT_FULL.def":1629183602,
+ "hdaroot/choose_display.def":1629210511,
+ "hdaroot/choose_frustum_to_output.def":1629210531,
+ "hdaroot/from_NDC6.def":1647621470,
+ "hdaroot/OUT_WIREFRAME.def":1629183602,
+ "hdaroot/PADDED/blast6.def":1629206221,
+ "hdaroot/make_wireframe.def":1629183602,
+ "hdaroot/merge2.def":1629193030,
+ "hdaroot/PADDED/polyfill1.def":1629210587,
+ "hdaroot/from_NDC4.def":1647621470,
+ "hdaroot/color3.def":1629210474,
+ "hdaroot/DISPLAY.def":1629210516,
+ "hdaroot/translate_xy1.def":1629210210,
+ "hdaroot.def":1647870927
+}
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Contents.dir/Sections.list b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Contents.dir/Sections.list
new file mode 100644
index 000000000..49f2c1522
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Contents.dir/Sections.list
@@ -0,0 +1,2 @@
+""
+Contents.mime Contents.mime
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/CreateScript b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/CreateScript
new file mode 100644
index 000000000..a728db477
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/CreateScript
@@ -0,0 +1,17 @@
+# Automatically generated script
+\set noalias = 1
+#
+# Creation script for labs::camera_frustum::1.0 operator
+#
+
+if ( "$arg1" == "" ) then
+ echo This script is intended as a creation script
+ exit
+endif
+
+# Node $arg1 (labs::Object/camera_frustum::1.0)
+opexprlanguage -s hscript $arg1
+opuserdata -n '___Version___' -v '' $arg1
+opuserdata -n '___toolcount___' -v '4' $arg1
+opuserdata -n '___toolid___' -v 'labs::object_camera_frustum::1.1' $arg1
+opuserdata -n 'wirestyle' -v 'rounded' $arg1
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/DefaultState b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/DefaultState
new file mode 100644
index 000000000..9a0877dbf
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/DefaultState
@@ -0,0 +1 @@
+labs::camera_frustum
\ No newline at end of file
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/DialogScript b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/DialogScript
new file mode 100644
index 000000000..b104de67f
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/DialogScript
@@ -0,0 +1,823 @@
+# Dialog script for labs::camera_frustum::1.0 automatically generated
+
+{
+ name labs::camera_frustum::1.0
+ script labs::camera_frustum::1.1
+ label "Labs Camera Frustum"
+
+ help {
+ ""
+ }
+
+ inputlabel 1 "Parent Camera"
+
+ group {
+ name "frustum"
+ label "Frustum"
+
+ parm {
+ name "center"
+ label "Center"
+ type vector2
+ invisible
+ size 2
+ default { "(ch(maxpadx)-ch(minpadx))/(2*ch(\"FRUSTUM/NEAR/bbox_sizex\"))" "(ch(maxpady)-ch(minpady))/(2*ch(\"FRUSTUM/NEAR/bbox_sizey\"))" }
+ disablewhen "{ isparm(centerx) == 1 }"
+ range { -10 10 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "frustum_scale"
+ label "Frustum scale"
+ type vector2
+ invisible
+ size 2
+ default { "1+(ch(minpadx)+ch(maxpadx))/ch(\"FRUSTUM/NEAR/bbox_sizex\")" "1+(ch(minpady)+ch(maxpady))/ch(\"FRUSTUM/NEAR/bbox_sizey\")" }
+ disablewhen "{ isparm(frustum_scale) == 1 }"
+ range { -1 1 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "script_callback_language" "python" }
+ }
+ groupsimple {
+ name "folder1"
+ label "Padding Options"
+
+ parm {
+ name "minpad"
+ label "Lower Padding"
+ type vector
+ size 3
+ default { "0.1" "0.1" "0.1" }
+ range { -1 1 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "maxpad"
+ label "Upper Padding"
+ type vector
+ size 3
+ default { "0.1" "0.1" "0.1" }
+ range { -1 1 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ groupsimple {
+ name "folder2"
+ label "Display Options"
+
+ parm {
+ name "frustum_display"
+ label "Display"
+ type ordinal
+ default { "1" }
+ menu {
+ "0" "Full"
+ "1" "Wireframe"
+ }
+ range { 0! 10 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "frustum_output"
+ label "Output"
+ type ordinal
+ default { "2" }
+ menu {
+ "0" "Frustum"
+ "1" "Padded frustum"
+ "2" "Both"
+ }
+ range { 0! 10 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "frustum_color"
+ label "Frustum Color"
+ type color
+ size 3
+ default { "0" "0.5" "1" }
+ range { 0 1 }
+ parmtag { "autoscope" "0000000000000000" }
+ }
+ parm {
+ name "padded_frustum_color"
+ label "Padded Frustum Color"
+ type color
+ size 3
+ default { "0.075" "0.1875" "0.3" }
+ range { 0 1 }
+ parmtag { "autoscope" "0000000000000000" }
+ }
+ }
+
+ }
+
+ group {
+ name "frustum_1"
+ label "Transform"
+ invisibletab
+
+ parm {
+ name "xOrd"
+ baseparm
+ label "Transform Order"
+ joinnext
+ export none
+ }
+ parm {
+ name "rOrd"
+ baseparm
+ label "Rotate Order"
+ nolabel
+ export none
+ }
+ parm {
+ name "t"
+ baseparm
+ label "Translate"
+ export all
+ }
+ parm {
+ name "r"
+ baseparm
+ label "Rotate"
+ export all
+ }
+ parm {
+ name "s"
+ baseparm
+ label "Scale"
+ export none
+ }
+ parm {
+ name "p"
+ baseparm
+ label "Pivot Translate"
+ export none
+ }
+ parm {
+ name "pr"
+ baseparm
+ label "Pivot Rotate"
+ export none
+ }
+ parm {
+ name "scale"
+ baseparm
+ label "Uniform Scale"
+ export none
+ }
+ parm {
+ name "pre_xform"
+ baseparm
+ label "Modify Pre-Transform"
+ export none
+ }
+ parm {
+ name "keeppos"
+ baseparm
+ label "Keep Position When Parenting"
+ export none
+ }
+ parm {
+ name "childcomp"
+ baseparm
+ label "Child Compensation"
+ export none
+ }
+ parm {
+ name "constraints_on"
+ baseparm
+ label "Enable Constraints"
+ export none
+ }
+ parm {
+ name "constraints_path"
+ baseparm
+ label "Constraints"
+ export none
+ }
+ parm {
+ name "lookatpath"
+ baseparm
+ label "Look At"
+ invisible
+ export none
+ }
+ parm {
+ name "lookupobjpath"
+ baseparm
+ label "Look Up Object"
+ invisible
+ export none
+ }
+ parm {
+ name "lookup"
+ baseparm
+ label "Look At Up Vector"
+ invisible
+ export none
+ }
+ parm {
+ name "pathobjpath"
+ baseparm
+ label "Path Object"
+ invisible
+ export none
+ }
+ parm {
+ name "roll"
+ baseparm
+ label "Roll"
+ invisible
+ export none
+ }
+ parm {
+ name "pos"
+ baseparm
+ label "Position"
+ invisible
+ export none
+ }
+ parm {
+ name "uparmtype"
+ baseparm
+ label "Parameterization"
+ invisible
+ export none
+ }
+ parm {
+ name "pathorient"
+ baseparm
+ label "Orient Along Path"
+ invisible
+ export none
+ }
+ parm {
+ name "up"
+ baseparm
+ label "Orient Up Vector"
+ invisible
+ export none
+ }
+ parm {
+ name "bank"
+ baseparm
+ label "Auto-Bank factor"
+ invisible
+ export none
+ }
+ }
+
+ group {
+ name "frustum_2"
+ label "Render"
+
+ parm {
+ name "shop_materialpath"
+ baseparm
+ label "Material"
+ export none
+ }
+ parm {
+ name "shop_materialopts"
+ baseparm
+ label "Options"
+ invisible
+ export none
+ }
+ parm {
+ name "tdisplay"
+ baseparm
+ label "Display"
+ joinnext
+ export none
+ }
+ parm {
+ name "display"
+ baseparm
+ label "Display"
+ export none
+ }
+ parm {
+ name "viewportlod"
+ label "Display As"
+ type ordinal
+ default { "full" }
+ help "Choose how the object's geometry should be rendered in the viewport"
+ menu {
+ "full" "Full Geometry"
+ "points" "Point Cloud"
+ "box" "Bounding Box"
+ "centroid" "Centroid"
+ "hidden" "Hidden"
+ "subd" "Subdivision Surface / Curves"
+ }
+ parmtag { "spare_category" "Render" }
+ }
+ parm {
+ name "vm_rendervisibility"
+ label "Render Visibility"
+ type string
+ default { "*" }
+ menureplace {
+ "*" "Visible to all"
+ "primary" "Visible only to primary rays"
+ "primary|shadow" "Visible only to primary and shadow rays"
+ "-primary" "Invisible to primary rays (Phantom)"
+ "-diffuse" "Invisible to diffuse rays"
+ "-diffuse&-reflect&-refract" "Invisible to secondary rays"
+ "" "Invisible (Unrenderable)"
+ }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "rendervisibility" }
+ parmtag { "spare_category" "Render" }
+ }
+ parm {
+ name "vm_rendersubd"
+ label "Render Polygons As Subdivision (Mantra)"
+ type toggle
+ default { "0" }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "rendersubd" }
+ parmtag { "spare_category" "Geometry" }
+ }
+ parm {
+ name "vm_subdstyle"
+ label "Subdivision Style"
+ type string
+ default { "mantra_catclark" }
+ hidewhen "{ vm_rendersubd == 0 }"
+ menu {
+ "mantra_catclark" "Mantra Catmull-Clark"
+ "osd_catclark" "OpenSubdiv Catmull-Clark"
+ }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "subdstyle" }
+ parmtag { "spare_category" "Geometry" }
+ }
+ parm {
+ name "vm_subdgroup"
+ label "Subdivision Group"
+ type string
+ default { "" }
+ hidewhen "{ vm_rendersubd == 0 }"
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "subdgroup" }
+ parmtag { "spare_category" "Geometry" }
+ }
+ parm {
+ name "vm_osd_quality"
+ label "Open Subdiv Quality"
+ type float
+ default { "1" }
+ hidewhen "{ vm_rendersubd == 0 vm_subdstyle != osd_catclark }"
+ range { 0 10 }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "osd_quality" }
+ parmtag { "spare_category" "Geometry" }
+ }
+ parm {
+ name "vm_osd_vtxinterp"
+ label "OSD Vtx Interp"
+ type integer
+ default { "2" }
+ hidewhen "{ vm_rendersubd == 0 vm_subdstyle != osd_catclark }"
+ menu {
+ "0" "No vertex interpolation"
+ "1" "Edges only"
+ "2" "Edges and Corners"
+ }
+ range { 0 10 }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "osd_vtxinterp" }
+ parmtag { "spare_category" "Geometry" }
+ }
+ parm {
+ name "vm_osd_fvarinterp"
+ label "OSD FVar Interp"
+ type integer
+ default { "4" }
+ hidewhen "{ vm_rendersubd == 0 vm_subdstyle != osd_catclark }"
+ menu {
+ "0" "Smooth everywhere"
+ "1" "Sharpen corners only"
+ "2" "Sharpen edges and corners"
+ "3" "Sharpen edges and propagated corners"
+ "4" "Sharpen all boundaries"
+ "5" "Bilinear interpolation"
+ }
+ range { 0 10 }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "osd_fvarinterp" }
+ parmtag { "spare_category" "Geometry" }
+ }
+ group {
+ name "folder0"
+ label "Shading"
+
+ parm {
+ name "categories"
+ label "Categories"
+ type string
+ default { "" }
+ help "A list of tags which can be used to select the object"
+ parmtag { "spare_category" "Shading" }
+ }
+ parm {
+ name "reflectmask"
+ label "Reflection Mask"
+ type oplist
+ default { "*" }
+ help "Objects that will be reflected on this object."
+ parmtag { "opexpand" "1" }
+ parmtag { "opfilter" "!!OBJ/GEOMETRY!!" }
+ parmtag { "oprelative" "/obj" }
+ parmtag { "spare_category" "Shading" }
+ }
+ parm {
+ name "refractmask"
+ label "Refraction Mask"
+ type oplist
+ default { "*" }
+ help "Objects that will be refracted on this object."
+ parmtag { "opexpand" "1" }
+ parmtag { "opfilter" "!!OBJ/GEOMETRY!!" }
+ parmtag { "oprelative" "/obj" }
+ parmtag { "spare_category" "Shading" }
+ }
+ parm {
+ name "lightmask"
+ label "Light Mask"
+ type oplist
+ default { "*" }
+ help "Lights that illuminate this object."
+ parmtag { "opexpand" "1" }
+ parmtag { "opfilter" "!!OBJ/LIGHT!!" }
+ parmtag { "oprelative" "/obj" }
+ parmtag { "spare_category" "Shading" }
+ }
+ parm {
+ name "lightcategories"
+ label "Light Selection"
+ type string
+ default { "*" }
+ parmtag { "spare_category" "Shading" }
+ }
+ parm {
+ name "vm_lpetag"
+ label "LPE Tag"
+ type string
+ default { "" }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "lpetag" }
+ parmtag { "spare_category" "Shading" }
+ }
+ parm {
+ name "vm_volumefilter"
+ label "Volume Filter"
+ type string
+ default { "box" }
+ menu {
+ "box" "Box Filter"
+ "gaussian" "Gaussian"
+ "bartlett" "Bartlett (triangle)"
+ "catrom" "Catmull-Rom"
+ "hanning" "Hanning"
+ "blackman" "Blackman"
+ "sinc" "Sinc (sharpening)"
+ }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "filter" }
+ parmtag { "spare_category" "Shading" }
+ }
+ parm {
+ name "vm_volumefilterwidth"
+ label "Volume Filter Width"
+ type float
+ default { "1" }
+ range { 0.001 5 }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "filterwidth" }
+ parmtag { "spare_category" "Shading" }
+ }
+ parm {
+ name "vm_matte"
+ label "Matte shading"
+ type toggle
+ default { "0" }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "matte" }
+ parmtag { "spare_category" "Shading" }
+ }
+ parm {
+ name "vm_rayshade"
+ label "Raytrace Shading"
+ type toggle
+ default { "0" }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "rayshade" }
+ parmtag { "spare_category" "Shading" }
+ }
+ }
+
+ group {
+ name "folder0_1"
+ label "Sampling"
+
+ parm {
+ name "geo_velocityblur"
+ label "Geometry Velocity Blur"
+ type ordinal
+ default { "off" }
+ disablewhen "{ allowmotionblur == 0 }"
+ menu {
+ "off" "No Velocity Blur"
+ "on" "Velocity Blur"
+ "accelblur" "Acceleration Blur"
+ }
+ }
+ parm {
+ name "geo_accelattribute"
+ label "Acceleration Attribute"
+ type string
+ default { "accel" }
+ hidewhen "{ geo_velocityblur != accelblur }"
+ parmtag { "spare_category" "Sampling" }
+ }
+ }
+
+ group {
+ name "folder0_2"
+ label "Dicing"
+
+ parm {
+ name "vm_shadingquality"
+ label "Shading Quality"
+ type float
+ default { "1" }
+ range { 0 10 }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "shadingquality" }
+ parmtag { "spare_category" "Dicing" }
+ }
+ parm {
+ name "vm_flatness"
+ label "Dicing Flatness"
+ type float
+ default { "0.05" }
+ range { 0 1 }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "flatness" }
+ parmtag { "spare_category" "Dicing" }
+ }
+ parm {
+ name "vm_raypredice"
+ label "Ray Predicing"
+ type integer
+ default { "0" }
+ menu {
+ "0" "Disable Predicing"
+ "1" "Full Predicing"
+ "2" "Precompute Bounds"
+ }
+ range { 0 10 }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "raypredice" }
+ parmtag { "spare_category" "Dicing" }
+ }
+ parm {
+ name "vm_curvesurface"
+ label "Shade Curves As Surfaces"
+ type toggle
+ default { "0" }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "curvesurface" }
+ parmtag { "spare_category" "Dicing" }
+ }
+ }
+
+ group {
+ name "folder0_3"
+ label "Geometry"
+
+ parm {
+ name "vm_rmbackface"
+ label "Backface Removal"
+ type toggle
+ default { "0" }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "rmbackface" }
+ parmtag { "spare_category" "Geometry" }
+ }
+ parm {
+ name "shop_geometrypath"
+ label "Procedural Shader"
+ type oppath
+ default { "" }
+ parmtag { "opfilter" "!!SHOP/GEOMETRY!!" }
+ parmtag { "oprelative" "." }
+ parmtag { "spare_category" "Geometry" }
+ }
+ parm {
+ name "vm_forcegeometry"
+ label "Force Procedural Geometry Output"
+ type toggle
+ default { "1" }
+ parmtag { "spare_category" "Geometry" }
+ }
+ parm {
+ name "vm_rendersubdcurves"
+ label "Render Polygon Curves As Subdivision (Mantra)"
+ type toggle
+ default { "0" }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "rendersubdcurves" }
+ parmtag { "spare_category" "Geometry" }
+ }
+ parm {
+ name "vm_renderpoints"
+ label "Render As Points (Mantra)"
+ type integer
+ default { "2" }
+ menu {
+ "0" "No Point Rendering"
+ "1" "Render Only Points"
+ "2" "Render Unconnected Points"
+ }
+ range { 0 10 }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "renderpoints" }
+ parmtag { "spare_category" "Geometry" }
+ }
+ parm {
+ name "vm_renderpointsas"
+ label "Render Points As (Mantra)"
+ type integer
+ default { "0" }
+ disablewhen "{ vm_renderpoints == 0 }"
+ menu {
+ "0" "Spheres"
+ "1" "Circles"
+ }
+ range { 0 10 }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "renderpointsas" }
+ parmtag { "spare_category" "Geometry" }
+ }
+ parm {
+ name "vm_usenforpoints"
+ label "Use N For Point Rendering"
+ type toggle
+ default { "0" }
+ disablewhen "{ vm_renderpoints == 0 }"
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "usenforpoints" }
+ parmtag { "spare_category" "Geometry" }
+ }
+ parm {
+ name "vm_pointscale"
+ label "Point Scale"
+ type float
+ default { "1" }
+ disablewhen "{ vm_renderpoints == 0 }"
+ range { 0! 10 }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "pointscale" }
+ parmtag { "spare_category" "Geometry" }
+ }
+ parm {
+ name "vm_pscalediameter"
+ label "Treat Point Scale as Diameter Instead of Radius"
+ type toggle
+ default { "0" }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "pscalediameter" }
+ parmtag { "spare_category" "Geometry" }
+ }
+ parm {
+ name "vm_metavolume"
+ label "Metaballs as Volume"
+ type toggle
+ default { "0" }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "metavolume" }
+ parmtag { "spare_category" "Geometry" }
+ }
+ parm {
+ name "vm_coving"
+ label "Coving"
+ type integer
+ default { "1" }
+ menu {
+ "0" "Disable Coving"
+ "1" "Coving for displacement/sub-d"
+ "2" "Coving for all primitives"
+ }
+ range { 0 10 }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "coving" }
+ parmtag { "spare_category" "Geometry" }
+ }
+ parm {
+ name "vm_materialoverride"
+ label "Material Override"
+ type string
+ default { "compact" }
+ menu {
+ "none" "Disabled"
+ "full" "Evaluate for Each Primitve/Point"
+ "compact" "Evaluate Once"
+ }
+ parmtag { "spare_category" "Geometry" }
+ }
+ parm {
+ name "vm_overridedetail"
+ label "Ignore Geometry Attribute Shaders"
+ type toggle
+ default { "0" }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "overridedetail" }
+ parmtag { "spare_category" "Geometry" }
+ }
+ parm {
+ name "vm_procuseroottransform"
+ label "Proc Use Root Transform"
+ type toggle
+ default { "1" }
+ parmtag { "mantra_class" "object" }
+ parmtag { "mantra_name" "procuseroottransform" }
+ parmtag { "spare_category" "Geometry" }
+ }
+ }
+
+ parm {
+ name "renderable"
+ baseparm
+ label "Renderable"
+ export none
+ }
+ }
+
+ group {
+ name "frustum_3"
+ label "Misc"
+
+ parm {
+ name "use_dcolor"
+ baseparm
+ label "Set Wireframe Color"
+ export none
+ }
+ parm {
+ name "dcolor"
+ baseparm
+ label "Wireframe Color"
+ export none
+ }
+ parm {
+ name "picking"
+ baseparm
+ label "Viewport Selecting Enabled"
+ export none
+ }
+ parm {
+ name "pickscript"
+ baseparm
+ label "Select Script"
+ export none
+ }
+ parm {
+ name "caching"
+ baseparm
+ label "Cache Object Transform"
+ export none
+ }
+ parm {
+ name "vport_shadeopen"
+ baseparm
+ label "Shade Open Curves In Viewport"
+ export none
+ }
+ parm {
+ name "vport_displayassubdiv"
+ baseparm
+ label "Display as Subdivision in Viewport"
+ invisible
+ export none
+ }
+ parm {
+ name "vport_onionskin"
+ baseparm
+ label "Onion Skinning"
+ export none
+ }
+ }
+
+}
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/ExtraFileOptions b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/ExtraFileOptions
new file mode 100644
index 000000000..ec976b2e1
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/ExtraFileOptions
@@ -0,0 +1,110 @@
+{
+ "OnCreated/Cursor":{
+ "type":"intarray",
+ "value":[9,1]
+ },
+ "OnCreated/IsExpr":{
+ "type":"bool",
+ "value":false
+ },
+ "OnCreated/IsPython":{
+ "type":"bool",
+ "value":true
+ },
+ "OnCreated/IsScript":{
+ "type":"bool",
+ "value":true
+ },
+ "OnCreated/Source":{
+ "type":"string",
+ "value":""
+ },
+ "VHDA/Cursor":{
+ "type":"intarray",
+ "value":[1,1]
+ },
+ "VHDA/IsExpr":{
+ "type":"bool",
+ "value":false
+ },
+ "VHDA/IsPython":{
+ "type":"bool",
+ "value":false
+ },
+ "VHDA/IsScript":{
+ "type":"bool",
+ "value":false
+ },
+ "VHDA/Source":{
+ "type":"string",
+ "value":""
+ },
+ "ViewerHandleModule/CodeGenInput":{
+ "type":"string",
+ "value":"{\n\t\"handle_name\":\"\",\n\t\"handle_label\":\"\",\n\t\"handle_descr\":\"\",\n\t\"handle_icon\":\"$HH/config/Icons\",\n\t\"handle_debug_menu\":0,\n\t\"handle_sample\":0,\n\t\"handle_handler_indices\":[]\n}\n"
+ },
+ "ViewerStateInstall/Cursor":{
+ "type":"intarray",
+ "value":[0,0]
+ },
+ "ViewerStateInstall/IsPython":{
+ "type":"bool",
+ "value":true
+ },
+ "ViewerStateInstall/IsScript":{
+ "type":"bool",
+ "value":true
+ },
+ "ViewerStateInstall/IsViewerState":{
+ "type":"bool",
+ "value":true
+ },
+ "ViewerStateInstall/Source":{
+ "type":"string",
+ "value":""
+ },
+ "ViewerStateModule/CodeGenInput":{
+ "type":"string",
+ "value":"{\n\t\"state_name\":\"labs::camera_frustum::1.1\",\n\t\"state_label\":\"Labs::camera frustum::1.1\",\n\t\"state_descr\":\"Labs::camera frustum::1.1\",\n\t\"state_icon\":\"$HH/config/Icons\",\n\t\"state_debug_menu\":0,\n\t\"state_sample\":0,\n\t\"state_handler_indices\":[]\n}\n"
+ },
+ "ViewerStateModule/Cursor":{
+ "type":"intarray",
+ "value":[107,1]
+ },
+ "ViewerStateModule/IsPython":{
+ "type":"bool",
+ "value":true
+ },
+ "ViewerStateModule/IsScript":{
+ "type":"bool",
+ "value":true
+ },
+ "ViewerStateModule/IsViewerState":{
+ "type":"bool",
+ "value":true
+ },
+ "ViewerStateModule/Source":{
+ "type":"string",
+ "value":""
+ },
+ "ViewerStateUninstall/Cursor":{
+ "type":"intarray",
+ "value":[0,0]
+ },
+ "ViewerStateUninstall/IsPython":{
+ "type":"bool",
+ "value":true
+ },
+ "ViewerStateUninstall/IsScript":{
+ "type":"bool",
+ "value":true
+ },
+ "ViewerStateUninstall/IsViewerState":{
+ "type":"bool",
+ "value":true
+ },
+ "ViewerStateUninstall/Source":{
+ "type":"string",
+ "value":""
+ }
+}
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Help b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Help
new file mode 100644
index 000000000..e69de29bb
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/IconSVG b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/IconSVG
new file mode 100644
index 000000000..17c0a3de3
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/IconSVG
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/InternalFileOptions b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/InternalFileOptions
new file mode 100644
index 000000000..222988aa0
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/InternalFileOptions
@@ -0,0 +1,10 @@
+{
+ "nodeconntype":{
+ "type":"bool",
+ "value":false
+ },
+ "nodeparmtype":{
+ "type":"bool",
+ "value":false
+ }
+}
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/OnCreated b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/OnCreated
new file mode 100644
index 000000000..85d33c63f
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/OnCreated
@@ -0,0 +1,8 @@
+# track creation usage. For more info, including how to disable this please see
+# https://www.sidefx.com/legal/houdini-anonymous-usage-statistics/
+
+try:
+ import labutils
+ labutils.send_on_create_analytics(kwargs["node"])
+except:
+ pass
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Sections.list b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Sections.list
new file mode 100644
index 000000000..9a24f883c
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Sections.list
@@ -0,0 +1,16 @@
+""
+DialogScript DialogScript
+CreateScript CreateScript
+TypePropertiesOptions TypePropertiesOptions
+Help Help
+Tools.shelf Tools.shelf
+InternalFileOptions InternalFileOptions
+Contents.gz Contents.gz
+DefaultState DefaultState
+ViewerStateModule ViewerStateModule
+ViewerStateInstall ViewerStateInstall
+ViewerStateUninstall ViewerStateUninstall
+IconSVG IconSVG
+OnCreated OnCreated
+ExtraFileOptions ExtraFileOptions
+VHDA VHDA
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Tools.shelf b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Tools.shelf
new file mode 100644
index 000000000..81f9f05ac
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/Tools.shelf
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+ OBJ
+
+
+ $HDA_TABLE_AND_NAME
+ OBJ
+
+ Labs
+
+
+
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/TypePropertiesOptions b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/TypePropertiesOptions
new file mode 100644
index 000000000..a6d52acf2
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/TypePropertiesOptions
@@ -0,0 +1,14 @@
+CheckExternal := 1;
+ContentsCompressionType := 1;
+ForbidOutsideParms := 1;
+GzipContents := 1;
+LockContents := 1;
+MakeDefault := 1;
+ParmsFromVfl := 0;
+PrefixDroppedParmLabel := 0;
+PrefixDroppedParmName := 0;
+SaveCachedCode := 0;
+SaveIcon := 1;
+SaveSpareParms := 0;
+UnlockOnCreate := 0;
+UseDSParms := 1;
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/VHDA b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/VHDA
new file mode 100644
index 000000000..322cb19dc
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/VHDA
@@ -0,0 +1,3 @@
+{
+ "namespace": "branch"
+}
\ No newline at end of file
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/ViewerStateInstall b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/ViewerStateInstall
new file mode 100644
index 000000000..3a8ded640
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/ViewerStateInstall
@@ -0,0 +1 @@
+__import__('viewerstate.utils', fromlist=[None]).register_pystate_embedded(kwargs['type'])
\ No newline at end of file
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/ViewerStateModule b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/ViewerStateModule
new file mode 100644
index 000000000..16e2f9ce6
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/ViewerStateModule
@@ -0,0 +1,106 @@
+import hou
+import viewerstate.utils as su
+
+class State(object):
+ def __init__(self, state_name, scene_viewer):
+ self.state_name = state_name
+ self.scene_viewer = scene_viewer
+ self.bboxnear = hou.Handle(self.scene_viewer, "BBox Near")
+ self.bboxfar = hou.Handle(self.scene_viewer, "BBox Far")
+ self.bboxsize = hou.Handle(self.scene_viewer, "BBox Size")
+ self.camera = None
+ self.cam_near = 0
+ self.cam_far = 0
+
+ def onEnter(self, kwargs):
+ node = kwargs["node"]
+
+ self.camera = node.input(0)
+ self.cam_near = self.camera.parm("near").eval()
+ self.cam_far = self.camera.parm("far").eval()
+
+ self.bboxnear.show(True)
+ hou.Handle.update(self.bboxnear)
+
+ self.bboxfar.show(True)
+ hou.Handle.update(self.bboxfar)
+
+ self.bboxsize.show(True)
+ hou.Handle.update(self.bboxsize)
+
+ def onHandleToState(self, kwargs):
+ node = kwargs["node"]
+ handle = kwargs["handle"]
+ parms = kwargs["parms"]
+ mod_parms = kwargs["mod_parms"]
+
+ if handle == self.bboxnear.name():
+ val = min(parms['centerz'], 0) + self.cam_near
+ node.parm('minpadz').set(val)
+ self.bboxnear.update()
+
+ elif handle == self.bboxfar.name():
+ val = - (min(parms['centerz'], 0) + self.cam_far)
+ node.parm('maxpadz').set(val)
+ self.bboxfar.update()
+
+ elif handle == self.bboxsize.name():
+ frustum_near_size = hou.node( node.path()+"/FRUSTUM/NEAR" ).geometry().boundingBox().sizevec()
+
+ deltax = parms["sizex"] - frustum_near_size[0]
+ minpadx = deltax/2 - parms['centerx']
+ maxpadx = deltax/2 + parms['centerx']
+ node.parm('minpadx').set( minpadx )
+ node.parm('maxpadx').set( maxpadx )
+
+ deltay = parms["sizey"] - frustum_near_size[1]
+ minpady = deltay/2 - parms['centery']
+ maxpady = deltay/2 + parms['centery']
+ node.parm('minpady').set( minpady )
+ node.parm('maxpady').set( maxpady )
+
+ self.bboxsize.update()
+
+ def onStateToHandle(self, kwargs):
+ parms = kwargs['parms']
+ handle = kwargs['handle']
+ node = kwargs['node']
+
+ padded_near_pos = hou.node( node.path()+"/PADDED/NEAR" ).geometry().boundingBox().center()
+ padded_far_pos = hou.node( node.path()+"/PADDED/FAR" ).geometry().boundingBox().center()
+ clipped_pos = hou.node( node.path()+"/PADDED/CLIPPED" ).geometry().boundingBox().center()
+ clipped_size = hou.node( node.path()+"/PADDED/CLIPPED" ).geometry().boundingBox().sizevec()
+
+ if handle == self.bboxnear.name():
+ parms["centerx"] = padded_near_pos[0]
+ parms["centery"] = padded_near_pos[1]
+ parms["centerz"] = padded_near_pos[2]
+
+ elif handle == self.bboxfar.name():
+ parms["centerx"] = padded_far_pos[0]
+ parms["centery"] = padded_far_pos[1]
+ parms["centerz"] = padded_far_pos[2]
+
+ elif handle == self.bboxsize.name():
+ parms["centerx"] = clipped_pos[0]
+ parms["centery"] = clipped_pos[1]
+ parms["centerz"] = clipped_pos[2]
+ parms["sizex"] = clipped_size[0]
+ parms["sizey"] = clipped_size[1]
+
+
+def createViewerStateTemplate():
+ state_typename = "labs::camera_frustum"
+ state_label = "Labs Camera Frustum State"
+ state_cat = hou.objNodeTypeCategory()
+
+ template = hou.ViewerStateTemplate(state_typename, state_label, state_cat)
+ template.bindFactory(State)
+ template.bindIcon(kwargs["type"].icon())
+
+ # bind dynamic handles
+ template.bindHandle( "boundingbox", "BBox Near", cache_previous_parms=True, handle_parms=["centerz"])
+ template.bindHandle( "boundingbox", "BBox Far", cache_previous_parms=True, handle_parms=["centerz"])
+ template.bindHandle( "boundingbox", "BBox Size", cache_previous_parms=True, handle_parms=["sizex", "sizey", "centerx", "centery"])
+
+ return template
diff --git a/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/ViewerStateUninstall b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/ViewerStateUninstall
new file mode 100644
index 000000000..4b7789482
--- /dev/null
+++ b/otls/camera_frustum.1.0.hda/labs_8_8Object_1camera__frustum_8_81.0/ViewerStateUninstall
@@ -0,0 +1 @@
+__import__('viewerstate.utils', fromlist=[None]).unregister_pystate_embedded(kwargs['type'])
\ No newline at end of file
diff --git a/otls/group_by_attribute.1.0.hda/INDEX__SECTION b/otls/group_by_attribute.1.0.hda/INDEX__SECTION
index 1158ec0b2..418951145 100644
--- a/otls/group_by_attribute.1.0.hda/INDEX__SECTION
+++ b/otls/group_by_attribute.1.0.hda/INDEX__SECTION
@@ -4,11 +4,11 @@ Path: oplib:/labs::Sop/group_by_attribute::1.0?labs::Sop/group_by_attrib
Icon: SOP_groupcreate
Table: Sop
License:
-Extra:
+Extra: inputcolors='1 "RGB 0.700195 0.700195 0.700195" ' outputcolors='1 "RGB 0.700195 0.700195 0.700195" '
User:
Inputs: 1 to 1
Subnet: true
Python: false
Empty: false
-Modified: Fri Dec 9 18:05:39 2022
+Modified: Mon Mar 13 17:55:28 2023
diff --git a/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Contents.dir/Contents.createtimes b/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Contents.dir/Contents.createtimes
index e243c58cb..066106c93 100644
--- a/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Contents.dir/Contents.createtimes
+++ b/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Contents.dir/Contents.createtimes
@@ -1,7 +1,7 @@
{
"hdaroot/output1.def":1527283133,
+ "hdaroot/switch1.def":1527279673,
"hdaroot/pointwrangle2.def":1527279329,
"hdaroot/pointwrangle1.def":1527279329,
- "hdaroot/switch1.def":1527279673,
- "hdaroot.def":1670627054
+ "hdaroot.def":1678726454
}
diff --git a/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Contents.dir/Contents.houdini_versions b/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Contents.dir/Contents.houdini_versions
index c51675e85..3e51d0054 100644
--- a/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Contents.dir/Contents.houdini_versions
+++ b/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Contents.dir/Contents.houdini_versions
@@ -1,9 +1,8 @@
{
- "values":[".1","19.0.720"
+ "values":["19.5.553"
],
"indexes":{
- "hdaroot/switch1.userdata":1,
- "hdaroot.userdata":0,
- "hdaroot/output1.userdata":1
+ "hdaroot/switch1.userdata":0,
+ "hdaroot/output1.userdata":0
}
}
diff --git a/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Contents.dir/Contents.mime b/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Contents.dir/Contents.mime
index fcc7452cb..3e7b6e923 100644
--- a/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Contents.dir/Contents.mime
+++ b/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Contents.dir/Contents.mime
@@ -32,23 +32,25 @@ Content-Type: text/plain
sopflags sopflags =
comment ""
-position -3.94447 4.74538
-connectornextid 0
+position -9.62842 -25.7513
+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
{
}
inputsNamed3
{
+0 group1 1 1 "input1"
}
inputs
{
+0 group1 0 1
}
stat
{
create -1
modify -1
- author christoss@oxbow
+ author sidefx@asterix.local
access 0777
}
color UT_Color RGB 0.8 0.8 0.8
@@ -63,7 +65,7 @@ Content-Type: text/plain
{
"___Version___":{
"type":"string",
- "value":"___EXTERNAL___"
+ "value":""
}
}
@@ -299,6 +301,13 @@ Content-Type: text/plain
flags = 0
segment { length = 0 value = 2 2 expr = ch(\"../precision\") }
}
+ channel group {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../group\") }
+ }
}
--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
@@ -308,7 +317,7 @@ Content-Type: text/plain
{
version 0.8
folder0 [ 0 locks=0 ] ( 0 0 )
-group [ 0 locks=0 ] ( "" )
+group [ 0 locks=0 ] ( [ group "" ] )
grouptype [ 0 locks=0 ] ( "guess" )
class [ 0 locks=0 ] ( "point" )
vex_numcount [ 0 locks=0 ] ( 10 )
diff --git a/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Contents.dir/Contents.modtimes b/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Contents.dir/Contents.modtimes
index 945198431..7b119995c 100644
--- a/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Contents.dir/Contents.modtimes
+++ b/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Contents.dir/Contents.modtimes
@@ -1,7 +1,7 @@
{
"hdaroot/output1.def":1534464174,
- "hdaroot/pointwrangle2.def":1644511103,
- "hdaroot/pointwrangle1.def":1644510090,
"hdaroot/switch1.def":1644510090,
- "hdaroot.def":1670627076
+ "hdaroot/pointwrangle2.def":1644511103,
+ "hdaroot/pointwrangle1.def":1678726530,
+ "hdaroot.def":1678726473
}
diff --git a/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/CreateScript b/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/CreateScript
index f83873555..271ae7d1c 100644
--- a/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/CreateScript
+++ b/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/CreateScript
@@ -11,4 +11,4 @@ endif
# Node $arg1 (labs::Sop/group_by_attribute::1.0)
opexprlanguage -s hscript $arg1
-opuserdata -n '___Version___' -v '.1' $arg1
+opuserdata -n '___Version___' -v '' $arg1
diff --git a/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/DialogScript b/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/DialogScript
index 37a2eb312..7b0c0a23a 100644
--- a/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/DialogScript
+++ b/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/DialogScript
@@ -14,6 +14,20 @@
inputlabel 3 "Sub-Network Input #3"
inputlabel 4 "Sub-Network Input #4"
+ parm {
+ name "group"
+ label "Group"
+ type string
+ default { "" }
+ menutoggle {
+ [ "opmenu -l -a pointwrangle1 group" ]
+ }
+ range { 0 1 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "script_action" "import soputils\nkwargs['geometrytype'] = kwargs['node'].parmTuple('grouptype')\nkwargs['inputindex'] = 0\nsoputils.selectGroupParm(kwargs)" }
+ parmtag { "script_action_help" "Select geometry from an available viewport." }
+ parmtag { "script_action_icon" "BUTTONS_reselect" }
+ }
parm {
name "entity"
label "Attribute Type"
diff --git a/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/ExtraFileOptions b/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/ExtraFileOptions
index 78d582752..0e6934ba6 100644
--- a/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/ExtraFileOptions
+++ b/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/ExtraFileOptions
@@ -1,15 +1,11 @@
{
- "ViewerHandleModule/CodeGenInput":{
- "type":"string",
- "value":"{\n\t\"handle_name\":\"\",\n\t\"handle_label\":\"\",\n\t\"handle_descr\":\"\",\n\t\"handle_icon\":\"$HH/config/Icons\",\n\t\"handle_debug_menu\":0,\n\t\"handle_sample\":0,\n\t\"handle_handler_indices\":[]\n}\n"
- },
- "ViewerStateModule/CodeGenInput":{
- "type":"string",
- "value":"{\n\t\"state_name\":\"\",\n\t\"state_label\":\"\",\n\t\"state_descr\":\"\",\n\t\"state_icon\":\"$HH/config/Icons\",\n\t\"state_debug_menu\":0,\n\t\"state_sample\":0,\n\t\"state_handler_indices\":[]\n}\n"
- },
"ViewerStateName.orig/Cursor":{
"type":"intarray",
- "value":[0,0]
+ "value":[1,1]
+ },
+ "ViewerStateName.orig/IsExpr":{
+ "type":"bool",
+ "value":false
},
"ViewerStateName.orig/IsPython":{
"type":"bool",
@@ -19,10 +15,6 @@
"type":"bool",
"value":true
},
- "ViewerStateName.orig/IsViewerState":{
- "type":"bool",
- "value":false
- },
"ViewerStateName.orig/Source":{
"type":"string",
"value":""
diff --git a/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Sections.list b/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Sections.list
index 76afb62e6..84cdc4a91 100644
--- a/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Sections.list
+++ b/otls/group_by_attribute.1.0.hda/labs_8_8Sop_1group__by__attribute_8_81.0/Sections.list
@@ -6,5 +6,5 @@ Help Help
Tools.shelf Tools.shelf
InternalFileOptions InternalFileOptions
Contents.gz Contents.gz
-ExtraFileOptions ExtraFileOptions
ViewerStateName.orig ViewerStateName.orig
+ExtraFileOptions ExtraFileOptions