useful design's picture

Alastair (@usefuldesign)


  • Vuo Founder


12 months ago
useful design's picture
@useful design commented on @alexmitchellmus's Feature Request, “OpenCL node

Thanks Alex, I go in bursts of activity on Vuo. I haven't bit the bullet on coding nodes, though I did download the Qt kit, which was a bit arduous to get going for me and start on "Learn C the Hard Way" (public criticisms of it not withstanding) when it was in Beta and free. I got distracted with trying to learn pointers etc then got distracted by something else. Will come back one day. I'm handy at JS and did complete one book on Python for Beginners from the library 7 years ago. Like all things without daily use it all gets forgotten to a large extent.

I do love the idea of building a set of 3D/4D Point and data list handling nodes to geometrical things like reflections/folding (rotation of a point set) in 3D space about an arbitrary axis. There's heaps of things I like to make in Vuo, just need the time and focus. It frustrates me that I can't just make stuff the way I can in QC, which is much more intuitive to me, I can just follow my nose in QC and not worry to much about code structure.

useful design's picture

Hey thanks for the diagram Martinus, that is exactly what I was looking for!

We could colour in some of those graph nodes to show the pattern any particular simple composition takes from the see of endless possibilities. And also add some control nodes where required. In synthesisers back in the day we used to get taught of master models (LFOs, ADSR Envelopes etc) and slaves (VCOs, Ring Modulators, VCFs VCAs). In you diagram all those types generators (as indicated by each graph node) could be seen as having slave relationships to Wave Generators, Radom Noise Generators, Midi/ArtNet DMX data etc.

So is a mesh a set of points and data about which points are vertexes and which vertexes are combined to define edges and faces? Is it anything more than that? For example can I define the colour of each point in the mesh (like a blend mesh in Adobe Illustrator for example).

The kind of thing I like to work with is sets of point that make geometric patterns/shapes and transitioning points from one set of positions/colour/edge/face arrangements into another using interpolation of various sorts.

Can we interact with the mesh data directly in Vuo?

Would I be correct in surmising that handling a lot of points, lines and faces in a mesh object is faster than manipulating lists of 3D and 4D points in loops? Or is that not necessarily the case at all?

useful design's picture

Thanks for the links too, oh yes you showed me this dude's work before. I looks super relevant to my interests :-)

Just wish I could do higher level maths, want to code a node of JS patch in QC to do Delaunay triangulation and a bit out of by depth. Here's a nice video made with Processing

useful design's picture

I'm more thinking to answer questions like do I need to feed my list of 3D Points to a Scene or a Layer or a Window? If I want an image at each point, do I need a shader and at what point in the chain of types does this fit in? There's so many nodes in Vuo that take an input of one or more of the following datatypes and output a different different datatype that it's really hard to know where to go to get the desired result sometimes and I find I do a lot of working around before I get close to the result I'm after, just because I don't know all the patterns.

{image, shader, point, 3D object, cube, sphere, rectangle, oval, scene, layer, window}

Does that make sense?

useful design's picture

Thanks for explaining, Martius. Yes I remember when the first prototypes of Vuo came out each different number types had to have it's own version of any given node process the data, then came the generic types to be a placeholder for nodes combining. I've never got into the Vuo API though, even though that was my big interest in Vuo, the idea of being able to make our own compiled nodes to manipulate data or whatever, because while JS in QC was a bit buggy/crash prone and frustratingly slow at some things, learning Obj C to make patches was a big learning curve.

I still think there could be some really nice compositional advantages in having a basic set of nodes that work on lists in interesting ways and being about to send these functions as lambdas to each other could solve /enhance a lot of the feature requests for nodes that can take lists, lists of lists, and a bunch of the structure manipulation FR around dictionaries and so on.

Can C structs take functions references (lambdas) as values? I guess if not directly, Vuo could code VuoGenericType2 that accepts a function reference from other special nodes with λ output ports jut using a special string or unique to Vuo lambda type reference.

Map is a the generalised function (commonly used JS function and in many other languages because it's such a ubiquitous pattern) that covers the Apply to 3D Object node case. Filter and Sort are others that take specific function inputs to help define their functionality. A set of nodes like this would be quite powerful in Vuo I think and cover a wide range of Yrs for specific nodes, even for people who can code their own nodes.

Please take a look at my FR for Documentation of data types in Vuo and how all work together, common patterns/chains of these datatypes to produce visuals. Be great if you could help put together the buildings blocks, I'm happy to do the graphic design on the diagrams and so on when I understand the relationships. Perhaps we could also look at how general purpose functional nodes like Map, Filter, Sort, Zip, Unzip, Fold, etc etc could be applied to each of these types and how much use that might be.