M9.13: Particle Playground Particle Exploder, Ephemeral Property Mapper, Affects, text and layer particles
- Particle Exploder, Ephemeral Property Mapper (operators), Affects groups on every producer / force / mapper (source, selection map, characters, age + feather). - Full mapper target list (angle, torque, scale, gradient velocity/force, lifespan, character, font size, time offset, scale speed...); old saves remap by label. - Cannon / Grid text particles (stroke font), Auto-Orient Rotation, Layer Map draws the map layer per particle with Time Offset Type / Time Offset. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
0ed5c87b94
commit
ba5e2061fe
|
|
@ -37,7 +37,6 @@ pub const PARTIAL: &[(&str, &str)] = &[
|
|||
("ec.vr.converter", "common layouts only"),
|
||||
("ec.sim.caustics", "no Sky group or light type"),
|
||||
("ec.sim.foam", "no wobble, pop velocity, custom bubble texture, environment map or flow map"),
|
||||
("ec.sim.particleplayground", "no Particle Exploder, Ephemeral Property Mapper, Affects groups or text particles"),
|
||||
("ec.sim.waveworld", "no wireframe controls, dry-area rendering or ground group"),
|
||||
("ec.stylize.glow", "no Glow Operation or arbitrary colour map"),
|
||||
("ec.stylize.cartoon", "no Edge Enhancement"),
|
||||
|
|
|
|||
|
|
@ -593,6 +593,10 @@ pub const PARAM_GROUPS: &[(&str, &str)] = &[
|
|||
("repel", "Repel"),
|
||||
("wall", "Wall"),
|
||||
("persistentPropertyMapper", "Persistent Property Mapper"),
|
||||
("ephemeralPropertyMapper", "Ephemeral Property Mapper"),
|
||||
("particleExploder", "Particle Exploder"),
|
||||
("affects", "Affects"),
|
||||
("options", "Options"),
|
||||
// Keying, Matte, Obsolete (Key Light's groups are in `keylight::GROUPS`).
|
||||
("ultraSettings", "Ultra Settings"),
|
||||
("fillAndStroke", "Fill and Stroke"),
|
||||
|
|
|
|||
|
|
@ -402,4 +402,21 @@ mod tests {
|
|||
assert_eq!(g.get("backSelf").unwrap().value, Value::Bool(self_));
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn particle_playground_mapper_targets_remap_by_label() {
|
||||
let spec = find("ec.sim.particleplayground").unwrap();
|
||||
let mut next = 1;
|
||||
let mut g = instantiate(spec, &mut Ids(&mut next), "Particle Playground", [100.0, 50.0]);
|
||||
let old: Vec<String> =
|
||||
["None", "Red", "Green", "Blue", "Kinetic Friction", "Scale", "X", "Y", "X Speed", "Y Speed", "X Force", "Y Force", "Opacity", "Mass"]
|
||||
.iter()
|
||||
.map(|s| s.to_string())
|
||||
.collect();
|
||||
let pr = prop_at(&mut g, "persistentPropertyMapper/mapRedTo").unwrap();
|
||||
pr.ui = ParamUi::Popup { options: old };
|
||||
pr.value = Value::Enum(8);
|
||||
assert!(upgrade_instance(spec, &mut g, &mut Ids(&mut next), [100.0, 50.0]));
|
||||
assert_eq!(prop_at(&mut g, "persistentPropertyMapper/mapRedTo").unwrap().value, Value::Enum(15), "X Speed");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -94,6 +94,11 @@ fn glyph_src(c: char) -> &'static str {
|
|||
}
|
||||
}
|
||||
|
||||
/// A glyph's strokes on the 4 × 6 grid (Particle Playground's text particles).
|
||||
pub(crate) fn glyph_strokes(c: char) -> Vec<Vec<[f64; 2]>> {
|
||||
parse_glyph(c)
|
||||
}
|
||||
|
||||
fn parse_glyph(c: char) -> Vec<Vec<[f64; 2]>> {
|
||||
glyph_src(c)
|
||||
.split(';')
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
<!-- Generated from the effect registry (crates/effects/src/catalog.rs); do not edit by hand.
|
||||
Regenerate: UPDATE_DOCS=1 cargo test -p effectcraft-effects --lib effects_doc_is_current -->
|
||||
|
||||
EffectCraft ships 303 effects with 2647 parameters in total, grouped into the same categories as the Effects & Presets panel. Every effect is our own implementation, written from public behaviour descriptions and standard image-processing literature. Parameter names, order, popup options, units, defaults and ranges follow the reference application so that projects, expressions and muscle memory carry over.
|
||||
EffectCraft ships 303 effects with 2702 parameters in total, grouped into the same categories as the Effects & Presets panel. Every effect is our own implementation, written from public behaviour descriptions and standard image-processing literature. Parameter names, order, popup options, units, defaults and ranges follow the reference application so that projects, expressions and muscle memory carry over.
|
||||
|
||||
- **GPU**: 24 effects also run on the GPU compositor with identical results.
|
||||
- **32**: 303 effects process 32-bit float (HDR, overbright) pixels without clamping.
|
||||
- **Status**: 269 implemented in full, 34 partial (what is missing is listed).
|
||||
- **Status**: 270 implemented in full, 33 partial (what is missing is listed).
|
||||
|
||||
Effects are addressed by id (`ec.<category>.<name>`) or display name in commands, scripts and the control channel, and every parameter by its id (`effects/#1/blurriness`).
|
||||
|
||||
|
|
@ -331,7 +331,7 @@ Effects are addressed by id (`ec.<category>.<name>`) or display name in commands
|
|||
| Card Dance | `ec.sim.carddance` | 53 | | 32 | Implemented |
|
||||
| Caustics | `ec.sim.caustics` | 21 | | 32 | Partial: no Sky group or light type |
|
||||
| Foam | `ec.sim.foam` | 24 | | 32 | Partial: no wobble, pop velocity, custom bubble texture, environment map or flow map |
|
||||
| Particle Playground | `ec.sim.particleplayground` | 37 | | 32 | Partial: no Particle Exploder, Ephemeral Property Mapper, Affects groups or text particles |
|
||||
| Particle Playground | `ec.sim.particleplayground` | 92 | | 32 | Implemented |
|
||||
| Shatter | `ec.sim.shatter` | 60 | | 32 | Implemented |
|
||||
| Wave World | `ec.sim.waveworld` | 27 | | 32 | Partial: no wireframe controls, dry-area rendering or ground group |
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue