Skip to content

Commit f4890a5

Browse files
committed
docs: documente features
1 parent 9f1b507 commit f4890a5

File tree

3 files changed

+97
-3
lines changed

3 files changed

+97
-3
lines changed

.claude/skills/rustmotion/SKILL.md

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,31 @@ These go inside `"style"`:
111111
| `opacity` | f32 | `1.0` | 0.0 to 1.0 |
112112
| `padding` | f32 or {top,right,bottom,left} | `null` | Inner spacing |
113113
| `margin` | f32 or {top,right,bottom,left} | `null` | Outer spacing |
114+
| `glow` | object | `null` | Luminous halo effect around the component |
115+
116+
#### Glow Effect
117+
118+
Adds a soft luminous halo around any component (text, shape, icon, etc.):
119+
120+
```json
121+
{
122+
"style": {
123+
"glow": {
124+
"color": "#5C39EE",
125+
"radius": 20,
126+
"intensity": 2.0
127+
}
128+
}
129+
}
130+
```
131+
132+
| Field | Type | Default | Description |
133+
| --- | --- | --- | --- |
134+
| `color` | string | `"#FFFFFF"` | Glow color (hex `#RRGGBB` or `#RRGGBBAA`) |
135+
| `radius` | f32 | `10.0` | Blur radius of the glow |
136+
| `intensity` | f32 | `1.0` | Brightness multiplier (higher = brighter glow) |
137+
138+
The glow renders as a pre-pass behind the component, so the content remains crisp and readable.
114139

115140
### 1. `text`
116141

@@ -587,11 +612,26 @@ Use `"preset"` instead of manual keyframes:
587612
```json
588613
{
589614
"wiggle": [
590-
{ "property": "translate_x", "amplitude": 5, "frequency": 3, "seed": 42 }
615+
{ "property": "translate_x", "amplitude": 5, "frequency": 3, "seed": 42 },
616+
{ "property": "rotation", "amplitude": 8, "frequency": 4, "seed": 13, "decay": 0.6 }
591617
]
592618
}
593619
```
594620

621+
| Field | Type | Default | Description |
622+
| --- | --- | --- | --- |
623+
| `property` | string | required | Property to wiggle (same as animatable properties) |
624+
| `amplitude` | f64 | required | Maximum deviation |
625+
| `frequency` | f64 | required | Oscillations per second |
626+
| `seed` | u64 | `0` | Random seed for reproducible results |
627+
| `octaves` | u32 | `3` | Noise complexity (more octaves = more detail) |
628+
| `phase` | f64 | `0.0` | Phase offset (shifts the noise pattern in time) |
629+
| `decay` | f64 | `null` | Exponential decay rate (amplitude diminishes over time) |
630+
| `easing` | string | `null` | Remap noise through an easing curve |
631+
632+
Wiggle offsets are applied **additively** on top of keyframe animations and presets.
633+
```
634+
595635
---
596636
597637
## Minimal Complete Example

README.md

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -987,7 +987,7 @@ Wiggle adds procedural noise-based motion to any animatable property. Unlike key
987987
"content": "Wobbly",
988988
"wiggle": [
989989
{ "property": "position.x", "amplitude": 5.0, "frequency": 3.0, "seed": 42 },
990-
{ "property": "rotation", "amplitude": 2.0, "frequency": 2.0, "seed": 99 }
990+
{ "property": "rotation", "amplitude": 2.0, "frequency": 2.0, "seed": 99, "decay": 0.5 }
991991
]
992992
}
993993
```
@@ -998,6 +998,10 @@ Wiggle adds procedural noise-based motion to any animatable property. Unlike key
998998
| `amplitude` | `f64` | (required) | Maximum deviation (pixels for position, degrees for rotation, etc.) |
999999
| `frequency` | `f64` | (required) | Oscillations per second |
10001000
| `seed` | `u64` | `0` | Random seed for reproducible results |
1001+
| `octaves` | `u32` | `3` | Noise complexity (more octaves = more organic detail) |
1002+
| `phase` | `f64` | `0.0` | Phase offset (shifts the noise pattern in time) |
1003+
| `decay` | `f64` | | Exponential decay rate (amplitude diminishes over time) |
1004+
| `easing` | `string` | | Remap noise output through an easing curve |
10011005

10021006
Wiggle offsets are applied **additively** on top of keyframe animations and presets.
10031007

@@ -1047,6 +1051,36 @@ The renderer samples 5 sub-frames around the current time, each with proportiona
10471051

10481052
---
10491053

1054+
## Glow Effect
1055+
1056+
Adds a soft luminous halo around any component (text, shapes, icons, etc.). The glow renders as a pre-pass behind the component, keeping the content crisp and readable.
1057+
1058+
```json
1059+
{
1060+
"type": "text",
1061+
"content": "NEON",
1062+
"position": { "x": 540, "y": 400 },
1063+
"font_size": 72,
1064+
"color": "#ff00ff",
1065+
"font_weight": "bold",
1066+
"glow": {
1067+
"color": "#ff00ff",
1068+
"radius": 20,
1069+
"intensity": 2.5
1070+
}
1071+
}
1072+
```
1073+
1074+
| Field | Type | Default | Description |
1075+
|---|---|---|---|
1076+
| `glow.color` | `string` | `"#FFFFFF"` | Glow color (hex `#RRGGBB` or `#RRGGBBAA`) |
1077+
| `glow.radius` | `f32` | `10.0` | Blur radius of the glow |
1078+
| `glow.intensity` | `f32` | `1.0` | Brightness multiplier (higher = brighter, more visible glow) |
1079+
1080+
Works on all component types: `text`, `shape`, `icon`, `image`, `svg`, `card`, etc.
1081+
1082+
---
1083+
10501084
## Freeze Frame
10511085

10521086
Freeze a scene at a specific point in time. All frames after `freeze_at` render the frozen state (animations stop, layers stay in place):

prompts/gemini.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,14 @@ Tu es un générateur de scénarios vidéo **rustmotion**. Tu produis uniquement
2020

2121
## Types de layers
2222

23-
Chaque layer a un champ `"type"` discriminant. Champs optionnels communs : `opacity` (0-1, défaut 1), `preset`, `preset_config`, `start_at`, `end_at`, `animations`, `wiggle`, `padding` (f32 ou {top,right,bottom,left}), `margin` (f32 ou {top,right,bottom,left}).
23+
Chaque layer a un champ `"type"` discriminant. Champs optionnels communs : `opacity` (0-1, défaut 1), `preset`, `preset_config`, `start_at`, `end_at`, `animations`, `wiggle`, `glow`, `padding` (f32 ou {top,right,bottom,left}), `margin` (f32 ou {top,right,bottom,left}).
24+
25+
### `glow` (effet de halo lumineux)
26+
Applicable à tout composant. Rendu en pré-passe derrière le contenu (le texte/shape reste net).
27+
```json
28+
"glow": { "color": "#5C39EE", "radius": 20, "intensity": 2.0 }
29+
```
30+
`color` (défaut "#FFFFFF"), `radius` (défaut 10.0), `intensity` (défaut 1.0, multiplicateur de luminosité)
2431

2532
### `text`
2633
`content` (requis), `position` {x,y}, `font_size` (défaut 24), `color` (défaut "#FFFFFF"), `font_family` (défaut "Arial"), `font_weight` ("normal"|"bold"|"light"), `align` ("left"|"center"|"right"), `max_width`, `line_height`, `letter_spacing`
@@ -98,6 +105,19 @@ fade, wipe_left, wipe_right, wipe_up, wipe_down, zoom_in, zoom_out, flip, clock_
98105
}
99106
```
100107

108+
## Wiggle (bruit procédural)
109+
110+
Mouvement organique continu basé sur du bruit. Appliqué additivement par-dessus les animations/presets.
111+
112+
```json
113+
"wiggle": [
114+
{ "property": "rotation", "amplitude": 8, "frequency": 4, "seed": 13 },
115+
{ "property": "position.x", "amplitude": 5, "frequency": 3, "seed": 42, "decay": 0.5 }
116+
]
117+
```
118+
119+
`property` (requis), `amplitude` (requis), `frequency` (requis), `seed` (défaut 0), `octaves` (défaut 3, complexité du bruit), `phase` (décalage temporel), `decay` (atténuation exponentielle), `easing` (remapper le bruit via une courbe d'easing)
120+
101121
## Contraintes
102122

103123
- `width` et `height` doivent être **pairs** (H.264)

0 commit comments

Comments
 (0)