<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.vrchat.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Usr+7543821c-72d4-45a3-9b87-a16d454a30e1</id>
	<title>VRChat Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.vrchat.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Usr+7543821c-72d4-45a3-9b87-a16d454a30e1"/>
	<link rel="alternate" type="text/html" href="https://wiki.vrchat.com/wiki/Special:Contributions/Usr_7543821c-72d4-45a3-9b87-a16d454a30e1"/>
	<updated>2026-06-04T00:35:56Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://wiki.vrchat.com/index.php?title=Camera_Dolly&amp;diff=49823</id>
		<title>Camera Dolly</title>
		<link rel="alternate" type="text/html" href="https://wiki.vrchat.com/index.php?title=Camera_Dolly&amp;diff=49823"/>
		<updated>2025-10-23T18:47:00Z</updated>

		<summary type="html">&lt;p&gt;Usr 7543821c-72d4-45a3-9b87-a16d454a30e1: /* OSC integration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Noticebox/Official}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox/Feature&lt;br /&gt;
|name= Camera Dolly&lt;br /&gt;
|image=Camera_Dolly_Feature.png&lt;br /&gt;
|platforms= PC, Quest&lt;br /&gt;
|vrchatplus= Required&lt;br /&gt;
|branch_live_date = 26 Mar 2025&lt;br /&gt;
|branch_live_version = 2025.1.3&lt;br /&gt;
|branch_live_releasenote = https://docs.vrchat.com/docs/vrchat-202513&lt;br /&gt;
|branch_openbeta_date = 12 Mar 2025&lt;br /&gt;
|branch_openbeta_version = 2025.1.3&lt;br /&gt;
|branch_openbeta_releasenote = https://docs.vrchat.com/docs/vrchat-202513-openbeta&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Camera Dolly&#039;&#039;&#039; is a [[VRChat+|VRC+]] exclusive system that allows you to create and play animations for the VRChat [[Camera|camera]]. &lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
{{Thumb|{{YouTube|Doy9pVLBn_k}}|Official Camera Dolly walkthrough tutorial video.&amp;lt;ref&amp;gt;[https://www.youtube.com/watch?v=Doy9pVLBn_k VRChat Camera Dolly Walkthrough Tutorial] on &#039;&#039;YouTube&#039;&#039;.&amp;lt;/ref&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
It includes the following features:&lt;br /&gt;
&lt;br /&gt;
* Path Management: At its core, the camera dolly is a system for authoring animations through points. You can create, edit, and delete points in a variety of ways. Additionally, paths allow you to play multiple animations in sequence. New camera controls have been added that enable more fine-tuned camera usage. Camera parameters the dolly can animate currently include&lt;br /&gt;
** Position&lt;br /&gt;
** Rotation&lt;br /&gt;
** Zoom&lt;br /&gt;
** Focal distance and aperture&lt;br /&gt;
** Look-At-Me offsets&lt;br /&gt;
** Green screen color&lt;br /&gt;
* The initial release of the camera dolly includes a number of configuration options that let you define how animations behave. Motion control allows you to switch between duration and speed as the value driving the animation. The path type refers to how the animation path is smoothed between the points you’ve created. You may also have the path loop, or use easing to create more aesthetically pleasing animations. Capture lets you record a video, an emoji, or automatically take pictures during an animation. Last but not least, the stream type indicates how to animation is streamed via Spout.&lt;br /&gt;
* [[Open Sound Control|OSC]] integration&lt;br /&gt;
&lt;br /&gt;
The camera dolly is not supported on Android/iOS at this time.&lt;br /&gt;
&lt;br /&gt;
== Points ==&lt;br /&gt;
Where the path represents the camera animation, points are essentially keyframes. When you add a point, it is placed at the position and rotation of your camera, and inherits the zoom, focus, Look-At-Me, and Greenscreen values your camera is currently set to.&lt;br /&gt;
&lt;br /&gt;
When adding points, you can leave your camera in hand-held mode, or put it into Fly Mode. Likewise, it works both in landscape and portrait orientation. Position the camera, then click &amp;lt;code&amp;gt;Add&amp;lt;/code&amp;gt; in the camera dolly menu to place a point. Create a second point, and you got yourself a path. Click &amp;lt;code&amp;gt;Play&amp;lt;/code&amp;gt; to start the animation from the first to the second point. Note that while the animation is playing, the Play button is replaced by a &amp;lt;code&amp;gt;Stop&amp;lt;/code&amp;gt; button to cancel it.&lt;br /&gt;
&lt;br /&gt;
Due to performance constraints, there are limits on how many points you can author at any given time. Currently, the limits are as follows:&lt;br /&gt;
&lt;br /&gt;
* Windows&lt;br /&gt;
** Up to 100 points total&lt;br /&gt;
** Up to 50 points per path&lt;br /&gt;
* Quest/Pico&lt;br /&gt;
** Up to 50 points total&lt;br /&gt;
** Up to 25 points per path&lt;br /&gt;
* The camera dolly is not currently supported on mobile (Android/iOS)&lt;br /&gt;
&lt;br /&gt;
If you want to reset the entire path, you can use the &amp;lt;code&amp;gt;Clear All&amp;lt;/code&amp;gt; menu button to remove all points (a confirmation prompt will be displayed to ensure you don’t inadvertently select this option). Likewise, the &amp;lt;code&amp;gt;Clear Last&amp;lt;/code&amp;gt; option will delete the point at the end of the current path. To delete a specific point, you can do so via the point menu or by grabbing a point and double-clicking the interact button.&lt;br /&gt;
&lt;br /&gt;
Points are pickups. Grab one, and in VR the viewfinder will show its perspective. As you move the point, the path is updated with the point&#039;s new position and rotation. While holding a point, you can click the interact button to freeze the point’s position - only rotation will update while the point is frozen. Click again to unfreeze. To edit the point’s animation parameters, adjust the corresponding sliders in the Point Menu.&lt;br /&gt;
&lt;br /&gt;
The Point Menu also includes a button &amp;lt;code&amp;gt;Copy to Camera&amp;lt;/code&amp;gt; that let’s you apply a point’s position, rotation, and animation parameters back to the camera. This can be used as an alternative way to preview a point’s perspective, or add new points with precise positions close to the copied one.&lt;br /&gt;
&lt;br /&gt;
The camera dolly takes the lens space into account.&lt;br /&gt;
&lt;br /&gt;
* Default or Local: The path itself will move with the player as the camera animation plays out&lt;br /&gt;
* World: The path is static and does not move with the player&lt;br /&gt;
&lt;br /&gt;
== Paths ==&lt;br /&gt;
Paths allow you to create any number of animations that run sequentially. This gives you a way to create more complex animations with multi-camera setups and keep action more fluid between shots.&lt;br /&gt;
&lt;br /&gt;
Point menus reflect each point’s path, as well as position within a path. For example, point 1-2 is the second point in the first path. The point menu further let’s to change a point’s position and path:&lt;br /&gt;
&lt;br /&gt;
* Moving a point to the next path will prepend it there as the new first point&lt;br /&gt;
* Moving a point to the previous path will append it there as the new last point&lt;br /&gt;
&lt;br /&gt;
Potential use cases include:&lt;br /&gt;
&lt;br /&gt;
* Reversing a path: By changing the position of points within a path, it’s direction can be turned around&lt;br /&gt;
* Combining paths or dividing one path into multiple paths&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
The following camera controls help you control various aspects of the camera dolly.&lt;br /&gt;
&lt;br /&gt;
=== Movement controls ===&lt;br /&gt;
* The Fly Speed slider adjust how fast the camera moves in Fly Mode&lt;br /&gt;
* The Turn Speed slider adjusts how fast the camera rotates in Fly Mode&lt;br /&gt;
* The Smoothing Strength slider adjusts how much camera movement is softened when the Smoothed behaviour is toggled on&lt;br /&gt;
* While using the camera dolly, the maximum fly distance has been increased ten-fold, allowing you to move the camera further away from yourself&lt;br /&gt;
&lt;br /&gt;
=== Look-At-Me controls ===&lt;br /&gt;
* When the Look-At-Me behaviour is toggled on, the horizontal and vertical Look-At-Me offset sliders adjust your position within the camera view&lt;br /&gt;
* By default, you are in the center of the camera view when using Look-At-Me - Using the sliders, you can offset your position from the center&lt;br /&gt;
&lt;br /&gt;
=== Greenscreen controls ===&lt;br /&gt;
* A new set of HSL sliders is displayed while the Greenscreen mask is toggled on&lt;br /&gt;
* The Hue, Saturation, and Lightness sliders adjust the color of the greenscreen&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
The camera dolly has a number of configuration options that allow you to tweak how animations behave.&lt;br /&gt;
&lt;br /&gt;
=== Motion Control ===&lt;br /&gt;
Motion control specifies whether the animation should be time- or speed-based:&lt;br /&gt;
&lt;br /&gt;
* When time-based, a &#039;&#039;&#039;Duration&#039;&#039;&#039; slider is shown&lt;br /&gt;
* When speed-based, the &#039;&#039;&#039;Fly Speed&#039;&#039;&#039; slider will be used&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Speed-based&#039;&#039;&#039; animations allow you to create animations with custom ease curves. This can be useful for long animations where easing shouldn’t be applied uniformly across the entire path.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Time-based&#039;&#039;&#039; animations allow you to pick from a list of ease presets. The overall duration of a time-based animation is the sum of point durations, minus the last one and anchors. So if there are three points, each with duration 2sec, the overall duration will be 4 seconds (A to B ~ 2sec, B to C ~ 2sec). The &#039;&#039;&#039;Easing&#039;&#039;&#039; configuration includes options for In, Out, and In-Out ease curves at different intensities.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Read more about easing curves at [https://easings.net easings.net].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Path type ===&lt;br /&gt;
The path type defines how the path is smoothed. The following path types are available:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Fitted&#039;&#039;&#039; paths use B-Spline interpolation and are very smooth, but may not pass through points&lt;br /&gt;
* &#039;&#039;&#039;Loose&#039;&#039;&#039; paths use Catmull Rom interpolation and pass through the points you’ve added, while being slightly less smooth than Fitted paths&lt;br /&gt;
* &#039;&#039;&#039;Linear&#039;&#039;&#039; paths are not smoothed&lt;br /&gt;
&lt;br /&gt;
Fitted and Loose paths require at least 4 points to be smoothed. While a path has less than 4 points, it will always be linear.&lt;br /&gt;
&lt;br /&gt;
With at least 4 points, Fitted and Loose paths will be smoothed. When smoothed, a few additional elements come into play:&lt;br /&gt;
&lt;br /&gt;
* Anchors: The first and last points of a smoothed path are anchors. They are used to give shape to the beginning and end of the animation path. While anchors aren’t part of the path itself, they are used to interpolate values for the start and end points.&lt;br /&gt;
* Curve Points: Smoothed paths generate smaller “in-between” points between the points you add. These are used to visualize the path. You may also interact with a curve point to add a new point anywhere in an existing path.&lt;br /&gt;
&lt;br /&gt;
=== Looping ===&lt;br /&gt;
The loop type specifies how the animation should loop. Options include &#039;&#039;&#039;Repeat, Reverse,&#039;&#039;&#039; and &#039;&#039;&#039;Revolve&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Repeat looping restarts the path from the start once the camera reaches the end&lt;br /&gt;
* Reverse changes direction whenever the camera reaches the start or end of the path&lt;br /&gt;
* Revolve connects the end of a path back to the start so it loops smoothly&lt;br /&gt;
&lt;br /&gt;
Note that looping will have the path loop &#039;&#039;&#039;indefinitely&#039;&#039;&#039;, including while the camera is closed. You can click &#039;&#039;&#039;Stop&#039;&#039;&#039; or change worlds to cancel the animation.&lt;br /&gt;
&lt;br /&gt;
=== Capture ===&lt;br /&gt;
The capture setting determines how an animation should be recorded. Note that the animation cannot loop while using one of the below capture settings in order to prevent users from accidentally filling up their storage. The Capture feature currently comes with a few restrictions and is thus in BETA.&lt;br /&gt;
&lt;br /&gt;
* Photo: Automatically takes photos while the camera is animating. While selected a `Photos per Second` slider is displayed, ranging from 0.1 (one photo every 10 seconds) to 2 (one photo every half second)&lt;br /&gt;
* Video: Records an mp4 video while the animation plays. The maximum clip length is 60 seconds. When selected, an additional Audio Source option is displayed that let&#039;s you pick between local microphone audio or world audio (including other players) for the audio to record with the video. Due to technical limitations, you can&#039;t choose both at this time.&lt;br /&gt;
* Emoji: Takes exactly 16 photos spaced out evenly along the animation. When the animation concludes, the Emoji editor opens. This option is not currently supported with Speed-based motion. &lt;br /&gt;
&lt;br /&gt;
=== Streaming ===&lt;br /&gt;
Building on top of the Spout2 integration for Stream Mode, this configuration allows you to define how content is streamed. Since this uses Spout, it is currently only supported on Windows.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Single&#039;&#039;&#039;: The camera animates along paths in order&lt;br /&gt;
* &#039;&#039;&#039;Multi&#039;&#039;&#039;: Spawns up to 3 additional cameras with a spout sender for each path beyond the first. Rather than animating sequentially, each camera animates along its respective path at the same time. Currently has a number of restrictions:&lt;br /&gt;
** Only supports up to 4 paths - additional paths are ignored&lt;br /&gt;
** Only works with time-based animation&lt;br /&gt;
** Additional cameras only animate position and rotation (no additional parameters like zoom, focus, etc.)&lt;br /&gt;
&lt;br /&gt;
== OSC integration ==&lt;br /&gt;
The camera dolly supports OSC control through four endpoints and JSON-based path import/export.&lt;br /&gt;
&lt;br /&gt;
=== Endpoints ===&lt;br /&gt;
&#039;&#039;&#039;Play and playback control&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;/dolly/Play &amp;lt;&#039;&#039;Play&#039;&#039;: boolean&amp;gt;&amp;lt;/code&amp;gt; - Play or stop an animation&lt;br /&gt;
** Returns &amp;lt;code&amp;gt;/dolly/Play &amp;lt;&#039;&#039;Playing&#039;&#039;: boolean&amp;gt;&amp;lt;/code&amp;gt; whenever playback starts or stops&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/dolly/PlayDelayed &amp;lt;&#039;&#039;Delay&#039;&#039;: float&amp;gt;&amp;lt;/code&amp;gt; - Play an animation after a delay&lt;br /&gt;
** Returns &amp;lt;code&amp;gt;/dolly/Play&amp;lt;/code&amp;gt; immediately when fired, not when playback starts&lt;br /&gt;
** Sending this while a delay is running has no effect&lt;br /&gt;
** &amp;lt;code&amp;gt;/dolly/Play TRUE&amp;lt;/code&amp;gt; skips any existing delay and starts immediately&lt;br /&gt;
** &amp;lt;code&amp;gt;/dolly/Play FALSE&amp;lt;/code&amp;gt; cancels a running delay&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Import and export&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;/dolly/Export&amp;lt;/code&amp;gt; - Export the current path to JSON&lt;br /&gt;
** Saves to &amp;lt;code&amp;gt;~/Documents/VRChat/CameraPaths/VRChat_CameraPath_[time].json&amp;lt;/code&amp;gt;&lt;br /&gt;
** Returns &amp;lt;code&amp;gt;/dolly/Export &amp;lt;&#039;&#039;ExportedFilePath&#039;&#039;: string&amp;gt;&amp;lt;/code&amp;gt; when complete&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/dolly/Import &amp;lt;&#039;&#039;DollyPathJSON&#039;&#039;: string&amp;gt;&amp;lt;/code&amp;gt; - Import a JSON dolly path&lt;br /&gt;
** Does nothing if dolly is currently playing or delayed&lt;br /&gt;
&lt;br /&gt;
=== Import behavior ===&lt;br /&gt;
Points are always exported as local, but JSON files can be edited to mark points as global. This determines whether imported points are created relative to the player.&lt;br /&gt;
&lt;br /&gt;
The camera dolly menu includes an Import button for pasting file paths on Windows. OSC must be enabled for this feature to work, even though the import itself does not use OSC.&lt;br /&gt;
&lt;br /&gt;
=== Use cases ===&lt;br /&gt;
* Fine-tuning animation values&lt;br /&gt;
* Editing &amp;lt;code&amp;gt;isLocal&amp;lt;/code&amp;gt; values for relative or absolute positioning&lt;br /&gt;
* Reusing paths between sessions&lt;br /&gt;
* Sharing paths with others&lt;br /&gt;
* Building path libraries&lt;br /&gt;
* Creating keyframe visualization tools&lt;br /&gt;
* Integrating with existing community tools&lt;br /&gt;
&lt;br /&gt;
=== Value ranges ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Default&lt;br /&gt;
! Min&lt;br /&gt;
! Max&lt;br /&gt;
|-&lt;br /&gt;
| Position&lt;br /&gt;
| (0,0,0)&lt;br /&gt;
| —&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Rotation&lt;br /&gt;
| (0,0,0)&lt;br /&gt;
| —&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Zoom&lt;br /&gt;
| 45&lt;br /&gt;
| 20&lt;br /&gt;
| 150&lt;br /&gt;
|-&lt;br /&gt;
| FocalDistance&lt;br /&gt;
| 1.5&lt;br /&gt;
| 0&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| Aperture&lt;br /&gt;
| 15&lt;br /&gt;
| 1.4&lt;br /&gt;
| 32&lt;br /&gt;
|-&lt;br /&gt;
| Greenscreen HSL&lt;br /&gt;
| 120 {{!}} 100 {{!}} 60&lt;br /&gt;
| 0 {{!}} 0 {{!}} 0&lt;br /&gt;
| 360 {{!}} 100 {{!}} 50&lt;br /&gt;
|-&lt;br /&gt;
| Look-At-Me Offsets&lt;br /&gt;
| 0 {{!}} 0&lt;br /&gt;
| -25 {{!}} -25&lt;br /&gt;
| 25 {{!}} 25&lt;br /&gt;
|-&lt;br /&gt;
| Duration (sec)&lt;br /&gt;
| 2&lt;br /&gt;
| 0.1&lt;br /&gt;
| 60&lt;br /&gt;
|-&lt;br /&gt;
| Speed&lt;br /&gt;
| 3&lt;br /&gt;
| 0.1&lt;br /&gt;
| 15&lt;br /&gt;
|-&lt;br /&gt;
| Index&lt;br /&gt;
| -1 (append)&lt;br /&gt;
| 0&lt;br /&gt;
| &amp;lt;num points&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Path&lt;br /&gt;
| &amp;lt;current path&amp;gt;&lt;br /&gt;
| 0&lt;br /&gt;
| &amp;lt;num paths&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| IsLocal&lt;br /&gt;
| FALSE&lt;br /&gt;
| —&lt;br /&gt;
| —&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Official resources==&lt;br /&gt;
* [https://www.youtube.com/watch?v=Doy9pVLBn_k &#039;VRChat Camera Dolly Walkthrough Tutorial&#039;] on &#039;&#039;YouTube&#039;&#039;.&lt;br /&gt;
* [https://www.youtube.com/watch?v=CHt6VsK9STk &#039;THREE new features and a TON of QoL fixes -- VRChat Release 2025.1.3 is here!&#039;] on &#039;&#039;YouTube&#039;&#039;.&lt;br /&gt;
* [https://ask.vrchat.com/t/developer-update-march-27-2025/42391 &#039;Developer Update - 27 March, 2025] on &#039;&#039;ask.vrchat.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Community resources==&lt;br /&gt;
* [https://vrchat.com/home/world/wrld_ec048691-9f51-4e4f-81dd-550187b73ca7/info &#039;Camera Dolly 101&#039;] world on VRChat.&lt;br /&gt;
* [https://blog.vive.com/us/vrchat-introduces-camera-dolly-a-new-tool-for-creators/ &#039;VRChat Introduces &#039;Camera Dolly&#039; – A New Tool for Creators&#039;] on &#039;&#039;blog.vive.com&#039;&#039;&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Camera]]&lt;br /&gt;
* [[Camera Drone]]&lt;br /&gt;
* [[Gallery]]&lt;br /&gt;
* [[VRC+]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Needs images]]&lt;br /&gt;
[[Category:Features]]&lt;/div&gt;</summary>
		<author><name>Usr 7543821c-72d4-45a3-9b87-a16d454a30e1</name></author>
	</entry>
	<entry>
		<id>https://wiki.vrchat.com/index.php?title=OSC&amp;diff=49822</id>
		<title>OSC</title>
		<link rel="alternate" type="text/html" href="https://wiki.vrchat.com/index.php?title=OSC&amp;diff=49822"/>
		<updated>2025-10-23T18:41:44Z</updated>

		<summary type="html">&lt;p&gt;Usr 7543821c-72d4-45a3-9b87-a16d454a30e1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Noticebox/Official}}{{Stub|Not much information here! You can [[VRCWiki:How to contribute|contribute]] by expanding, and proofreading this article, in accordance with the [[VRCWiki:Manual of Style|Manual of Style]].}}&lt;br /&gt;
[[File:OSC_Keyart.png|thumb|300x300px]]&lt;br /&gt;
[https://opensoundcontrol.stanford.edu/index.html &#039;&#039;&#039;OSC&#039;&#039;&#039;] is a way to get different devices and applications to talk to each other. VRChat announced on February 16th 2022 OSC for avatars&amp;lt;ref&amp;gt;https://hello.vrchat.com/blog/vrchat-osc-for-avatars&amp;lt;/ref&amp;gt;. Most commonly used to have body-, eye- and face trackers communicate with [[Special:MyLanguage/VRChat|VRChat]].&lt;br /&gt;
&lt;br /&gt;
==OSCQuery==&lt;br /&gt;
[https://github.com/Vidvox/OSCQueryProposal OSCQuery] is a protocol to connect OSC applications together easier. Information on how to connect with VRChat with OSCQuery is available on the [https://github.com/vrchat-community/osc/wiki/OSCQuery VRChat OSCQuery GitHub Wiki]. VRChat also provides [https://github.com/vrchat-community/vrc-oscquery-lib a C# library on GitHub].&lt;br /&gt;
&lt;br /&gt;
Some of the community made OSCQuery libraries:&lt;br /&gt;
&lt;br /&gt;
* TypeScript with example scripts on GitHub by [[User:Usr ddac2cc8-81dc-41c7-95c6-7aa7c81a783f|Jangxx]] - [https://github.com/jangxx/node-oscquery node-oscquery].&lt;br /&gt;
* Python with examples on the GitHub readme.md - [https://github.com/theepicsnail/vrchat_oscquery vrchat_oscquery]. An older variant that&#039;s more descriptive - [https://github.com/cyberkitsune/tinyoscquery tinyoscquery].&lt;br /&gt;
* Rust implementation with baseline functionality - [https://lib.rs/crates/oscquery oscquery].&lt;br /&gt;
&lt;br /&gt;
== OSC feature set ==&lt;br /&gt;
OSC enables control and monitoring of multiple systems within VRChat, including input controls, avatar parameters, chatbox functionality, and camera systems such as the [[Camera Dolly]]. For camera implementation details, see the [[Camera Dolly#OSC integration|OSC integration]] section.&lt;br /&gt;
&lt;br /&gt;
=== Input controls ===&lt;br /&gt;
OSC can trigger VRChat input actions by sending messages to &amp;lt;code&amp;gt;/input/*&amp;lt;/code&amp;gt; addresses. This includes movement controls, view rotation, jumping, voice toggling, and VR-specific interactions. For a complete list of supported inputs, see the [https://docs.vrchat.com/docs/osc-as-input-controller official OSC input controller documentation].&lt;br /&gt;
&lt;br /&gt;
=== Chatbox ===&lt;br /&gt;
The chatbox can be controlled through OSC using &amp;lt;code&amp;gt;/chatbox/input&amp;lt;/code&amp;gt; to send text messages (up to 144 characters) and &amp;lt;code&amp;gt;/chatbox/typing&amp;lt;/code&amp;gt; to control the typing indicator.&lt;br /&gt;
&lt;br /&gt;
=== Avatar parameters ===&lt;br /&gt;
OSC provides read and write access to avatar parameters, enabling real-time control of avatar expressions, animations, and custom behaviors. Parameters are accessed through &amp;lt;code&amp;gt;/avatar/parameters/&amp;lt;ParameterName&amp;gt;&amp;lt;/code&amp;gt; addresses and support integer, float, and boolean data types. Parameter names and behaviors are defined by individual avatar creators.&lt;br /&gt;
&lt;br /&gt;
== OSC ports ==&lt;br /&gt;
VRChat uses two UDP ports for OSC communication on localhost (&amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt;):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Port&lt;br /&gt;
! Direction&lt;br /&gt;
! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;9000&#039;&#039;&#039;&lt;br /&gt;
| Send → VRChat&lt;br /&gt;
| Your application sends messages to VRChat&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;9001&#039;&#039;&#039;&lt;br /&gt;
| Receive ← VRChat&lt;br /&gt;
| Your application receives messages from VRChat&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.vrchat.com/docs/osc-overview OSC Overview] on the VRChat Documentation&lt;br /&gt;
* [https://github.com/Vidvox/OSCQueryProposal Full OSCQuery proposal] and how it functions while including example code&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
[[Category:Features]]&lt;/div&gt;</summary>
		<author><name>Usr 7543821c-72d4-45a3-9b87-a16d454a30e1</name></author>
	</entry>
	<entry>
		<id>https://wiki.vrchat.com/index.php?title=OSC&amp;diff=49821</id>
		<title>OSC</title>
		<link rel="alternate" type="text/html" href="https://wiki.vrchat.com/index.php?title=OSC&amp;diff=49821"/>
		<updated>2025-10-23T18:17:56Z</updated>

		<summary type="html">&lt;p&gt;Usr 7543821c-72d4-45a3-9b87-a16d454a30e1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Noticebox/Official}}{{Stub|Not much information here! You can [[VRCWiki:How to contribute|contribute]] by expanding, and proofreading this article, in accordance with the [[VRCWiki:Manual of Style|Manual of Style]].}}&lt;br /&gt;
[[File:OSC_Keyart.png|thumb|300x300px]]&lt;br /&gt;
[https://opensoundcontrol.stanford.edu/index.html &#039;&#039;&#039;OSC&#039;&#039;&#039;] is a way to get different devices and applications to talk to each other. VRChat announced on February 16th 2022 OSC for avatars&amp;lt;ref&amp;gt;https://hello.vrchat.com/blog/vrchat-osc-for-avatars&amp;lt;/ref&amp;gt;. Most commonly used to have body-, eye- and face trackers communicate with [[Special:MyLanguage/VRChat|VRChat]].&lt;br /&gt;
&lt;br /&gt;
==OSCQuery==&lt;br /&gt;
[https://github.com/Vidvox/OSCQueryProposal OSCQuery] is a protocol to connect OSC applications together easier. Information on how to connect with VRChat with OSCQuery is available on the [https://github.com/vrchat-community/osc/wiki/OSCQuery VRChat OSCQuery GitHub Wiki]. VRChat also provides [https://github.com/vrchat-community/vrc-oscquery-lib a C# library on GitHub].&lt;br /&gt;
&lt;br /&gt;
Some of the community made OSCQuery libraries:&lt;br /&gt;
&lt;br /&gt;
* TypeScript with example scripts on GitHub by [[User:Usr ddac2cc8-81dc-41c7-95c6-7aa7c81a783f|Jangxx]] - [https://github.com/jangxx/node-oscquery node-oscquery].&lt;br /&gt;
* Python with examples on the GitHub readme.md - [https://github.com/theepicsnail/vrchat_oscquery vrchat_oscquery]. An older variant that&#039;s more descriptive - [https://github.com/cyberkitsune/tinyoscquery tinyoscquery].&lt;br /&gt;
* Rust implementation with baseline functionality - [https://lib.rs/crates/oscquery oscquery].&lt;br /&gt;
&lt;br /&gt;
== OSC feature set ==&lt;br /&gt;
OSC can control a multitude of things within VRChat. While primarily focused around avatars OSC has the ability to modify/control some features such as control of the [[Camera Dolly]] check out the implementation on the [[Camera Dolly#OSC integration|Dolly&#039;s OSC Integration]] page.&lt;br /&gt;
&lt;br /&gt;
Parameters such as &amp;quot;input/Voice&amp;quot; can be controlled by sending &amp;quot;True&amp;quot; switches the current state of your microphone (Muted to Unmuted), Sending &amp;quot;False&amp;quot; has no action.&lt;br /&gt;
&lt;br /&gt;
Chatbox input can be accessed under &amp;quot;/chatbox/input&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== OSC ports ==&lt;br /&gt;
VRChat uses two UDP ports for OSC communication on localhost (&amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt;):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Port&lt;br /&gt;
! Direction&lt;br /&gt;
! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;9000&#039;&#039;&#039;&lt;br /&gt;
| Send → VRChat&lt;br /&gt;
| Your application sends messages to VRChat&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;9001&#039;&#039;&#039;&lt;br /&gt;
| Receive ← VRChat&lt;br /&gt;
| Your application receives messages from VRChat&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.vrchat.com/docs/osc-overview OSC Overview] on the VRChat Documentation&lt;br /&gt;
* [https://github.com/Vidvox/OSCQueryProposal Full OSCQuery proposal] and how it functions while including example code&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
[[Category:Features]]&lt;/div&gt;</summary>
		<author><name>Usr 7543821c-72d4-45a3-9b87-a16d454a30e1</name></author>
	</entry>
</feed>