Thursday, 5 June 2025

Open Casket - animating water ripples

I'm sure I could come up with some really edgy double entendre, but my brain is too frazzled... I've been working on the digital component of "Open Casket" - essentially a very simple 2d water simulation of drops sending ripples, reflecting off the edges of the impression. 

After a bit of Googling around, I found a very simple simulation that basically said that for each step, the height of the water in a 'cell' at a point x,y, is the combination of the heights in the left/right/top/bottom cells. I mentioned this in my last post on Open Casket, and suggested it was too simple to work with non-rectilinear containers. My assumption was that given the way it was presented [basically as if it was a 'hack'], it must be something someone had just come up with messing around. I did implement it, but it gave ugly results, so I went to look for a 'real' implementation.

After more research, I discovered that the type of simulation I'm after is typically referred to as height-field water. Essentially the water is modelled as a height-field, which allows ripples etc, but doesn't allow splash or tearing, since the water can only have one height at a given point. What was more interesting was that I saw the same implementation [more or less], but this time with a full explanation of the logic behind it. It actually transpires to be a real physics based implementation, albeit a very simplified one! 

Essentially it is based on the fact that the force acting on a column element in the grid is proportional to its height relative to its neighbours. The velocity of the water interface can therefore be derived from that, and from there, the height at each point, for any given time. In other words, the taller any point is above its neighbours, the more it accelerates downward, and vice versa.

Buoyed up by this discovery [I love a good pun, you know that], I re-implemented the code. After a bunch of cock-ups because I forgot that I was reading the same array of heights as I was writing too, I got to something fairly well-behaved. Nevertheless, the ripples were still a bit weird and square, but I realised this is because I was perturbing a single element to initiate the ripple, so I wrote code to perturb a circular patch instead - essentially make a small bulge. This gave much nicer ripples.

Finally I have implemented code to add obstacles to the grid - basically to allow me to draw regions that are 'not water'. These are held fixed at zero height, which is probably a nasty hack, but seems to give good ripple reflections anyhow.

There's not a lot to see, but please notice and appreciate the ripples coming off the blue blob, especially how they are distorted by the non-straight edge. Yeah, this is how I get my thrills.

Next step is probably to find a nicer way to render the surface - it's currently based directly on height, but that gives some 'meh' results, especially the white 'blips' which each bulge is initialised. Ideally I'd render it as something closer to reflection and caustics. I need to decide if I want to do that by hand [I have code I created before that could potentially do it] or whether I just export to Blender using Openvdb Volumes and render there with full ray traced sexiness.... 

I also need to consider if I need to make each drop a double perturbation to simulate tearing at that point - basically ripples from a drop spread in a series of ripples because the initial splash goes up, tears, and comes down as a second drop a few moments later, which in turn may throw up a third drop that comes down to make a third ripple... And so on... Kinda fiddly to code as I'd have to track all the drop positions and add the second/third perturbations a few simulation steps later... Right now that sounds too painful for the benefit [relative to things like nicing up the rendering] but we'll see how I feel later [plus I only have 3 weeks left... Eeeek!]

Wednesday, 4 June 2025

Do you like it wet or dry? Conceptual art that is...

A residency announcement in Art Forum caught my eye this morning - not for the residency itself - that's a distant dream - but for the fact that it referenced 'wet conceptualism'! I wondered if it was a 'thing' so I Googled it, and indeed it is! I was motivated to read a very interesting article by Gary Ryan in CultBytes called "Interview with Warren Neidich About Wet Conceptualism"

Warren is the inventor of the term, and is championing the idea that conceptual art comes in two varieties - the conventional 'dry' variety, but also the less recognised 'wet' variety. The 'dry' being like 'dry humour' - abstracted, pared down, uninterested in the aesthetic, understated. The 'wet' being conceptual art that deals with more human and personal experiences, political positions etc. A nice example given being “Semiotics of the Kitchen” by Martha Rosler.

Given that I often refer to my work as 'concept-led', I was wondering how this distinction might apply. I'm not sure... But I find the tension between the more universal experiences and understated dry vs the more human, personal, wet, immediately familiar. I wonder if Tomgos makes 'dry' conceptual art and Tathos makes 'wet'? I my head, Tathos is laughing gleefully at the term 'wet', and is very clearly drawn that way...

I'm also wondering about Postmodernism vs Metamodernism - I managed to miss the talk the first time, and I am about to miss it again, but it feels like 'dry' conceptualism is quite postmodern, whereas 'wet' conceptualism might be more metamodern?

The other aspect of the article that drew my interest was the discussion of the indexical and non-material nature of conceptual art. It's again something I have also reflected on - is the object just the indexical mark of the 'art'? Ironically Warren relates the shift to 'wet' conceptualim as reflecting a shift from ford-ian physical labour with physical products, to post-ford-ian mental labour, with intangible results. I need to reflect more on that [right now my brain is just screaming about the PhD selection day tomorrow] but it feels funny and relevant given my previous work, and my potential future work...

Sunday, 1 June 2025

Open Casket - experiment painting the impression with a dark wash

 Dedicated readers will recall that I made a pact never to paint natural materials, and that I regularly break that pact, with varying degrees of regret. I'm concerned that the contrast between the impression and the surrounding material isn't clear enough, and that it's therefore hard to see the shape, leading it to look distorted. I therefore experimented with painting one of my prototypes in a mixture of diluted PVA and black poster paint. The aim was to see how the plaster took the paint, but also to see how it looked when it was then covered by the planned layer of PVA-soaked fabric.

The 'point' of the picture above is that the painted areas do show through the fabric above, but do so in a subtle way. Broadly the fabric looks darker in those areas, but not in a way that screams that it has been painted.

I therefore decided to be 'brave' and paint the whole impression:

I actually think it looks way more interesting now! Clearly it's a bit 'over-cooked' but that's deliberate as it will be much more subtle when it's covered in the final layer. I am half tempted not to apply the final layer, but I think it will make the overall finish better, and it will also cover the annoying strip of exposed foam on the bottom left. That said, I feel like I might push the final layer a lot closer to the plaster layer, so it better mimics the shape, and I might actually paint the final fabric layer, albeit much more subtly... I think I need to do some experiments with a wet sheet before I commit - in particular I wonder if I want to have folds in particular areas, or to avoid folds at all. Folds in different areas might have different connotations - folds in the surround but not the impression might evoke the way luxury items are packaged in a silk lined case, whereas folds on the impression but not the surround might evoke the sense of a body removed abruptly. I suspect I'll end-up going with no folds, or rather, minimal folds.

I also made a start on the digital component. I found a very simple algorithm online to produce ripple patterns. It appears to work by making each pixel equal to the average of it's neighbours from the previous frame. However, it only considers pixels above/below/left/right (I'm sure there's a name for that, but I can't think what it is (apparently there is not, there's a whole reddit of people arguing about it with 'bordering' being a strong contender)), which means that I don't think it will handle reflections correctly from an irregular border since it can't 'see' pixels that are not rectalinear. I'm going to do some experiments and see - it might be that it's not 'correct' but it looks good enough anyhow...