[Sidefx-houdini-list] Space filling circles

Martin Sawtell martin at msawtell.com
Wed Aug 10 19:59:24 EDT 2011


Aha!!
http://paulbourke.net/texture_colour/randomtile/

:)

-M

On 10 August 2011 03:11, Andrew Lyons <tstexture at gmail.com> wrote:

> Cool! I wonder if he works with the Crystal Method much? :)
>
>
> On 7 August 2011 04:11, Martin Sawtell <martin at msawtell.com> wrote:
>
> > I saw Paul Bourke put some recent renders up that were along this theme,
> he
> > has this paper on his website:
> > http://paulbourke.net/texture_colour/randomtile/paper.pdf
> > It's about filling space with fractal patterns, might be of interest.
> > Here's
> > his public album:
> >
> >
> https://plus.google.com/photos/117410063754013499525/albums/5627585387387080737
> >
> >
> > -M
> >
> >
> > On 30 July 2011 05:50, Doug Struthers <dragonfly at dougstruthers.com>
> wrote:
> >
> > > As I began this thread I should say it was not me though I did find
> other
> > > artistic uses and then carved them from wood.  All the help on this
> > > previously was most helpful.
> > >
> > > Cheers
> > >
> > >
> > > On Fri, Jul 29, 2011 at 10:48 AM, Andrew Lyons <tstexture at gmail.com>
> > > wrote:
> > >
> > > > Looks like someone found an artistic use for this:
> > > >
> > > >
> > > >
> > >
> >
> http://www.dj-tronic.com/dancefloormayhem.com/images/2009/TCM_albumcover.jpg
> > > >
> > > > I wonder who the mystery artist was. Anyone know who?
> > > >
> > > > Cheers
> > > >
> > > >
> > > > On 6 August 2009 09:26, Andrew D Lyons <tstexture at gmail.com> wrote:
> > > > > Yep - sorry about the line wrapping on that post. There is a more
> > > > > succinct version of the script uploaded to here:
> > > > >
> > > > >
> > > >
> > >
> >
> http://www.sidefx.com/index.php?option=com_forum&Itemid=172&page=viewtopic&p=78063#78063
> > > > >
> > > > > Cheers
> > > > >
> > > > >
> > > > > 2009/8/6 David Johnson <daveinengland at gmail.com>:
> > > > >> I had to edit the example to fix the line wraps that the email put
> > in,
> > > > but
> > > > >> after that it ran just fine. Maybe someone could put it on odforce
> > or
> > > in
> > > > the
> > > > >> SideFX forum.
> > > > >>
> > > > >> Dave
> > > > >>
> > > > >> On Thu, Aug 6, 2009 at 6:58 AM, Steve Tucker <
> > Steve.Tucker at starz.com>
> > > > wrote:
> > > > >>
> > > > >>> Interesting.  If I attempt to run this in a new file, it doesn't
> > > work.
> > > > >>>  Can't create the geo object.  If I cd /obj and then try running
> > it,
> > > I
> > > > get a
> > > > >>> fatal exception error.
> > > > >>>
> > > > >>>  - Steve
> > > > >>>
> > > > >>> Stephen Tucker, VFX Artist
> > > > >>> p: 416.682.5200 x 5363  | f: 416.682.5209
> > > > >>> Starz Media Canada Co. | 230 Richmond Street East | Toronto, ON
> M5A
> > > 1P4
> > > > >>> www.starzanimation.com
> > > > >>>
> > > > >>>
> > > > >>> -----Original Message-----
> > > > >>> From: sidefx-houdini-list-bounces at sidefx.com [mailto:
> > > > >>> sidefx-houdini-list-bounces at sidefx.com] On Behalf Of Andrew D
> > Lyons
> > > > >>> Sent: Wednesday, August 05, 2009 7:07 PM
> > > > >>> To: sidefx-houdini-list at sidefx.com
> > > > >>> Subject: Re: [Sidefx-houdini-list] Space filling circles
> > > > >>>
> > > > >>> That's an interesting problem. Not exactly circular - but close:
> > > > >>>
> > > > >>> Drop this in a textport:
> > > > >>> #######################################################
> > > > >>>
> > > > >>> # Automatically generated script: Wednesday August 05, 16:06
> > > > >>> \set noalias = 1
> > > > >>> set saved_path = `execute("oppwf")`
> > > > >>> opcf /obj
> > > > >>>
> > > > >>> # Node circle_cells (Object/geo)
> > > > >>> opadd -n geo circle_cells
> > > > >>> oplocate -x 12.6117 -y 2.05949 circle_cells
> > > > >>> opspareds '    group {  name    "stdswitcher5"  label
> "Transform"
> > > > >>> parm
> > > > >>> {           name        "keeppos"           baseparm
> >  joinnext
> > > > >>>  export      none    }
> > > > >>>        parm {      name        "pre_xform"         baseparm
> > > >  export
> > > > >>>    none    }       parm
> > > > >>> {           name        "xOrd"      baseparm        joinnext
> > > >  export
> > > > >>>      none    }
> > > > >>>        parm {      name        "rOrd"      baseparm        export
> > > >  none
> > > > >>>    }       parm {
> > > > >>>  name   "t"         baseparm        export      all     }
> > parm
> > > {
> > > > >>>  name        "r"
> > > > >>> baseparm            export      all     }       parm {      name
> > > >  "s"
> > > > >>>         baseparm
> > > > >>> export  none    }       parm {      name        "p"
> > baseparm
> > > > >>>  export      none    }
> > > > >>>        parm {      name        "scale"             baseparm
> > > >  export
> > > > >>>    none    }       parm {
> > > > >>>  name  "lookatpath"        baseparm        export      none    }
> > > > parm
> > > > >>> {
> > > > >>> name    "lookup"            baseparm        export      none    }
> > > > >>> parm {
> > > > >>> name    "pathobjpath"       baseparm        export      none    }
> > > > >>> parm {
> > > > >>> name    "roll"      baseparm        export      none    }
> > parm
> > > {
> > > > >>>  name        "pos"
> > > > >>>            baseparm        export      none    }       parm {
> > >  name
> > > > >>>    "uparmtype"
> > > > >>> baseparm            export      none    }       parm {      name
> > > > >>>  "pathorient"
> > > > >>> baseparm            export      none    }       parm {      name
> > > > >>>  "up"        baseparm
> > > > >>> export  none    }       parm {      name        "bank"
> >  baseparm
> > > > >>>  export      none
> > > > >>>        }     }      group {    name    "stdswitcher5_1"
> >  label
> > > > >>> "Material"      parm
> > > > >>> {           name        "shop_materialpath"         baseparm
> > > > >>>  joinnext
> > > > >>> export  none    }       parm {      name
>  "shop_materialopts"
> > > > >>> baseparm
> > > > >>>  export none    }     }      group {    name    "stdswitcher5_2"
> > > > >>>        label   "Render"        parm {      name        "tdisplay"
> > > > >>>  baseparm
> > > > >>> export  none    }       parm {      name        "display"
> > > > >>> baseparm
> > > > >>> export  none    }       parm {      name        "vm_phantom"
> > > >  label
> > > > >>>     "Phantom"
> > > > >>>  type   toggle      default     { "0" }             range       {
> 0
> > 1
> > > }
> > > > >>>         export      none
> > > > >>>            parmtag     { "spare_category" "Render" }   }
> parm
> > {
> > > > >>> name    "vm_renderable"             label       "Renderable"
> > > >  type
> > > > >>>      toggle
> > > > >>> default { "1" }             range       { 0 1 }
> export
> > > > >>>  none        parmtag     {
> > > > >>> "spare_category" "Render" }     }       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"              range   { 0 1 }
> > > > >>> export  none            parmtag {
> > > > >>> "spare_category" "Shading" }        }       parm {
> >  name
> > > > >>>  "reflectmask"
> > > > >>>                label   "Reflection Mask"               type
> >  oplist
> > > > >>>    default { "*" }                 range   { 0
> > > > >>> 1 }             export  none            parmtag { "oprelative"
> > "/obj"
> > > }
> > > > >>>             parmtag {
> > > > >>> "opfilter" "!!OBJ/GEOMETRY!!" }                 parmtag {
> > > > "spare_category"
> > > > >>> "Shading"
> > > > >>> }               parmtag { "opexpand" "1" }          }       parm
> {
> > > > >>>      name    "lightmask"
> > > > >>>                label   "Light Mask"            type    oplist
> > > > >>>  default { "*" }                 range   { 0 1 }
> > > > >>>                export  none            parmtag { "oprelative"
> > "/obj"
> > > }
> > > > >>>             parmtag { "opfilter"
> > > > >>> "!!OBJ/LIGHT!!" }               parmtag { "spare_category"
> > "Shading"
> > > }
> > > > >>>      parmtag {
> > > > >>> "opexpand" "1" }            }       parm {              name
> > > > >>>  "vm_volumefilter"
> > > > >>>                label   "Volume Filter"                 type
> >  string
> > > > >>>    default { "gaussian" }
> > > > >>>                menu    {                   "box"       "Box
> Filter"
> > > > >>>        "gaussian"  "Gaussian"
> > > > >>> "bartlett"      "Bartlett (triangle)"               "catrom"
> > > > >>>  "Catmull-Rom"
> > > > >>> "hanning"       "Hanning"                   "blackman"
>  "Blackman"
> > > > >>>          "sinc"      "Sinc
> > > > >>> (sharpening)"           }               range   { 0 1 }
> > > > >>> export  none            parmtag {
> > > > >>> "spare_category" "Shading" }        }       parm {
> > > > >>>                name    "vm_volumefilterwidth"          label
> > > "Volume
> > > > >>> Filter Width"
> > > > >>>                type    float           default { "1.5" }
> > > > >>> range   { 0.001 5 }             export  none
> > > > >>>                parmtag { "spare_category" "Shading" }      }
> > > parm
> > > > {
> > > > >>>                name    "vm_matte"              label   "Matte
> > > shading"
> > > > >>>             type    toggle          default {
> > > > >>> "0" }           range   { 0 1 }                 export  none
> > > > >>>  parmtag { "spare_category"
> > > > >>> "Shading" }         }   }       group {             name
> > > >  "folder0_1"
> > > > >>> label   "Sampling"          parm {              name
> > > >  "geo_velocityblur"
> > > > >>>                label   "Geometry Velocity Blur"
>  type
> > > > >>>  toggle          default { "0" }
> > > > >>>                range   { 0 1 }                 export  none
> > > > >>>  parmtag { "spare_category" "Sampling"
> > > > >>> }           }   }       group {             name
>  "folder0_2"
> > > > >>> label       "Dicing"
> > > > >>> parm {          name    "vm_shadingquality"             label
> > > > "Shading
> > > > >>> Quality"
> > > > >>>                type    float           default { "1" }
> > > > >>> range   { 0 10 }                export  none
> > > > >>>                parmtag { "spare_category" "Dicing" }       }
> > > parm
> > > > {
> > > > >>>                name    "vm_rayshadingquality"          label
> "Ray
> > > > Shading
> > > > >>> Quality"
> > > > >>>                type    float           default { "1" }
> > > > >>> range   { 0 10 }                export  none
> > > > >>>                parmtag { "spare_category" "Dicing" }       }   }
> > > > >>> group {
> > > > >>> name    "folder0_3"         label       "Geometry"          parm
> {
> > > > >>>                name    "vm_rmbackface"                 label
> > > > "Backface
> > > > >>> Removal (Mantra)"
> > > > >>>                type    toggle          default { "0" }
> > > > >>> range   { 0 1 }                 export  none
> > > > >>>                parmtag { "spare_category" "Geometry" }
> > }
> > > > >>> parm {
> > > > >>>                name    "shop_geometrypath"             label
> > > > "Procedural
> > > > >>> Shader"             type    oppath
> > > > >>>                default { "" }          range   { 0 1 }
> > > > >>> export  none            parmtag {
> > > > >>> "oprelative" "." }              parmtag { "opfilter"
> > > > "!!SHOP/GEOMETRY!!" }
> > > > >>>                parmtag { "spare_category" "Geometry" }
> > }
> > > > >>> parm {
> > > > >>>                name    "vm_rendersubd"                 label
> > > > "Polygons As
> > > > >>> Subdivision (Mantra)"
> > > > >>>                type    toggle          default { "0" }
> > > > >>> range   { 0 1 }                 export  none
> > > > >>>                parmtag { "spare_category" "Geometry" }
> > }
> > > > >>> parm {
> > > > >>>                name    "vm_renderpoints"               label
> > > "Render
> > > > As
> > > > >>> Points (Mantra)"
> > > > >>>                type    toggle          default { "0" }
> > > > >>> range   { 0 1 }                 export  none
> > > > >>>                parmtag { "spare_category" "Geometry" }
> > }
> > > > >>> parm {
> > > > >>>                name    "vm_metavolume"                 label
> > > > "Metaballs
> > > > >>> as Volume"           type    toggle
> > > > >>>                default { "0" }                 range   { 0 1 }
> > > > >>>     export  none            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 }                export  none
> > > > >>>                parmtag { "spare_category" "Geometry" }
> > }
> > > > >>> parm {
> > > > >>>                name    "vm_computeN"           label
> > "Automatically
> > > > >>> Compute Normals"
> > > > >>>                type    toggle          default { "1" }
> > > > >>> range   { 0 1 }                 export  none
> > > > >>>                parmtag { "spare_category" "Geometry" }
> > }
> > > > }
> > > > >>>    }      group
> > > > >>> {       name    "stdswitcher5_3"        label   "Misc"
> >  parm
> > > {
> > > > >>>  name        "use_dcolor"
> > > > >>>            baseparm        export      none    }       parm {
> > >  name
> > > > >>>    "dcolor"
> > > > >>> baseparm            export      none    }       parm {      name
> > > > >>>  "picking"           baseparm
> > > > >>>            export      none    }       parm {      name
> > > >  "pickscript"
> > > > >>>        baseparm
> > > > >>> export  none    }       parm {      name        "caching"
> > > > >>> baseparm
> > > > >>> export  none    }       parm {      name        "vport_shadeopen"
> > > > >>> baseparm
> > > > >>> export  none    }       parm {      name
> > >  "vport_displayassubdiv"
> > > > >>>         baseparm
> > > > >>>            invisible       export      none    }     }  '
> > > circle_cells
> > > > >>> opset -S on circle_cells
> > > > >>> opparm circle_cells use_dcolor ( off )
> > > > >>> chautoscope circle_cells +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
> > > -c
> > > > >>> off -e on -b off -x off circle_cells
> > > > >>> opexprlanguage -s hscript circle_cells
> > > > >>> opcf circle_cells
> > > > >>>
> > > > >>> # Node circle1 (Sop/circle)
> > > > >>> opadd -n circle circle1
> > > > >>> oplocate -x 3.41176 -y 0.0882355 circle1
> > > > >>> opparm circle1 type ( poly ) orient ( zx ) rad ( 21 21 ) divs (
> 100
> > )
> > > > >>> opset -d off -r off -h off -f off -y off -t off -l off -s off -u
> > off
> > > > >>> -c off -e on -b off circle1
> > > > >>> opexprlanguage -s hscript circle1
> > > > >>>
> > > > >>> # Node triangulate2d1 (Sop/triangulate2d)
> > > > >>> opadd -n triangulate2d triangulate2d1
> > > > >>> oplocate -x 3.41176 -y -1.15882 triangulate2d1
> > > > >>> opparm triangulate2d1 refine ( on ) maxarea ( 2 ) minangle ( 30 )
> > > > >>> maxnewpts ( 19565 ) removeduplicatepoints ( off )
> > > > >>> opset -d off -r off -h off -f off -y off -t off -l off -s off -u
> > off
> > > > >>> -c off -e on -b off triangulate2d1
> > > > >>> opexprlanguage -s hscript triangulate2d1
> > > > >>>
> > > > >>> # Node facet1 (Sop/facet)
> > > > >>> opadd -n facet facet1
> > > > >>> oplocate -x 3.50951 -y -3.19412 facet1
> > > > >>> opparm facet1 unique ( on )
> > > > >>> opset -d off -r off -h off -f off -y off -t off -l off -s off -u
> > off
> > > > >>> -c off -e on -b off facet1
> > > > >>> opexprlanguage -s hscript facet1
> > > > >>>
> > > > >>> # Node foreach1 (Sop/foreach)
> > > > >>> opadd -n foreach foreach1
> > > > >>> oplocate -x 3.41176 -y -5.02471 foreach1
> > > > >>> chblockbegin
> > > > >>> chadd -t 0 0 foreach1 numrange2
> > > > >>> chkey -t 0 -v 10 -m 0 -a 0 -A 0 -T a  -F 'nprims("../" +
> > opinput(".",
> > > > >>> 0))-1' foreach1/numrange2
> > > > >>> chblockend
> > > > >>> opparm foreach1 fortype ( number ) numrange ( 0 numrange2 1 )
> > > > >>> opset -d on -r on -h off -f off -y off -t off -l off -s off -u
> off
> > -c
> > > > >>> off -e on -b off foreach1
> > > > >>> opexprlanguage -s hscript foreach1
> > > > >>> opcf foreach1
> > > > >>>
> > > > >>> # Node each1 (Sop/each)
> > > > >>> opadd -n each each1
> > > > >>> oplocate -x 0.6102 -y 4.8513 each1
> > > > >>> chblockbegin
> > > > >>> chadd -t 0 0 each1 attribtol
> > > > >>> chkey -t 0 -v 0.001 -m 0 -a 0 -A 0 -T a  -F 'ch("../attribtol")'
> > > > >>> each1/attribtol
> > > > >>> chadd -t 0 0 each1 attribval1
> > > > >>> chkey -t 0 -v 0 -m 0 -a 0 -A 0 -T a  -F 'stamp("..",
> > > > >>> chs("../forstamp") + "1", 0)' each1/attribval1
> > > > >>> chadd -t 0 0 each1 attribval2
> > > > >>> chkey -t 0 -v 0 -m 0 -a 0 -A 0 -T a  -F 'stamp("..",
> > > > >>> chs("../forstamp") + "2", 0)' each1/attribval2
> > > > >>> chadd -t 0 0 each1 attribval3
> > > > >>> chkey -t 0 -v 0 -m 0 -a 0 -A 0 -T a  -F 'stamp("..",
> > > > >>> chs("../forstamp") + "3", 0)' each1/attribval3
> > > > >>> chadd -t 0 0 each1 attrib
> > > > >>> chkey -t 0 -v 0 -m 0 -a 0 -A 0 -T a  -F
> > > > >>> 'ifs(!!strcmp(chs("../fortype"), "attrib"), "",
> chs("../attrib"))'
> > > > >>> each1/attrib
> > > > >>> chadd -t 0 0 each1 group
> > > > >>> chkey -t 0 -v 0 -m 0 -a 0 -A 0 -T a  -F
> > > > >>> 'ifs(!!strcmp(chs("../fortype"), "group"), "", stamps("..",
> > > > >>> chs("../forstamp"), ""))' each1/group
> > > > >>> chadd -t 0 0 each1 feedback
> > > > >>> chkey -t 0 -v 0 -m 0 -a 0 -A 0 -T a  -F '!ch("../mergeresults")'
> > > > >>> each1/feedback
> > > > >>> chblockend
> > > > >>> opparm each1 feedback ( feedback ) group ( group ) attrib (
> attrib
> > )
> > > > >>> attribval ( attribval1 attribval2 attribval3 ) attribtol (
> > attribtol
> > > )
> > > > >>> forpath ( .. )
> > > > >>> opset -d off -r off -h off -f off -y off -t off -l off -s off -u
> > off
> > > > >>> -c off -e on -b off each1
> > > > >>> opexprlanguage -s hscript each1
> > > > >>>
> > > > >>> # Node delete2 (Sop/delete)
> > > > >>> opadd -n delete delete2
> > > > >>> oplocate -x 0.6102 -y 3.89295 delete2
> > > > >>> chblockbegin
> > > > >>> chadd -t 0 0 delete2 rangeend
> > > > >>> chkey -t 0 -v 0 -m 0 -a 0 -A 0 -T a  -F '$N' delete2/rangeend
> > > > >>> chadd -t 0 0 delete2 filter
> > > > >>> chkey -t 0 -v 1 -m 0 -a 0 -A 0 -T a  -F 'stamp("../", "FORVALUE",
> > 0)
> > > > >>> == prim("../" + opinput(".", 0), $PR, "__primnum", 0)'
> > delete2/filter
> > > > >>> chblockend
> > > > >>> opparm delete2 negate ( keep ) groupop ( filter ) filter ( filter
> )
> > > > >>> pattern ( "" )
> > > > >>> opset -d off -r off -h off -f off -y off -t off -l off -s off -u
> > off
> > > > >>> -c off -e on -b off delete2
> > > > >>> opexprlanguage -s hscript delete2
> > > > >>>
> > > > >>> # Node fit1 (Sop/fit)
> > > > >>> opadd -n fit fit1
> > > > >>> oplocate -x 0.610753 -y 0.946953 fit1
> > > > >>> opparm fit1 stdswitcher ( 2 2 2 ) method ( interp ) orderu ( 3 )
> > > > >>> orderv ( 3 ) smooth ( 0.343 ) scope ( breakpnt ) dataparmv (
> > uniform
> > > )
> > > > >>> closeu ( wu ) closev ( wv ) corners ( on )
> > > > >>> opset -d on -r on -h off -f off -y off -t off -l off -s off -u
> off
> > -c
> > > > >>> off -e on -b off fit1
> > > > >>> opexprlanguage -s hscript fit1
> > > > >>>
> > > > >>> # Node circle1 (Sop/circle)
> > > > >>> opadd -n circle circle1
> > > > >>> oplocate -x 3.01075 -y 3.7 circle1
> > > > >>> opset -d off -r off -h off -f off -y off -t off -l off -s off -u
> > off
> > > > >>> -c off -e on -b off circle1
> > > > >>> opexprlanguage -s hscript circle1
> > > > >>>
> > > > >>> # Node resample1 (Sop/resample)
> > > > >>> opadd -n resample resample1
> > > > >>> oplocate -x 0.622517 -y 2.92353 resample1
> > > > >>> opparm resample1 edge ( on ) dolength ( off ) dosegs ( on ) segs
> (
> > 2
> > > )
> > > > >>> opset -d off -r off -h off -f off -y off -t off -l off -s off -u
> > off
> > > > >>> -c off -e on -b off resample1
> > > > >>> opexprlanguage -s hscript resample1
> > > > >>>
> > > > >>> # Node delete1 (Sop/delete)
> > > > >>> opadd -n delete delete1
> > > > >>> oplocate -x 0.610753 -y 1.85283 delete1
> > > > >>> chblockbegin
> > > > >>> chadd -t 0 0 delete1 rangeend
> > > > >>> chkey -t 0 -v 0 -m 0 -a 0 -A 0 -T a  -F '$N' delete1/rangeend
> > > > >>> chblockend
> > > > >>> opparm delete1 entity ( point ) groupop ( range ) range ( -1
> > rangeend
> > > )
> > > > >>> opset -d off -r off -h off -f off -y off -t on -l off -s off -u
> off
> > > -c
> > > > >>> off -e on -b off delete1
> > > > >>> opexprlanguage -s hscript delete1
> > > > >>> oporder -e each1 delete2 fit1 circle1 resample1 delete1
> > > > >>> opcf ..
> > > > >>>
> > > > >>> # Node __PRIMNUM (Sop/attribcreate)
> > > > >>> opadd -n attribcreate __PRIMNUM
> > > > >>> oplocate -x 3.41176 -y -4.07765 __PRIMNUM
> > > > >>> chblockbegin
> > > > >>> chadd -t 0 0 __PRIMNUM value1
> > > > >>> chkey -t 0 -v 0 -m 0 -a 0 -A 0 -T a  -F '$PR' __PRIMNUM/value1
> > > > >>> chblockend
> > > > >>> opparm __PRIMNUM name ( __primnum ) varname ( __PRIMNUM ) class (
> > > > >>> primitive ) value ( value1 0 0 0 )
> > > > >>> opset -d off -r off -h off -f off -y off -t off -l off -s off -u
> > off
> > > > >>> -c off -e on -b off __PRIMNUM
> > > > >>> opexprlanguage -s hscript __PRIMNUM
> > > > >>>
> > > > >>> # Node foreach2 (Sop/foreach)
> > > > >>> opadd -n foreach foreach2
> > > > >>> oplocate -x 3.50951 -y -2.29415 foreach2
> > > > >>> opparm foreach2 fortype ( number ) numrange ( 0 4 1 )
> mergeresults
> > (
> > > > off )
> > > > >>> opset -d off -r off -h off -f off -y off -t off -l off -s off -u
> > off
> > > > >>> -c off -e on -b off foreach2
> > > > >>> opexprlanguage -s hscript foreach2
> > > > >>> opcf foreach2
> > > > >>>
> > > > >>> # Node each1 (Sop/each)
> > > > >>> opadd -n each each1
> > > > >>> oplocate -x 0.6102 -y 4.8513 each1
> > > > >>> chblockbegin
> > > > >>> chadd -t 0 0 each1 attribtol
> > > > >>> chkey -t 0 -v 0.001 -m 0 -a 0 -A 0 -T a  -F 'ch("../attribtol")'
> > > > >>> each1/attribtol
> > > > >>> chadd -t 0 0 each1 attribval1
> > > > >>> chkey -t 0 -v 0 -m 0 -a 0 -A 0 -T a  -F 'stamp("..",
> > > > >>> chs("../forstamp") + "1", 0)' each1/attribval1
> > > > >>> chadd -t 0 0 each1 attribval2
> > > > >>> chkey -t 0 -v 0 -m 0 -a 0 -A 0 -T a  -F 'stamp("..",
> > > > >>> chs("../forstamp") + "2", 0)' each1/attribval2
> > > > >>> chadd -t 0 0 each1 attribval3
> > > > >>> chkey -t 0 -v 0 -m 0 -a 0 -A 0 -T a  -F 'stamp("..",
> > > > >>> chs("../forstamp") + "3", 0)' each1/attribval3
> > > > >>> chadd -t 0 0 each1 attrib
> > > > >>> chkey -t 0 -v 0 -m 0 -a 0 -A 0 -T a  -F
> > > > >>> 'ifs(!!strcmp(chs("../fortype"), "attrib"), "",
> chs("../attrib"))'
> > > > >>> each1/attrib
> > > > >>> chadd -t 0 0 each1 group
> > > > >>> chkey -t 0 -v 0 -m 0 -a 0 -A 0 -T a  -F
> > > > >>> 'ifs(!!strcmp(chs("../fortype"), "group"), "", stamps("..",
> > > > >>> chs("../forstamp"), ""))' each1/group
> > > > >>> chadd -t 0 0 each1 feedback
> > > > >>> chkey -t 0 -v 0 -m 0 -a 0 -A 0 -T a  -F '!ch("../mergeresults")'
> > > > >>> each1/feedback
> > > > >>> chblockend
> > > > >>> opparm each1 feedback ( feedback ) group ( group ) attrib (
> attrib
> > )
> > > > >>> attribval ( attribval1 attribval2 attribval3 ) attribtol (
> > attribtol
> > > )
> > > > >>> forpath ( .. )
> > > > >>> opset -d off -r off -h off -f off -y off -t off -l off -s off -u
> > off
> > > > >>> -c off -e on -b off each1
> > > > >>> opexprlanguage -s hscript each1
> > > > >>>
> > > > >>> # Node divide2 (Sop/divide)
> > > > >>> opadd -n divide divide2
> > > > >>> oplocate -x 0.6102 -y 3.42343 divide2
> > > > >>> opparm divide2 convex ( off ) dual ( on )
> > > > >>> opset -d on -r on -h off -f off -y off -t off -l off -s off -u
> off
> > -c
> > > > >>> off -e on -b off divide2
> > > > >>> opexprlanguage -s hscript divide2
> > > > >>> oporder -e each1 divide2
> > > > >>> opcf ..
> > > > >>> oporder -e circle1 triangulate2d1 facet1 foreach1 __PRIMNUM
> > foreach2
> > > > >>> opcf ..
> > > > >>>
> > > > >>> opcf /obj
> > > > >>> opcf circle_cells
> > > > >>> opwire -n circle1 -0 triangulate2d1
> > > > >>> opwire -n foreach2 -0 facet1
> > > > >>> opwire -n __PRIMNUM -0 foreach1
> > > > >>> opcf foreach1
> > > > >>> opwire -n -i 0 -0 each1
> > > > >>> opwire -n each1 -0 delete2
> > > > >>> opwire -n delete1 -0 fit1
> > > > >>> opwire -n delete2 -0 resample1
> > > > >>> opwire -n resample1 -0 delete1
> > > > >>> opcf ..
> > > > >>> opwire -n facet1 -0 __PRIMNUM
> > > > >>> opwire -n triangulate2d1 -0 foreach2
> > > > >>> opcf foreach2
> > > > >>> opwire -n -i 0 -0 each1
> > > > >>> opwire -n each1 -0 divide2
> > > > >>> opcf ..
> > > > >>> opcf ..
> > > > >>> opcf $saved_path
> > > > >>>
> > > > >>> ######################################################
> > > > >>>
> > > > >>> 2009/8/5 Doug Struthers <dragonfly at dougstruthers.com>:
> > > > >>> > Thanks for your inputs.
> > > > >>> >
> > > > >>> > Since there do not need to be thousands of them I bet I can
> > iterate
> > > > on
> > > > >>> them
> > > > >>> > to get a close approximation without taking a long long time to
> > > > compute.
> > > > >>> >
> > > > >>> > It is intriguing to think that there may be a function with
> dops
> > > that
> > > > the
> > > > >>> > solution falls out of but I am still a way down the learning
> > curve
> > > > with
> > > > >>> all
> > > > >>> > the functionality that exists in vops let alone rolling my own.
> > > > >>> >
> > > > >>> > Cheers
> > > > >>> >
> > > > >>> > Doug
> > > > >>> >
> > > > >>> > On Wed, Aug 5, 2009 at 9:09 AM, Gene Dreitser <
> > keyframe at rogers.com
> > > >
> > > > >>> wrote:
> > > > >>> >
> > > > >>> >>
> > > > >>> >> Might also be worth it to take a look at the output of the
> > > isooffset
> > > > sop
> > > > >>> >> using the 'tetra-mesh' output type.  Tetra-type set to
> 'cubes'.
> > > > >>> >>
> > > > >>> >> While it will not pack perfectly, it DOES create a predictable
> > > > pattern
> > > > >>> of
> > > > >>> >> rows and columns that one might be able to make use, and as an
> > > added
> > > > >>> bonus,
> > > > >>> >> it can use ray-intersect to sample the original mesh.
> > > > >>> >>
> > > > >>> >> Best,
> > > > >>> >>
> > > > >>> >> G
> > > > >>> >>
> > > > >>> >>  --
> > > > >>> >> Gene Dreitser
> > > > >>> >> Loki Visual Effects
> > > > >>> >> p: 416.532.5654 // c: 416.803.0682 // www.lokivfx.com
> > > > >>> >>
> > > > >>> >>
> > > > >>> >>
> > > > >>> >> ----- Original Message ----
> > > > >>> >> From: Andy Nicholas <andy at andynicholas.com>
> > > > >>> >> To: sidefx-houdini-list at sidefx.com
> > > > >>> >> Sent: Wednesday, August 5, 2009 12:05:13 PM
> > > > >>> >> Subject: Re: [Sidefx-houdini-list] Space filling circles
> > > > >>> >>
> > > > >>> >> Hi Doug,
> > > > >>> >> Are you asking this because you know of this being done
> > somewhere
> > > > else?
> > > > >>> I
> > > > >>> >> only ask because I just Googled this (out of my own interest),
> > and
> > > > >>> judging
> > > > >>> >> on how many papers are written on this topic, I'd say that
> it's
> > a
> > > > >>> >> non-trivial problem to solve.
> > > > >>> >>
> > > > >>> >> The only thing that springs to mind, would be to create an
> > > iterative
> > > > >>> >> approach, using the SOP solver or the Feedback SOP
> > > (proto_install).
> > > > >>> >>
> > > > >>> >> Note that I haven't tested this, or fully thought it through,
> > but
> > > > the
> > > > >>> >> following... might... just...  work...
> > > > >>> >>
> > > > >>> >> Start off with a triangular polygon with a random sized disc
> at
> > > each
> > > > >>> >> vertex so that their circumferences touch. From that, take a
> > pair
> > > of
> > > > >>> discs
> > > > >>> >> and create another randomly sized one and place it (using
> simple
> > > > >>> >> trigonometry) so that it touches the first two. Extend the
> > > triangle
> > > > into
> > > > >>> a
> > > > >>> >> four sided polygon with the new point at the center of the new
> > > disc.
> > > > >>> >> Repeat the process, but ignoring any discs internal to the
> > > polygon.
> > > > >>> >>
> > > > >>> >> I can see this approach breaking down if you ever have a
> > > non-convex
> > > > >>> >> polygon, but there are probably some constraints that you
> could
> > > > figure
> > > > >>> out
> > > > >>> >> that will prevent this from happening.
> > > > >>> >>
> > > > >>> >> Andy
> > > > >>> >>
> > > > >>> >>
> > > > >>> >>
> > > > >>> >>
> > > > >>> >> > Hi
> > > > >>> >> >
> > > > >>> >> > Can anyone point me to a Houdini method (or other solution)
> > for
> > > > >>> packing
> > > > >>> >> > random sized circles so that they are tightly packed and
> each
> > > > >>> >> > circumference
> > > > >>> >> > just touches its neighbors?
> > > > >>> >> >
> > > > >>> >> > Thanks
> > > > >>> >> >
> > > > >>> >> > Doug
> > > > >>> >> >
> > > > >>> >> > --
> > > > >>> >> > www.dougstruthers.com
> > > > >>> >> > _______________________________________________
> > > > >>> >> > Sidefx-houdini-list mailing list
> > > > >>> >> > Sidefx-houdini-list at sidefx.com
> > > > >>> >> >
> > > https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list
> > > > >>> >> >
> > > > >>> >>
> > > > >>> >>
> > > > >>> >> _______________________________________________
> > > > >>> >> Sidefx-houdini-list mailing list
> > > > >>> >> Sidefx-houdini-list at sidefx.com
> > > > >>> >>
> > https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list
> > > > >>> >>
> > > > >>> >> _______________________________________________
> > > > >>> >> Sidefx-houdini-list mailing list
> > > > >>> >> Sidefx-houdini-list at sidefx.com
> > > > >>> >>
> > https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list
> > > > >>> >>
> > > > >>> >
> > > > >>> >
> > > > >>> >
> > > > >>> > --
> > > > >>> > www.dougstruthers.com
> > > > >>> > _______________________________________________
> > > > >>> > Sidefx-houdini-list mailing list
> > > > >>> > Sidefx-houdini-list at sidefx.com
> > > > >>> >
> > https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list
> > > > >>> >
> > > > >>>
> > > > >>>
> > > > >>>
> > > > >>> --
> > > > >>> =======================================
> > > > >>> Andrew D Lyons | Digital Artist | http://www.tstex.com
> > > > >>> =======================================
> > > > >>> _______________________________________________
> > > > >>> Sidefx-houdini-list mailing list
> > > > >>> Sidefx-houdini-list at sidefx.com
> > > > >>>
> https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list
> > > > >>> _______________________________________________
> > > > >>> Sidefx-houdini-list mailing list
> > > > >>> Sidefx-houdini-list at sidefx.com
> > > > >>>
> https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list
> > > > >>>
> > > > >> _______________________________________________
> > > > >> Sidefx-houdini-list mailing list
> > > > >> Sidefx-houdini-list at sidefx.com
> > > > >> https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list
> > > > >>
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > =======================================
> > > > > Andrew D Lyons | Digital Artist | http://www.tstex.com
> > > > > =======================================
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > =======================================
> > > > Andrew D Lyons | Digital Artist | http://www.tstex.com
> > > > =======================================
> > > > _______________________________________________
> > > > Sidefx-houdini-list mailing list
> > > > Sidefx-houdini-list at sidefx.com
> > > > https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list
> > > >
> > >
> > >
> > >
> > > --
> > > www.dougstruthers.com
> > > _______________________________________________
> > > Sidefx-houdini-list mailing list
> > > Sidefx-houdini-list at sidefx.com
> > > https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list
> > >
> > _______________________________________________
> > Sidefx-houdini-list mailing list
> > Sidefx-houdini-list at sidefx.com
> > https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list
> >
>
>
>
> --
> =======================================
> Andrew D Lyons | Digital Artist | http://www.tstex.com
> =======================================
> _______________________________________________
> Sidefx-houdini-list mailing list
> Sidefx-houdini-list at sidefx.com
> https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list
>



More information about the Sidefx-houdini-list mailing list