Command · vfx
vfx.text.apply
Apply typed effect text as reversible graph ops.
scope edit:scenenot idempotentnon-destructive
Params
Typed as VfxTextParams. Fields marked * are required.
source*
stringCanonical ID-free effect JSON.
required
Examples
JSON (MCP ara_apply, batches)
{
"cmd": "vfx.text.apply",
"args": {
"source": "{\n \"name\": \"campfire\",\n \"seed\": 17,\n \"hz\": 60,\n \"quality\": {\n \"particles\": 1000000,\n \"overdraw\": 16,\n \"lights\": 8,\n \"events\": 4096\n },\n \"emitters\": [\n {\n \"name\": \"flame\",\n \"capacity\": 512,\n \"bounds\": {\n \"min\": [-8, -2, -8],\n \"max\": [8, 12, 8]\n },\n \"stacks\": {\n \"spawn\": [\n {\n \"name\": \"rate\",\n \"module\": {\n \"op\": \"rate\",\n \"per_second\": 80\n }\n }\n ],\n \"initialize\": [\n {\n \"name\": \"lifetime\",\n \"module\": {\n \"op\": \"lifetime\",\n \"seconds\": 0.85,\n \"size\": 0.3,\n \"color\": [5, 0.6, 0.03, 0.5]\n }\n },\n {\n \"name\": \"hearth\",\n \"module\": {\n \"op\": \"sphere\",\n \"center\": [0, 0.12, 0],\n \"radius\": 0.2\n }\n },\n {\n \"name\": \"rise\",\n \"module\": {\n \"op\": \"velocity\",\n \"value\": [0, 0.95, 0],\n \"spread\": [0.12, 0.2, 0.12]\n }\n }\n ],\n \"update\": [\n {\n \"name\": \"curl\",\n \"module\": {\n \"op\": \"curl_noise\",\n \"frequency\": 3,\n \"strength\": 0.55\n }\n },\n {\n \"name\": \"drag\",\n \"module\": {\n \"op\": \"drag\",\n \"coefficient\": 0.6\n }\n },\n {\n \"name\": \"fade\",\n \"module\": {\n \"op\": \"color_over_life\",\n \"keys\": [\n {\n \"t\": 0,\n \"value\": [4, 1.6, 0.35, 0]\n },\n {\n \"t\": 0.1,\n \"value\": [4, 1.5, 0.25, 0.75]\n },\n {\n \"t\": 0.55,\n \"value\": [2.6, 0.65, 0.06, 0.5]\n },\n {\n \"t\": 1,\n \"value\": [0.4, 0.04, 0, 0]\n }\n ]\n }\n },\n {\n \"name\": \"shrink\",\n \"module\": {\n \"op\": \"size_over_life\",\n \"keys\": [\n {\n \"t\": 0,\n \"value\": 0.24\n },\n {\n \"t\": 0.35,\n \"value\": 0.34\n },\n {\n \"t\": 1,\n \"value\": 0.08\n }\n ]\n }\n }\n ],\n \"render\": [\n {\n \"name\": \"sprite\",\n \"module\": {\n \"op\": \"sprite\",\n \"domain\": \"unlit\",\n \"soft_distance\": 0.15,\n \"sorting\": \"none\"\n }\n },\n {\n \"name\": \"appearance\",\n \"module\": {\n \"op\": \"appearance\",\n \"texture\": \"fire\",\n \"blend\": \"additive\",\n \"alignment\": \"camera\",\n \"stretch\": 1,\n \"shutter\": 0\n }\n },\n {\n \"name\": \"flipbook\",\n \"module\": {\n \"op\": \"flipbook\",\n \"grid\": [4, 4],\n \"fps\": 16\n }\n },\n {\n \"name\": \"hearth_light\",\n \"module\": {\n \"op\": \"light\",\n \"color\": [1, 0.32, 0.055],\n \"lumens\": 900,\n \"radius\": 6\n }\n }\n ]\n }\n },\n {\n \"name\": \"smoke\",\n \"capacity\": 2048,\n \"bounds\": {\n \"min\": [-8, -2, -8],\n \"max\": [8, 12, 8]\n },\n \"stacks\": {\n \"spawn\": [\n {\n \"name\": \"rate\",\n \"module\": {\n \"op\": \"rate\",\n \"per_second\": 12\n }\n }\n ],\n \"initialize\": [\n {\n \"name\": \"lifetime\",\n \"module\": {\n \"op\": \"lifetime\",\n \"seconds\": 4.5,\n \"size\": 0.45,\n \"color\": [0.2, 0.23, 0.28, 0.14]\n }\n },\n {\n \"name\": \"source\",\n \"module\": {\n \"op\": \"cone\",\n \"origin\": [0, 0.55, 0],\n \"height\": 0.2,\n \"radius\": 0.12\n }\n },\n {\n \"name\": \"rise\",\n \"module\": {\n \"op\": \"velocity\",\n \"value\": [0, 0.55, 0],\n \"spread\": [0.12, 0.15, 0.12]\n }\n }\n ],\n \"update\": [\n {\n \"name\": \"curl\",\n \"module\": {\n \"op\": \"curl_noise\",\n \"frequency\": 1.2,\n \"strength\": 0.35\n }\n },\n {\n \"name\": \"grow\",\n \"module\": {\n \"op\": \"size_over_life\",\n \"keys\": [\n {\n \"t\": 0,\n \"value\": 0.25\n },\n {\n \"t\": 1,\n \"value\": 1\n }\n ]\n }\n },\n {\n \"name\": \"fade\",\n \"module\": {\n \"op\": \"color_over_life\",\n \"keys\": [\n {\n \"t\": 0,\n \"value\": [0.1, 0.095, 0.09, 0]\n },\n {\n \"t\": 0.15,\n \"value\": [0.12, 0.115, 0.11, 0.2]\n },\n {\n \"t\": 0.6,\n \"value\": [0.16, 0.16, 0.16, 0.11]\n },\n {\n \"t\": 1,\n \"value\": [0.2, 0.2, 0.2, 0]\n }\n ]\n }\n }\n ],\n \"render\": [\n {\n \"name\": \"sprite\",\n \"module\": {\n \"op\": \"sprite\",\n \"domain\": \"surface\",\n \"soft_distance\": 0.3,\n \"sorting\": \"depth\"\n }\n },\n {\n \"name\": \"appearance\",\n \"module\": {\n \"op\": \"appearance\",\n \"texture\": \"smoke\",\n \"blend\": \"alpha\",\n \"alignment\": \"camera\",\n \"stretch\": 1,\n \"shutter\": 0\n }\n },\n {\n \"name\": \"flipbook\",\n \"module\": {\n \"op\": \"flipbook\",\n \"grid\": [4, 4],\n \"fps\": 16\n }\n }\n ]\n }\n },\n {\n \"name\": \"embers\",\n \"capacity\": 4096,\n \"bounds\": {\n \"min\": [-8, -2, -8],\n \"max\": [8, 12, 8]\n },\n \"stacks\": {\n \"spawn\": [\n {\n \"name\": \"rate\",\n \"module\": {\n \"op\": \"rate\",\n \"per_second\": 12\n }\n }\n ],\n \"initialize\": [\n {\n \"name\": \"lifetime\",\n \"module\": {\n \"op\": \"lifetime\",\n \"seconds\": 2,\n \"size\": 0.012,\n \"color\": [14, 4.5, 0.7, 0.85]\n }\n },\n {\n \"name\": \"source\",\n \"module\": {\n \"op\": \"point\",\n \"position\": [0, 0.7, 0]\n }\n },\n {\n \"name\": \"spray\",\n \"module\": {\n \"op\": \"velocity\",\n \"value\": [0, 2, 0],\n \"spread\": [0.4, 0.7, 0.4]\n }\n }\n ],\n \"update\": [\n {\n \"name\": \"gravity\",\n \"module\": {\n \"op\": \"gravity\",\n \"acceleration\": [0, -9.81, 0]\n }\n },\n {\n \"name\": \"floor\",\n \"module\": {\n \"op\": \"plane_collision\",\n \"normal\": [0, 1, 0],\n \"offset\": 0,\n \"restitution\": 0.6\n }\n },\n {\n \"name\": \"cool\",\n \"module\": {\n \"op\": \"color_over_life\",\n \"keys\": [\n {\n \"t\": 0,\n \"value\": [18, 8, 2, 1]\n },\n {\n \"t\": 0.5,\n \"value\": [9, 1.8, 0.1, 0.8]\n },\n {\n \"t\": 1,\n \"value\": [1, 0.05, 0, 0]\n }\n ]\n }\n }\n ],\n \"render\": [\n {\n \"name\": \"sprite\",\n \"module\": {\n \"op\": \"sprite\",\n \"domain\": \"unlit\",\n \"soft_distance\": 0.15,\n \"sorting\": \"none\"\n }\n },\n {\n \"name\": \"appearance\",\n \"module\": {\n \"op\": \"appearance\",\n \"texture\": \"spark\",\n \"blend\": \"additive\",\n \"alignment\": \"velocity\",\n \"stretch\": 3,\n \"shutter\": 0.85\n }\n },\n {\n \"name\": \"flipbook\",\n \"module\": {\n \"op\": \"flipbook\",\n \"grid\": [4, 4],\n \"fps\": 16\n }\n }\n ]\n }\n }\n ]\n}\n"
}
}CLI
ara do vfx.text.apply --args '{"source":"{\n \"name\": \"campfire\",\n \"seed\": 17,\n \"hz\": 60,\n \"quality\": {\n \"particles\": 1000000,\n \"overdraw\": 16,\n \"lights\": 8,\n \"events\": 4096\n },\n \"emitters\": [\n {\n \"name\": \"flame\",\n \"capacity\": 512,\n \"bounds\": {\n \"min\": [-8, -2, -8],\n \"max\": [8, 12, 8]\n },\n \"stacks\": {\n \"spawn\": [\n {\n \"name\": \"rate\",\n \"module\": {\n \"op\": \"rate\",\n \"per_second\": 80\n }\n }\n ],\n \"initialize\": [\n {\n \"name\": \"lifetime\",\n \"module\": {\n \"op\": \"lifetime\",\n \"seconds\": 0.85,\n \"size\": 0.3,\n \"color\": [5, 0.6, 0.03, 0.5]\n }\n },\n {\n \"name\": \"hearth\",\n \"module\": {\n \"op\": \"sphere\",\n \"center\": [0, 0.12, 0],\n \"radius\": 0.2\n }\n },\n {\n \"name\": \"rise\",\n \"module\": {\n \"op\": \"velocity\",\n \"value\": [0, 0.95, 0],\n \"spread\": [0.12, 0.2, 0.12]\n }\n }\n ],\n \"update\": [\n {\n \"name\": \"curl\",\n \"module\": {\n \"op\": \"curl_noise\",\n \"frequency\": 3,\n \"strength\": 0.55\n }\n },\n {\n \"name\": \"drag\",\n \"module\": {\n \"op\": \"drag\",\n \"coefficient\": 0.6\n }\n },\n {\n \"name\": \"fade\",\n \"module\": {\n \"op\": \"color_over_life\",\n \"keys\": [\n {\n \"t\": 0,\n \"value\": [4, 1.6, 0.35, 0]\n },\n {\n \"t\": 0.1,\n \"value\": [4, 1.5, 0.25, 0.75]\n },\n {\n \"t\": 0.55,\n \"value\": [2.6, 0.65, 0.06, 0.5]\n },\n {\n \"t\": 1,\n \"value\": [0.4, 0.04, 0, 0]\n }\n ]\n }\n },\n {\n \"name\": \"shrink\",\n \"module\": {\n \"op\": \"size_over_life\",\n \"keys\": [\n {\n \"t\": 0,\n \"value\": 0.24\n },\n {\n \"t\": 0.35,\n \"value\": 0.34\n },\n {\n \"t\": 1,\n \"value\": 0.08\n }\n ]\n }\n }\n ],\n \"render\": [\n {\n \"name\": \"sprite\",\n \"module\": {\n \"op\": \"sprite\",\n \"domain\": \"unlit\",\n \"soft_distance\": 0.15,\n \"sorting\": \"none\"\n }\n },\n {\n \"name\": \"appearance\",\n \"module\": {\n \"op\": \"appearance\",\n \"texture\": \"fire\",\n \"blend\": \"additive\",\n \"alignment\": \"camera\",\n \"stretch\": 1,\n \"shutter\": 0\n }\n },\n {\n \"name\": \"flipbook\",\n \"module\": {\n \"op\": \"flipbook\",\n \"grid\": [4, 4],\n \"fps\": 16\n }\n },\n {\n \"name\": \"hearth_light\",\n \"module\": {\n \"op\": \"light\",\n \"color\": [1, 0.32, 0.055],\n \"lumens\": 900,\n \"radius\": 6\n }\n }\n ]\n }\n },\n {\n \"name\": \"smoke\",\n \"capacity\": 2048,\n \"bounds\": {\n \"min\": [-8, -2, -8],\n \"max\": [8, 12, 8]\n },\n \"stacks\": {\n \"spawn\": [\n {\n \"name\": \"rate\",\n \"module\": {\n \"op\": \"rate\",\n \"per_second\": 12\n }\n }\n ],\n \"initialize\": [\n {\n \"name\": \"lifetime\",\n \"module\": {\n \"op\": \"lifetime\",\n \"seconds\": 4.5,\n \"size\": 0.45,\n \"color\": [0.2, 0.23, 0.28, 0.14]\n }\n },\n {\n \"name\": \"source\",\n \"module\": {\n \"op\": \"cone\",\n \"origin\": [0, 0.55, 0],\n \"height\": 0.2,\n \"radius\": 0.12\n }\n },\n {\n \"name\": \"rise\",\n \"module\": {\n \"op\": \"velocity\",\n \"value\": [0, 0.55, 0],\n \"spread\": [0.12, 0.15, 0.12]\n }\n }\n ],\n \"update\": [\n {\n \"name\": \"curl\",\n \"module\": {\n \"op\": \"curl_noise\",\n \"frequency\": 1.2,\n \"strength\": 0.35\n }\n },\n {\n \"name\": \"grow\",\n \"module\": {\n \"op\": \"size_over_life\",\n \"keys\": [\n {\n \"t\": 0,\n \"value\": 0.25\n },\n {\n \"t\": 1,\n \"value\": 1\n }\n ]\n }\n },\n {\n \"name\": \"fade\",\n \"module\": {\n \"op\": \"color_over_life\",\n \"keys\": [\n {\n \"t\": 0,\n \"value\": [0.1, 0.095, 0.09, 0]\n },\n {\n \"t\": 0.15,\n \"value\": [0.12, 0.115, 0.11, 0.2]\n },\n {\n \"t\": 0.6,\n \"value\": [0.16, 0.16, 0.16, 0.11]\n },\n {\n \"t\": 1,\n \"value\": [0.2, 0.2, 0.2, 0]\n }\n ]\n }\n }\n ],\n \"render\": [\n {\n \"name\": \"sprite\",\n \"module\": {\n \"op\": \"sprite\",\n \"domain\": \"surface\",\n \"soft_distance\": 0.3,\n \"sorting\": \"depth\"\n }\n },\n {\n \"name\": \"appearance\",\n \"module\": {\n \"op\": \"appearance\",\n \"texture\": \"smoke\",\n \"blend\": \"alpha\",\n \"alignment\": \"camera\",\n \"stretch\": 1,\n \"shutter\": 0\n }\n },\n {\n \"name\": \"flipbook\",\n \"module\": {\n \"op\": \"flipbook\",\n \"grid\": [4, 4],\n \"fps\": 16\n }\n }\n ]\n }\n },\n {\n \"name\": \"embers\",\n \"capacity\": 4096,\n \"bounds\": {\n \"min\": [-8, -2, -8],\n \"max\": [8, 12, 8]\n },\n \"stacks\": {\n \"spawn\": [\n {\n \"name\": \"rate\",\n \"module\": {\n \"op\": \"rate\",\n \"per_second\": 12\n }\n }\n ],\n \"initialize\": [\n {\n \"name\": \"lifetime\",\n \"module\": {\n \"op\": \"lifetime\",\n \"seconds\": 2,\n \"size\": 0.012,\n \"color\": [14, 4.5, 0.7, 0.85]\n }\n },\n {\n \"name\": \"source\",\n \"module\": {\n \"op\": \"point\",\n \"position\": [0, 0.7, 0]\n }\n },\n {\n \"name\": \"spray\",\n \"module\": {\n \"op\": \"velocity\",\n \"value\": [0, 2, 0],\n \"spread\": [0.4, 0.7, 0.4]\n }\n }\n ],\n \"update\": [\n {\n \"name\": \"gravity\",\n \"module\": {\n \"op\": \"gravity\",\n \"acceleration\": [0, -9.81, 0]\n }\n },\n {\n \"name\": \"floor\",\n \"module\": {\n \"op\": \"plane_collision\",\n \"normal\": [0, 1, 0],\n \"offset\": 0,\n \"restitution\": 0.6\n }\n },\n {\n \"name\": \"cool\",\n \"module\": {\n \"op\": \"color_over_life\",\n \"keys\": [\n {\n \"t\": 0,\n \"value\": [18, 8, 2, 1]\n },\n {\n \"t\": 0.5,\n \"value\": [9, 1.8, 0.1, 0.8]\n },\n {\n \"t\": 1,\n \"value\": [1, 0.05, 0, 0]\n }\n ]\n }\n }\n ],\n \"render\": [\n {\n \"name\": \"sprite\",\n \"module\": {\n \"op\": \"sprite\",\n \"domain\": \"unlit\",\n \"soft_distance\": 0.15,\n \"sorting\": \"none\"\n }\n },\n {\n \"name\": \"appearance\",\n \"module\": {\n \"op\": \"appearance\",\n \"texture\": \"spark\",\n \"blend\": \"additive\",\n \"alignment\": \"velocity\",\n \"stretch\": 3,\n \"shutter\": 0.85\n }\n },\n {\n \"name\": \"flipbook\",\n \"module\": {\n \"op\": \"flipbook\",\n \"grid\": [4, 4],\n \"fps\": 16\n }\n }\n ]\n }\n }\n ]\n}\n"}' --why "…"