Untitled
unknown
plain_text
a year ago
92 kB
10
Indexable
Never
import sys import toolutils outputitem = None inputindex = -1 inputitem = None outputindex = -1 num_args = 1 h_extra_args = '' pane = toolutils.activePane(kwargs) if not isinstance(pane, hou.NetworkEditor): pane = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor) if pane is None: hou.ui.displayMessage( 'Cannot create node: cannot find any network pane') sys.exit(0) else: # We're creating this tool from the TAB menu inside a network editor pane_node = pane.pwd() if "outputnodename" in kwargs and "inputindex" in kwargs: outputitem = pane_node.item(kwargs["outputnodename"]) inputindex = kwargs["inputindex"] h_extra_args += 'set arg4 = "' + kwargs["outputnodename"] + '"\n' h_extra_args += 'set arg5 = "' + str(inputindex) + '"\n' num_args = 6 if "inputnodename" in kwargs and "outputindex" in kwargs: inputitem = pane_node.item(kwargs["inputnodename"]) outputindex = kwargs["outputindex"] h_extra_args += 'set arg6 = "' + kwargs["inputnodename"] + '"\n' h_extra_args += 'set arg9 = "' + str(outputindex) + '"\n' num_args = 9 if "autoplace" in kwargs: autoplace = kwargs["autoplace"] else: autoplace = False # If shift-clicked we want to auto append to the current # node if "shiftclick" in kwargs and kwargs["shiftclick"]: if inputitem is None: inputitem = pane.currentNode() outputindex = 0 if "nodepositionx" in kwargs and "nodepositiony" in kwargs: try: pos = [ float( kwargs["nodepositionx"] ), float( kwargs["nodepositiony"] )] except: pos = None else: pos = None if not autoplace and not pane.listMode(): if pos is not None: pass elif outputitem is None: pos = pane.selectPosition(inputitem, outputindex, None, -1) else: pos = pane.selectPosition(inputitem, outputindex, outputitem, inputindex) if pos is not None: if "node_bbox" in kwargs: size = kwargs["node_bbox"] pos[0] -= size[0] / 2 pos[1] -= size[1] / 2 else: pos[0] -= 0.573625 pos[1] -= 0.220625 h_extra_args += 'set arg2 = "' + str(pos[0]) + '"\n' h_extra_args += 'set arg3 = "' + str(pos[1]) + '"\n' h_extra_args += 'set argc = "' + str(num_args) + '"\n' pane_node = pane.pwd() child_type = pane_node.childTypeCategory().nodeTypes() if 'geo' not in child_type: hou.ui.displayMessage( 'Cannot create node: incompatible pane network type') sys.exit(0) # First clear the node selection pane_node.setSelected(False, True) h_path = pane_node.path() h_preamble = 'set arg1 = "' + h_path + '"\n' h_cmd = r''' if ($argc < 2 || "$arg2" == "") then set arg2 = 0 endif if ($argc < 3 || "$arg3" == "") then set arg3 = 0 endif # Automatically generated script # $arg1 - the path to add this node # $arg2 - x position of the tile # $arg3 - y position of the tile # $arg4 - input node to wire to # $arg5 - which input to wire to # $arg6 - output node to wire to # $arg7 - the type of this node # $arg8 - the node is an indirect input # $arg9 - index of output from $arg6 \set noalias = 1 set saved_path = `execute("oppwf")` opcf $arg1 # Node $_obj_tube1 (Object/geo) set _obj_tube1 = `run("opadd -e -n -v geo tube1")` oplocate -x `$arg2 + 0` -y `$arg3 + 0` $_obj_tube1 opspareds ' group { name "stdswitcher4" label "Transform" 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 "stdswitcher4_1" 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" } } } } group { name "stdswitcher4_2" label "Arnold" parm { name "shop_propertiespath" label "Default Properties" type oppath default { "" } help "Specifies a Property SHOP that is used to resolve rendering parameter values. At render time, this SHOP (if given) is used to resolve rendering parameter values first, before looking for then on the objects being rendered." range { 0 1 } parmtag { "opfilter" "!!SHOP/PROPERTIES!!" } parmtag { "oprelative" "." } parmtag { "spare_category" "Shaders" } } parm { name "ar_user_options" label "User Options" type string joinnext default { "" } help "This string is passed to AiNodeSetAttributes() ont the Arnold node. It can contain any number of parameter/value pairs separated by whitespace (spaces, tabs, newlines) as found in .ass files." disablewhen "{ ar_user_options_enable == 0 }" } parm { name "ar_user_options_enable" label "Enable" type toggle default { "0" } help "Overrides the value of any parameter of the Arnold node." } group { name "folder_subdivision" label "Subdivision" parm { name "ar_subdiv_type" label "Type" type string default { "none" } help "Subdivision algorithm. None ignores any subdivision and renders the mesh as it is. Linear subdivision puts vertices in the middle of each face. The Catmull-Clark algorithm is used to create smooth surfaces by recursive subdivision surface modeling. The resulting surface will always consist of a mesh of quadrilateral faces." menu { "none" "None" "catclark" "Catmull-Clark" "linear" "Linear" } range { 0 1 } parmtag { "spare_category" "Subdivision" } } parm { name "ar_subdiv_iterations" label "Iterations" type integer default { "1" } help "The number of iterations / levels of subdivision. With Catmull-Clark subdivision, increasing the number of iterations produces a smoother mesh." disablewhen "{ ar_subdiv_type == none }" range { 1! 10 } parmtag { "spare_category" "Subdivision" } } parm { name "ar_subdiv_adaptive_metric" label "Adaptive Metric" type string joinnext default { "auto" } help "The adaptive subdivision criterion. Auto subdiv will choose between the EDGELENGTH mode and the FLATNESS depending on the displacement property of the polymesh. This means that if there is a displacement it will use the EDGELENGTH algorithm. If there is not displacement (or it is ignored in the global options) it will use FLATNESS." disablewhen "{ ar_subdiv_type == none }" menu { "auto" "Auto" "edge_length" "Edge Length" "flatness" "Flatness" } parmtag { "spare_category" "Subdivision" } } parm { name "ar_subdiv_adaptive_error" label " Error" type float default { "0" } help "The \\"adaptive error\\" refers to the acceptable tessellation error as seen from the camera. If there\'s no displacement, then the error represents the distance from the subdivided mesh to the \\"true\\" or \\"limit\\" surface -- sort of a \\"flatness\\" heuristic. The smaller the error, the closer to the limit surface a mesh will be and the less inter-frame popping when the subdivision level jumps. If displacement is enabled, then the error represents the final size of the subdivided quads. A value of 0 disables adaptive subdivision." disablewhen "{ ar_subdiv_type == none }" range { 0! 10 } parmtag { "spare_category" "Subdivision" } } parm { name "ar_subdiv_adaptive_space" label "Adaptive Space" type string default { "raster" } help "The space in which the adaptive metric is evaluated." disablewhen "{ ar_subdiv_type == none }" menu { "raster" "Raster" "object" "Object" } parmtag { "spare_category" "Subdivision" } } parm { name "ar_subdiv_uv_smoothing" label "UV Smoothing" type string joinnext default { "pin_corners" } help "UV smoothing algorithm." disablewhen "{ ar_subdiv_type == none }" menu { "pin_corners" "Pin Corners" "pin_borders" "Pin Borders" "linear" "Linear" "smooth" "Smooth" } range { 0 1 } parmtag { "spare_category" "Subdivision" } } parm { name "ar_subdiv_smooth_derivs" label "Smooth Derivatives" type toggle default { "0" } help "This option makes it possible to remove the faceted appearance from anisotropic speculars. The object must have a valid UV map for this option to work and only works if you apply at least one subdivision level to the geometry." disablewhen "{ ar_subdiv_type == none }" range { 0 1 } parmtag { "spare_category" "Subdivision" } } parm { name "ar_merge_vertex_indices" label "Merge Vertex Indices" type toggle default { "1" } help "Enable merging of the indices and data of coincident and identical vertex attribute values (UVs, normals, vertex user data). This allows the proper interpolation of vertex attributes when subdividing, and yields more compact render scenes in memory and on disk, at the cost of a slower export." range { 0 1 } parmtag { "spare_category" "Subdivision" } } parm { name "ar_subdiv_frustum_ignore" label "Ignore Frustum Culling" type toggle default { "0" } help "Subdivision surfaces outside the view or dicing camera frustum will not be subdivided. This can be turned on globally by enabling subdiv_frustum_culling on the ROP and can be turned off for specific meshes by setting subdiv_frustum_ignore true." disablewhen "{ ar_subdiv_type == none }" parmtag { "spare_category" "Subdivision" } } } group { name "folder_subdivision_1" label "Displacement" parm { name "ar_disp_height" label "Height" type float default { "1" } range { 0 10 } parmtag { "spare_category" "Displacement" } } parm { name "ar_disp_zero_value" label "Zero Value" type float default { "0" } range { 0 1 } parmtag { "spare_category" "Displacement" } } parm { name "ar_disp_padding" label "Bounds Padding" type float default { "0" } range { 0 10 } parmtag { "spare_category" "Displacement" } } parm { name "ar_disp_autobump" label "Autobump" type toggle default { "0" } range { 0 1 } parmtag { "spare_category" "Displacement" } } groupcollapsible { name "folder_autobump" label "Autobump Visibility" parm { name "ar_autobump_visibility_camera" label "Camera" type toggle default { "1" } help "Toggle autobump for camera rays (i.e. primary or view rays)." disablewhen "{ ar_disp_autobump == 0 }" range { 0 1 } parmtag { "spare_category" "Displacement" } } parm { name "ar_autobump_visibility_shadow" label "Shadow" type toggle default { "0" } help "Toggle autobump for shadow rays fired in the direct lighting calculations." disablewhen "{ ar_disp_autobump == 0 }" range { 0 1 } parmtag { "spare_category" "Displacement" } } parm { name "ar_autobump_visibility_diffuse_transmit" label "Diffuse Transmission" type toggle default { "0" } help "Toggle autobump for indirect diffuse transmission rays." disablewhen "{ ar_disp_autobump == 0 }" range { 0 1 } parmtag { "spare_category" "Displacement" } } parm { name "ar_autobump_visibility_specular_transmit" label "Specular Transmission" type toggle default { "0" } help "Toggle autobump for indirect specular transmission rays." disablewhen "{ ar_disp_autobump == 0 }" range { 0 1 } parmtag { "spare_category" "Displacement" } } parm { name "ar_autobump_visibility_diffuse_reflect" label "Diffuse Reflection" type toggle default { "0" } help "Toggle autobump for indirect diffuse reflection rays." disablewhen "{ ar_disp_autobump == 0 }" range { 0 1 } parmtag { "spare_category" "Displacement" } } parm { name "ar_autobump_visibility_specular_reflect" label "Specular Reflection" type toggle default { "0" } help "Toggle autobump for indirect specular reflection rays." disablewhen "{ ar_disp_autobump == 0 }" range { 0 1 } parmtag { "spare_category" "Displacement" } } parm { name "ar_autobump_visibility_volume" label "Volume Scattering" type toggle default { "0" } help "Toggle autobump for indirect volume scattering rays." disablewhen "{ ar_disp_autobump == 0 }" range { 0 1 } parmtag { "spare_category" "Displacement" } } } } group { name "folder_subdivision_2" label "Shapes" parm { name "ar_min_pixel_width" label "Minimum Pixel Width" type float default { "0" } help "If this value is non-zero, points or curves with a small on-screen width will be automatically enlarged so that they are at least the specified size in pixels. The enlargement fraction is then used in the hair shader to adjust the opacity so that the visible thickness of the hair remains the same. For a given number of AA samples, this makes it a lot easier to antialias fine hair, at the expense of render time (because of the additional transparency/depth complexity). Good values are in the range 0.2 to 0.7. Values closer to 0 are faster to render but need more AA samples. So if your scene already uses very high AA settings, you should use a low value like 0.1. For best results, you may need to increase the auto-transparency depth, and/or lower the auto-transparency threshold, but watch the effect on render times. Note that this parameter currently works with the ribbon mode only." range { 0 10 } parmtag { "spare_category" "Curves" } } parm { name "ar_radius" label "Default Radius" type float default { "0.05" } help "Sets the default rendered radius of points or thickness of curves. This property can be overridden per point with the \\"ar_radius\\", \\"pscale\\" or \\"width\\" (curves only) attributes." range { 0 10 } parmtag { "units" "m1" } } group { name "folder_points" label "Points" parm { name "ar_mode" label "Mode" type ordinal default { "sphere" } help "Rendering mode for points or particles. Can be spheres, or camera-facing disks or quads." menu { "disk" "Disk" "sphere" "Sphere" "quad" "Quad" } range { 0 1 } } parm { name "ar_point_scale" label "Point Scale" type float default { "1" } help "A global scale factor applied to points." range { 0! 10 } } parm { name "ar_aspect" label "Aspect" type log default { "1" } help "The aspect ratio for quads. This property can be overrriden per point by setting the \\"ar_aspect\\" or \\"spritescale\\" attributes on the geometry." disablewhen "{ ar_mode != quad }" range { 0.1 10 } } parm { name "ar_rotation" label "Rotation" type angle default { "0" } help "The rotation angle in degrees for quads. This property can be overrriden per point by setting the \\"ar_rotation\\" or the \\"spriterot\\" attributes on the geometry." disablewhen "{ ar_mode != quad }" range { -180 180 } } } group { name "folder_points_1" label "Curves" parm { name "ar_curves_basis" label "Basis" type string default { "auto" } help "The curves basis to interpret the knots of the input curves or open polygons. When set to \\"Automatic\\", the basis will attempt to match the closest equivalent in Arnold, ie. linear for open polygons, Bezier for Bezier curves and B-spline for NURBS." menu { "bezier" "Bezier" "b-spline" "B-Spline" "catmull-rom" "Catmull-Rom" "linear" "Linear" "auto" "Automatic" } range { 0 1 } parmtag { "spare_category" "Curves" } } parm { name "ar_curves_mode" label "Mode" type string default { "ribbon" } help "- Ribbon: This mode is recommended for fine geometry such as realistic hair, fur or fields of grass. These curves are rendered as camera-facing flat ribbons. For secondary and shadow rays, they face the incoming ray direction. This mode doesn\'t look so good for very wide hairs or dramatic zoom-ins because of the flat appearance. This mode works best with a proper hair shader (perhaps based on a Kay-Kajiya or Marschner specular model).\\\\n\\\\n- Thick: This mode resembles spaghetti. It has a circular cross section, and a normal vector that varies across the width of the hair. Thick hairs look great when zoomed in, and are specially useful for effects work, but their varying normals make them more difficult to antialias when they are small. You can use any shader with this rendering mode, including lambert, phong, etc.\\\\n\\\\n- Oriented: This mode is similar to the ribbons mode, but you can set the ribbon orientation for each knot with an \\"ar_orientations\\" vector attribute representing the direction of the normal of the ribbon. This mode can be useful to render grass strands for example." menu { "ribbon" "Ribbon" "thick" "Thick" "oriented" "Oriented " } range { 0 1 } parmtag { "spare_category" "Curves" } } } group { name "folder_points_2" label "Volumes" parm { name "ar_step_size" label "Volume Step Size" type float default { "0" } help "When ar_step_size is set to a value other than zero, then points rendered as spheres, particles and polymeshes will be rendered as volumes." range { 0 1 } } parm { name "ar_volume_padding" label "Volume Padding" type float default { "0" } help "When rendering particles or polymeshes as volumes (when ar_step_size is non-zero), ar_volume_padding will provide extra the volume padding specified for displacement requirements" disablewhen "{ ar_step_size == 0 }" range { 0 10 } } parm { name "label_volume" label "Label" type label nolabel default { "" } } parm { name "label_volume2" label "Label" type label nolabel default { "Points and polymeshes are rendered as volumes if Step Size > 0" } } } group { name "folder_points_3" label " VDB " parm { name "ar_vdb_file_enable" label "Export VDB File" type toggle nolabel joinnext default { "0" } help "Export the VDB primitives as a VDB file and reference the file in the Arnold volume." range { 0 1 } } parm { name "ar_vdb_file" label "Save to File" type file default { "$HIP/`pythonexprs(\\"hou.pwd().path()[1:].replace(\'/\', \'_\')\\")`.$F4.vdb" } help "The OpenVDB file name that the VDB primitves will be written to, and that will be referenced by the Arnold volume instead of attaching the volume data." disablewhen "{ ar_vdb_file_enable == 0 }" range { 0 1 } parmtag { "filechooser_pattern" "*.vdb" } } parm { name "ar_grids" label "Export Grids" type string default { "*" } help "The VDB grids to export and make available in the volume shading context." menutoggle { [ "import htoa.properties" ] [ "return htoa.properties.vdbGridMenu()" ] language python } range { 0 1 } parmtag { "script_callback" "__import__(\'htoa\').properties.vdbAutoStepSizeCallback()" } parmtag { "script_callback_language" "python" } } parm { name "ar_velocity_grids" label "Velocity Grids" type string default { "*" } help "Select 1 vector or 3 float grids representing velocity for motion blur." menutoggle { [ "import htoa.properties" ] [ "return htoa.properties.vdbGridMenu()" ] language python } range { 0 1 } } parm { name "ar_velocity_scale" label "Velocity Scale" type log default { "1" } help "Scale the velocities by this factor." disablewhen "{ ar_velocity_grids == \\"\\" }" range { 0.1 10 } } parm { name "ar_velocity_threshold" label "Velocity Threshold" type log default { "0.001" } help "Controls filtering of noisy velocities. The default value 0.001 should have little to no visual impact, setting it to zero disables filtering entirely." disablewhen "{ ar_velocity_grids == \\"\\" }" range { 0! 1! } } parm { name "ar_padding" label "Bounds Padding" type float default { "0" } help "Extra padding for the volume bounds" range { 0 10 } } parm { name "ar_step_size_type" label "Volume Step" type ordinal joinnext default { "0" } help "When set to auto, the step size is automatically determined by the volume plugin, yielding the minimum voxel size." menu { "auto" "Automatic " "custom" "Custom" } range { 0 1 } parmtag { "script_callback" "__import__(\'htoa\').properties.vdbAutoStepSizeCallback()" } parmtag { "script_callback_language" "python" } } parm { name "ar_vdb_step_size" label " Step Size" type float default { "0.02" } help "The ray marching step size. When the step type is auto, this indicates the computed step size, the minimum voxel size." disablewhen "{ ar_step_size_type == auto }" range { 0! 10 } } parm { name "ar_step_scale" label "Step Scale" type log default { "1" } help "Multiply the step size by this factor, including when it\'s automatically detected." range { 0.1! 10 } } parm { name "ar_compress" label "Compress" type toggle invisible default { "1" } help "Optimize voxel storage to reduce memory usage." range { 0 1 } } } group { name "folder_points_4" label "Tessellation" parm { name "ar_tessellation_enable" label "Tessellate Primitives" type toggle default { "1" } help "Tessellate Houdini primitives such as NURBS, Bezier meshes, circles, tubes or spheres prior to sending to Arnold." disablewhen "{ ar_tessellation_use_rop == 1 }" range { 0 1 } parmtag { "spare_category" "Tessellation" } } parm { name "ar_tessellation_style" label "Tessellation Style" type string invisible default { "lod" } help "Specifies the conversion style for the geometry. The default is\\"Level of Detail\\". Can be one of the following:\\\\n- Level of Detail: Tessellate geometry using the level of detail settings.\\\\n- Divisions: Tessellate geometry based on the number of divisions settings." disablewhen "{ ar_tessellation_enable == 0 }" menu { "lod" "Level of Detail" "div" "Divisions" } range { 0 1 } parmtag { "spare_category" "Tessellation" } } parm { name "ar_tessellation_ulod" label "U Level of Detail" type float default { "1" } help "Specifies the level of detail for U subdivisions of the surface being converted. Applicable only when conversion method is set to Level of Detail. Defaults to 1.0." disablewhen "{ ar_tessellation_enable == 0 }" hidewhen "{ ar_tessellation_style != lod }" range { 0! 10 } parmtag { "spare_category" "Tessellation" } } parm { name "ar_tessellation_vlod" label "V Level of Detail" type float default { "1" } help "Specifies the level of detail for V subdivisions of the surface being converted. Applicable only when conversion method is set to Level of Detail. Defaults to 1.0." disablewhen "{ ar_tessellation_enable == 0 }" hidewhen "{ ar_tessellation_style != lod }" range { 0! 10 } parmtag { "spare_category" "Tessellation" } } parm { name "ar_tessellation_trimlod" label "Trim Level of Detail" type float default { "1" } help "Specifies the level of detail for trim curves of the surface being converted. Applicable only when conversion method is set to Level of Detail. Defaults to 1.0." disablewhen "{ ar_tessellation_enable == 0 }" hidewhen "{ ar_tessellation_style != lod }" range { 0! 10 } parmtag { "spare_category" "Tessellation" } } } group { name "folder_points_5" label "Procedurals" parm { name "ar_operator_graph_enable" label "Enable Operator Graph" type toggle nolabel joinnext default { "1" } help "Enables the operator graph on procedurals in this OBJ node." range { 0 1 } } parm { name "ar_operator_graph" label "Operator Graph" type oppath default { "" } help "Specify an operator ROP graph to connect to procedurals created by this OBJ node." disablewhen "{ ar_operator_graph_enable == 0 }" parmtag { "opfilter" "!!ROP!!" } parmtag { "oprelative" "." } } } } group { name "folder_subdivision_3" label "Attributes" parm { name "ar_toon_id" label "Toon ID Group" type string default { "" } help "Objects in the same toon ID group will be rendered with the same silhouette, if the user_id attribute is set on the toon shader" } parm { name "ar_attributes_detail" label "Detail Attributes" type string default { "*" } help "The list of details attributes to be exported as user data for Arnold. As user data is costly in memory, nothing is exported by default. If this field contains a wildcard character (*), all available attributes will be exported." menutoggle { [ "__import__(\'htoa\').properties.detailAttributeMenu()" ] language python } range { 0 1 } parmtag { "spare_category" "Attributes" } } parm { name "ar_attributes_primitive" label "Primitive Attributes" type string default { "*" } help "The list of primitive attributes to be exported as user data for Arnold. As user data is costly in memory, nothing is exported by default. If this field contains a wildcard character (*), all available attributes will be exported." menutoggle { [ "__import__(\'htoa\').properties.primitiveAttributeMenu()" ] language python } range { 0 1 } parmtag { "spare_category" "Attributes" } } parm { name "ar_attributes_point" label "Point Attributes" type string default { "*" } help "The list of point attributes to be exported as user data for Arnold. As user data is costly in memory, nothing is exported by default. If this field contains a wildcard character (*), all available attributes will be exported." menutoggle { [ "__import__(\'htoa\').properties.pointAttributeMenu()" ] language python } range { 0 1 } parmtag { "spare_category" "Attributes" } } parm { name "ar_attributes_vertex" label "Vertex Attributes" type string default { "*" } help "The list of vertex attributes to be exported as user data for Arnold. As user data is costly in memory, nothing is exported by default. If this field contains a wildcard character (*), all available attributes will be exported." menutoggle { [ "__import__(\'htoa\').properties.vertexAttributeMenu()" ] language python } range { 0 1 } parmtag { "spare_category" "Attributes" } } } group { name "folder_subdivision_4" label "Motion Blur" parm { name "ar_transform_type" label "Transform Type" type ordinal default { "2" } help "The type of motion for the transformation of the object, as a hint for the matrix interpolation for transformation motion blur." menu { "linear" "Linear" "rotate_about_origin" "Rotate About Origin" "rotate_about_center" "Rotate About Center" } range { 0 2 } parmtag { "spare_category" "Motion Blur" } } parm { name "ar_mb_xform_keys_override" label "Transform Keys Override" type toggle nolabel joinnext default { "0" } help "Override the ROP settings for Transform Keys." range { 0 1 } parmtag { "spare_category" "Motion Blur" } } parm { name "ar_mb_xform_keys" label "Transform Keys" type integer default { "2" } help "Number of motion keys for matrix transformation. Transformation motion blur is calculated based on a linear interpolation of an object transform matrix, between successive motion keys. Increasing this value will add extra steps, which can improve the blurred result, especially for rotating objects. The default is 2, which results in straight lines of blur between shutter start and shutter end." disablewhen "{ ar_mb_xform_keys_override == 0 }" range { 1! 20 } parmtag { "spare_category" "Motion Blur" } } parm { name "ar_mb_dform_keys_override" label "Deform Keys Override" type toggle nolabel joinnext default { "0" } help "Override the ROP settings for Transform Keys." range { 0 1 } parmtag { "spare_category" "Motion Blur" } } parm { name "ar_mb_dform_keys" label "Deform Keys" type integer default { "2" } help "Number of motion keys for object points. Just like with transformation motion keys, increasing this value allows curved motion paths to be rendered more accurately, at the expense of using more memory." disablewhen "{ ar_mb_dform_keys_override == 0 } { ar_mb_velocity_enable == 1 ar_mb_acceleration_enable != 1 }" range { 1! 20 } parmtag { "spare_category" "Motion Blur" } } parm { name "ar_mb_velocity_enable" label "Velocity Blur Enable" type toggle nolabel joinnext default { "0" } help "Deformation blur will be computed from the \\"v\\" point attribute." range { 0 1 } parmtag { "spare_category" "Motion Blur" } } parm { name "ar_mb_velocity_attribute" label "Velocity Blur" type string default { "v" } help "The velocity point attribute to use for velocity blur. The Houdini convention is \'v\'." disablewhen "{ ar_mb_velocity_enable == 0 }" menureplace { [ "geometry = hou.pwd().renderNode().geometry()" ] [ "if not geometry:" ] [ " return []" ] [ "menu_items = []" ] [ "for attr in geometry.pointAttribs():" ] [ " if not attr.name() in (\'P\', \'Pw\'):" ] [ " menu_items += [attr.name(), \'%s\\\\t %s[%i]\' % (attr.name(), attr.dataType().name().lower(), attr.size())]" ] [ "return menu_items" ] language python } range { 0 1 } } parm { name "ar_mb_acceleration_enable" label "Acceleration Blur Enable" type toggle nolabel joinnext default { "0" } disablewhen "{ ar_mb_velocity_enable == 0 }" range { 0 1 } } parm { name "ar_mb_acceleration_attribute" label "Acceleration Blur" type string default { "force" } help "The acceleration point attribute to use for acceleration blur. The Houdini convention is \'force\' or \'accel\'. If you use use \'force\' ensure you divide by the mass." disablewhen "{ ar_mb_velocity_enable == 0 } { ar_mb_acceleration_enable == 0 }" menureplace { [ "geometry = hou.pwd().renderNode().geometry()" ] [ "if not geometry:" ] [ " return []" ] [ "menu_items = []" ] [ "for attr in geometry.pointAttribs():" ] [ " if not attr.name() in (\'P\', \'Pw\'):" ] [ " menu_items += [attr.name(), \'%s\\\\t %s[%i]\' % (attr.name(), attr.dataType().name().lower(), attr.size())]" ] [ "return menu_items" ] language python } range { 0 1 } } } group { name "folder_subdivision_5" label "Visibility" parm { name "ar_visibility_camera" label "Visible to Camera Rays" type toggle default { "1" } help "Toggle object visibility for camera rays (i.e. primary or view rays)." range { 0 1 } parmtag { "spare_category" "Visibility" } } parm { name "ar_visibility_shadow" label "Visible to Shadow Rays" type toggle default { "1" } help "Toggle object visibility for shadow rays fired in the direct lighting calculations." range { 0 1 } parmtag { "spare_category" "Visibility" } } parm { name "ar_visibility_diffuse_transmit" label "Visible to Diffuse Transmission Rays" type toggle default { "1" } help "Toggle object visibility for indirect diffuse transmission rays." range { 0 1 } parmtag { "spare_category" "Visibility" } } parm { name "ar_visibility_specular_transmit" label "Visible to Specular Transmission Rays" type toggle default { "1" } help "Toggle object visibility for indirect specular transmission rays." range { 0 1 } parmtag { "spare_category" "Visibility" } } parm { name "ar_visibility_diffuse_reflect" label "Visible to Diffuse Reflection Rays" type toggle default { "1" } help "Toggle object visibility for indirect diffuse reflection rays." range { 0 1 } parmtag { "spare_category" "Visibility" } } parm { name "ar_visibility_specular_reflect" label "Visible to Specular Reflection Rays" type toggle default { "1" } help "Toggle object visibility for indirect specular reflection rays." range { 0 1 } parmtag { "spare_category" "Visibility" } } parm { name "ar_visibility_volume" label "Visible to Volume Scattering Rays" type toggle default { "1" } help "Toggle object visibility for indirect volume scattering rays." range { 0 1 } parmtag { "spare_category" "Visibility" } } parm { name "ar_receive_shadows" label "Receive Shadows" type toggle default { "1" } help "Enable/disable received shadows over the object." range { 0 1 } parmtag { "spare_category" "Visibility" } } parm { name "ar_self_shadows" label "Self Shadows" type toggle default { "1" } help "Enable/disable self-shadowing over the object." disablewhen "{ ar_receive_shadows == 0 }" range { 0 1 } parmtag { "spare_category" "Visibility" } } parm { name "ar_opaque" label "Opaque" type toggle default { "1" } help "By default, Arnold will assume that objects are opaque, which lets the renderer take certain shortcuts and optimizations for maximum ray tracing speed. When this option is unchecked, the object is assumed as \\"possibly transparent\\", and Arnold will perform extra computations to support transparency and transparent shadows, according to the shader\'s opacity settings." range { 0 1 } parmtag { "spare_category" "Visibility" } } parm { name "ar_matte" label "Matte" type toggle default { "0" } help "Output black and zero alpha for camera rays to create a holdout." range { 0 1 } parmtag { "spare_category" "Visibility" } } parm { name "ar_skip" label "Skip" type toggle default { "0" } help "Do not output this object regardless of it being forced or not." range { 0 1 } parmtag { "spare_category" "Visibility" } } parm { name "ar_use_light_group" label "Use Light Group" type toggle invisible nolabel joinnext default { "0" } range { 0 1 } } parm { name "ar_light_group" label "Light Group" type oplist invisible default { "" } disablewhen "{ ar_use_light_group == 0 }" range { 0 1 } parmtag { "opfilter" "!!OBJ/LIGHT!!" } parmtag { "oprelative" "/" } } parm { name "ar_use_shadow_group" label "Use Shadow Group" type toggle invisible nolabel joinnext default { "0" } range { 0 1 } } parm { name "ar_shadow_group" label "Shadow Group" type oplist invisible default { "" } disablewhen "{ ar_use_shadow_group == 0 }" range { 0 1 } parmtag { "opfilter" "!!OBJ/LIGHT!!" } parmtag { "oprelative" "/" } } parm { name "ar_trace_sets" label "Trace Sets" type string default { "" } menutoggle { [ "__import__(\'htoa.properties\').properties.tracesetMenu()" ] language python } range { 0 1 } } parm { name "ar_sss_setname" label "SSS Set" type string default { "" } help "Use this parameter to tag multiple objects as belonging to the same SSS set so that illumination will blur across object boundaries. A common use case might be blurring between teeth and gum geometry. This feature is only available when using raytraced SSS." menureplace { [ "__import__(\'htoa.properties\').properties.sssMenu()" ] language python } range { 0 1 } } } group { name "folder_subdivision_6" label "Normals" parm { name "ar_smoothing" label "Smoothing" type toggle default { "1" } help "Smooth/Flat normals." range { 0 1 } parmtag { "spare_category" "Render" } } parm { name "ar_invert_normals" label "Invert Normals" type toggle default { "0" } help "Invert normals" range { 0 1 } parmtag { "spare_category" "Render" } } parm { name "ar_sidedness_camera" label "Double-sided for Camera Rays" type toggle default { "1" } help "Toggle object double-sidedness for camera rays (i.e. primary or view rays)." range { 0 1 } parmtag { "spare_category" "Sidedness" } } parm { name "ar_sidedness_shadow" label "Double-sided for Shadow Rays" type toggle default { "1" } help "Toggle object double-sidedness for shadow rays fired in the direct lighting calculations." range { 0 1 } parmtag { "spare_category" "Sidedness" } } parm { name "ar_sidedness_diffuse_transmit" label "Double-sided for Diffuse Transmission Rays" type toggle default { "1" } help "Toggle object double-sidedness for indirect diffuse transmission rays." range { 0 1 } parmtag { "spare_category" "Sidedness" } } parm { name "ar_sidedness_specular_transmit" label "Double-sided for Specular Transmission Rays" type toggle default { "1" } help "Toggle object double-sidedness for indirect specular transmission rays." range { 0 1 } parmtag { "spare_category" "Sidedness" } } parm { name "ar_sidedness_diffuse_reflect" label "Double-sided for Diffuse Reflection Rays" type toggle default { "1" } help "Toggle object double-sidedness for indirect diffuse reflection rays." range { 0 1 } parmtag { "spare_category" "Sidedness" } } parm { name "ar_sidedness_specular_reflect" label "Double-sided for Specular Reflection Rays" type toggle default { "1" } help "Toggle object double-sidedness for indirect specular reflection rays." range { 0 1 } parmtag { "spare_category" "Sidedness" } } parm { name "ar_sidedness_volume" label "Double-sided for Volume Scattering Rays" type toggle default { "1" } help "Toggle object double-sidedness for indirect volume scattering rays." range { 0 1 } parmtag { "spare_category" "Sidedness" } } } } group { name "stdswitcher4_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 } } ' $_obj_tube1 chblockbegin chadd -t 0 0 $_obj_tube1 ar_point_scale chkey -t 0 -v 0 -V 0 -m 0 -M 0 -a 0 -A 0 -F 'ch("vm_pointscale")' $_obj_tube1/ar_point_scale chadd -t 0 0 $_obj_tube1 ar_mb_velocity_enable chkey -t 0 -v 0 -V 0 -m 0 -M 0 -a 0 -A 0 -F 'ch("geo_velocityblur")' $_obj_tube1/ar_mb_velocity_enable chadd -t 0 0 $_obj_tube1 ar_matte chkey -t 0 -v 0 -V 0 -m 0 -M 0 -a 0 -A 0 -F 'ch("vm_matte")' $_obj_tube1/ar_matte chblockend opset -S on $_obj_tube1 chautoscope $_obj_tube1 +tx +ty +tz +rx +ry +rz +sx +sy +sz opset -d on -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off -x off $_obj_tube1 opexprlanguage -s hscript $_obj_tube1 opcf $_obj_tube1 # Node $_obj_tube1_axiom_solver1 (Sop/axiom_solver::3.0) set _obj_tube1_axiom_solver1 = `run("opadd -e -n -v axiom_solver::3.0 axiom_solver1")` oplocate -x `$arg2 + 1.2023529411764704` -y `$arg3 + -6.0341176410983577` $_obj_tube1_axiom_solver1 opparm $_obj_tube1_axiom_solver1 dissipationRamp ( 2 ) coolingRateRamp ( 2 ) windRamp ( 2 ) dragRamp ( 2 ) disturbance1Ramp ( 2 ) disturbance2Ramp ( 2 ) disturbance3Ramp ( 2 ) turbulence1Ramp ( 2 ) turbulence2Ramp ( 2 ) turbulence3Ramp ( 2 ) confinementRamp ( 2 ) ignitionTemperatureRamp ( 2 ) colorRamp ( 3 ) chblockbegin chadd -t 41.708375041708379 41.708375041708379 $_obj_tube1_axiom_solver1 disturbance1BlockSize chkey -t 41.708375041708379 -v 0 -m 0 -a 0 -A 0 -T a -F 'ch("divisionSize")*2' $_obj_tube1_axiom_solver1/disturbance1BlockSize chadd -t 41.708375041708379 41.708375041708379 $_obj_tube1_axiom_solver1 disturbance2BlockSize chkey -t 41.708375041708379 -v 0 -m 0 -a 0 -A 0 -T a -F 'ch("divisionSize")*4' $_obj_tube1_axiom_solver1/disturbance2BlockSize chadd -t 41.708375041708379 41.708375041708379 $_obj_tube1_axiom_solver1 disturbance3BlockSize chkey -t 41.708375041708379 -v 0 -m 0 -a 0 -A 0 -T a -F 'ch("divisionSize")*8' $_obj_tube1_axiom_solver1/disturbance3BlockSize chadd -t 41.708375041708379 41.708375041708379 $_obj_tube1_axiom_solver1 hardwareID chkey -t 41.708375041708379 -v 0 -m 0 -a 0 -A 0 -T a -F 'node = hou.pwd().type().name()\n\nversion = node.split(\'::\')[1]\n\ncommand = "AXIOM_licenseHardwareID"\ncommand += "_"\ncommand += version.replace(\'.\', "_")\n\nval = hou.hscript(command)[0]\n\nreturn val' -l p $_obj_tube1_axiom_solver1/hardwareID chblockend opparm $_obj_tube1_axiom_solver1 folder0 ( 1 1 1 1 1 1 1 ) substeps ( 5 ) divisionSize ( 0.01 ) computeAPI ( 2 ) device ( 'NVIDIA RTX A4000 (0) Must be nice.' ) memory ( '2.37 GB (Device)' ) activeMemory ( '348.5 MB 14%' ) activeVoxels ( 4,702,208 ) description ( 'NVIDIA RTX A4000 (0)' ) sourceDensity ( 20 ) sourcePressure ( 100 ) timeScale ( 1.5 ) densityDissipation ( 0.01 ) enableCoolingRate ( off ) enableTemperatureDiffusion ( off ) enableDisturbance1 ( on ) disturbance1 ( 0.14999999999999999 ) turbulence1 ( 0.050000000000000003 ) dissipationSettings ( 7 7 7 7 7 7 7 7 7 7 7 7 7 7 ) disturbance1ControlField ( 4 ) disturbance1InputRange ( 0 0.20000000000000001 ) outputTemperature ( off ) outputVelocity ( off ) licenses ( 'key_value_dict:{"ASXXXXXXXXXXXXXX":"axiom_commercial_floating"}' ) dissipationRamp1value ( 1 ) dissipationRamp2pos ( 1 ) dissipationRamp2value ( 0.25 ) coolingRateRamp2pos ( 1 ) coolingRateRamp2value ( 1 ) windRamp2pos ( 1 ) windRamp2value ( 1 ) dragRamp2pos ( 1 ) dragRamp2value ( 1 ) disturbance1Ramp1pos ( 0.1202404797077179 ) disturbance1Ramp2pos ( 1 ) disturbance1Ramp2value ( 1 ) disturbance2Ramp2pos ( 1 ) disturbance2Ramp2value ( 1 ) disturbance3Ramp2pos ( 1 ) disturbance3Ramp2value ( 1 ) turbulence1Ramp2pos ( 1 ) turbulence1Ramp2value ( 1 ) turbulence2Ramp2pos ( 1 ) turbulence2Ramp2value ( 1 ) turbulence3Ramp2pos ( 1 ) turbulence3Ramp2value ( 1 ) confinementRamp2pos ( 1 ) confinementRamp2value ( 1 ) ignitionTemperatureRamp2pos ( 1 ) ignitionTemperatureRamp2value ( 1 ) colorRamp1c ( 0.29588711261749268 0.36125144362449646 0.5 ) colorRamp2pos ( 0.24265842139720917 ) colorRamp2c ( 0.047032315284013748 0.10041522234678268 0.44179984927177429 ) colorRamp3pos ( 1 ) colorRamp3c ( 0 0.5 0.2703932523727417 ) opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_tube1_axiom_solver1 opexprlanguage -s hscript $_obj_tube1_axiom_solver1 opuserdata -n '___Version___' -v '' $_obj_tube1_axiom_solver1 opuserdata -n '___toolcount___' -v '2' $_obj_tube1_axiom_solver1 opuserdata -n '___toolid___' -v 'axiom_sourceVDBs_v02_b002' $_obj_tube1_axiom_solver1 # Node $_obj_tube1_axiom_volumeVisualize1 (Sop/axiom_volumeVisualize::3.0) set _obj_tube1_axiom_volumeVisualize1 = `run("opadd -e -n -v axiom_volumeVisualize::3.0 axiom_volumeVisualize1")` oplocate -x `$arg2 + 3.2585181061339443` -y `$arg3 + -8.2077518580918252` $_obj_tube1_axiom_volumeVisualize1 opparm $_obj_tube1_axiom_volumeVisualize1 color ( 2 ) opparm $_obj_tube1_axiom_volumeVisualize1 color2pos ( 1 ) color2c ( 1 1 1 ) opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_tube1_axiom_volumeVisualize1 opexprlanguage -s hscript $_obj_tube1_axiom_volumeVisualize1 opuserdata -n '___Version___' -v '' $_obj_tube1_axiom_volumeVisualize1 opcf .. opcf $_obj_tube1 # Node $_obj_tube1_tube1 (Sop/tube) set _obj_tube1_tube1 = `run("opadd -e -n -v tube tube1")` oplocate -x `$arg2 + 0` -y `$arg3 + 1.7884` $_obj_tube1_tube1 opparm -V 19.0.589 $_obj_tube1_tube1 type ( poly ) rad ( 0.080000000000000002 0.14999999999999999 ) height ( 0.25 ) opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_tube1_tube1 opexprlanguage -s hscript $_obj_tube1_tube1 opuserdata -n '___Version___' -v '19.0.589' $_obj_tube1_tube1 # Node $_obj_tube1_polyfill1 (Sop/polyfill) set _obj_tube1_polyfill1 = `run("opadd -e -n -v polyfill polyfill1")` oplocate -x `$arg2 + 5.5511151231257827e-17` -y `$arg3 + 0.78839998807907108` $_obj_tube1_polyfill1 opparm -V 19.0.589 $_obj_tube1_polyfill1 fillmode ( none ) opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_tube1_polyfill1 opexprlanguage -s hscript $_obj_tube1_polyfill1 opuserdata -n '___Version___' -v '19.0.589' $_obj_tube1_polyfill1 # Node $_obj_tube1_transform1 (Sop/xform) set _obj_tube1_transform1 = `run("opadd -e -n -v xform transform1")` oplocate -x `$arg2 + 5.5511151231257827e-17` -y `$arg3 + -0.21160002384185772` $_obj_tube1_transform1 opparm -V 19.0.589 $_obj_tube1_transform1 t ( 0 1.1888542324304581 0 ) r ( 0 0 -90 ) opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_tube1_transform1 opexprlanguage -s hscript $_obj_tube1_transform1 opuserdata -n '___Version___' -v '19.0.589' $_obj_tube1_transform1 # Node $_obj_tube1_blast1 (Sop/blast) set _obj_tube1_blast1 = `run("opadd -e -n -v blast blast1")` oplocate -x `$arg2 + 0` -y `$arg3 + -1.1058000238418577` $_obj_tube1_blast1 opparm -V 19.0.589 $_obj_tube1_blast1 group ( 13 ) grouptype ( prims ) removegrp ( on ) opset -d off -r off -h on -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_tube1_blast1 opexprlanguage -s hscript $_obj_tube1_blast1 opuserdata -n '___Version___' -v '19.0.589' $_obj_tube1_blast1 opuserdata -n '___toolcount___' -v '1' $_obj_tube1_blast1 opuserdata -n '___toolid___' -v 'generic_delete' $_obj_tube1_blast1 # Node $_obj_tube1_polyextrude1 (Sop/polyextrude::2.0) set _obj_tube1_polyextrude1 = `run("opadd -e -n -v polyextrude::2.0 polyextrude1")` oplocate -x `$arg2 + 5.377642775528102e-17` -y `$arg3 + -2.3822704117647056` $_obj_tube1_polyextrude1 opparm $_obj_tube1_polyextrude1 thicknessramp ( 2 ) twistramp ( 2 ) opparm -V 19.0.589 $_obj_tube1_polyextrude1 dist ( 0.085018754005432129 ) outputback ( on ) thicknessramp1value ( 1 ) thicknessramp1interp ( catmull-rom ) thicknessramp2pos ( 1 ) thicknessramp2value ( 1 ) thicknessramp2interp ( catmull-rom ) twistramp1value ( 0.5 ) twistramp1interp ( catmull-rom ) twistramp2pos ( 1 ) twistramp2value ( 0.5 ) twistramp2interp ( catmull-rom ) opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_tube1_polyextrude1 opexprlanguage -s hscript $_obj_tube1_polyextrude1 opuserdata -n '___Version___' -v '19.0.589' $_obj_tube1_polyextrude1 # Node $_obj_tube1_axiom_sourceShape1 (Sop/axiom_sourceShape::3.0) set _obj_tube1_axiom_sourceShape1 = `run("opadd -e -n -v axiom_sourceShape::3.0 axiom_sourceShape1")` oplocate -x `$arg2 + 3.8760975058823544` -y `$arg3 + -2.9771550999218883` $_obj_tube1_axiom_sourceShape1 opparm $_obj_tube1_axiom_sourceShape1 main ( 1 ) cameraFolder ( 1 ) sourcing ( 1 ) temperature ( -0.40000000000000002 ) pressure ( 1 ) folder0 ( 1 ) noise ( 3 3 3 3 ) useNoise ( on ) noiseStrength ( 0.5 ) noiseFeatureSize ( 0.10000000000000001 ) noiseSpeed ( 10 ) noiseGain ( 10 ) useVelocityNoise ( on ) velocityNoiseStrength ( 0.25 ) velocityNoiseFeatureSize ( 0.10000000000000001 ) velocityNoiseSpeed ( 3 ) forceType ( 1 ) forceMagnitude ( 100 ) opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_tube1_axiom_sourceShape1 opexprlanguage -s hscript $_obj_tube1_axiom_sourceShape1 opuserdata -n '___Version___' -v '' $_obj_tube1_axiom_sourceShape1 # Node $_obj_tube1_vdbfrompolygons1 (Sop/vdbfrompolygons) set _obj_tube1_vdbfrompolygons1 = `run("opadd -e -n -v vdbfrompolygons vdbfrompolygons1")` oplocate -x `$arg2 + 0.021979999999999989` -y `$arg3 + -4.2764704236856348` $_obj_tube1_vdbfrompolygons1 opparm $_obj_tube1_vdbfrompolygons1 numattrib ( 0 ) opparm -V 19.0.589 $_obj_tube1_vdbfrompolygons1 voxelsize ( 0.01 ) distancename ( collision ) opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_tube1_vdbfrompolygons1 opexprlanguage -s hscript $_obj_tube1_vdbfrompolygons1 opuserdata -n '___Version___' -v '19.0.589' $_obj_tube1_vdbfrompolygons1 # Node $_obj_tube1_sphere1 (Sop/sphere) set _obj_tube1_sphere1 = `run("opadd -e -n -v sphere sphere1")` oplocate -x `$arg2 + 3.8760975058823544` -y `$arg3 + -1.4704256881571838` $_obj_tube1_sphere1 opparm -V 19.0.589 $_obj_tube1_sphere1 type ( polymesh ) rad ( 0.70154660567641258 0.5 0.5 ) t ( 0.0072662718594074249 1.1954050958156586 0 ) scale ( 0.20000000000000001 ) opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_tube1_sphere1 opexprlanguage -s hscript $_obj_tube1_sphere1 opuserdata -n '___Version___' -v '19.0.589' $_obj_tube1_sphere1 # Node $_obj_tube1_axiom_sourceShape2 (Sop/axiom_sourceShape::3.0) set _obj_tube1_axiom_sourceShape2 = `run("opadd -e -n -v axiom_sourceShape::3.0 axiom_sourceShape2")` oplocate -x `$arg2 + 7.7326622117647084` -y `$arg3 + -2.9771550999218883` $_obj_tube1_axiom_sourceShape2 opparm $_obj_tube1_axiom_sourceShape2 main ( 1 ) type ( 2 ) shape ( 2 ) cameraFolder ( 1 ) sourcing ( 1 ) temperature ( -1 ) pressure ( 1 ) folder0 ( 1 ) t ( 0 -1 0 ) s ( 10 1 10 ) noise ( 3 3 3 3 ) forceType ( 1 ) forceMagnitude ( 50 ) opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_tube1_axiom_sourceShape2 opexprlanguage -s hscript $_obj_tube1_axiom_sourceShape2 opuserdata -n '___Version___' -v '' $_obj_tube1_axiom_sourceShape2 # Node $_obj_tube1_merge1 (Sop/merge) set _obj_tube1_merge1 = `run("opadd -e -n -v merge merge1")` oplocate -x `$arg2 + 3.2573680941176479` -y `$arg3 + -3.9984550998742043` $_obj_tube1_merge1 opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_tube1_merge1 opexprlanguage -s hscript $_obj_tube1_merge1 opuserdata -n '___Version___' -v '19.0.589' $_obj_tube1_merge1 # Node $_obj_tube1_volumevisualization1 (Sop/volumevisualization) set _obj_tube1_volumevisualization1 = `run("opadd -e -n -v volumevisualization volumevisualization1")` oplocate -x `$arg2 + 1.1580090000000001` -y `$arg3 + -7.1160699999999997` $_obj_tube1_volumevisualization1 opparm $_obj_tube1_volumevisualization1 densityramp ( 2 ) cdramp ( 2 ) emitramp ( 2 ) emitcdramp ( 2 ) opparm -V 19.0.589 $_obj_tube1_volumevisualization1 densityscale ( 5.6900000000000004 ) shadowscale ( 0.84999999999999998 ) densityramp2pos ( 1 ) densityramp2value ( 1 ) cdramp2pos ( 1 ) cdramp2c ( 1 1 1 ) emitramp2pos ( 1 ) emitramp2value ( 1 ) emitcdramp2pos ( 1 ) emitcdramp2c ( 1 0.32500000000000001 0.10000000000000001 ) opset -d on -r on -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_tube1_volumevisualization1 opexprlanguage -s hscript $_obj_tube1_volumevisualization1 opuserdata -n '___Version___' -v '19.0.589' $_obj_tube1_volumevisualization1 # Node $_obj_tube1_grid1 (Sop/grid) set _obj_tube1_grid1 = `run("opadd -e -n -v grid grid1")` oplocate -x `$arg2 + 7.6039884339869239` -y `$arg3 + -4.6029636227977075` $_obj_tube1_grid1 opparm -V 19.0.589 $_obj_tube1_grid1 size ( 30 30 ) opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_tube1_grid1 opexprlanguage -s hscript $_obj_tube1_grid1 opuserdata -n '___Version___' -v '19.0.589' $_obj_tube1_grid1 # Node $_obj_tube1_color1 (Sop/color) set _obj_tube1_color1 = `run("opadd -e -n -v color color1")` oplocate -x `$arg2 + 7.434577` -y `$arg3 + -5.6029636347186367` $_obj_tube1_color1 opparm $_obj_tube1_color1 ramp ( 2 ) opparm $_obj_tube1_color1 color ( 0.13099999725818634 0.13099999725818634 0.13099999725818634 ) ramp2pos ( 1 ) ramp2c ( 1 1 1 ) opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_tube1_color1 opexprlanguage -s hscript $_obj_tube1_color1 opuserdata -n '___Version___' -v '' $_obj_tube1_color1 opuserdata -n '___toolcount___' -v '2' $_obj_tube1_color1 opuserdata -n '___toolid___' -v 'sop_color' $_obj_tube1_color1 # Node $_obj_tube1_color2 (Sop/color) set _obj_tube1_color2 = `run("opadd -e -n -v color color2")` oplocate -x `$arg2 + -3.1197759999999999` -y `$arg3 + -2.1295519999999999` $_obj_tube1_color2 opparm $_obj_tube1_color2 ramp ( 2 ) opparm $_obj_tube1_color2 color ( 0.2370000034570694 0.2370000034570694 0.2370000034570694 ) ramp2pos ( 1 ) ramp2c ( 1 1 1 ) opset -d off -r off -h off -f on -y off -t on -l off -s off -u off -F on -c on -e on -b off $_obj_tube1_color2 opexprlanguage -s hscript $_obj_tube1_color2 opuserdata -n '___Version___' -v '' $_obj_tube1_color2 opuserdata -n '___toolcount___' -v '2' $_obj_tube1_color2 opuserdata -n '___toolid___' -v 'sop_color' $_obj_tube1_color2 # Node $_obj_tube1_edit1 (Sop/edit) set _obj_tube1_edit1 = `run("opadd -e -n -v edit edit1")` oplocate -x `$arg2 + 0` -y `$arg3 + -3.2764704117647057` $_obj_tube1_edit1 opparm -V 19.0.589 $_obj_tube1_edit1 group ( '26-27 29 31 33 35 37 39 41 43 45 47' ) grouptype ( points ) s ( 0.76145815465433941 0.76145815465433941 0.76145815465433941 ) p ( -0.10132560133934021 1.1888542175292969 0 ) leadislandhint ( 43 ) opset -d off -r off -h on -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_tube1_edit1 opexprlanguage -s hscript $_obj_tube1_edit1 opuserdata -n '___Version___' -v '19.0.589' $_obj_tube1_edit1 oporder -e tube1 polyfill1 transform1 blast1 polyextrude1 axiom_solver1 axiom_sourceShape1 vdbfrompolygons1 sphere1 axiom_sourceShape2 merge1 volumevisualization1 grid1 color1 color2 axiom_volumeVisualize1 edit1 opcf .. opset -p on $_obj_tube1 opcf $arg1 opcf $_obj_tube1 opwire -n $_obj_tube1_tube1 -0 $_obj_tube1_polyfill1 opwire -n $_obj_tube1_polyfill1 -0 $_obj_tube1_transform1 opwire -n $_obj_tube1_transform1 -0 $_obj_tube1_blast1 opwire -n $_obj_tube1_blast1 -0 $_obj_tube1_polyextrude1 opwire -n $_obj_tube1_vdbfrompolygons1 -0 $_obj_tube1_axiom_solver1 opwire -n $_obj_tube1_merge1 -1 $_obj_tube1_axiom_solver1 opwire -n $_obj_tube1_sphere1 -0 $_obj_tube1_axiom_sourceShape1 opwire -n $_obj_tube1_edit1 -0 $_obj_tube1_vdbfrompolygons1 opwire -n $_obj_tube1_axiom_sourceShape1 -0 $_obj_tube1_merge1 opwire -n $_obj_tube1_axiom_sourceShape2 -1 $_obj_tube1_merge1 opwire -n $_obj_tube1_axiom_solver1 -0 $_obj_tube1_volumevisualization1 opwire -n $_obj_tube1_grid1 -0 $_obj_tube1_color1 opwire -n $_obj_tube1_blast1 -0 $_obj_tube1_color2 opwire -n $_obj_tube1_axiom_solver1 -0 $_obj_tube1_axiom_volumeVisualize1 opwire -n $_obj_tube1_polyextrude1 -0 $_obj_tube1_edit1 opcf .. set oidx = 0 if ($argc >= 9 && "$arg9" != "") then set oidx = $arg9 endif if ($argc >= 5 && "$arg4" != "") then set output = $_obj_tube1 opwire -n $output -$arg5 $arg4 endif if ($argc >= 6 && "$arg6" != "") then set input = $_obj_tube1 if ($arg8) then opwire -n -i $arg6 -0 $input else opwire -n -o $oidx $arg6 -0 $input endif endif opcf $saved_path ''' hou.hscript(h_preamble + h_extra_args + h_cmd)