|
|
On 11/6/24 13:26, Bald Eagle wrote:
> How many Voronoi "seeds" are there in the unit cube before you reach the "edge"
> and there is a repeat? Is that / can that be a variable?
The is one seed point per unit cubelet. To do the repeat the overall
5x5x5 cube gets re-created as the evaluation point moves to another
centered global cubelet location (tracked with unsigned integers in yuqk).
A trick of the repeat is to wrap in both in the forward direction as
each x,y,z change - but also behind so the local 'center' see an
environment valid for the range of supported distances(*).
(*) In yuqk the ip_strength vector lets you use >1.0 vector components
and exceed the technically supported distances. Same can happen if the
ip_exponent of the '0' / power ip_metric is <1.0. You still get a result
usable for effect, but it doesn't look like a standard crackle / Voronoi
result.
The repeat values are user variables.
The size of the supported cache for cubes of cubelets environments is
done with build options / environment variables.
To date the max size of the cuble for experimentation is manually hacked
into the code - I'm not sure what all I might be doing there in the end.
>
> What are you doing at the edges/corners to make a space-filling tesselation by
> that "unit cube" of Voronoi pattern? Essentially just a mod (<x, y, z>, N)?
Yes, fmod() (SDL's mod()) gets used to set up both the cubelet locations
and the repeated cubelets.
With this I think the code is the best answer. In my re-write, I
flattened the code so there is little (no?) jumping around in the
overall code base required to see what is going on. Last time I counted,
yuqk's crackle was roughly 400 lines of code or so. See:
CracklePattern::EvaluateRaw() in source/core/material/pattern.cpp
Bill P.
Post a reply to this message
|
|