#development-advanced
1 messages · Page 5 of 1
no
there is a graph for particles in unity
Visual effects graph
Im working on the chainsaw shield from the new doom game this is what i got so far but i need blod and gashes on the walls too
gonna have to wait a while for my modeler to make the actual shield so i blocked it out
but i need to figure out how to do decals
it's not so much VRChat specifically not allowing the VFX Graph, it's just that it is not available for the pipeline VRChat uses
Decals specifically seem to only be available in the URP
killing myself...
There's lots of ways to do decals, VFX graph is just one method. Some methods do work on VRC avatars. Here's one option: https://booth.pm/ja/items/1822991
was about to ask an avatar friend how they did it, that looks like it
true i could do it a shader method
just thought this looked cool lol
neato!
pretty cool ^^ still would be cool to see something like this, but using the simpler smoothing setup using direct blendrees when you're using the same smoothing factor
Hey, I've just updated my Open Sourced VR Live Captioning overlay project on Github.
This update integrates Parakeet-tdt-0.6b-v2, NVIDIA’s latest state-of-the-art (SOTA) English-only AI speech recognition model. After initial testing, it seems to dramatically reduce speech hallucinations compared to the Whisper Large v3 Turbo model. The optional two-step Gladia API validation has been deprecated to support fully offline voice transcription (runs locally without internet connection).
This update also introduces an independent Desktop mode as an alternative to the built-in Live Captioning feature in Windows 11 (totally works in Windows 10). This is WIP project please test it thoroughly and provide feedback.
https://github.com/Vinventive/live-captions-vr/releases/tag/v0.0.3-alpha
(If you are looking for a custom Speech-To-Speech and Speech-To-Text applications let me know)
I'm planning to implement this accesibility feature in one of the future updates https://x.com/googleaidevs/status/1925205852677460101
it's a passion project of mine and I know it's very niche, but it will make me super happy if it will help anyone
How does the simpler setup work? This is what I came up with, but it assumes you have a default animation playing on a separate layer.
#706915746105786448 message link to msg in VRLabs discord
example setup
the one downside of this method is that you have less "independance"
you basically share 3 blendtrees to do smoothing for an unlimited amount of AAPs
(all individually smoothed, to clarify)
but if generating via script, you'd probably need to keep a reference to those blendtrees or have some way of finding them
and you'd need a separate set of blendtrees for different smoothing factors
ideally, something like Fury should have some code that runs very late in the build that combines smoothing loops with equal smoothing factors that don't change
actually, looking at your last image, that might be the same setup
(also, that "reset" animation in my setup is technically not needed, it doesn't really work properly anyways. it should be in a layer above)
I would also strongly recommend MACS if you work with animators (and especially blendtrees) a lot https://mcardellje.gumroad.com/l/macs
MACS (McArdellje's Controller Suite) is designed to improve the workflow of the Unity Animator window. It adds a variety of features to aid its users in quickly creating animator setups.The tool helps by displaying a variety of extra information on top of unity's animator to allow for easier debugging at a glance, all extra icons and labels adde...
While this is technically more efficient, doesn't this sorta breaks some rules in regards to write defaults? I've read that its not a good practice to animate properties across multiple layers. In regards to having a separate layer for animating to default properties.
it may not even be needed if using WD on honestly
Its not for the most part, but I've noticed that sometimes Poiyomi animated properties will reset back to 0 in play mode.
Does MACS fix the bug where if you delete a layer the data for a blend tree still persists?
no, but dread's "ControllerCleaner" does https://vpm.dreadscripts.com/
it's free, and lets you clean either one controller, or all of the ones in your project. it'll tell you how many unused subassets are in each one
sweet, nicely done ^^
oh, that's handy
i was thinking of writing something like that
but no reason to reinvent the wheel
some humanoid collider bug report cannys:
https://feedback.vrchat.com/sdk-bug-reports/p/humanoid-colliders-may-divide-by-zero
https://feedback.vrchat.com/sdk-bug-reports/p/custom-humanoid-collider-transforms-overridden
https://feedback.vrchat.com/sdk-bug-reports/p/humanoid-colliders-set-to-disabled-retain-their-previous-settings-and-an-updated
(accidentally forgot to set the category to Bug Report on the first two, if any vrc dev would like to fix that)
heyo, has this been released yet?
I'm working on making it a proper vpm package, but its a weirdly convoluted process.
I didn't realize the package maker deletes your whole project. I'll have to restore from an older version.
Yeah, the VPM likes to delete and re-add the VRCDefaultWorldScene.unity file.
:(
You live you learn, unfortunately. I wasn't expecting it to be that destructive. I think I just lost like tens of hours of work.
They really ought to have some instruction to ask users to save a separate scene file. Or prevent overwriting the default somehow. Because you're def not the only one to have that happen.
I mean it does say to create a new project on the website. Its just most of the packaging things I've done in the past have generally been non-destructive for the most and usually create a separate folder for build output. Package Maker writes its build output to the root folder for some forsaken reason. I will say the confirmation message doesn't make it very clear of what's about to happen.
I use a tool called cup to create Unity packages on the command-line. You just put a package.json in it and it's a vpm package. That's it.
(cup as in "create unity package" - kinda clever)
Oo, I should try that. I tried using "Hybrid Packages" but it doesn't export hidden folders like Samples~
Yeah I wanted some way to easily automate it, so I use this in a makefile
here's the tool: https://github.com/abdelfattahradwan/cup
okay so, i want to make cool custom logic for my unlock buttons in my prefab. you can see that the unlock button object by default is just an empty with the script, and the script has a bunch of data related to the runtime functionality of the button.
what i'm wanting to do, is make it so that, when you enable the "preview" it instantiates that "ButtonContainer" prefab as a child of the UnlockButton gameobject. then, while preview is on and the prefab is there, options show up to change the prefab's attached UI elements, and the attached mesh and material (material slot 1). when preview is disabled, i want the chanegs made to stay, but the prefab to dissappear.
during runtime, either on Start or OnScenePostProcess, i want to instantiate one of those prefabs for the unlock button again, and give it all the same values that were set in editor
the goal, is that because networked code can't run on disabled objects, i have the visual parts and the trigger connected to the prefab rather than on the unlock button itself. but as to not have to have the user assign the "container" object manually, i want the prefab to be instantiated and references to be assigned automatically
and the reason preview should be able to be toggles, is because if a button should be disabled by default during runtime, then you may not want it to show up all the time in-editor
i already have some logic for this stuff written, but i wanted to ask here to see if i did anything strange or something, because i'm not super familiar with instantiating prefabs in-editor, or when the scene is being built.
currently it does work, besides the material and the fact there's no logic for getting rid of the prefab when preview is disabled. not sure why setting the material doesn't work
but that's also something i'll want help with. i don't know how i'll tell each unlock button in the scene to instantiate one of those prefabs and apply the values stored in the script
i do suppose i could just have the prefab always be attached to the button, then i won't have to worry about instantiating and removing it. that's one option
Is there any way to make my avatar behave like a fullbody user with their FBT Locomotion toggle disabled?
I have myself properly entering a state with Tracking Control setting everything to Tracking, as confirmed by debug, but in flight in OpenFlight worlds, I only get hip rotation tracked properly when I am in fullbody with FBT locomotion off. In fullbody, with FBT locomotion enabled, I only get head rotation applied to my entire avatar, the hips aren't rotating independently at all...
I've tried Animator Locomotion disable, but of course that doesn't do what I want either (at least not during OpenFlight).
if you go into gogo's menu, then the gogo icon on the bottom, enable the red feet toggle (cant remember if it has a name)
that disables walk anim if thats what youre asking
In the context of trying to bypass VRC's shitty "force everything through yt-dlp nonsense" - is there any file extension or protocol that VRC doesn't try and push through yt-dlp? e.g. rtsp:// etc?
nope, but you can force it to bail out with funny http tricks
but either way you will still have the 5s bs
Cant remember if rtspt bypasses it completly, i believe it does..
Yeah I'm already immediately failing web requests so I can't speed up that side of things unfortunately.
would anyone know what font and line break rules the action menu uses?
i need the font to reliably measure text width to count line breaks (i know the font size changes based on text length but i'm just forcing it to size 22 which appears to be in line with the default, though knowing the exact behavior for the size change would also allow me to replicate that)
there's obviously the line break on space (and some punctuation characters) and forced line break when a word is too long
the reason i need that is to write code to create "pseudo headers" because i doubt native expression menu headers (https://feedback.vrchat.com/avatar-30/p/expression-menu-headers) would be implemented for a while and i'd like to release a tool that generates a menu layout that effectively depends on headers (see canny) without having to wait for an unknown amount of time
possibly Noto Sans, not sure
seems very close at least, thanks
hm, close in the browser, a little more variable within unity, may be a different font or a non-standard variation of noto sans
seems like it might've been noto sans after all, numbers just looked off but they do seem to line up, linebreaks are forced at >=150px width (text area is probably just that wide), my code is far from optimized but i've replicated close enough behavior to attempt automating header creation
Can you swap the player's camera for another camera, or drive their existing camera in some way without moving their avatar? I'm trying to handle a cutscene and before I started I could have sworn you could swap cameras but it looks like I was wrong.
just screenspace shader em?
Hmmm, not sure how to make that work perfectly. It would also probably be a bit nauseating not being able to look around.
@gray mulch What about... can I put someone on a station and hide them from themsevles?
you could use a secondary camera + a render texture (for vr its recommended not to lock their head and allow the second camera to mimic player head movement and do something like a vignette effect so they want to look where you want them to look)
Shoving them on a station works but annoyingly trying to cull their avatar with near clip doesnt work
is it possible to change the bones that the vrc descriptor colliders (head, hands, feet, etc) are parented to? 🤔
(or to duplicate them to different bones)
Yes, but I believe you have to do it in C# as a build hook.
Can anyone think of a way of hiding the player's avatar, or at least freezing bones at a minimum?
You can force them into a animation controller with a station by including the avatar sdk dll iirc
can't remember the full method
if you're using stations, you can just animate the avatar away to somewhere else
Thanks, I shall see what I can do in that regard.
For the sake of bringing up other solutions.
- Override the player's camera view with a camera setup to not render the player and I assume playerlocal layers.
- Make use out of the recently exposed VRCCamera methods, specifically "LayerCullDistances" (https://creators.vrchat.com/worlds/udon/vrc-graphics/vrc-camera-settings) which to my understanding (not played around with it yet) would allow you to essentially cull the player and playerlocal layers entirely, only issue is that it is clamped to nearclip + 0.1 so something would appear of the avatars if you got close enough.
Exposes information and limited control over the user's screen camera, the handheld camera, and Unity's global quality settings via APIs listed here.
Yeah you can't set the near-clip to a high enough value to clip the player from their own view.
How do you override the camera though? I tried what I thought would work and it doesn't switch cameras.
https://github.com/Ikbenmathijs/ReplaceVRCCamShader
This and strip the discard out at the bottom.
Although tmk you'd need two, one for each eye.
Getting the right distance between eyes has also been simplified with vrc cameras settings since you can get the world position and rotation for each eye.
And a script for setting the resolution for the render textures.
I don't think it is a good solution, it is certainly not cheap, way better utilized for "remote controlling" something instead of Unity having to discard everything you should have been seeing, but no way to move voice location without stations so. .
Thanks. Seems like just animating the players model out of view will work best.
Looking for a substitute to dreadscripts Controller Editor 😭 does anyone have anything similar?
please 🙏
Update:
VRLabs has rehosted the majority of these scripts, available in the "Rehosted" section at https://vrlabs.dev/packages/ and on their github repo at https://github.com/VRLabs/DreadScripts-Archive (https://github.com/VRLabs/DreadScripts-Archive/releases)
~~Since Dreadrith has lost his mind and deleted all his scripts, I'm putting together an archive. If anybody has the following scripts, please hit up my DMs! com.dreadscripts.assetorganizer com.dreadscripts.blendtreebuilder com.dreadscripts.camerautility com.dreadrith.packageprocessor com.dreadscripts.replacemotion com.dreadscripts.resethumanoid com.dreadscripts.selectionhelper com.dreadscripts.text2texture com.dreadscripts.textureutility com.dreadscripts.localization com.dreadscripts.vrcprocessor
I currently have these scripts if anybody wants them: com.dreadscripts.animationhierarchyeditor com.dreadscripts.controllercleaner com.dreadscripts.copycutpaste com.dreadscripts.hierarchyplus com.dreadscripts.limbcontrol com.dreadscripts.noautogame com.dreadscripts.quicktoggle com.dreadscripts.vrcsdkplus
Isn't the MIT license fun?~~
I've been told that RATS is the closest thing and has a lot of the same features
https://github.com/rrazgriz/RATS
@maiden tiger homie's got us thank you!
also I've seen a lot of people use MACS as well, so you may wanna check that out too (paid though)
https://mcardellje.gumroad.com/l/macs
MACS (McArdellje's Controller Suite) is designed to improve the workflow of the Unity Animator window. It adds a variety of features to aid its users in quickly creating animator setups.The tool helps by displaying a variety of extra information on top of unity's animator to allow for easier debugging at a glance, all extra icons and labels adde...
I swear by macs, it's in every single project I work on
animators are painful to work on without it xD
How do you make vpm packages work? I tried just adding a package.json with all the required fields in it and zipping it. I also setup the repo json thing. When I try to add it to a project through vcc, it says it was added successfully, but doesn't acutally add. It says something about dependency issues.'
I use this tool, making sure I add my package.json file.
https://github.com/abdelfattahradwan/cup
that's really all.
Hi ya'll ^^
How you've been doing so far
I've had a question I despite me trying I haven't found an answer by myself yet so I come seeking for some help or advice ^^
I wanted to make something in unity (so it would be for an editor script) to help me in my workflow with working with constraint, the unity constraints are managed but I can seems to find a way to access the vrc constraint with my scripts, does sanyone have any idea how I could do that ??
I can give you what I have currently to give out an example of what I'm trying to achieve at the moment if needed ^^
Thank you for ya help !
Hihi! You can access the VRCConstraint classes via the using VRC.SDK3.Dynamics.Constraint.Components namespace
with the classnames in question being VRCScaleConstraint, VRCParentConstraint and whatnot
adding sources can be done through <target constraint>.Sources.Add(target).
I'll leave the rest for you to experiment with ^^
Hi i'm back :D
do you know how I could gain acces of the sources list and theire weight by any chances ^^ ?
to give some contexte i'm trying to do that atm
thank you again very very much !!
I made it working !!! :D
now into the reste =D
Actually this may be a better channel given how silly the idea is, but has anyone figured out a way to load in lightmaps at runtime using the VRC image loader?
ooh can you do that?
I don't know, that's why I'm asking 😉
The majority of my world size is lightmaps and it's split up by zones, so I'd rather not have people download a load of lightmaps they don't need.
ohhh, I see
At the very least, if you modified the shader so each time the lightmap is used it instead uses a texture property that is your lightmap then you'd get mostly there.
You probably lose something doing it that way, would guess optimization, but it would work.
Assuming you can export the lightmaps to png, keep the lightmap uv map but not the lightmaps in the bundle, or at least not full res ones.
Doing the light baking in blender would simplify things.
Doing the light baking in Blender absolutely would not simplify things in my situation, lol.
I think you can do it for object shaders but not for lightprobes

I'd hate to say it, but handling your lighting bakes in Blender would probably be your best bet
Unity projects with your use-case typically load each segment as an additive scene, allowing individual objects to keep their own lightmap
Without access to SceneManager.LoadScene, there are sadly few other options out there. Blame Unity, per-scene lightmaps have always felt finicky x.x
I'm not going to go into detail but this just wouldn't work at all.
is there a tutorial anywhere on doing this? i would be interested in learning how this is exported and loaded
Anyone else getting an issue with Unity not saving the window layout when the VRCSDK window is in it?
Anybody know why my stations are being deleted at runtime, with the log error that the exit point is too far away from the station, even though it is in the exact same spot as the station script and enter point at runtime? (Avatars)
its best to just not have a seat on a avatar in general
Really helpful answer
might be something with the default animator state?
What do you mean? Any animations animating it all start with it in the correct position
hm
I've been sitting on it a little bit, and I accidently deleted it once. The code is still a little rough and some things need to be ironed, but for the most part it should work. This version only uses the simplified version.
https://github.com/ColleenXYZ/BlendTreeInject
very cool, ty ^^
Can somebody clarify root rotation for me? When you’re in fullbody, your root/playspace is static and independent of head and hips rotation. When you’re in three-point, your root rotates along with your… head, right?
Same with desktop, it rotates with POV?
Not sure about FBT but yes, desktop and three point are rotated with your head
in three point vr you can lock the root with locomotion lock state behaviors (or by opening the big menu)
Linux user here, I sometimes have this issue too, proprietary binaries that only work on Windows.
yeah I once looked at that and decided to not attempt it - glad I didn't now.
So I’d like to develop a vpm in such a way that I can commit changes to it to git from inside multiple other projects. The vpm package template contains an entire copy of a unity project, which is not ideal. Does anyone have instructions on how to make a vpm where the git repo only contains the package itself? Or perhaps some other solution that could facilitate that kind of workflow?
On second thought maybe I should just forget about vpms and have any potential end user just clone the repo to their packages directory the same way I will be.
yeah! I actually build unity packages with this tool: https://github.com/abdelfattahradwan/cup
I just did it with a makefile, it's pretty easy. Then if you use github there's a workflow to just generate a package listing and have it published on the github.io site - I don't do that at the moment but I've contributed to a friend's packages so I've looked over the workflow a bit, it's really simple
from there, just decide where you want your stuff to install, be it Assets or Packages and have the full tree in the repo and just have cup package that all up.
do you have an example of a repo that uses that workflow? The official vrchat workflow uses a big complex script that also generates a full website and requires having the source assets to the website part in your repo, which kinda sucks.
you don't have to have that public, all you have to do is make the website public
oh - you put all that crap and such into its own repo, separate from your packages, so basically a repo for the vpm site
maybe not ideal if you have only one package but if you have several it's not a big deal
ah that makes sense
Do you have any more information on how you fixed your "no definitions found" error?
@lost spoke can you help this person and show them what you showed me? The secret place with all the information.
I was rotting in bed but now I have a purpose
I will get on PC ASAP because I was planning on doing this sometime soon anyway (showing people the Forbidden Texts)
There's a few steps to take here (I'm not sure if you 100% need them but it worked for me. As always, YMMV). Please let me know if something doesn't make sense.
- Go to Edit->Preferences
- Look up "External Tools", select Visual Studio 2019 for the External Script Editor and press "Regenerate project files" (from what I understand, this makes it so that VS can "access" the directives and properties used by the VRChat SDK or something. idk, I honestly just found it by screwing around)
- Open any C# script in your project (or make one and then open it). This should be opening in VS 2019.
- Look up "object browser" in the search bar at the top. This will bring you to the guts.
- Scroll down until you find all the VRC SDK stuff (which hopefully should be there?)
I don't know what your project entails but for me, I needed to find out the properties of VRC constraints because they were apparently nowhere (and naturally, nothing helpful on the site docs). It's all here. Anything you could find, it should be somewhere in the object browser. You can look up components in the object browser search as well
**Edit for typos
ok
I am using Visual Studio Code (blue), not Visual Studio (purple)
However, I was able to fix my issue in another way
I was missing the necessary Unity integration extensions.
After the extensions were installed, the "workspace" was finally being recognized in some capacity, with errors
The error was that I had an imported shader, with a wonky name
Apparently, that caused some form of parser error with the csproj file
Although I don't get a super-nice looking Object Browser, I can still find definitions of functions for the VRCPositionConstraint.Sources, and such
It's kinda funny that I had to go through all this trouble, just to find the reference changed ever so slightly
locked --> Locked
constraintActive --> IsActive
AddSource --> Sources.Add
Yeah that frustrated me beyond belief. Not me searching on and off for months to find it
If you don't mind me asking, what sorta thing are you working on?
I recently just got done updating my own constraint-centric tool lol
I am working on an automated setup tool for my own FX package
part of that includes passing armature bones to ParentConstraint sources across the prefab
Dear god
I was testing the discord filters and it sent me back in time
Also a lot of dead accounts up there
hey how i made a handling mouse gun
?
Can one explain to me why my animation
is doing this
i want it move all the bones with this and other animations
Anybody know the exact delay in milliseconds that there is between when you speak and when your mouth moves locally?
Aka the time it takes to translate your mic input into lip sync?
Around 100–150 milliseconds in perfect conditions
Thank you!
go for middle
does anyone know how to fix toggles dissapearing in final build
but working fine in gesture manager
can someone help me? I'm trying to toggle the change form and I don't know why but the anime is not working
i tryed make and remake de animations
try to create a other controller and nothing

Does anyone know whether it is possible to get avatar parameters in animator state-machine script?:
Originally, I'm trying to make an animation to change color values separately, but then I found I can't record ARGB or HSVG separately in lilToon shader because they are float4, like I can't only change R value because this will make the whole value fixed
So now I'm trying to use script to generate a new color value by the related avatar parameters then set the shader color to this generated value, but I don't know how to get avatar parameters in scripts and change the shader properties
by "script" you mean in a world? You can't get avatar parameters from Udon.
it says animator.
Avatar FX
yeah in an animator on an avatar, you can use VRC Avatar Parameter Driver to manipulate animator parameters
otherwise I'm not sure what "script" means here, since you can't have scripts on avatars
StateMachineBehaviour
I don't know, but I can add script from here
And the SDK doesn't give me a warn after I add an empty script in the state-machine behaviour
It's impossible for me to directly edit the shader logic to separate the ARGB or HSVG value
I tested it just now, the script I added in the animator state machine behavior do execute, and the test build can complete normally
what is the actual end goal here?
Record ARGB or HSVG value changing separately
so you can have separate sliders to change colors on the avatar?
like this , they can't be separated
even I delete 3 keys, the engine will just set it to default value when on this animation
I want to change color in the menu
don't create separate layers to handle these. instead, use a Direct blendtree to animate each 3. they work additively, so one slider shouldn't affect the others as long as the value is 0 for the others
which shader are you using btw
lilToon
they are float4, can't be separated
I tried to edit the shader script but found that is impossible
But after all the color value is only one
Once I edit it, it will be a completely new value
What I can do is make 3 of 4 values in the new color value be equaled with the old value
So the only solution I can think out is only change the shader logic or add new logic(script) that generate color value
just do this to animate each field and all will be good
or switch to Poiyomi so you can do easier adjustments
Thanks, I'll check it out
I don't think this can work, it's the defect of unity engine itself, although the engine can recognize this value have 4 part, but in animation, it is just a single value at all, when on this animation, either a value is given, or the engine will set the null value to the default
Animation do 'set' but do not 'read'
Whatever method you use for this animation, once it modify this value directly, it losses the original value
Unless you have some logic to read values from previous state and pass it to next state
Here isn't a special sign like '~' representing stay that part unchanged
I am on my phone so I cannot provide any visuals, but the premise is this:
make 5 animations, one of them with all of the values at 0, and another with only one of the values set to 1. inside a direct blendtree, plug in all 5 animations, starting with the "0" animation. each animation takes in a parameter. for the first one, use a parameter whos value is always 1. for each of the other one, they should be the parameters you control via the menu.
the reason why this works is because each of those animations works in an additive fashion. first, the "0" animation forces everything to 0 by default. then, when you increase the value for one of the other animation, the values are added to what the blendtree is already doing. because adding 0 to something doesn't change anything, the other elements aren't touched, while only the desired element is increased because the value is 1.
It is possible to modify liltoon to support separate rgb/hsv modification.
I was not able to figure out how to expose it as a set of new sliders, but the parameters can be animated even without a slider
The timing on this is really inconvenient, so I won't be able to send this modification until Wednesday
The gist on how to modify liltoon is to have a completely new set of parameters, then within the shader, they can be copied into the original float4
or alternatively, use Poiyomi and use the provided Translation tool to convert your liltoon mats to Poi ^^ since it has separate HSV parameters
I know this , but I have no knowledge of the shader language, and the scale of lilToon shader is too large to let AI to guide me to modify
there are too many .shader files, and a bunch of hlsl file with countless preprocessor
Yeah, it was a hassle to figure out the maze of header files
If, by Wednesday, you still need this, I can send the modified shaderfiles
Thank you for helping me
No problem, just give me a ping once it hits Wednesday
what time zone do you on
EST
in the meantime, try this. if you have a hard time figuring out how to set it up, you can poke me
OK I will also try this in next time, also thank you
It works!
wow
The hue parameter in its animation need to be set to 1.5 to let it work properly, because Hue[-0.5,0.5]
yes, but you can also just remove those in-between 3 directs and plug the anims straight into the root blendtree
the Blend parameter is added when you make a blendtree by default
I deleted it, because it will cause exception in this situation
I can finally implement my thoughts
what do you mean by exception?
it could've just been any always-1 parameter instead, or you could've added Blend, but it's not necessary because those blendtrees were redundant anyways
I can't change it
you could've if you clicked on those blendtrees and looked at the inspector
trust me, I work with blendtrees a lot lol
anyways, you can also implement all of your color changing in this single layer the same way
you can basically do an unlimited amount of things in one layer using direct blendtrees
keeping your animator layer count to a minimum is important
I also really recommend this add-on to make your life easier
MACS (McArdellje's Controller Suite) is designed to improve the workflow of the Unity Animator window. It adds a variety of features to aid its users in quickly creating animator setups.The tool helps by displaying a variety of extra information on top of unity's animator to allow for easier debugging at a glance, all extra icons and labels adde...
In the previous time, I'm struggling with understanding the exit time, so I create laryers for each toggles and style changing
I have 14 suite on my avatar, so I created at least 10 layers for just change their style lol
I see. in that case, I'd very strongly recommend combining those into one layer ^^
another thing, you can use direct blendtrees as "folders". basically, you could have a direct blendtree for each of the HSV adjustments, just to keep them separate from one another
OK thanks, I'll keep this in mind
example
orange are direct blendtrees
in the "root" blendtree, each of the sub-blendtrees are assigned the same "always 1" param
I am home a bit early:
@wintry ginkgo here is the modified liltoon package
The fix is to add _MainTexHue, _MainTexSat, _MainTexBright, _MainTexGamma to any of the main shader files you need
Then, in the ltspassbaker (internal and .shader), add the following line
col.rgb = _MainTexHue == 0 && _MainTexSat == 1.0f &&_MainTexBright == 1.0f && _MainTexGamma == 1.0f? lilToneCorrection(col.rgb, _MainTexHSVG) : lilToneCorrection(col.rgb, float4(_MainTexHue,_MainTexSat,_MainTexBright,_MainTexGamma));
This will make it such that when these internal values aren't used, the regular inspector value will be used, but if an animation drives it, then those internal sliders will be used instead.
To drive these values with an animation, you will have to 'Add Property', then manually find and set the value of "_MainTexHue", and such
Thanks much
I'm getting this pretty much every time I click on a GameObject in the editor that has an Udon script on it and it's driving me insane. It means it takes like 7 seconds to click anything that has a script on and is destroying my productivity. Anyone know what may be causing it? I've already reset the Unity UI.
If you want, you could probably check this yourself using the profiler (Window->Analysis->Profiler) by switching it to Edit Mode and letting it run as the hitch happens.
If you think something in the SDK is causing this, please report it on Canny with enough information for us to be able to reproduce it.
I didn't realise the profiler would pick up non-play-mode editor stuff. I'll try that, thanks.
I don’t know where to ask but I’m trying to mirror my phone screen in vrc that i can control my phone trough a phone asset my understanding of coding is at the bare minimum i anyone has a way to do it I would appreciate the help 🥺
On an avatar or in a world?
On a avatar
Then you'd want to be using OSC to get data in and/or out.
past that I guess you'd have to figure out how to talk to the phone
Ik but I will look further into it otherwise i probably need to find someone who can code it into the game
Yeah unless you have something on your phone which can send OSC messages, you'll have to develop some program to do this
Honestly not sure what to make of this. Once you dig into OnGUI, nothing is above 0.1%
But you can see the 16 second "freeze" there at least.
Unfortunately enaling Deep Profile seems to cause the delay to take like 8 minutes instead of 16 seconds, then eventually when it does respond again, clicking the spike in the profile caused Unity to crash entirely after another big delay.
yeah, Deep Profile is extremely expensive
That means that the time is being spent inside OnGUI itself. Without more profiler markers, you can't tell if it's just code directly inside on OnGUI (e.g. allocating a big array) or a method that it's calling
If you can reproduce the issue less severely (maybe in a new scene), you might be able to Deep Profile it
Tried a clean slate by creating a new project, importing the relevant packages then copying over the assets folder, but on start it gets stuck on this forever. Nothing else being echo'd into the logs since the model import prior either.
So, I had to empty the project, get the project open, then copy over the assets WHILE UNITY WAS OPEN, and do a refresh, that (took forever but) worked.
Unfortunately, despite it being a brand new project with just the assets copied over, it still has the same issue. Clicking something that has an Udon script on it still locks up the editor for 16 seconds. So massive waste of time.
It's possible that it's actually getting stuck somewhere else, and that the GUI just didn't get a chance to update
The external log file wasn't being updated at all during the stuck startups, but anyway it's done now.
But yeah, a direct repeatable thing I can do is fine a random gameobject, try and add VRC Pickup and that immediately causes the 15 second lockup.
So if I load the external profiler, it doesn't actually SEE the huge delay, it just shows 1.6 seconds, not the god knows how long it takes...
(with the profiler runner the delay was several minutes)
Using the embedded ones loads forever when trying to view the spike afterwards until Unity finally dies.
Is the Profiler using all of the RAM? lol
Yeah, as soon as I try and trigger the issue with the profiler running, it goes until I run out of RAM
(96GB btw)
156GB comitted so far...
223GB now...
It hit 336GB before I killed it. So yeah, profiling is a bust @plush bluff, unfortunately.
I wonder if it's the SDK for some reason. The delay when clicking an object with a Udon script on it seems directly proportional to the amount of things in the scene but it's definitely a new problem. I'll roll back the SDK to see if that helps.
So... the lag doesn't happen if the "VRC Pickup" component is collapsed...
sus
oof
This does two things:
- It prevents the editor from being drawn
- It prevents gizmos from being shown if the "Auto-hide gizmos" option is checked in your Preferences
Either could be the issue here
Not sure I understand how either of those could be the issue?
The editor shouldn't lock up regardless of whether the VRC Pickup component is collapsed or not...
I mean why it’s not freezing when the thing is collapsed
There’s some editor code that’s clearly stuck in an infinite loop
It could be the code that draws the inspector, or it could be the code that draws gizmos in the scene view
Sure, but then I'd expect everyone to be getting it. I'm not running a different version of Unity to everyone else :/
Does anyone know of a way to get one-handed movement to work when using two controllers (Normally left thumbstick strafes on left and right, I want it to rotate instead). Steam bindings doesn't do much help, in the one-handed tab I can see the binding for the stick I need but I can't move it to the 2 handed tab. I'm using a tracker in place for the right controller, so opening up the action menu and forcing one-handed locomotion is not an option for me.
Are there are OSC programs that might help me? I know you can send locomotion data through OSC
My right arm is in a cast, so I had a silly idea of putting a tracker on it and it works well enough, was able to offset the tracker in Steam bindings so its positioned well. Only issue is locomotion, since I can't really use my right hand to push any buttons. The tracker click button is currently used to open the quick menu
Sorry to hear profiling didn't work out. It's true that deep profiling generally needs a lot of memory.
You've mentioned that the inspector of VRCPickup might be causing this. Please consider opening a Canny report with as much detail as possible so we can track this and try to repro and fix it. In particular it would be good to know:
- If this happens if there is a VRCPickup component on the game object and nothing else, or if it's still specific to whether there's also an UdonBehaviour component on it.
- Whether disabling gizmos (top right button in the scene view) makes any difference.
- If there are other custom editor windows open, whether closing them makes any difference.
OnGUI()from your first profiler sample is specific to custom editor windows and isn't used by custom inspectors as far as I'm aware, so that's unusual.
Please also mention which SDK version you're using.
You can bisect the issue further if you'd like by progressively removing assets and seeing if any of them are causing the issue, but that's up to you. Thanks very much.
just a quick question, is the full deprecation of SDK2 in preparation to move to a newer version of unity?
(please be 6.2 if yes)
The issue is still the render pipeline, so I wouldn't hold my breath
i mean, ig that makes sense
maybe they have a custom render pipeline coming, who knows. i just want the more optimized unity 6
i can import and upload avis in it, but it isnt officially supported
and always throws errors
no, its so they don't have to maintain compatibility with ancient shit constantly lol
yeah, but that ancient shit is most of what was holding them back.
Me: "Why did videos start working in sdk2 again randomly for like 2 months?"
Dev friend: "I have no clue"

no it's the render pipeline and that all content so far is made for one that isn't available in new unity
(and other things)
i think 6.2 has birp still?
oh I thought it didn't? Huh.
i mean, ppl have ported the scriptable build pipeline to be VRCSDK compatible
who says we cant port the render pipeline, its all in C#
hahaaaaaaaa
haha
brother the shaders arn't even compatible
I attempted to port one of my worlds to URP the other day for another platform, it was.. painfull
poiyomi is working fine, tf u mean "not compatible"
There is a not-full-featured-yet URP release of poiyomi, yep.
but old content already uploaded wouldn't work with that
Oh wow we have a half working URP version of poi that doesn't have poi pro features and is under active development, this will surely solve all other THOUSANDS OF SHADERS IN USE ACROSS VRCHAT
ooh we should change tomorrow then!
you know what, fair. im just tired of waiting 30 minutes for U2022 to open, when U6 takes like 2
also having a urp version of poi does nothing to help with porting all the existing locked shaders in use as they are not directly swappable unless you basially remade the material at runtime by unlocking and relocking on the urp version
which would take.. minutes per avatar..
mine seems to take a huge amount of time shader-compiling these days 🙁
latest poi versions have some pretty good time saving there
even with a build server with a threadripper 9000, it still takes over 20 minutes to build an avi in U2022
I disagree, it's worse lately for me.
20? wow, mine takes like 2
Eh.. i can build mine in like 10m in urp on u6 lol, around 5m in 2022 on birp
in my case, the server is across an ocean, so some of that could be, latency
one of these days I need to get around to trying that out for real, just haven't had the time
scrn did some massive improvements to the urp version of poi to allow it to compile like 10m quicker per build for my avatar
256 varients per material down to 32
:3
once everything is URP compatible, how long til HDRP shaders for vrc?
prob never, as hdrp isn't urp
that doesn't make any sense
they both use SRP as a dependancy
meh, for now ill just install a newer version of 2022
62f1 is the latest available
62f1 is actually not that bad 👀
has BiRP, builds avis faster, and seems to be pretty stable 👍
no errors in logs either
can you actually upload vrchat content built with that though?
poiyomi toon works with the universal render pipeline; that doesn't mean you're using the URP in-game
the shader can handle URP; that's it
no idea if this is the appropriate location for this question... but: Is there a way to make a map of mine into a stand-alone off-line executable game?
with a lot of work and removing all the VRChat-specific stuff... probably?
just removing the pickup and sync components wouldn't be difficult. Not sure of Unity being able to build an offline version though.
Udon graph removal would render the map extremely static 🙁
you'd have to convert all of the scripts into Unity Monobehaviours, re-create a character controller, basically remake anything VRChat does for you
a lot of VRChat knowledge will transfer into a Unity project, no doubt. The map assets itself would be basically unchanged. It's mostly the scripting you'd have to do a bit of work converting or re-creating VRChat's systems
unfortunate news. I was hoping the VRC SDK would have a stand-alone build option.
I mean, why would it? its purpose is to build content for VRChat
I would probably suggest looking into Basis.
why? Well, because isn't that what happens within Unity when Play testing is done? Stand-alone, off-line executing of the maps with scripts and player controller all fully functional, just 100% local.
which is? you have a link?
web search for "basis VR" and you'll find it
even when you're doing local testing, you're still relying on many vrchat scripts that are either packaged with the SDK as part of obfuscated DLLs, or using the ones that are bundled with the game if you're doing in game testing of local builds.
but yea, Basis would probably be something you're interested in
Has anyone (here) ported a map to Basis?
There's a discord for Basis, I'd suggest going there.
better to ask on the basis Discord But to answer your question yes the current test map they're using is one of those VRchat maps that are available for purchase off of Booth
(Sundown)
the SDK's job is really just to:
- provide VRChat-specific scripting
- generate an AssetBundle containing your world
you can absolutely just use the scene you've built in your own game; you just won't have VRChat-specific stuff, like...well, VRChat itself
are you bring a map to banter?
er.. wrong person maybe? I'm not doing anything with either at the moment
oops
If i found a serious security vulnerability and reported it, could i get free vrc+ ? (I didnt but i kidna wanna start bug hunting)
vrchat afaik doesnt give out rewards of any kind to people reporting bugs so probably not, vrchat has known about many bugs (client users being allowed to switch their display name on a whim for example) and haven't patched it so im unsure if your bug would even get patched either unless its something like taking over another account or being able to delete someone elses world
Security issues generally get addressed
Username spoof is local so its not really a problem and only an issue of people dont write their scripts with proper ownership transfers
username spoofing can be replicated as ive seen it multiple times recently
kinda wack that vrchat allows multiple users into the same instance with the same display name if it isnt build & test imo
FYI it's #avatars-osc but yeah that sounds like how it works
Is there a way to disable loading of the Oculus Audio Spatializer in the VRChat SDK in favor of loading the latest build from Meta? ( https://developers.meta.com/horizon/downloads/package/oculus-spatializer-unity/ )
Build realistic audio environments by adding HRTF-based spatialization and room modeling in Unity.
The build VRChat includes has issues with Unity for Mac
To be specific I'm wondering if there is a scripting define or other way to force Unity to ignore the version included with the SDK.
I know I can add ~ to the end of the folder name to disable it that way.
hey yall don't know if this is the right channel. I'm a VR developer getting my masters, and I signed on for a graduate assistantship that is based around building a more effective grief counseling medium compared to video calls in VR. I suggested that VR Chat might be a more effective medium then horizon worlds or a bespoke communication tool, but it seems like access to the unity development base and tools requires a certain amount of use and trust. Which makes a lot of sense, but we've got a National Science Foundation grant. I feel like that's probs enough to qualify? I really don't want to make this in horizon worlds. Should we contact the developers on this one since we have some institutional backing?
I think that's a great idea. you may want to get in touch with VRChat directly, by sending them an email. they've probably got that on the website somewhere.
alternatively, you may try purchasing one month of VRC+ for the account you intend to use for uploading the world. that'll give you a boost in "trust" and should be enough to get you to New User, or at least very close to it
I have lots of components I've created for edit-mode procedural generation. I'm thinking about stripping these from the world during upload.
- Is this even necessary, or does VRChat automatically remove all non-allowlisted component types from the scene during build?
- If I should do it, how can I do this? My first thought was to implement
IVRCSDKBuildRequestedCallbackand destroy the objects during the callback, but the editor complains about usingObject.Destroyin edit mode.
Obviously, I could use Object.DestroyImmediate, but I guess it feels weird to be using something that can permanently destroy objects
(maybe VRChat is making a copy of the scene and then operating on that?)
i'll try it out; i have version control for a reason
okay, yes, that tried to actually delete everything in my scene
(permanently)
so that's not going to work!
People must be encountering this... what do we do? If I have a gameobject with a button or slider (or input) and I add an udon script everything is fine. I then want another like it but with a different script. I duplicate the object and I remove the existing udon script. I can add the new one (or not) but the old one is not actually removed. I do it multiple times, I save it over and over. I restart Unity. The old udon script persists.
I haven't seen that before. Are you using UdonSharp, or just graph-based behaviours?
I'm using UdonSharp. It occurs every time I try to remove an existing UdonBehaviour component. I end up creating a new empty GO and copying the other components and settings into it. It has done this for me for a couple of years.
On an unrelated note... I would like to limit the updating of a slider value until the player has stopped sliding it, i.e. not on the value changed event. It should be possible to watch for an OnEndDrag event, I assume it has to be on the handle component of the slider. Does anyone have an example I can copy if this is in fact the case?
Oh I might have one, it seems that MS Copilot can write it.
You can’t create your own non-Udon types
The actual code doesn’t exist
I’m wondering if the component itself remains, though (in a broken state)
I use that where I can! I sometimes can’t use that, though
e.g. I have a component that goes on the roots of prefabs
No, they’re all MonoBehaviours
They execute only in the editor
It shouldn’t matter that much
I should really just check if it’s generating a ton of log spam
Instead of hypothesizing, lol
Yeah
IS it even possible to swap or duplicate/swap an avatar body with another within Unity or is it just for Blender?
sure, but why would you?
It is certainly possible to set up your meshes and your workflow in such a way that you can swap your bodies and heads in unity. There are editor scripts which auto-merge together your armatures, so they can come from different files and be joined together in one body. Then to improve performance, you can have other editor scripts merge the meshes together too, in order to gain performance.
I can go further into the weeds on that topic, but the point is - yes, you can set up entire workflows which maximize the amount of configuration you can do in unity. This is how the majority of online stores selling parts of avatars operate, where you purchase a base model and then you purchase additional pieces of clothing and accessories, with the expectation of using some sort of merging tool to bring the avatar and the accessories together.
Merging tools are actually pretty broad in their categories. There are different categories of merging tools:
- blender/other plugins
- Unity editor scripts that give you explicit tools you can press a button to use and make changes to the avatar inside of unity
- ⭐ my personal favorite: Unity editor scripts which give you a suite of components to define non-destructive build-time operations.
- https://vrcfury.com/
- https://github.com/bdunderscore/ndmf
- https://ask.vrchat.com/t/go-the-modular-way-a-guide-to-non-destructive-workflows-on-avatars/23084
And within each of those categories, you can find plenty of examples. There are more than likely others outside of those three categories that I'm not aware of too. But all told, the end goal is the same: to make modularity possible. And there are enough people interested in that to have created a pretty broad and developed market.
However
All of this is only possible if your input meshes are modular. If the head you want is part of the same mesh as the rest of the body, you can't do any fancy merge tool things. If your stuff is already merged - you need to split it apart before you can use it modularly.
While that job is typically done in blender, especially if you wanted to get more precise with manual tools, it is something you can do in Unity too! In this case you would want to look for "mesh splitter" tools. Here is one that I found for example, though I have not tried it: https://kiri1120.booth.pm/items/1633965
with some instructions on usage:
https://note.com/nekomura_vrc/n/n4b0897fd8cdf
Here is the link for CATS - https://github.com/absolute-quantum/cats-blender-plugin/releases
Forgot to say at the end: there is an export model function at the top of the CATS Menu. Just click that and rename the model, then you're all good.
Non-Destructive Tools for VRChat Avatars
This post is there to convince you about the use of non destructive workflows for avatar creation, especially regarding to the VRChat context (this can also be applied to non VRChat projects). First, a little question. Are you using a non destructive workflows ? poll Spoiler Not sure it’s for me, but sure go for it. First of all, what i...
Does anyone know how to set the source and target transforms on a VRC Constraint using c#? I know how to make a VRCConstraintSource, but am not sure how to assign it.
omg I was not expecting getting as much info. Thank you that's exactly what I❤️ needed to focus on.
This is from memory since I'm away from my system, but you're probably looking for the properties TargetTransform and Sources on a constraint object. You can index into the sources list to get a specific source and change the SourceTransform its using, then assign it back.
That sounds correct
my code does this
constraint = sourceBone.gameObject.AddComponent<VRCParentConstraint>();
constraint.Sources.Add(new VRCConstraintSource
{
Weight = 1f,
SourceTransform = targetBone,
ParentPositionOffset = position,
ParentRotationOffset = rotation.eulerAngles
});
I've had some weird issues with modifying the offsets of a constraint via script, though
I accidentally added VRC Mirror Reflection before changing the material and now the built-in Unity "default material" is using the VRC Mirror Reflection shader
how do I like
undo that
I don't think you're supposed to be able to edit the shader for a built-in material O_O"
I've done this before and I've never been able to fix it myself
I think i was able to fix it by setting it to custom shader and changing it back to standard or something
On the mirror component
Does anyone have a magical way of loading in remote AudioClips? (i.e. so I don't have to package them in world). To clarify I'm not talking about remotely loaded audio via video players.
I didn't think that was possible
Makes low latency audio a pain and I don't want to bloat the world with audio 🙁
oh I agree
Is there any way to sync a remotely set bool to the local client?
I was hoping for a way for me to detect if somebody (not me locally) had set the isRendering bool, from this VRlabs package: https://github.com/VRLabs/IsRendering-Detection
From what I saw online, the only values that can sync from remote to local is a physbone grab position, which isn't viable:
https://vrc.school/docs/Other/Network-Sync/
Use case: skyrim-esque "am I being detected?" Hud element
Not that I'm aware of. I've wanted to do the same thing
you'd need cooperation from the remote user's avatar
This is so sad
Bit of a shot in the dark but is the IK rates for players based on how far away they are documented anywhere?
Hi ^^
how's ya'll doing ?
is there a place where there is documentation about namespace for vrchat scripts ?
for instance i was trying to find a way to acces the phhysbones component to try and automatically add one or multiple transform into the ignore transform section of it ^^
but didn't have any luck into finding the required dosumentation ^^"
thank you in advance for ya help
VRCPhysBone is in VRC.SDK3.Dynamics.PhysBone.Components, the property you're looking for is List<Transform> ignoreTransforms
Oh wait did world physbones get released at some point?
That's still in progress at the moment, I'm assuming this is about changing PhysBones via code in the SDK
Aaah gotcha
Yes it is about that ^^
Is there some doc somewhere that has all of that stuff about accessing stuff in code ??
Thank you already ☺️
No docs on this subject currently I'm afraid, for now I would recommend using a code editor that includes autocomplete/Intellisense so your system can find the references for you
Not sure where else to put this because it is more a unity question than one related to avatars or worlds, but is there a way to get rid of the grid or change the background in the animator window? Because there is a visible grid, i spend stupid amounts of time obsessively trying to line things up, and am constantly irritated by the fact that the transitions don't start from the exact center of the nodes, and the fact that the entry/exit/any nodes are smaller than the rest. Without the grid to compare to i wouldn't be able to immediately notice those issues. Getting rid of the snapping would also be great, but i feel like that may be a bigger task than changing a background texture
Thank you!
https://unity.com/security/sept-2025-01 this.... Isnt good
RCE exploit found in unity
Phew
the vulnerability lets you make unity load extra libraries, which I imagine is the very first thing an anticheat would want to stop, ha
Not a rce, don't fearmonger
Wording made it seem like it, sorry
It's an LCE, which means you already have bigger issues if that happens.
Misplaced unity question: is there a convention or preferred way to mess with asset yaml in situations where the unity editor api lacks the functionality you need?
it's a plaintext format, so i just throw it in my IDE and mess with it
are you thinking of how to do that in an editor script?
why does the SDK say Image Size is 1200x900 but the images are being downscaled to 800x600?
shouldn't that be changed to 800x600?
Hi... I'm looking for "reasonable" solutions that can be used to toggle a player menu. I had it on thumbstick pressed for PCVR, keyboard "T" on Windows client and right thumbstick down for Android. It worked but I didn't like 2 different actions for PCVR and Android. I switched it to double clicking the trigger (left or right) and I think that is very intuitive and works on both platforms. BUT... it isn't uncommon to pull the trigger twice rapidly and this make my player menu appear at odd times. Plus people using hand tracking (it seems) often pop up the menu accidentally. So I'm looking for alternatives. One world uses a combination of positioning the controller along your head and clicking the trigger. Now I can understand the benefit. I don't love that option but it should just about eliminate accidental menu pop-ups. Has anyone encountered other options that will a) work for all platforms and b) is reasonably intuitive?
Why not just right thumbstick up or down for any vr platform?
Hi there, thanks. It is just a toggle so even just the right thumbstick down worked well for Android. I am pretty sure I remember that it didn't work on PCVR. The right thumbstick controls turning of course and I can't find anything in the docs (now) that mentions it being reserved for anything special on PCVR but it seems odd that I wouldn't have used it in that case. I'm looking at hand tracking docs and I have to think people using HT would accidentally sweep down a bit when trying to turn left and right. I'll most likely give the hand near head option a try. Sometimes it is hard to guess the effect on players. I liked my double trigger but received a couple of complaints.
And I figured I would check the current status of video player problems. Everything worked for many months but I've recently been getting a common error [AVProVideo] Error: Loading failed. File not found, codec not supported, video resolution too high or insufficient system resources There is nothing wrong with the video (it plays on the browser) and interestingly my own YT videos play on the headset without error. I'll trying a few other worlds tonight to see if my problems are unique or limited to one platform. I guessed it may be time for another yt-dlp update but there are few clues as to the culprit.
A bit more on the youtube videos. I experimented with the API more and set the option to "Standard" rather than "High". One video that didn't play with high did play with standard. It didn't look very good of course. Another video did not play so I don't know if they don't have a standard resolution. I think the VideoResolution setting is a suggestion not an absolute guarantee. In any case standard is just too grainy so I can't use it. So from the error the cause is not that the video couldn't be found, it could be the codec but I have no control over that. The resolution may be a factor but it wasn't until recently and I doubt I have insufficient resources.
I use right thumbstick down to summon my tablet, works fine. The only thing to be careful of is the point at which it triggers as lots of people have failing joysticks and don't realise (it doesn't go the full range of motion).
Thanks for the info. Personally I thought the thumbstick down was easy. Controller thumbsticks can be a bit of a weak point and now (and more so in the future) hand tracking has to be taken into account.
Yeah, I actually have no idea how to handle it with hand tracking.
The mystery of youtube videos continues. I tested in 2 other worlds and generally received errors there as well. If someone has a guess about why I'd love to hear it. This is what I know. I did a search in YTS and it found a music video and it played. I pasted a URL into the player (copied not typed so it is legit) and I got an error. Similar problems in the second video world. I then got a friend (on Android) to join YTS. They did a search and both she and I could see the video. I pasted my URL again and it loaded and played for her but I received an error. I tried another URL and the same thing happened. I'm going to log back in via Android to see if could be related to the Steam version of VRC. Another friend joined us who also uses Steam and she mentioned problems with the videos also. I'll test more and post the results.
As i told you before, its bot detection
I don't know what bot detection is. I don't know who EllyVR is and I don't understand why it would take a 3rd party to get a VRChat video player to work.
Ok, so I tested in Android and the YTS world played my videos. I want to check the "Rift" version using Link to see if that works.
Its because you are failing bot detection measures by youtube, mainly targeted at people bypassing ads, by providing a account cookie yt lets you bypass a lot of these checks, its also the reason ytdlp is going to need a full blown js runner soon
This is a well known issue
Etc
If you install vrcx it will even print the fail reason as bot detection most of the time
Its something like "Please signin to prove you are not a bot"
Cacher stubs vrc ytdlp calls to itself and either returns a previously downloaded video or uses your youtube browser cookies to grab it with the latest ytdlp
And the Rift/Link version didn't play YT videos either which is no surprise. Link continues to be a royal pain stuttering all the time which is why I stopped using it and use Virtual Desktop exclusively now. So... can I get a show of hands? who is using VRC in PCVR (are you using the Steam version)? Can you play videos or not? Have you installed any "patch" or plan on installing one? I can't see asking everyone who enters my world to install a 3rd party library that will dl and alter yt-dlp. The casual user might just opt out of watching videos and I suspect most users will be confused.
I use PCVR and half the time the videos don't play at all and I haven't patched anything
It comes and goes, which is how youtube wants it to be, they only want to punish those bypassing their systems, disallowing logged out viewing globally would have severe consequences on their bottom line (you wouldn't, for example, be able to watch youtube videos inside discord, whether using the voice chat thing or in the embed.).
For the moment they work for me, but I wouldn't bet on it continuing.
Which is why I have a headless linux container setup where I can login to youtube and get a stream from, but that is a personal size solution for me and friends.
Ideally you shouldn't make a world that is reliant on youtube or any of the free video hosters, with the direction the internet is going they will eventually mandate account login or worse.
Thanks for the feedback. I don't know if "this time" is the time it stops working but it is annoying for sure. I can actually play videos I have uploaded to YT but not others. Such an odd experience to be in my world with people saying "it's playing for me" (because they are on Android) and I can't see the video (on Steam). At least now I know it isn't my API. I don't think about corporate choices as punishment. I like to get paid if someone is using sources that I host. I do wish there was a simple, relatively inexpensive way to handle it though. Like (for instance) $12 a year gets you a key you can install. I think people using VRC wouldn't mind opting in if it was the click of a button on the YT site. I don't see a lot of people installing stuff from GitHub (free or not).
Good feedback... so they "all" load when you use VRCVC or "most"?
I saw this *Bigscreen integration: Some apps like Bigscreen VR have natively integrated YouTube, allowing users to watch content while respecting YouTube's terms. Premium users can log in for an ad-free experience within the Bigscreen app. * Do you think this works in PCVR and if so does it seem possible that VRC could "natively integrate" YouTube along the lines of Bigscreen if they chose to?
Resonite allows login too now.
I think VRC are trying to avoid looking like they officially endorse it.
Officially endorsing it sounds like a good thing to me. Is BigScreen and Resonite making a mistake or is VRC?
Through cookie?
If VRChat could get Youtube on board with a proper implementation (no full on browser hogging resources), instead of something rough and no way to login, like discord's youtube VC thing, then it would be somewhat positive, or positive if you have yt premium, since we'd totally get ads then.
But I highly doubt VRC could convince Youtube to make something that wasn't just an embed and they'd probably still not let us login going by how Discord has no option to do that and they are so much larger.
I believe my question remains, what's up with BigScreen and Resonite then? I try not to theorize about what companies may or may not or can and cannot do.
Does Resonite get special treatment from vrc?
Resonite is another platform, not a VRC world.
Officially endorsing it would likely leave them open to getting sued by YouTube.
yt-dlp is very much in breach of YouTube's ToS.
BigScreen and Resonite are too small for YouTube to care about.
Yeah, this is what it looks like.
So it's rather about Resonite allowed youtube to be integrated into itself?
From what I hear they already update it each time you hop world.
But they have their own fork of it with changes that make it safer for vrc usage, which might not be automated (assuming that is even possible to do) so it is probably delayed by a few hours.
I was under the impression big screen had some kind of allowed integration of youtube, which is why I asked, Reso's implementation sure isn't sanctioned.
Possibly, it seems they do have some partnerships.
Sued for? I'm not a lawyer. VRC has 2 sanctioned video players. They post instructions in their docs how to place them in a world and have whitelisted youtube.com (among others) and significantly they have video players in their own company-designed (New Year's Eve) worlds. Is Google just waiting for some special time to spring the trap?
And the videos play on Android BTW.
VRC developers aren't using yt-dlp the video requests are being processed by it. Our browsers don't do that so perhaps stop doing that.
Or maybe instead of charging for folders to save worlds and avatars and silly stickers https://www.roadtovr.com/bigscreen-cloud-browser-quest-screen-share
Bigscreen, the social VR screen sharing platform, is spectacularly good at letting users hold communal watch parties dedicated to anything they can show on a PC’s screen, Quest users included. But now the studio is launching a paid cloud-streaming service that aims to make it even easier for Quest users looking to get away from …
"Our browsers don't do that so perhaps stop doing that." Not quite sure what you mean by this. "yt-dlp" is used because it's the thing that turns YouTube URLs into direct media URLs and bypasses YouTube's protections.
Also remember that unlike VRChat, Bigscreen isn't free, it's a paid application.
Yes, because they are using yt-dlp via some mechanism there too now, they didn't use to which is why Quest users had to use special resolvers to play videos a while back.
The use/requirement of yt-dlp is a direct result of VRC's policies and implementation isn't it? Are there no other ways to stream videos? They can opt for another way. I have never paid for Bigscreen. VRC is not "free" if you want the extra ability to import a campfire for instance. If you want to create a group, etc. If you want to stream videos into Bigscreen one "opts" to pay for the functionality not unlike opting in to VRC+. It's just streaming in video is actually a benefit while more folders for avatars is not.
World developers have to jump through hoops to get things like YT search working (and anything with runtime URLs). This isn't inherent to VR or the Internet it is imposed by VRC. They can relax their policies. In any case... why can't they be sued right now by Google if Google wanted to sue someone over YT streaming? How is the risk lessened or increased by what they are doing? If Google wants to make an example they can simply "sue" Bigscreen and create a precedent and warning for others. You don't sue the biggest company you sue a small one. It is cheaper and easier. They aren't trying to obtain cash from such a move. But I am not a lawyer.
"The use/requirement of yt-dlp is a direct result of VRC's policies and implementation isn't it? Are there no other ways to stream videos? They can opt for another way." - Not that I'm aware of, no. Youtube don't want you accessing their content off platform.
If you're referring to "Why don't VRC pay Youtube?" then, well you'd have to ask them. It may be incredibly expensive, YouTube may have said no, who knows.
YT provides an API don't they? I have a license, it's free. If I required a customer to install something for one of my games I'd (I hope) explain why. VRC could try communicating rather that requiring every player to ask them the same questions. Do you see replies from the company re: most questions? Does anyone get responses?
Oh, I could/can stream YT videos into the VR app I wrote which is part of the reason I wrote the app. I was tired of restrictions.
And I didn't use yt-dlp to translate the URL.
Because that would require them to outright state that they are circumventing YouTube's ToS.
Can you elaborate on this? I'm seeing no mention of APIs except for data, not videos and what does link to that is web specific, e.g. iframing the videos into other sites. Nothing about other software.
this is all just my own speculation, but I'm guessing YouTube videos operate in the way they do because the video players that VRChat use need a direct media link, where a youtube link is not that
most other services that have youtube are embedded through a web browser, which the VRChat video players simply aren't, so it can't play them in the usual way
In order to play them "properly", I'm assuming they'd need some sort of embedded web browser support, which sounds like a lot of engineering work that they'd simply rather use elsewhere
And I for one am on the side that diverting resources to fix the youtube playing problem isn't really worth the effort. The other things VRChat has been working on and adding to the game recently have been much more useful in comparison. Especially since playing youtube videos works perfectly fine for a lot of the time
So the answer to the question to basically anything when you ask "Why doesn't VRChat do X thing?" it's often a case of "it's not really worth doing at this time"
comparing the feature to more favorite slots is also a little silly, and completely ignores what a much larger population of the playerbase considers important to have
Bigscreen streaming into an iframe with ads is less of an issue too because with Bigscreen the host then streams back out to everyone else, where as in VRC everyone loads the video themselves, which if they were to then play ads, would completely desync everyone (which is likely to become a real issue if YouTube goes ahead with it's ad injection it was trialing a while back).
Especially since playing youtube videos works perfectly fine for a lot of the time. Clearly this is not the case or there wouldn't be messages here, on ask.vrchat and other sites wondering why it is broken. Consider that the devs at VRC do not "invent" everything. They leverage a lot of it as does every other development group on Earth. We use other company's libraries because they are specialists in the subject. Let's just agree that everything about VRC and videos is working great and leave it at that. 🙂
what you experienced in YTS happened because we are resolving videos server-side when they're played through search. given that it worked, while your direct link in the player did not, you can see why we do it :p
to avoid confusion, it's probably best to use a different world for testing, something without any search system
Thanks for your reply. My system is generally working like yours I imagine but possibly not the point where the link resolution takes place. I see no reason to resolve each video found (if that is what you are doing). It is enough that the link with the YT id is known. If a player wants to play it VRC will resolve it. If it happens to work in a world without search I'd still be stuck as would anyone using PCVR in my world.
that's indeed what we are doing. we have found there are multiple "tiers" of blocking, and some people are blocked from resolving videos on their end, but are able to play ones that we've resolved for them
it functions just like the old days, before quest vrc had a yt-dlp build
I was able to play videos (of mine) that reside on YT in both Android and PCVR. Most other videos would not play. I (among other tests) lowered the max resolution on my search and the video a 720p one did play. That resolution is unworkable however.
Have you ever had anyone complaining that this didn't work? The issue I had in the past when I tried this was that the direct media URLs yt-dlp returns from Google are valid for that person, but often have limitations, e.g. if everyone trying to use it is in the US (and the server doing the resolving is in the US) it may be fine, but if some are in Europe and some are in the US, the URL doens't always work for the people outside the US because it seems to have some undesclosed limit in scope.
yes
seems to happen mostly on music uploads
but, per our stats, our success rate is higher this way than without. so we'll take the compromise
Huh, explains why I saw a higher error rate then as it was all music.
Thanks again. I'll have to experiment with resolving earlier and saving them. I thought there was a date element on those URLs for when they expire so I didn't use them. Still as you say "working" with some limits is better than not working. I was having issues with URL redirects as well so I opted for a user cutting the URL from one component and pasting it into the player URL. That worked very well but requires some explanation.
There is a field in the YT API request The regionCode parameter instructs the API to return search results for videos that can be viewed in the specified country. There is a call that can return where the video is blocked (if blocked) but it is an additional call and typically not worth the overhead since you would need to know where every person in the world was to effectively know it wouldn't play for some.
Good info. I'm going to experiment more but I had player error issues in YTS and at least one other video world. I suspect this time it is more than that.
Thats probably geolocked to the requested region
You can easily fetch the data if you have a video id https://watannetwork.com/tools/blocked
Another couple of experiments to try to determine patterns re: YT videos. Like before I could play/watch my YT videos and I could watch some HD drone videos (Hong Kong for instance). Tried 2 music videos and I could not see them. They were playing as people on Android could see them.
There have been different issues over time and different behaviors for the various platforms. It doesn't typically have anything to do with one's network setup or stuff like reinstalling, factory reset and other nonsense. I have one more adjustment to make to my API to test whether resolving the link "early" makes a difference.
In depth testing should be done with a repeatable (few) videos that we could all reference. Hit or miss solutions are often why people keep trying any odd solution that someone posts. Say "it worked for me" and people will swap a USB cable or buy a new router. My concern with using a VPN and/or VRCVideoCacher is most (if not all) of the people I know on VRC don't have it and won't install it. I also (again personally) don't want a solution that works 75% or 80% of the time. I can't have 1/4 of the players unable to watch a simple video.
Other people most probably have other goals and as such other solutions may work for them.
That's helpful. I think we want 1 that works and 1 that doesn't work under some circumstances and the results from Android and PCVR. Someone ought to test Apple (I suppose) but I don't have an Apple headset and don't know anyone who does. I assume the Android phone client works like Android on the headset and I'll guess that the Windows client works like PCVR but again it would be best to test and report those things. It isn't important to know exactly where someone is located in the world but if this video shows up as blocked anywhere then clearly people won't see it for other reasons.
am on PC and video players are borked
In other news I copied that link and pasted it into a video player in Resonite and just watched the video in PCVR.
I feel this is just spamming the channel at this point.
There's already a 1000+ long chain in community support about youtube and video players and you are basically just repeating everything everyone else has already tried already
If you want reliable video playback, use your own server and not youtube
Thanks for sharing your opinion. I don't agree so that is 1 vote for and 1 against. If you could provide a link to the 1000+ chain it might help but if the messages there go back 3 years most of the solutions wouldn't likely apply. If the messages tend to blame it on "those capitalists at Google" then this thread is warranted. I will guess that people aren't going to set up a server to mirror YT and "it has worked for years" seems be being ignored.
oh if this is a vote then I'm voting on Haxy's side too. This has kind of become a meaningless conversation.
Youtube playback in VRChat has been on-and-off for years now and VRChat has shown no interest in changing things. Just because it theoretically could work, as shown in your own application and in other platforms, doesn't mean it's going to happen in VRChat anytime soon.
If you want VRChat to make changes, make a Canny post for it.
otherwise, if you want reliable video playback, use your own server and not YouTube.
If this is becoming a vote, I vote with haxy too, although this chat is rarely used so there’s not much harm in filling it with whatever you want
It isn't a vote. And if you think voting on message topics is good let's all review all the posts and vote on them too. Haxy doesn't make the rules here and install a 3rd party tool and use your own server are not reasonable solutions. If you are aware of an alternative to YT that people can readily access just post the link. We are discussing a topic that you (seemingly) are not interested in. I see messages all the time that I'm not interested in, I ignore them.
then why did you use voting as part of your argument if you're this adamant it's a bad idea
¯_(ツ)_/¯
https://creators.vrchat.com/worlds/udon/video-players/www-whitelist/#allowlisted-services
Going of that list you can either pick video hosting with Akamai or Vimeo.
Vimeo being more set and forget, the free tier includes 1GB of video and you won't need to care about paying for bandwidth like Akamai.
Akamai is just the more prefessional solution listed, Vimeo would be one step behind that.
The following services are on the video player allowlist.
This article discusses the Free plan on Vimeo. Read more about all available Vimeo subscription plans at ‘Compare Vimeo plans’.
In this article:
What is the Free plan on Vimeo?
What’s included ...
Never seen anyone use Vimeo on VRChat, but they don't have any real incentive to lock down who can watch what.
Would be nice if a few other services were on that list, but those are what we have to go with if we do not want to mandate having untrusted URLs off.
extremely nitpicky thing: adding a VRCPhysbone via script defaults to Version 1.0, rather than Version 1.1
I guess this is unavoidable, though. An old serialized VRCPhysbone in an upgraded project should not default to version 1.1
which would happen if the version field had a default of 1.1 specified
same goes for ignoreOtherPhysbones
I'm almost certain Tom's just here to troll most of the time, that or to just be a contrarian. Don't bother engaging.
Assuming you haven't you should really try using wifi-densepose before relying on it, it is obviously a whole lot of AI and is missing any sort of proof that it actually works in the form of a gif or video.
Just looking at it I don't think it works and if there was any community sorrounding it then it has collapsed, various links just don't work, almost like they never existed.
I see absolutely no proof any of this works. It's an oddly overly pretty designed repo page with absolutely zero substance. When you have a project like this, you'd have screenshots of videos showing how it works.
The Acknowledgments is also weirdly vague. Research Foundation: Based on groundbreaking research in WiFi-based human sensingand Hardware Partners: Special thanks to router manufacturers for CSI support.
I wonder if that repo exists because someone's trying to sell something and they're using it as "proof".
it's extremely weird looking
amusingly, the AI-generated review notes that it doesn't actually do anything
i'm guessing the entire thing was vibe-coded and is just an extremely large skeleton
haha
What a time to be alive, a vibe coded piece of software that is expertly reviewed by another AI that seems to really want to be as positive as possible.
What I really wonder is how much of it was hallucinated, the pypi link and issues link works (former must have required manual work), but github discussions, discord, the email (including domain that has never been registered before) do not.
If LLMs just regularly spew out fake discord links and email addresses for vibe coded repositories then this seems ripe for abuse.
Nevermind then
welcome to the hallucinated modern world 🙁
Trying to...
Oh, blocked for... some reason, thanks Discord, very useful
What the hell in that is tripping the block?
Anyway, what I was going to say was - does anything in that look odd? Trying to play that video will crash VRChat (or rather, it'll hard lock up)
The 48fps is a little odd but AV1 and AAC in an MP4 container should be fine.
10bit little endian should be fine. I suspect it's the unknown/bt709/iec which is definitely unconventional which is tripping it up.
that is a very weird pixel format, yeah
wth is happening
https://feedback.vrchat.com/sdk-bug-reports/p/sdk-sometimes-reverts-object-toggles-in-editor
i worked out what's causing this bug
in short: the Builder panel now calls Rebind() on your animator, which causes it to write out all of its default values
ah, it's getting a fix already #open-beta-discussion message
is there any reason to i can't access other namespaces from other assemblies while building????
it works very well on test mode, only fails on building avatar
Check the asmdef you're referencing to see if it's an editor-only assembly
Although, that shouldn't matter, actually...
(i'm thinking of building a game here)
fixed: just put #if UNITY_EDITOR on every component fixed it, idk why it works
ah, components that are on the avatar will cause errors if they reference editor-only types
anything wrapped in #if UNITY_EDITOR will be excluded in non-editor contexts
for ndmf, create two ASMDEFs. one for any platform, one for just editor
in the any platform (runtime) one, create a class that extends MonoBehaviour, IEditorOnly
then make the NDMF plugin in the editor assembly and have it check for the runtime component
see this for an example: https://git.lilyy.gay/lillith/SharedVRCStuff/src/branch/main/LinkDownloader
sowwy forgot to ping, see above ^.^
bit of a niche problem with physbones: if I rapidly move my avatar while a physbone is interacting with a physbone collider (a plane, in this case), the _Angle parameter drops and then rises back up over the course of a few frames
the physbone is not actually rotating, though
i'm observing this both in the editor and in-game
e.g. I pause the editor, move my entire avatar 10 meters forward, and unpause
the physbone doesn't visibly react whatsoever, but the angle parameter falls down to near zero
This issue only happens one-way; a physbone's angle won't go up in response to rapid movement
I'm using parent constraints to make the physbones follow my avatar's feet
(it's for a footstep system)
i'm guessing that's relevant
but i'll have to test with physbones that aren't parented
nah, still happens
It takes several frames to get back to the correct angle
does anyone know how to or have a template repo for multiple packages in one repossitory?
the usual template only works with one and if i want to share some common code between multiple things it would be very convenient to have it all in one git repo and VPM repo
seems like the CI calls BuildRepoListing with a --current-package-name argument.. that seems like it would work.. but the issue is that the releases are ONLY tagged by version so they would conflict.. and not sure how much would break if i change that..
before i dig into the depth of the CI scripts i wanted to ask if there is a easier solution
I haven't touched this in a while but mine seems to be running BuldMultiPackageListing
looking into that code.. it seems to just be a alias..
// Keeping this for now to ensure existing listings are not broken
Target BuildMultiPackageListing => _ => _
.Triggers(BuildRepoListing);
apparently you can add other github repos as sources.. i wish it could just do it all in one but.. fair... at least this is possible
Idk where else to ask this, but did the api change recently? Like group instances endpoint for example
better off asking in the community api docs discord
forgot to ping sorry, see above
just invite link there
Ty
You too
with UdonSharp for the Software Development Kit, is it possible to use .NET languages like Visual Basic, Visual C++ (the version of C++ that uses Common Language Runtime), Visual J# (comes with Visual Studio 2005, still need to adjust some of my VS 2026 Insiders to use it), or Visual F#?
no - you must use UdonSharp itself
Which really means a somewhat limited version of C# that gets turned into Udon.
unless you want to make your own transpiler
yeah that would be fun
One of those fun "haha do this for a couple years" side projects :)
yep
Why not simply name your studio agency?
For example, Roblox Studio. Then you could put all your SDKs and scripting assistants within it, managing the PC and VR aspects to display certain things in VR that PCs can't, and so on.
Of course, I also suggest, if you do it, linking to Discord, Patreon, and other platforms.
When downloading something via string/image loading, where is the file stored on the system?
I'm assuming it's cached somewhere since I've observed sometimes string loading will fail for a small number people without throwing any error (the request just fails to run the OnStringLoadSuccess completion callback). It's a fairly small number of people who run into it at a given time, and different each time. Rejoining the world, restarting VRChat, restarting computer, and clearing cache don't seem to fix it, but reuploading the file causes it to work for them again (and presumably possible fails for others). Likewise, using VRChat on another device also seems to work, and users can see the github gist in their browser with no issue.
The nature of the problem is hard to pin down (haven't been able to recreate it locally, and log files from those with the issue haven't shown any errors), but given the symptoms my current theory is that some type of issue such as corruption is occurring during the download, causing Udon itself to silently fail and not run OnStringLoadSuccess, but the file is still being cached or indexed somewhere.
Assuming that is the case, it would explain why updating the source file again seems to fix it (cache invalidation), while rejoining and restarting wouldn't. I've checked in both %LocalAppdata%Low\VRChat\VRChat and %Temp%\VRChat\VRChat however and couldn't find anything that seemed to line up. It's possible my assumption is wrong and it doesn't cache it to a file, but if that's the case then I'm back to the drawing board.
I believe its just into memory
You could probably run vrc in offline testing and watch for any file handles it creates however
Process explorer should be able to confirm either way
That's what I'd have initially expected, but I'd be at a loss for why it affects a very small and seemingly random selection of users, and persists throughout the day for them regardless of rejoins, restarts, cache wipes, etc. The file they're downloading is the same as everyone else, the world is the same, the only difference is it just not calling OnStringLoadSuccess or throwing an error.
Given the symptoms I could make sense of it if it was just being cached somewhere since that would explain why updating the database seems to fix it for those people (and then break it for new random people). But lacking that I'm not sure what to think anymore 😣
Good point. I'll give that a try. Thanks for your thoughts!
if it is cached to disk anywhere, that is news to me...
I got a unity problem where anytime i make try to make a new vrc menu my unity gets stuck at Inspector.InitOrRebuild indefinitely but if i duplicate a menu it works fine. Its not storage, it's on my main drive, reloading the sdk doesn't work, restarting computer doesn't work.
What's the best way to position-sync remote controlled rigid bodies on avatars? RC cars etc.
How let a cloned repository behave properly
I'm trying to develop features of a package, but although cloned respository canbe detected and installed by unity, but some function just can't work properly
Like dependency missing
But if I directly change the downloaded script, nothing will be traced and recorded, and it's dumb to manually check which code is edited the copy it to the dev-repository again
must be that repository specifically, I have several in my active world project with no issues.
ModularAvatar
And errors when UnityEngine starts
I mean directly github repo, not vpm
Directly by git clone
yes, that's how I read it.
strange
whatever I installing it through, it end up failing
VCC say Could not get match for nadena.dev.modular-avatar 1.15.0-rc.2
but provide no detail
Unity can install it, but have compiler errors
There is only one way to test if the main branch of ma is not-ready-for-use
Install the MA by VCC, then replace the entire dir
Shocked
The entire script are just missing on main branch
honestly this seems like something to take up with the repo owner
Nor on the stable branch
I was thinking its my problem before so come here to ask if I missing some configuration
if the files aren't there, then they aren't there. Often a repo isn't an exact clone of what's in the release package, so unless the owner specifically has said this works, I would not trust it to.
there could be a whole build process which generates files or restructures or whatever.
is there a reason why Toon Standard doesn't have #pragma multi_compile_instancing
GPU instancing only works if you're rendering with the same mesh and material many times
it would be useful for worlds, but not on avatars
It is used on props iirc
VRC's camera fucks up alpha and I dont know why
it only breaks if you have world enabled
zoomed in photo, depth as alpha clealy working
but its white if I enable world
even though im litraly using whats the red channell there as alpha
I get it not working with captured photos since world means you shouldnt have transparency so to save space save as RGB instead of RGBA
But spout is still reciveing alpha, if me clipping it into a wall makeing a black line means anything
if it was all black I would get that, but the alpha just seems to be semi-filled with 1 alpha for some reason
this to me makes no sense
I can't use RGB since spout output is gamma corrected
is there any tutorials on game dev on VRC
?
I am a experinced in Unity but I don't know if you can make games in VRCHAT
you can, there are lots of game worlds
aweseome
half of it is figuring it out, another half is looking at there examples
haha....bot fail to remove post...
hello, does someone know where can i find tutorials/guides on how to implement face tracking on a model in unity?
I have completely forgotten that I made a blender script to import the camera dolly json
Idk what else I can add to it though
Even though it's barely much code
Hi! I'm experiencing a frustrating issue where UdonSharpBehaviours randomly duplicate during compilation:
· Some scripts auto-duplicate 1-2 times during compile
· Get warning about "underlying UdonBehaviour" being visible
I have a more detailed post at https://discord.com/channels/189511567539306508/1452218312892350536
Does anyone had similar issues before? Any suggestions or any help appreciated!
Hold on
I'm going to check something
If they went a certain route making this and used dotnet I could do a funny
They did not
I wonder if it's a token stealer
I might go through the exe later
Do you want me to keep you updated on that?
sure why not
I'm going to friend you too
Also mutual groups
Vrsl is a great tool
👋
👋
You know sometimes you jump onto small ledges or edges of tables etc, you slide along the edge and get stuck playing the fall animation, is this a known bug and is there a name for it?
Pretty sure it's just a quirk of the Player Controller that VRC uses. Kinda reminds me of the default Unity Character Controller in that aspect since I believe it does something similar on steep enough slopes. That and 'Surfing' in source games is also happy accident of a bug due to similar slope detection systems.
Hmm is this documented anywhere?
- If a ledge/collider is small enough (around <0.025m), the player will no longer be "grounded" but still able to become "supported" by the collider and float alongside it.
- In this state, the Y velocity will continue to build up as if the player is free falling, at a rate of what seems to be Unity gravity acceleration (-9.8 m/s^2). But player can still control X and Z movement, again as if free falling.
- This floating/gliding action can happen on a sloped collider that goes up, with some X/Z velocity, making the player travel upward, while building up the reported -Y velocity. And when the player exits this state, whether by moving slightly and losing stability or reaches the end of the collider, the huge -Y velocity will "snap" the player to any ground below, reaching the ground much faster than a normal free fall.
- Any idea why this happens?
Id assume the shape of the player collider not being square
https://vrchat.com/home/launch?worldId=wrld_0d5aae29-9ff4-4230-9697-cea19a896b79 if anyone wants to test it
if you have a perfectly heighted area where you can jump but not jump high enough where you can still trigger jumping
you can gain infinite vertical momentum
No VR chat for 5 months It's been a while, about 5 months now, since I've been able to dive into VR chat. This weekend, I also won't be able to text much. I'm finding myself with a bit less free time than I anticipated. It seems my schedule is quite full, leaving little room for those digital connections. I'm looking forward to when I can reconnect in both spaces! #VRChat #DigitalDetox #BusyLife #LookingForward
are vrcimagedownloaders cached? i have a gallery in my homeworld rigged to fetch atlases generated via my website, and the data file stringdownload can update just fine, but image downloads seem to just load the old image
I'm running .Dispose() on the image downloader after i've got all of the individual textures split, and recreating it each time things need to reload (via an interaction, not on a timer or anything) but it still caches
my source file:
urls are filled via this build script:
ping on reply please
...nevermind
i wasnt sending any cache headers and cloudflare was caching it
you definitely can but make sure it has good social components, only worlds with good social implementation do well on vrchat
theres many really good game worlds that don't do well on vrchat and die because they fail to do this
is this the right spot to be asking about osc tracking code not working
Seems to be the closest at least
import time
IP = "127.0.0.1"
PORT = 9000
client = SimpleUDPClient(IP, PORT)
IDENTITY_ROT = [0.0, 0.0, 0.0, 1.0]
HIP_POS = [0.0, 1.0, 0.0]
LEFT_FOOT_POS = [-0.1, 0.02, 0.0]
RIGHT_FOOT_POS = [0.1, 0.02, 0.0]
try:
while True:
# ---- HIPS ----
client.send_message("/tracking/trackers/1/position", HIP_POS)
client.send_message("/tracking/trackers/1/rotation", IDENTITY_ROT)
# ---- LEFT FOOT ----
client.send_message("/tracking/trackers/2/position", LEFT_FOOT_POS)
client.send_message("/tracking/trackers/2/rotation", IDENTITY_ROT)
# ---- RIGHT FOOT----
client.send_message("/tracking/trackers/3/position", RIGHT_FOOT_POS)
client.send_message("/tracking/trackers/3/rotation", IDENTITY_ROT)
time.sleep(0.02)
except KeyboardInterrupt:
print("OSC client stopped.") ``` i send the commands as you can see but nothing is happening is there a calibrate i need to do or is it vr only?
sadly its vr only you cannot drive body tracking on desktop via OSC
ok i will switch over to windows and test it a some point
big ubdate for full face tracking VRchat with camera
Is there a simple way to generate PNG's for vrchat's animated emoji? Right now I'm writing a bunch of png's from render textures and stitching then in gimp, but i'm sure there could be a way to write multiple render textures out to a single giant png atlas
I use ImageMagick to turn multiple images into sprite sheets
Maybe you could make tex big enough for the whole atlas. And use the last two parameters in ReadPixels to copy the render texture to different parts of tex.
Alternatively, camera.rect (called viewport rect in the inspector) can be used to draw a camera to different parts of one render texture.
are you... using notepad as an IDE?
Something I feel would help me in more advanced avatar (or world) creation is to understand what kind of data the user runs, what the vrchat servers runs, and what data is communicated between the two for things to run as they do.
Does anyone have a good recommendation for how I can learn how the game works? I can see this helping my understanding of computers generally too.
yeah i do this for shaders too. got recommendation for a 100% free alternative?
Jetbrains rider is my personal fav, the autocomplete feels like black magic. Also the only IDE I've found that has good shader syntax highlighting out the box
i only code as a hobby
yeah ideally i want to do this 100% in code and spit out the final atlas in unity
Basically I want to output this
yep, pretty easy
One solution I can think of is:
-Render the cam to a render texture, make sure wrap is set to clamped
-Write a shader that manipulates the UVs of the texture to one of the grids sections based on an Int 'index' value & adds it to a second 'Final' RT
-Use Graphics.Blit to add the image to the final RT
-Repeat for all images
-Save that RT as a png
np, also I'm not sure how well I communicated the idea so lmk if it needs some more clarification xd
Basically I'm trying to make a small prefab to make it easy to make dumb animated emoji within unity without a site upload
I like the idea, would be a cool thing to put on gumroad / github etc
has any work been done on something like selfie expression, but running outside of VRC, while staying on desktop mode and without vr equipment ? Would it mandate adding stuff to an avatar in unity ?
what do you mean has anyone made it so your can text selfie expression inside of unity
@exotic fiber
no, more like using local models externally from vrc to control upper body and hands, probably using osc
similarly to how vrcft and associated modules help with face tracking
Not heard of anything like that but it would require the avatar being setup for it.
But like, just use selfie expressions and whatever desktop app vrcft supports if you want better face tracking.
Like vtube studio?
yeah, but selfie expression can't work on linux. So I'm trying to make something that would probably be cross platform
but yeah ok 📝
Ah, yeah doesn't seem like Wine or any Proton fork is getting webcam support anytime soon.
Ideally VRChat would expose OSC endpoints so head and hand tracking with selfie expressions could be driven that way.
Or a video stream input as the commenter here suggests
https://feedback.vrchat.com/feature-requests/p/control-selfie-expressions-via-osc-or-otherwise-over-the-network
Does anyone know if there are joint rotation restrictions on vrc's "accurate hands" . If so what are they? I can't recall off the top of my head🤡 .
I think it just uses the muscle settings in the rig?
The default range settings in the example rig?
note: I'm interested in the context of a OpenVR driver use case, not avatar creation (just to avoid any confusion) 🙂
to be fair I'd love any solution, but yeah making selfie expression use osc (and thus making osc able to control character shoulders head rotation etc) would be absolutely great.
Or the external camera stream, agreed, it'd probable be easier for the dev team to implement (even tho it'd be less malleable to us=, I've upvoted the suggestion :3
cuz the alternative would probably be to kinda emulate a vr headset and its trackers and stuff and that sounds like a shitton of work
heyy question here
if there is any linux user who also do unity stuff uuuh am i cooked if i see thos errors?
Install the previous version of this
Okay, look, HEAR ME OUT.
Vertex Animated VRC NPC crowds visible from a window of lowpoly avatars....
Prebaked movements?
Discover the power of Vertex Animation Texture (VAT) for bringing realistic non-humanoid animations—like cloth, liquids, or paper—into game engines like Unity! In this tutorial, I’ll show you how to bake physics-based animations from Blender using the free Open VAT addon and integrate them into Unity using custom shaders.
🔗 Links:
Open...
They're really good when used with a Mesh Renderer instead of a Skinned Mesh Renderer. One could animate the walk cycle for example using a vertex animation and have preset paths for ~100 NPCs in a plaza.
I played with VAT for fluid sim particles using this tool. Floating-point textures were unfortunately too huge for my purpose. But it does work! #animation message
I imagine a large amount of ~300 polygon VRC avatars would look amazing if batched them and gave them each a little animation + movement method.
Just placing them at a distance and letting their motion speak for itself to communicate a sparse but large crowd of people.
Anyone have any idea why VRCSDK and/or ClientSim is assigning Network IDs to objects that are marked as EditorOnly? It's causing ClientSim to crash instantly on Play Mode because the objects are deleted on Play and therefore invalid causing it to freak out
Could it be the object is set to EditorOnly after it was assigned id? And that network ID dont automatically regen every time the flag was changed?
I removed the Network ID by regenerating all IDs and by manually removing it from both VRCWorld and Network ID Manager and it would just reassign a new one each time
I opened another scene in the same project to test and it crashed the same way there even though I haven't touched that scene in ages and I know for a fact clientsim worked before there
even in my current scene it was working fine until one day it just Wasn't anymore
is your SDK updated? I just made an object with a network ID, made it EditorOnly, and it doesn't crash ClientSim, doesn't even throw an error
Tried latest version, also tried downgrading. Same behavior either way.
tried reimporting the entire SDK to see if anything was corrupt too and that changed nothing
what error are you getting when it crashes? and what components are on your EditorOnly object?
https://cdn.discordapp.com/attachments/1462196492079992874/1462196778769322054/K.png?ex=698c4b9e&is=698afa1e&hm=ce629d1e5c970d9a0d0e30c0defd645636d7d685bf36fa6374f1eafe763ab387&
https://cdn.discordapp.com/attachments/1462196492079992874/1462196492650676532/Q.png?ex=698c4b5a&is=698af9da&hm=dd177e3447eb67b5d6ea8661b75331f366cff5208422d07711832ac0793f4f5e&
the second one I'm guessing is a result of the first
on most of them it's just an u# behavior and maybe a mesh renderer
is it a PlayerObject?
I don't have a single player object in the scene, which is why I found the player object error strange
my best guess is that the network ID error causes that part of clientsim to crash early and never initialize player objects which causes it to crash more
are you absolutely positive you don't have a playerobject? because I can replicate your error by setting a PlayerObject as EditorOnly
I said crash instantly on play in my original post but to be specific it either locks up the menu or immediately exits play mode depending on whether I have reload scene enabled or disabled respectively in project settings
I can double check this later when I get home but I'm pretty sure I didn't have any
it didn't explain why ALL EditorOnly u# scripts were being assigned netIDs and then erroring out
yep it locks up the menu for me too
but, why have an U# on an object that's going to be EditorOnly anyway?
when you check later, search your hierarchy for exactly "t:vrcplayerobject" and see if anything shows up
I had a few prefabs that I was working on but had to put aside to work on other things, didn't want to leave them in an incomplete state and didn't want to include them in the scene disabled
Is there a way I could use this from a Rust language VR thing?
What are you referring to by "this"? Udon? Udon is currently only available as Udon Graph (visual scripting) or UdonSharp(C#).
A Rust compiler doesn't currently exist for Udon, but technically you could write one.
VRChat. X E.
The game itself...?
I guess?
what exactly are you asking? If VRChat is coded in Rust? Or if you can make a game within VRChat using Rust?
If I can make a game in Rust that can use VRChat?
no.... VRChat itself is not something you can "use". The VRChat client is not open source.
you make content for use within VRChat, not the other way around
making a game in rust would be an interesting challenge.
disgruntled that I can't use Ignore Raycast in Interact Passthrough
that's... what it's for...
:D
made an VRChat Launcher
i do use Html, css, js as frontend and C# as backend :3
i always wanted to have something cleaner than VRCX
will probably open source it once fully done
Such a good project ngl I was planing to re-write entire VRChat website as chrome extension too
its open source now
VRCN is a VRChat client that includes various useful tools within a clean interface. It allows you to manage friends, groups, and more in a single application without needing to visit VRChat.com. -...
I am going to do opensource too
u can contribute/fork it whatever u want
Thank you!
or steal from it if you feel like it
Nope thats not me
its a very open license
its basically MIT
only rule: do not monetize
Non-Commercial Open Source
I like to join you in game too we are friends there too xd
even tho AI helped a bit with JS and CSS for frontend
the Backend in C# was the pain point here
oh are we XD?
Claude, eh
Claude for JS and CSS yea
Backend self written obviously.
Unfortunately i hade to postman all the REST API and Websockets of VRC
then i found the community API docs..
could kms
i wasted days to reverse the API myself
Last time you invited me I said iam working on minecraft minigame xd
oh lol yea i see you in my friendslist
im rarely on VRC
i do waste more time in Udon related things and tools for vrc rather than playing the game
me too :D
you programm? what languages?
sorry if i already did ask this im very bad in memorizing things
I am on programming world over 9 years now :P
"yes"
I do lots of stuff
so you dont know a programming language :D?
you create worlds then*
I know check out my github
so TypeScript
yeah mainly
Langs I know are not much actually TS JS C# Kotlin Java Lua Python
i only learned two langs java and c# a little bit of c++ too.
oh ye i know kotlin too XD
Also ofc HTML and CSS
Kotlin is goated for cross modloader mods for MC. Kotlin was the goat for Fabric and Forge cross comp mods
Yeah!!
i never learned CSS and JS just basic HTML
which is the reason i just gave Claude the boostrap library as input to help with the UI
wdym
I mean UI looks good but its base cloude style
its Bootstrap
i dont know how Claudes base style looks i did use Boostrap my whole life and boostrap looks like that :D
even worse but still looks good
Maybe claude wa strained on boostrap not sure at all
i dont vibecode much to be fair. claude is too expensive and gpt too
cant pay 20 dollaridos per month to get pure hallucinations
I wish you was using some kind of frontend library instead of plain html like Svelte or even React
Because not much maintainable that way
i was Using C# for the frontend in WinForms and then refactored to WebView2
why isnt it maintainable it is :D
give me one thing why it shouldnt be maintainable
If you the only maintainer it is maintainable
But as comminity project lots of things going to brake on frontend atleast
Because things are not context isolated
there will not break aynthing
also refactor soon to Electron
first thing I thought also, but I loathe working in javascript
SendToJS,receiveFromCS :=)
i dont see a problem? correct me if im wrong
the services apis are written well and are documented for contributions
a friend told me to do it in Avalonia
lots of security problems too if code not written correctly on frontend becasue its only raw js people might easily XSS
but thats not the issue if you are the only contributor ofc
but VRCN is sanitized throug an esc()
yea makes sense
i made sure to check innerHTML and esc()
because of that
and im aware that i have to manually review contributions
its a big issue if you playing big
which this project never will be
why you think like that
VRCX exists already
and VRCN is more like a "hobby" project
i dont think there will be more features in VRCN except some SteamVR related things like the Space Drag it has
okay then if you think like that
i will most likely only work on bug fixes, improvements, secruity
also i wont plan to promote it really. its a pure hobby project for myself
good thing is i have 2 friends on my side (one of them is a mutual we have :D) so code review from 3 people for secruity patches and contribution verification should be "secure"
for sure !!
Oooo new projects. love to see open-source stuff!!!! Looks amazing so far.
https://vrcdc.link I made another project. It's for linking vrchat accounts with discord severs easily. It's pretty straight forward.
There are so many of these already lol
Lists trust ranks 1 off, fails to fetch my vrc user icon too
ik but their ui ux not soo good soo i wanted to make my own
Yeah i just fixed the icon issue
i was just getting currentAvatarImageUrl instead of first checking userIcon
@gray mulch @queen hearth
so i just added guild flags to vrcdc link
basically admins can now create custom data fields for their server - stuff like pronouns, custom names, enter sounds, whatever you want really
two types:
select - predefined options users pick from (like a dropdown)
custom - users type whatever they want, but you can add regex validation to keep it sane (we use RE2 so no one can ReDoS us lol)
users set their own values from their dashboard and it all shows up in the api under $.flags.* when you do guild lookups
so if you're building something in-world and want users to customize stuff about themselves - this is it
check it out in the guild settings, flags tab
The SDK includes VRC.Core.ExtensionMethods, which provides a method named GetHierarchyPath. However, if I try to use it, I instead get ExtensionMethods.GetHierarchyPath (which is in the global namespace).
I can't figure out how to correctly use the new extension method!
I don't understand where the compiler is even getting the obsolete ExtensionMethods class from
I do not have a using static statement for it
oh right, you don't actually need a using static directive, duh
So I don't see how I'm supposed to use the non-obsolete methods, other than by explicitly invoking them
what's a good way to sample skybox color at a given pixel/point in a shader
(context: I want to make a material that fades to the skybox)
depends what you mean by that, do you want it to be transparent and see the real skybox or do you just want a panosphere that fades in
the former
specifically the real skybox
look in to UNITY_SAMPLE_TEXCUBE at https://docs.unity3d.com/2023.1/Documentation/Manual/SL-VertexFragmentShaderExamples.html the example here uses it as reflection but you can edit or for passthogh or whatever you want
Like I asked on stream, I’m planning to start rebuilding the VRChat website frontend from scratch using Svelte 5 and more modern UI systems like Bits UI. This should also improve the accessibility side quite a bit.
When would be a good time for me to start working on it from your side? If you have any expectations or questions about the project, I’d be happy to hear them. Are there any guidelines I should follow?
Regarding the API, I know most of it is already documented by the community on vrchat.community, but I still wanted to ask you directly just in case.
@sterile cipher (please mention me back)
It's out. VRCVideoCacher is officially live on Steam 🚀
For everyone who wishlisted, shared, or dealt with one too many broken video players in VRChat — this one's for you.
#VRChat
is the creators.vrchat.com website still up to date on Udon examples and stuff?
I have some code snippets here in Udon sharp that dont match what is written on the page or dont work as intended
It depends on the page, some are more up to date than others
ah thats fair
I was getting some CPU spikes in Editor mode from the file
World10\Packages\com.vrchat.worlds\Integrations\UdonSharp\Editor\UdonSharpRuntimeLogWatcher.cs
in function EditorApplication.update: UdonsharpEditor.RuntimeLogWatcher.OnEditorUpdate
This seems to be an editor only thing, which doesn't affect me in my Build & Test, but caused periodic stuttering in my editor
I adjusted it so that the line "EditorApplication.update += OnEditorUpdate;" was commented out, and that seemed to "fix everything"
I have no idea on what this file is supposed to do, so I'm wondering if anyone has any insight on what I just broke.
ChatGPT told me that that function was for "exceptions, stack traces, and log files"
However, I don't get why it was running all the time in edit mode, since I don't have any editor scripts, only things that run in play mode
and also, I would probably want any of my editor script to be pure C#, not U#, so it makes even less sense why U# would even be logged / watched in edit mode
Judging by the script name, I think that's used for watching your client logs for Udon errors, which it'll then paste in your Unity console. It's the thing that often pastes "there was an Udon error, but you need Udon logging enabled to see the full error"
So, it's an Editor script that's always looking for in-game Udon errors, and there's no harm in disabling it if needed
Pretty sure you can disable it in the UdonSharp settings as well
I was getting the same thing and came here to ask basically the same question but I think I found my solution. I think if your VRC Logs are quite large it might be hitching due to trying to load them and parse the errors. My current log for my active session is like 80MB in total as I made a mistake and was throwing a lot of debug text into the log every frame which I think keeps triggering the script.
how do i use a dedicated build server to upload avis?
think you need pro to use that, its like 2k a year. and idk if vrchat would even support it as i dont think uploading an avi is a build build
how do i get the UdonBehaviour for a particular script i have (UdonBehaviour)this.GetComponents(typeof(UdonBehaviour))[1] but how can i find the index of the component
If using U# you could just use GetComponent<YourType>().
no i want the UdonBehaviour not class type. from what i understand UdonBehaviours are basicly a bace class
The index is the order of your component found in array. The order usually is from top to bottom shown in the inspector.
but how can i tell what one corasponds to what script.
if i have
script1
script2
script3
how could eatch script find its own UdonBehaviour when it dosnt know its index, script3 dosnt know script2 exists from my understanding
You solution seems to be not right for your problem. You should also explain what you're trying to do in the bigger picture.
call backs basically.
you can turn a script into a UdonBehaviour then pass it in to a arg of another script then use SendCustomEvent to intaract with the script without it being dependent on the script.
iv been using it for a "singleton popup" if a script wants user input it can just .Find the object, call PopUp with itself as a arg, then when the popup is interacted with the popup script uses SendCustomEvent to call a "yes" event or a "no" event back to the script that requested user input
It should be better if you use UdonSharpBehaviour type instead of just UdonBehaviour. This way, you can use this keyword to reference itself.
i can do that? i tryed using UdonSharpBehaviour but it kept complaining, do i need a incude
What does it complain about?
ah UdonSharpBehaviour works now, still same issue tho, as (UdonSharpBehaviour )script3.GetComponent(typeof(UdonSharpBehaviour )) still returns the UdonSharpBehaviour for script1. looks like GetComponent always works on the GameObject level instead of the script level
wait... can i just cast it
Component lives on gameobject. Is your problem actually you're trying to get other U# script within the same object?
i think i worked it out
if (go == null)
return;
go.GetComponent<popup_yn>().PopUp(this);```
its that in `script3` (the third script) `this.GetComponent(typeof(UdonSharpBehaviour ))` returns a refrence to `script1`.
i worked out i can just implicitly cast `script3` to `UdonSharpBehaviour` now you helped me get `UdonSharpBehaviour` working and i dont need `GetComponent`
You should just use generic GetComponent<UdonSharpBehaviour >().

