<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.vrchat.com/index.php?action=history&amp;feed=atom&amp;title=Toggles</id>
	<title>Toggles - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.vrchat.com/index.php?action=history&amp;feed=atom&amp;title=Toggles"/>
	<link rel="alternate" type="text/html" href="https://wiki.vrchat.com/index.php?title=Toggles&amp;action=history"/>
	<updated>2026-07-20T10:05:41Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.vrchat.com/index.php?title=Toggles&amp;diff=66315&amp;oldid=prev</id>
		<title>Usr 40be82e7-f7d5-4548-b314-3fc7b26d22ee: add more references</title>
		<link rel="alternate" type="text/html" href="https://wiki.vrchat.com/index.php?title=Toggles&amp;diff=66315&amp;oldid=prev"/>
		<updated>2026-03-16T15:23:27Z</updated>

		<summary type="html">&lt;p&gt;add more references&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:23, 16 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l53&quot;&gt;Line 53:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 53:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://vrc.school/docs/Avatars/Multi-Toggles VRC School: Multi-Toggles]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://vrc.school/docs/Avatars/Multi-Toggles VRC School: Multi-Toggles]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://vrc.school/docs/Avatars/Radial-Puppets VRC School: Radial Puppets]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://vrc.school/docs/Avatars/Radial-Puppets VRC School: Radial Puppets]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [https://vrc.school/docs/Avatars/Dissolve-Toggles VRC School: Dissolve Toggles]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [https://vrc.school/docs/Avatars/Axis-Puppets VRC School: Axis Puppets]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Usr 40be82e7-f7d5-4548-b314-3fc7b26d22ee</name></author>
	</entry>
	<entry>
		<id>https://wiki.vrchat.com/index.php?title=Toggles&amp;diff=66314&amp;oldid=prev</id>
		<title>Usr 40be82e7-f7d5-4548-b314-3fc7b26d22ee: Add dissolve toggles</title>
		<link rel="alternate" type="text/html" href="https://wiki.vrchat.com/index.php?title=Toggles&amp;diff=66314&amp;oldid=prev"/>
		<updated>2026-03-16T15:23:04Z</updated>

		<summary type="html">&lt;p&gt;Add dissolve toggles&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:23, 16 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l30&quot;&gt;Line 30:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 30:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;These techniques are built from official Expressions and Animator features, while many specific controller patterns are documented mainly in community guides.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;These techniques are built from official Expressions and Animator features, while many specific controller patterns are documented mainly in community guides.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Dissolve toggles ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A &#039;&#039;&#039;dissolve toggle&#039;&#039;&#039; uses a shader dissolve effect to smoothly fade an object in or out instead of instantly enabling or disabling it. This is typically implemented with a radial puppet or a blend tree that drives a shader property (such as a dissolve cutoff float) from &amp;lt;code&amp;gt;0.0&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;1.0&amp;lt;/code&amp;gt;.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Because the dissolve effect depends on shader support, the avatar&#039;s materials must use a shader that exposes a dissolve or cutoff property. The animator drives this property through an animation clip that changes the material float over time.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Dissolve toggles are more visually polished than instant on/off toggles but have a higher performance cost due to the use of transparency or cutout shaders during the transition. Community benchmarks suggest that exponential smoothing for dissolves runs at roughly half the cost of a standard layer toggle, while linear smoothing with frame-time detection is roughly twice the cost.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Notes ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Notes ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Usr 40be82e7-f7d5-4548-b314-3fc7b26d22ee</name></author>
	</entry>
	<entry>
		<id>https://wiki.vrchat.com/index.php?title=Toggles&amp;diff=66253&amp;oldid=prev</id>
		<title>Usr 40be82e7-f7d5-4548-b314-3fc7b26d22ee: removed headline</title>
		<link rel="alternate" type="text/html" href="https://wiki.vrchat.com/index.php?title=Toggles&amp;diff=66253&amp;oldid=prev"/>
		<updated>2026-03-14T18:30:29Z</updated>

		<summary type="html">&lt;p&gt;removed headline&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:30, 14 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l2&quot;&gt;Line 2:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Toggles&amp;#039;&amp;#039;&amp;#039; are a common avatar setup pattern that uses [[Expressions]] controls, Animator parameters, and animation states to enable or disable avatar features.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Toggles&amp;#039;&amp;#039;&amp;#039; are a common avatar setup pattern that uses [[Expressions]] controls, Animator parameters, and animation states to enable or disable avatar features.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Overview ==&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On VRChat avatars, a toggle usually starts in the Expressions menu, where a user flips a &amp;lt;code&amp;gt;Bool&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Int&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;Float&amp;lt;/code&amp;gt; parameter. That parameter is then read by an Animator Controller, most often on the FX playable layer, to switch between different states or animations.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On VRChat avatars, a toggle usually starts in the Expressions menu, where a user flips a &amp;lt;code&amp;gt;Bool&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Int&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;Float&amp;lt;/code&amp;gt; parameter. That parameter is then read by an Animator Controller, most often on the FX playable layer, to switch between different states or animations.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Usr 40be82e7-f7d5-4548-b314-3fc7b26d22ee</name></author>
	</entry>
	<entry>
		<id>https://wiki.vrchat.com/index.php?title=Toggles&amp;diff=66252&amp;oldid=prev</id>
		<title>Usr 40be82e7-f7d5-4548-b314-3fc7b26d22ee: These thing that we use way to often</title>
		<link rel="alternate" type="text/html" href="https://wiki.vrchat.com/index.php?title=Toggles&amp;diff=66252&amp;oldid=prev"/>
		<updated>2026-03-14T18:26:56Z</updated>

		<summary type="html">&lt;p&gt;These thing that we use way to often&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Noticebox/Official}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Toggles&amp;#039;&amp;#039;&amp;#039; are a common avatar setup pattern that uses [[Expressions]] controls, Animator parameters, and animation states to enable or disable avatar features.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
On VRChat avatars, a toggle usually starts in the Expressions menu, where a user flips a &amp;lt;code&amp;gt;Bool&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Int&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;Float&amp;lt;/code&amp;gt; parameter. That parameter is then read by an Animator Controller, most often on the FX playable layer, to switch between different states or animations.&lt;br /&gt;
&lt;br /&gt;
Toggles are commonly used for clothing swaps, props, blendshapes, material changes, and other on-or-off avatar features.&lt;br /&gt;
&lt;br /&gt;
== Basic setup ==&lt;br /&gt;
A simple toggle usually needs:&lt;br /&gt;
* An Expressions menu control, often a &amp;#039;&amp;#039;&amp;#039;Toggle&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* A matching custom parameter in the Expression Parameters asset.&lt;br /&gt;
* A matching Animator parameter in the controller.&lt;br /&gt;
* Animation states that enable and disable the target object or update a property.&lt;br /&gt;
&lt;br /&gt;
Creators often include a small buffer or idle animation so the controller behaves consistently with different [[Animators|Write Defaults]] setups.&lt;br /&gt;
&lt;br /&gt;
== Exclusive toggles ==&lt;br /&gt;
Some avatars use a group of mutually exclusive toggles where only one option should be active at a time, such as outfit sets or hairstyle choices.&lt;br /&gt;
&lt;br /&gt;
Common approaches include:&lt;br /&gt;
* Multiple bool toggles with parameter drivers that turn the other options off.&lt;br /&gt;
* An integer-driven setup where one value selects one state.&lt;br /&gt;
* A blend tree or radial-puppet-based selector for a larger set of options.&lt;br /&gt;
&lt;br /&gt;
== Radial and advanced variants ==&lt;br /&gt;
Not every toggle is a simple on-or-off switch. Avatar creators also use:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Radial puppets&amp;#039;&amp;#039;&amp;#039; to drive a float from &amp;lt;code&amp;gt;0.0&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;1.0&amp;lt;/code&amp;gt; for effects such as hue shifts, scale adjustments, or multi-option selectors.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Two-axis puppets&amp;#039;&amp;#039;&amp;#039; to control two floats at once, often for transform control.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Blend trees&amp;#039;&amp;#039;&amp;#039; or motion time for more compact controllers when a toggle needs multiple intermediate values.&lt;br /&gt;
&lt;br /&gt;
These techniques are built from official Expressions and Animator features, while many specific controller patterns are documented mainly in community guides.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* Toggle behavior depends on the playable layer and Animator setup used by the avatar.&lt;br /&gt;
* For cross-platform avatars, matching parameters should stay in the same order and use the same parameter types on both versions.&lt;br /&gt;
* Built-in VRChat Animator parameters should not be re-created in the custom Expression Parameters asset.&lt;br /&gt;
&lt;br /&gt;
== Official resources ==&lt;br /&gt;
* [https://creators.vrchat.com/avatars/expression-menu-and-controls/ Expression Menu and Controls] on Creator Docs&lt;br /&gt;
* [https://creators.vrchat.com/avatars/animator-parameters/ Animator Parameters] on Creator Docs&lt;br /&gt;
* [https://creators.vrchat.com/avatars/playable-layers/ Playable Layers] on Creator Docs&lt;br /&gt;
* [https://creators.vrchat.com/avatars/state-behaviors/ State Behaviors] on Creator Docs&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://vrc.school/docs/Avatars/Toggles VRC School: Toggles]&lt;br /&gt;
* [https://vrc.school/docs/Avatars/Multi-Toggles VRC School: Multi-Toggles]&lt;br /&gt;
* [https://vrc.school/docs/Avatars/Radial-Puppets VRC School: Radial Puppets]&lt;/div&gt;</summary>
		<author><name>Usr 40be82e7-f7d5-4548-b314-3fc7b26d22ee</name></author>
	</entry>
</feed>