Jump to content

Procedural Plagiarism


rdg

Recommended Posts

My current project is called "Procedural Plagiarism".

0003_0001: Rounded Corners

header_0001.jpg

Houdini OTL that creates fillets – aka rounded corners – on all points of a curve.

Works nice on Spheres, too.

This Procedural Plagiarism was inspired by 3D Studio Max’s Curve Fillet and spoongraphics.

Download: rdg_roundedCorner.tar.gz

Edited by rdg
  • Like 1
  • Downvote 1
Link to comment
Share on other sites

Thanks guys.

However - the presented solution got some shortcomings in respect to support for groups.

This following snippet is a pythonSOP that outputs a mix of polySplines and NURBS to maintain the point ordering.

In H11 hou.Face.positionAt could probably be used to sample nurbsCurves at the fillets to output a homogeneous polySpline. In H10 the SOP outputs a mix of polySplines and Nurbs. H10 requires a resampleSOP and fuse.

Inputs:

group (string)

optFillet (float)

optFit (float)

# This code is called when instances of this SOP cook.
geo = hou.pwd().geometry()

# Add code to modify the contents of geo.

grpParmValue = hou.evalParm('group').strip()

inputPoints = geo.points()
inputPnums = [ p.number() for p in inputPoints ]
nPoints = len( inputPoints )

grpParmValue = hou.evalParm('group').strip()

if len( grpParmValue ) == 0:
    grpPoints = inputPoints
    grpPoints = inputPnums
else:
    grpPoints = geo.globPoints( grpParmValue )
    grpPnums = [ p.number() for p in grpPoints ]

poly = geo.createPolygon()
poly.setIsClosed( False )

for n in range( 0, nPoints ):
    if n == 0 or n == nPoints -1 or not n in grpPnums:
        np = geo.createPoint()
        np.setPosition( inputPoints[n].position() )
        poly.addVertex( np )
    else:

        fillet = geo.createNURBSCurve( 4, False )

        tmp = (( inputPoints[n].position() - inputPoints[ n-1].position() ) * 0.5 )
        fillet.vertices()[0].point().setPosition( inputPoints[n].position() - tmp.normalized() *  min(tmp.length(), hou.evalParm( 'optFillet' ) ) )

        np = geo.createPoint( )
        np.setPosition( fillet.vertices()[0].point().position() )
        poly.addVertex( np )
        fillet.vertices()[1].point().setPosition( inputPoints[n].position() - tmp.normalized() *  min(tmp.length(), hou.evalParm( 'optFillet' ) ) * hou.evalParm( 'optFit' ) )


        tmp = (( inputPoints[ n + 1 ].position() - inputPoints[n].position()) * 0.5 )
        fillet.vertices()[2].point().setPosition( inputPoints[n].position() + tmp.normalized() * min(tmp.length(), hou.evalParm( 'optFillet' ) ) * hou.evalParm( 'optFit' ) )

        fillet.vertices()[3].point().setPosition( inputPoints[n].position() + tmp.normalized() * min(tmp.length(), hou.evalParm( 'optFillet' ) ) )

        poly = geo.createPolygon()
        poly.setIsClosed( False )
        np = geo.createPoint()
        np.setPosition( fillet.vertices()[3].point().position() )
        poly.addVertex( np )

geo.deletePoints( inputPoints )

Edited by rdg
Link to comment
Share on other sites

02: 0003_0002 - Paint with Triangles

header_0001.jpg

This Houdini OTL assists in creating Delaunay triangulated imagery.

This Procedural Plagiarism was inspired by Jonathan Puckey’s “Delauney Raster

Download: rdg_paintWithTriangles.tar.gz

Hi Georg,

nice effect! Great stuff to make dazzle paintings. Also reminds me of Lyonel Feininger's paintings, can make my own now.

To nitpick a bit, i made two improvements to your setup. One was to scale the image. The resolution tends to be rather big. Scaling an image by a factor of 0.1 resizes it a bit to the Nachtwacht/Guernica proportions. Secondly, the facet_unique_points seems unnecessary. The colour from the points is promoted the same if you have unique points as with fused points.

Cheers,

Hans

Link to comment
Share on other sites

03: 0003_0003: Processing

seq_0268.jpg

Video on Vimeo

A meditation in Houdini’s foreachSOP.

Points are grouped by their distance to each other.

Each group’s points then are sorted by their distance to the group’s ‘main point’.

A addSOP connects the main point to it’s children.

Why oh why didn’t I use a pythonSOP ? And what about search-able data structures – like trees?

This Procedural Plagiarism was inspired by the image on the cover of: “Processing: A Programming Handbook for Visual Designers and Artists” by Casey Reas and Ben Fry[1].

rdg_processing_0001.tar.gz

[1] http://processing.org/learning/books/

Edited by rdg
Link to comment
Share on other sites

  • 2 months later...
  • 2 months later...

04: 0003_0004: Recursive Subdivide

subdivide_sequence_01_10.jpg

Take a rectangular Polygon.

Choose a random point on one of the sides.

Choose a random point on the opposite side.

Split the polygon using a plane through these two points.

Repeat.

This Procedural Plagiarism was inspired by Justin Windle’s “Recursive Subdivision“.

Thanks to Graham for fixing my initial PythonSOP implementation!

rdg_subdivide_0001.tar.gz

Link to comment
Share on other sites

  • 6 months later...

05: 0003_0005: fatcap::revisited

fatcap_redux.0186.jpg

video on vimeo

An animated version of my first procedural plagiarism:

0001_0001 fatcap

A bone chain is rotating in noisy patterns.

The emitted particles are connected to a continuous line.

This Procedural Plagiarism was inspired by Leander Herzog.

rdg_fatcap.tar.gz

Edited by rdg
Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...
  • 4 months later...

0003_0006: PrayStation: Shifted Contents

01_praystation_web_v01.0015.png

video on vimeo

images on preset.de

Joshua Davis' 'shifted contents' had a huge influence on my work back in the days.

The black and white Flash homage from 2001 can be probably seen as my first real plagiarism.

This time I added some color and paperesque quality. Looks like my cmyk phase ain't not over yet.

This Procedural Plagiarism was inspired by PrayStation.

rdg_shiftetContents.tar.gz

Link to comment
Share on other sites

  • 3 weeks later...

0003_0006: PathLine

pathLine.0036.png

video on vimeo

images on preset.de

“A random walker draws a line.

Pick random points on this line and move them perpendicular to the tangent away from the line.

Draw circles around those points touching the line.”

Something along those lines.

This plagiarism was inspired by Martin Kraft’s ‘PathLine.swf

rdg_pathline.tar.gz

Edited by rdg
Link to comment
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...