IsSubject prefab allows you to select a person (or group) to make an animation exclusively visible to them. Is Subject is essentially a whitelist for your animations, anyone not selected for the whitelist can't see the animation!
--- For the system to work the selected player must have particle limiter off
- IsSubject Unity Package.
-Auto and Manual setup for the system, creating 4 controls for toggling the system, selecting your subject(s), debug, and setting IsSubject=IsLocal
- Detailed Manual & Instructions "Read Me" file.
- An explanation of how the system works, how to move your voice to a target object, and mute yourself via IsSubject animations
note, these use cases are not included in the file, but are examples of what you could more easily create with this system
- Effects using 2d audio sources
Limiting the audio toggle to marked IsSubject targets allows for more control when using 2D audio sources
- Spooky avatars
Create avatars that are hidden for everyone except for the selected player(s), Including hiding your voice. (Details on how to hide your voice for targeted players in the included read-me)
- Asset safety net
If you have sensitive assets on your avatar and you want that extra bit of security/don't want anyone who joins after you toggle them on to see your assets then you can require IsSubject to be true for the toggles to function, so there will be no possible way for someone to see it accidentally.
Automatic Setup Tool
VRC FuryManual Setup Tool
Avatar 3.0 Manager*Art by @OutletDraws (18+ Content Warning)
Discord @ degeneratewaste
Twitter (_18+ Content Warning_) @SwirlyHobkin
Email degeneratewaste321@gmail.com
Cull Detection Animations https://hfcred.gumroad.com/
hfcRed(UPDATE 3-6-25 )
VRC FURY BUG FIXED ON 3-6-25 VERSION
(1-16-25 BUG WITH VRC FURY)
Vrc Fury currently breaks the system causing the cull detection to lock in place If you have the "Fix Write Defaults" Component set to WD ON, or to auto causing WD to be set on. Set the fix mode to "DIsabled" or "Force Off"
(The example/debug layer allows you to have a separate animation show locally if needed)
(If you're not familiar with IsLocal, IsLocal is a transition condition that is only true for the local player {ie. the one in the avatar} the recommendation is so both you and the selected player can see the animation. Prevents instances where a toggle is on without you knowing)
---FOR THE SYSTEM TO WORK THE PERSON BEING SELECTED MUST HAVE YOU SHOWN AND HAVE PARTICLE LIMITER OFF, IF NOT FRIENDED THEY NEED TO ALLOW NON-FRIEND PARTICLE SYSTEMS TO BE SEEN IN THEIR SETTINGS---
The debug system uses the Stencil feature in Poiyomi
making it a requirement for it to work properly
https://github.com/poiyomi/PoiyomiToonShader/releases
-https://vrcfury.com/tutorials/artists
Avatar 3.0 Manager (Manual setup, do only if you know what you are doing and follow the instructions below, or if VRC FURY does not work
in your project)
-Available in curated packages in VRC Creator companion
or
- https://github.com/VRLabs/Avatars-3.0-Manager
Gesture Manager Emulator (Test the asset inside of Unity before uploading to vrchat)
-Available in curated packages in Vrc Creator companion
or
- https://github.com/BlackStartx/VRC-Gesture-Manager

-Drag and drop the "Subject Selection VRC FURY Setup" prefab into the base of your avatar hierarchy from Assets/DegenAssets/Subject Selection
-Rotate and translate the "Subject Selection VRC FURY Setup" prefab so the Red arrow is on your right hand and parallel with the forearm (The scale of the system is locked, if you do not like the size of the debug dot, scale the "Debug Container" object to change the debug dot size)
-Optional
(How to change the menu path using VRCFURY; The auto setup will set the Subject Selection menu on the top layer of your Radial menu if there is space. If your upmost layer is full then it will take 2 of your controls and merge them into a new submenu to make space. Add the VRC component "Move Menu Item" to your avatar, enter "Subject Selection" into the from path. Then put your desired submenu including all submenus above it divided using "/" like a file directory.
Example;
From Path: Subject Selection
To Path: DegenAssets/Subject Selection
This would move the subject selection submenu from your top menu into a submenu named "DegenAssets" on your top menu. For more information go to the VRCFURY website https://vrcfury.com/components/other)
-Upload
-Drag and drop "Subject Selection System" prefab into scene Hierarchy to apply base unity scale
-Place prefab on your avatar base
-Unpack prefab
-Top bar in unity open VRLabs. Then select Avatar 3.0 Manager, your avatars VRC Avatar Desctiptor should automatically appear. If it does not appear drag and drop your avatar from the hierarchy into the empty space.
-Open FX, Click "Add animator to merge"
-Clicking the circle icon next to the "None (Animator Controller)" field will open all Animation controllers in your project folders, select "Subject selection (Example)"
-Choose either "Merge on current" or "Merge on new", this won't change the functionality but will allow you to go back to your old animator if the merge creates an issue with your avatar in the future
-Open the parameters tab in AV3 Manager, your avatars VRC Expression parameters will be shown here
-Clicking the circle icon next to the "None (VRC Expression Parameters)" at the bottom of the parameters tab will show all VRC Expression Parameters, select "Subject Param (Example)"
-Copy parameters
-In the folder Assets/DegenAssets/Subject Selection/Vrc Menu-Param-FX copy the control "Subject select Menu Button (Example)" anywhere in your avatars expression menus
-Upload
"Subject Param (Example)" and "Subject selection
(Example)" File Location
|| || ||
\/ \/ \/
Assets/DegenAssets/Subject Selection/Vrc Menu-Param-FX
The included menu has 4 buttons
- Subject System (Green and Red Person/Eyes) Toggle
*Toggles selection system on. turning off will reset the system reverting all active IsSubject=True players to IsSubject=False
- Subject Select (Green Player select Icon) Button
*Begins looking for a player to mark as IsSubject=True, a laser will come out from your right hand locally, if it crosses a player then they will be marked.
- Subject Debug (Red and Green Bug Icon) Toggle
*Displays Debug circle above your wrist,
-White = Local player
-Red = Non-Local Non-Subject
-Green = IsSubject
- IsSubject=IsLocal (Red and Green Dot) Toggle
-Sets IsSubject to be true ONLY FOR LOCAL PLAYER
Duplicate the layer "Subject/Local/Non-Subject Animations" and replace any condition using "Subject Debug" with your conditions.
Then place the animations you want the Subject, Local, and Non-Subject player to see when you toggle your condition
There are a couple of use cases for this parameter that I've tested and I enjoy.
However, anything that you want only one selected person to see is a valid use case and can be done with this system
* Effects using 2d audio sources
The main problem with using 2D audio sources is that they are way too annoying in public worlds
or any large group instance so automatically you're told to turn them to 3d.The 2d
audio sources have good functionality that you may want to use on an asset, by selecting
a player or group of players to be the only ones rendering the animation you avoid
potentially annoying anyone you did not intend to hear the effect
* Spooooooky avatars
-I made a ghost avatar that hid my body and voice for anyone who IsSubject=False, and showed
me as a purple phantom for anyone who IsSubject=True/Islocal=True, I was able to have conversations
with people that no one else could hear except the person(s) I selected, and disappear for whoever I wanted.
It was very fun to see people's reactions to someone just talking to empty air, and I just showed up, having been there
the whole time.
-To hide/move voice if curious: Create a dummy head and set that as the animator avatar head in unity and your voice will
come out of that bone, then rotation constraint your actual head to the dummy bone. You will be able to see your head
if you do this so have near clip enabled when in that avatar. Then you will be able to put the dummy bone on a
position constraint and move it anywhere you want, In this use case I sent it 1000 units into the floor so I was
effectively muted if my avatar was shown to IsSubject=False
asset safety net
If you have assets on your avatar and you want that extra bit of security/don't want anyone who joins after you toggle to see
your assets then you can require IsSubject to be true for the toggles to function, so there will be no possible
way for someone to see it, even if it is active accidentally. If you did not select them they cannot see the asset, even if
they don't have the particle limiter turned off
If you'd like to use the system to play an animation while you are pointing at the player, set it to play when "Subject/Select" is true
You also can change the settings on the "Collision check" particle system to change how a player is selected! Currently, it is a laser so you can
point at a player to select one person at a time easily. Though you easily can set it to be a set radius around you
Try to change the system around to simulate a 3-D audio source with a 2-D audio source! All the information is available here for
you to figure out. However, to not break the system while you figure it out DO NOT turn on the mesh renderer on the "Collision check"
particle system, a mesh renderer being turned on under the "Cull Detection" game object is what turns on the "Subject/Select" Param. The
Sub-emitter particle system "Cull Activator" should have its mesh renderer on, however, as it only becomes active when hitting a local player collider.
I want to see what can be done with this system so if you come up with anything cool share it on Twitter/X and @ me! @SwirlyHobkin
If you have any problems my contact info is on the gumroad page for this asset and I will get to you as soon as I can!
Cull Detection Animations
PLZ check out hfc red and their stuff, I learned so much about unity through what they post and make
>>>Debug instructions outdated as of 5/2/24<<<<<<<<<<<<<
The Debug ball will become instructions for the target player when particle limiter is active
{-Toggle the system with the Subject System button
-Point at the desired player
-Press and hold subject select between their chest and face (Position may change between avatars, refer to debug tool)
-Toggle Subject Debug, and ask the desired player the color of the circle above your wrist. If they are a subject it will be green,
if they are not seeing green, hold subject select lazer on them, scanning up and down their body lenght. Ask again if it has changed
color, repeat until it changes.
-If it still doesn't work then ask for them to show your avatar completely, change their safety settings to allow
sub emitters, and turn off particle limiter. Then rejoin the world. This will solve any issue that is due to the asset, if this doesn't work the asset was not
set up properly or their vrchat is still limiting sub emitters}