Page MenuHome

Ocean modifier : expose eigenvectors for use as maps
Needs ReviewPublic

Authored by Phil Stopford (philstopford) on Thu, Mar 19, 6:17 PM.

Details

Summary

The eigenvectors in the ocean modifier (plus and minus) can be useful, but are not exposed. Assuming the particle system was capable, for example, the eigenvectors could be used to drive spray emission velocities.

This patch exposes the controls to allow maps to be generated from these eigenvectors. Currently, the values are mapped into a 0-255 range similar to foam.

The names are technical in nature since the terminology is generally understood, but if alternative names are deemed necessary, this is a simple enough change.

Diff Detail

Repository
rB Blender

Event Timeline

I don't think this is generally understood unless you're both familiar with the algorithm and the concept of eigenvalues, which most users wouldn't be.

There does not appear to be a description of what this is the eigenvalue of. It's like saying it's the sum, but not mentioning what you're summing.

As far as I know "eigen plus" and "eigen minus" is not standard math terminology either.

If a velocity can be extracted from this (and potentially some other useful quantities), why not output those directly?

Python indentation reverted prior to diff being generated. Fixed.

Here's an overview video showing why the terminology is open to debate. The eigenvalues come from the mathematical representation and the minus and plus are essentially complementary. I can't really think of a good general name for this, though, in terms of what it represents. It could be labelled, I guess, as spray veolocity, but there's no spray as such without a particle system, so I am uncertain. The underlying equation is a combination of wave folding and collision.

These are vectors so they can't be eigenvalues, which are scalars. I guess these are eigenvectors, which have unit length and are orthogonal to each other?

From the images, to me this look a lot like principal curvature, with these vectors being the principal directions?

Maybe "Wave Direction" could be a good name, and the other might be "Wave Tangent". I'm not sure you even separate values for both, since they seem to be orthogonal.

Phil Stopford (philstopford) retitled this revision from Ocean modifier : expose eigenvalue maps for use to Ocean modifier : expose eigenvectors for use as maps.Thu, Mar 19, 10:07 PM
Phil Stopford (philstopford) edited the summary of this revision. (Show Details)

Apologies for the confusion; I was thinking at the individual X->R, Y->G, Z->B level, not as the whole 'vector' - too close to the tree to see the forest. I've tweaked the description to better describe things. I'm very open to whatever label is appropriate and clear. I can live with curvature, but there is an aspect of rate of change to this as well so it might need to be indicated that this is also a rate of change / velocity.

What about 'tension'? Does that perhaps work better?

Later thought : the plus is kind of a 'peak spray data layer map' and the complementary might be something of a 'trough spray data layer map'

Just wondered whether any of those suggested labels might be appropriate.

I think "tension" is usually a scalar. I would go or something simple like "spray direction", and not have the orthogonal direction as its own map, it's easy to compute for someone who's enough of an advanced user to need it, we have nodes that make it easier to rotate vectors 90°.

These UI names are also too long for no good reason, already for foam. I would imagine something simpler like this:

[X] Foam Map              [<name text field>]
                          [Coverage: <value>]
[X] Spray Direction Map   [<name text field>]

Ideally the name text field would also use the vertex color icon with auto completion, similar to the way e.g. dynamic paint output works.

Simplifying UI per feedback.