#development-advanced

1 messages · Page 2 of 1

ruby wedge
#

...this doesn't actually seem to work; It still carries over the altered scales in Unity.

#

The problem is with child object scaling behaviors in VRChat when the scale is not uniform (that is X Y & Z do not have the same scale) — When I do this, the imported model, even after resetting rig configuration, appears to still have the altered scale values, rather than 1:1:1.

#

And I can't seem to find a way to conveniently rescale a bone and its vertices outside of pose mode in an appropriate way in blender. (I basically want the behavior of pose mode, but not in pose mode).

#

I think I found a way, though. Adjust bone in pose mode (blender) > duplicate armature modifier > apply first armature modifier > Apply pose as rest pose; This should alter the vertices.

#

Except... you can't apply with shape keys. ugh. Found a plugin for this that looks to work, though there should honestly be another way.

warm niche
zenith bison
#

Is there a way to make something on an avatar truly static, because when I try to do so with a 'world constraint' the parent constraint still causes the object to 'wiggle' as it corrects itself to the fixed point, even if visibly child objects don't move (I can see the position changing in the Inspector).
I'm trying to do this horrific idea involving avatar contacts and using a prefab that places a 'tracker' onto a contact on someone else's avatar, but the way constraints works keeps causing this 'wiggling' and yeah

muted lance
silver panther
#

anyone know why my vrcsdk isnt there?

silk wave
#

you have errors in your console

silver panther
warm root
#

General rule of Unity - There must be no errors for everything to function correctly.

#

"Project has invalid dependencies" is a new one for me though.

warm root
silver panther
#

im just trying to importn a avatar

#

its pretty much my fisrt time as well

warm root
#

Where did you get the avatar and when the import popped up, did it seem to include it's own VRCSDK folder?

silver panther
#

i got the avatar from a friend and no

warm root
#

How did you create the project?

silver panther
#

unity

unique prairie
#

guys, vrchat says to use crunch compression to enhance performance, but for me, i can go from 300mb size to 50 mb with compression, i can't really avoid it

#

any advice?

pulsar trout
#

Can't avoid it?

unreal orchid
unique prairie
unreal orchid
#

What you can do is try using alternative formats, maybe you have alpha that you do not need, then pick an image format that lacks that.

unique prairie
#

So its fine, i just had to read better

unreal orchid
unique prairie
proud belfry
#

I find it very useful for world creation.

unique prairie
#

I do understand why they say it, and why i shouldnt

#

But Idk

#

I will look into alternatives

proud belfry
unique prairie
#

What worries me is not the quality but the download size, especially for skyboxes

proud belfry
#

The world above is 50% smaller with crunch compression enabled.

unique prairie
#

I have a world with nearly 20 skyboxes, without crunching EACH skybox occupy 90 mb

unreal orchid
#

The only worth I see with using it at your world size is that some people get more hesitant loading in worlds that are hundreds of MB big.

Still, personally, with my internet speed, 300MB is fine.

proud belfry
#

Yeah, 20 sounds like a lot!
But if you don't display them all at the same time it might not be an issue.

unreal orchid
proud belfry
#

Yep, I wanted facts

#

The world also contains a minigame, challenging you to spot the difference between crunched and uncrunched textures.

unique prairie
unreal orchid
proud belfry
#

Yep

unreal orchid
unique prairie
#

My issue, is that i like to give my players customization options, multiple songs options, multiple skyboxes or games, different enviroments

I usually don't create just one room, one skybox, one enviroment

#

But i did create some worlds like that, ironically they are also the less popular :/

shut bane
#

90% of the time it's textures that bloat world size. so a combination of crunch, tiling, and trim sheets is usually the way to go. trim sheets has the added advantage of reducing material count as well, which helps reduce draw calls

#

you often don't need quite as much texture resolution as you think you do. things like detail albedo / detail normals can help fake fine textures up close using smaller tiling textures without needing to include all that detail in the primary texture set

vale veldt
#

My name is Pat, I work for a production studio based in Mexico called Templo.
For one of our projects we're looking to use and film a Virtual Environment for commercial purposes, in short we need content for video advertising.

We were wondering what are the limitations, costs, permits, etc... required to employ this virtual space in the legal and best way possible.

We contacted through e-mail, and sent a support ticket, but didn't get any insightful answers.

Also, if this is the wrong channel for this, it would also be helpful to know where to post this inquiry.

gentle kelp
#

For some reason my rotation is fucked? how do i fix this?

#

its 90* but unity says -41*

#

and if i try to fix it it fwks up.

#

Nvm i fixed it.

upper plover
#

Trying to automate some stuff in-editor, is it possible to add a VRC Playable Layer Control on a animation state programmatically via C#

grim zenith
#

wonder if you could make gmod nextbots in vrc

#

like a png with sound that chases you and makes you respawn if it touches you

quiet escarp
#

You could make something similar using Unity's navmesh and just have it constantly try move towards the player's location and attach an audiosource and world space UI to the same object with the navmesh

candid owl
umbral maple
hexed sequoia
#

can someone help me do something relatively advanced? im trying to make a hand gesture activate an animation but i dont undestand how

mossy seal
# hexed sequoia can someone help me do something relatively advanced? im trying to make a hand g...

The values GestureLeft int 0-7 and GestureRight int 0-7 can be added to any playable layer. Vrc will automatically update these.
In some cases you may need an Animator Tracking Control to overwrite tracking with custom animations, so use that when appropriate.

Read more:
1: https://docs.vrchat.com/docs/animator-parameters#parameters
2: https://docs.vrchat.com/docs/playable-layers
3: https://docs.vrchat.com/docs/state-behaviors#animator-tracking-control

VRChat

Create simple or complex animations for your VRChat avatar

VRChat

🚧Unity Knowledge RequiredThis document is written with the assumption that you know a bit about Unity Animators.This is a list of Parameters (case-sensitive) that can be added to any Playable Layer (animation controller) and change across all Playable Layers that include this parameter. User create...

VRChat

🚧Unity Knowledge RequiredThis document is written with the assumption that you know a bit about Unity Animators.When you've got a specific state selected in the Animator view, you'll be able to add State Behaviors. They're a bit like components for states. They do different things. Try adding them,...

hexed sequoia
#

so to run the animation i should do gestureleft and when it goes from 0 to another activate it?

hexed sequoia
#

ok did it thanks

rotund hare
#

Anyone had any luck having GPT 4 write U# scripts for VRC?

versed basin
#

is there a way to make a toggle for Cyanlaser's object pool that only affects that certain player?

uncut obsidian
#

Alright. This is a really bizarre one, but hear me out…
Is it possible to change the “listen” position on an avatar from the head to a prop?
The idea here is to put a microphone on an avatar and have it behave like a microphone, leveraging the earmuff mode, cranked to the minimum so I can do “Man on the street style interviews”

upper plover
rotund hare
#

Yeah, it seems to think it knows but it's not quite right. Might be the newer version of U# that trips it up. Can't wait for it to catch up since it's c# abilities are amazing.

zenith bison
pine depot
zenith bison
#

I believe the 'tracker' prefab uses Rigidbodies on some of it.

zenith bison
pine depot
#

You would put objects under the PositionConstraint object and then update their positions with another parent constraint or something when you want to move it in world space

zenith bison
#

The other thing does. Sorry if I explained that poorly.

#

I'm simply confused as to why the props that are children of the constrainted gameobjects don't visually move, despite the position of the parent objects still moving slightly as the contraint 'corrects' it's position.

pine depot
#

Can you see if you have the same behavior when using that prefab?

pine depot
#

What objects are still moving and do they have any components other than renderers?

zenith bison
#

Could I perhaps drag you to one of the VCs here to show you my scene? Explaining things through text is annoying 😅

#

er, are there even VCs here?

pine depot
#

no, lol.

zenith bison
#

😒

dull dune
#

I'm having chained constraints on my model that used to work previously but stopped working after a certain update

gentle kelp
#

Working on occlusion and I noticed this happening before but I kinda need a fix to this. I cant see my occlusion Area box. at all its invisiable

rough schooner
#

how do I turn off this stuff

dawn creek
#

"gizmos" button

proud belfry
#

Try turning '3D icons' down to make them smaller!

glacial yacht
#

Scaling them down is such a good thing

umbral phoenix
#

Who knows how to make models etc

#

And just make worlds

blissful pollen
#

@sweet crystal are your filamented shaders still in active development?

blissful pollen
#

curious if it is since I made a feature request a while back that I think could help lighting situations that are probe-lit only

sweet crystal
#

Yes

warm root
#

I'm not seeing it on Silent's site anywhere. Only subsurface and Cel shaded. Though I'm not sure it ever was listed there.

#

Yeah, you have to poke around on GitLab a bit.

shut shuttle
#

assets\VRM10\Runtime\Components\Constraint\IVrm10Constraint.cs(7,23): error CS0106: The modifier 'internal' is not valid for this item
so many warnings.. how the heck do I fix these anyone know?

#

im not a coder or a script wizard all the tutorials I found on youtube you have to manually edit the error code

near bronze
candid owl
#

※上手くいかない場合は、まず下の方にある使い方のQiita記事の手順通りに実行してみてください ※インストール後、「VRM0」メニューが表示されない場合はUnityを再起動してください ※エラーが出ているプロジェクトでは、インストーラーが動作しません English README → https://www.store.vket.com/ec/items/122/detail/ Unityのエディタ拡張です。次の3つのツールが含まれています。 • VRMプレハブをVRChat用アバターへ変換 • VRChat用アバターをVRMへ変換 • メッシュ・サブメッシュの結合

#

A Editor extension could automatically convert to vrm components into their VR chat equivalent so it would turn the VRM bones into physics bones

shut shuttle
summer flax
#

is anyone familiar with a way of getting materials on an existing avatar to automatically transfer over to a new fbx when you import it into unity? i.e., whenever i make changes in blender, i have to import the new fbx, use pumkin to transfer over the physbones and whatnot, but i can't think of a clever way to automatically transfer materials over from the old one to the new one

#

i suppose it wouldnt be too hard to write a script to do it

#

the whole process of blender -> unity when you make changes to the rig or the weights or geometry is pretty annoying.

dawn creek
#

have you tried the "on demand remap" options in the model import settings?

summer flax
dawn creek
#

yes

#

so for example if all of the materials are named the same in both fbx and have unity equivalents in the project "materials" folder, you can choose "from model's material" and click "search and remap"

summer flax
#

huh i had no idea

#

well that solves my issue then

#

thanks impiaaa

muted ore
warm niche
#

@pine depot I found a workaround for the DistanceCullingMirrors issue

#

you can check the canny for more infos

near bronze
#

oh, the new beta should allow you to get the mirror cam just like before, have you tried that? It was difficult to confirm as there was no repro world posted though

warm niche
#

its still different

near bronze
#

in what way?

warm niche
#

it seems the beta client is not copying the mirrorCam settings from the editor, but you can still access the mirrorCam during runtime. So it work but every previous worlds with DistanceCullingMirrors are broken

near bronze
#

I thought you always had to have udon find and set the mirrorcam properties at runtime?

#

the actual mirror's functionality hasn't been touched here, just udon access

warm niche
#

apprently what Superbstingray originally do is just changing the mirrorCam layerCullDistances in the editor and VRChat client were using those parameters. Now you have to change the layerCullDistances during runtime.

near bronze
#

think that's not what the scripts provided say

warm niche
#

its not this one, wait

pine depot
#

It still works in client on the latest beta from my testing

near bronze
#

that one does the same thing

warm niche
#

I just tested 1 hour ago and it wasn't working on the beta 🤔

#

lemme test again :p

near bronze
#

can you post a world with this?

pine depot
warm niche
#

oh

#

it works

#

I am not sure to understand how it works. I mean OnEnable isn't called by udon right?

near bronze
#

yes it is

warm niche
#

ohh, sorryyy it's OnAwake that isn't called by udon, so yea the issue is that you are disabling the script @pine depot which is why it isn't working

pine depot
#

In your canny comment it seems you thought the settings from the camera were carried from editor into client, that was never how it worked as the camera components will be null in client until you look at and render the target mirror

warm niche
#

yea I got it now, but you are actually disabling the script so OnEnable will never be called at runtime

pine depot
#

No, that line of code only runs once the mirror camera has already been updated

warm niche
#

I mean, when you press the button "Update Mirror" in the Editor. it's setting up the layers and at the end you disable the script. So you have to manually re-enable the script otherwise it wont work in runtime

pine depot
#

Yes, that is unintended behavior that I will fix

warm niche
#

I think you don't even need to disable if it's just running once

pine depot
#

Yeah I know, it was carried over from when I was using OnRenderObject where it was beneficial to disable the component

warm niche
#

oki. I am sorry for the confusion, the canny is still open so I thought the issue still existed

hexed sequoia
#

hey how do i make objects that stay in place and don't move with me

hallow rose
harsh rapids
#

So with the native eye tracking news, technically any avatar with the required blend shapes is good to go? I don't have to be picky-choosy about what avi's I use?

unreal orchid
#

Basically, it is sort of the same as it was before, it would just be better to upload your own avatar.

harsh rapids
#

Interesting!

#

I'll have to look into it on my own avi for a new upload. I've been a bit out of the loop lately with being busy😅

fickle junco
#

Is it possible to copy locomotion parameters from that layer to apply to a fx layer parameter? Like using the parameter driver or an alternative way.

elder nymph
#

When I want two different playable layers to act in lockstep I set those internal layers up the exact same way with the same states and transitions, so they work in lockstep.

junior ether
#

maybe make the quest download size for avatar to 50MB instead of 10MB. i bet that me and other quest people would love that to see better avatars

candid owl
junior ether
#

if your smart about it you might not crash

candid owl
#

there's no way to outsmart the fact that it only has 4 gigabytes of RAM to work with for vrchat

junior ether
#

i had to uninstall vrchat and reinstall vrchat bc it kept saying "quest out of memory for vrchat"

#

and before i uninstall it i had my download size was at 100MB

candid owl
#

that was just dumb copy-pasting the PC UI

#

as far as being able to change the max download size on quest

junior ether
#

i would atleast want to make it do 50MB bc i have some avatars that are over 10MB that i cant use now

candid owl
#

sdk doesn't let you upload avatars above 10 MB on Quest

junior ether
#

in the past yea

#

my friend had a 26MB that i could download

candid owl
#

any avatars on Quest above 10 MB was people using illegal sdks

junior ether
#

interesting

#

never knew it

#

hm

candid owl
#

also any Quest avatars with audio was the same story of using modded sdks

junior ether
#

oh wow

#

that was in the past also

#

had like 5-10 avatars with music

#

but then one update there was no music

candid owl
#

yes they fixed the bug that allowed the illegal avatars with music

junior ether
#

thats good but bad bc some of the avatars i had, had some of my fav music

#

anyways thats interesting

#

never knew that

#

thank you for this

#

kind of wish that i still had the thing tbh

slate mango
#

Anyone know of the method to determine/control stream camera location via avatar?
I really don't wanna have to take VRCLens apart to work this out.
(And before you ask, I promise I have a very...VERY good reason to do this.)

#

The short version is, I use "real-walk" type locomotion, via OVR, which means my play space center changes, relative to my actual avatar position. This means the "follow me" on stream camera doesn't....follow me.
Because it doesn't follow avatar center, it follows play space center. Yes I have tested this. Yes it actually does that.
So, I need to attach/control the camera from within my avatar, instead. I know VRCLens was able to do this, or do something like it, and from what I understand, it's possible, but I'd prefer to not bang my head against a wall working out the specifics, and instead just pick the brain of all y'all.

#

The upside is, if I work this out, it will allow users to make cameraman avatars with steadicam rigs, which I'm sure will be very useful for making videos.

cursive garnet
#

Does anyone know if the components in the world sdk for physbones compatible with worlds yet or are they waiting for implementation? I get c# reference errors trying to use them.

amber dust
# cursive garnet Does anyone know if the components in the world sdk for physbones compatible wit...
VRChat

The following is the complete list of scripts usable within worlds. Components that are not in this list will not work.🚧Oculus QuestThe Quest version of VRChat has some exceptions to this list. Check here for more info.Unity Components WindZoneVideoPlayerTilemapTilemapRendererTerrainTreeSpriteMaskP...

cursive garnet
# amber dust https://docs.vrchat.com/docs/whitelisted-world-components

Doesn't answer my question, sdk 3 has physbone components but they seem to fail to function and only dynamic bones function. Do they get auto converted in client to physbones or does it still compile to the original dynamic bones even though the graphics settings in client convert dynamic bones to physbones?

crimson fog
#

I just upgraded from an RTX 2060 Super to an RTX 4070, and my performance is the same. I'm still getting 36f in a Quest 2 for most of the game. It seems VRC is excruciatingly, to an exceptionally debilitating point, CPU-bound.

#

This is the same framerate people with 1650 are reporting. I have a Ryzen 5 5600.

unreal orchid
cursive garnet
#

I would recommend you update your drivers to the latest gaming drivers using geforce experiance and any cpu drivers from the windows update module under optional updates.

#

Speed Loader and optimized box are good worlds to test out your max fps.

crimson fog
#

Obviously Asynchronous Spacewarp is manipulating the numbers, I'm just surprised one of the best single-threaded CPUs and GPUs can't get past the threshold to hit 72f. Obviously it runs at max in worlds that don't have anything turned on. All I can do in my project is reduce batches. But that's ALL I can do! And this is exceptionally time-consuming.

unreal orchid
crimson fog
#

Nothing in VRChat has "complex shaders." Modern graphics cards are intended to render many passes to the G-buffer with thousands of lights and compute shaders. Forward rendering is insanely easy by comparison. The worst you'll see on a regular basis may be multirendering from mirrors and translucency. More rare are worlds with tons of dynamic lights/shadows and every so often someone will think an avatar with millions of polygons is cute. Not to mention crazy raymarching shaders in certain worlds dedicated for that.

But the biggest problem is draw calls: the number of materials and independent meshes. VRC is heavily CPU bound, and I'm seeing that everywhere I go.

near trench
blissful pollen
#

been adding support for LPPVs to an ubershader, but consistently its like the keyword for LPPVs is always on. specifically "UNITY_LIGHT_PROBE_PROXY_VOLUME"

#

is there a proper keyword that is in use when an object is using LPPVs or not?

blissful pollen
#

nevermind

#

found it

#

so unity doesn't use a keyword

blissful pollen
#

sooo turns out using spherical harmonics as a proxy for enviorment reflections is not awful in a pinch

near trench
#

spherical harmonics capture the diffuse component of the lighting model, but reflection probes capture the specular component

#

if you can use both use both

blissful pollen
#

I agree, if you can you should use both

#

but had a stupid idea and thought that in a case where say you don't have access to reflection probes for whatever reason, but you do have an SH enviorment provided

#

you can in a pinch use that as a proxy for your environment reflections, since the SH environment is already a representation of the enviorment though at a really really really low fidelity

#

in a pinch if you desire to retain some semblance of reflections its the best you can get

#

of course, the spherical harmonics that unity is using is only up to 3 orders, which makes it obviously fantastic for modeling diffuse reflections since its so low frequency. but like I said in a pinch, this is certainly better than nothing

#

having more orders would be ideal

candid owl
#

don't post the same thing in multiple channels and nobody is going to make you an avatar for free

blissful pollen
#

with that kind of attitude your probably better off making one on your own

#

plenty of tutorials/resources out there that can help you, its not too difficult

upper plover
#

Trying to use RenderDoc with VRChat to debug a avatar shader + world interaction issue. Turns out, it's not allowed and throws a neverending Can't Travel popup. Suprised it didn't trigger EAC instead to be honest. Anyway - is there any way to use Renderdoc in perhaps offline mode to debug some shaders?

If not, are there any alternatives that could work to find out why an avatar shader is behaving badly with certain people's worlds?

near bronze
pine depot
#

I know I have managed to get Intel GPA to work via that method

near bronze
#

Eh, that's getting into territory I probably shouldn't say, it's akin to ripping at that point

upper plover
#

Yeah, noted

uncut idol
#

is it possible to get the list of components whitelisted on quest avatars that the sdk control panel uses to show warnings for disallowed components on the avatar and if so how could i go about doing that

dawn creek
patent heart
warm root
# blissful pollen are you familiar with unity LPPVs and unity keywords within a shader?

Tangently related but do you know how much of a performance impact there is with LPPVs? It says there's an impact but I can find absolutely no information anywhere on what sort of impact. I'm trying to take a bunch of objects out of the lightmap to free up space but these objects need LPPVs to look acceptable, but obviously I don't want to do that if there's going to be a clear deterioration of performance.

blissful pollen
#

I don't know the exact numbers, but knowing that LPPVs by their nature work by generating and sampling a 3D texture I'd say that in large quantities they can definitely become expensive

#

so more than the impact of light probes for sure

#

but probably less than realtime lights

#

well either less or equivalent, just mostly geussing. But just follow what some say, if you have suspicions that its expensive then keep the usage of it very light

topaz shell
#

I am trying to do precisely this and have been struggling to understand how it was solved with the response Fax gave. I have CInemachine External Camera running and it takes over display 1 when testing (swapping between cameras as well), but not when in VR. I have seen it successfully done with a single camera in VRC.

near bronze
#

an important detail that may have been missed here is that cameras like that get disabled when you join the world, because all unity scenes have the main camera by default and we don't want people leaving that on by accident. So in order to intentionally render directly to the desktop screen, you need to set up a camera with fax's instructions and then also make sure that you enable the camera component and gameobject at some point after joining the instance, like with an animator or an udonbehaviour on start

topaz shell
topaz shell
# topaz shell The camera component. Got it. The previews are live, the game object comes on, b...

I've attached an animation to play the camera change and it works, but the VR version is upside down while it takes over VR view as well instead of the camera it's attached to. The desktop preview in unity shows it properly. Is there anything I've done wrong? I can't begin to understand why it took over the VR Headset when target eye is set to None (Main Display). Did I set the priority too high? I don't know the VR Headset priority.

pine depot
topaz shell
# pine depot To have a camera render properly only to the desktop view and not mess with the ...

This either did not do what it should have, or I have something extra going on as it still sent to my vr headset. Thanks for the tip. I'll keep trying.

Update for anyone who comes back trying to figure this out as well: I've given up on trying this, it was never solved for me. I am probably doing 1 or 2 things wrong but this project is only worth a final fix with guided assistance of someone who has completed it instead of another week or 2 of failed attempts. The room I have made is done and ready, I had camera switching so if you need assistance with that you can ping me.

pure nebula
#

Heyo, I have a question about vrchat asset downloads and a squid proxy I will be working with.

#

TLDR I'm hosting a VR event and have a squid cache setup that includes ssl_bump-ing to cache tls content. Functions in tests on standard tls downloads but I'm guessing VR Chat is validating the certificate is signed by the correct CA (which is great security) and is rejecting the re-signed one the proxy is attempting to use. Hoping this can be disabled with a flag because otherwise we'll have 10+ people re-downloading the same world on rented relatively low-bandwidth connection.

earnest depot
tawdry quiver
#

I'm curious if anyone has used the change world image on the VRCX app to know if it works. Or is not recommended even if it does.

graceful stump
#

new cc sdk for avatar is so broken again even for quest shit! everything lol why push a update that brakes stuff lol

blissful pollen
#

planar shadows working from baked lighting instead of realtime lighting

#

computing the dominant direction from the 3rd order SH that unity uses for probes

proud belfry
#

Oh, that looks very interesting.

candid owl
proud belfry
#

I'd be interested in seeing how well it works on Quest! It uses stencils, right?
Anyone try it in VRChat yet?

blissful pollen
#

its a modification of someones original planar shadows implementation, I just made it work with baked lighting and added a couple things to make it less error prone

blissful pollen
#

which as we know, quest does not like transparency

proud belfry
#

ooo, so it might not be great in situations where shadows cover the entire screen. yeah.

blissful pollen
#

the effect scales with the amount of polygons on the original object as well, so if you have a very high poly avatar you'll effectively double the poly count

#

to optimize it you would have to decimate and use a low poly version for shadow casting

candid owl
blissful pollen
#

technically it can but the avatar needs to have basically a duplicate mesh (or an optimized mesh for shadow casting) with the shader on it

#

and of course again given its planar shadows, its only designed to work on a plane or flat surfaces

candid owl
#

which sounds like it might be easier just to give avatars a blob shadow

blissful pollen
#

lmao yeah you could also do that

#

its a very situational effect so to speak

#

I knew that going in, its not going to magically solve the problem with getting efficient shadows but if your world meets the criteria mostly you might actually be able to get away with using it and improve the quality of lighting for dynamic objects

blissful pollen
#

I actually have a wild idea to expand on this effect...

blissful pollen
#

yeah definetly wild

wicked bear
wicked bear
#

only problem keeping this from really working on avatar is the fact it doesn't know where the floor really is so it just treats 0 on the Y axis as the floor, so any world with any vertical variation or where the floor isn't at 0 on the Y axis breaks it, so basically all of them.

blissful pollen
#

yep that is how it works

#

but works well in that video

#

only thing missing is a blob shadow I'd say to complete it

#

but yeah like I said, that is how its supposed to work. It is incredibly limited in how it functions and that is just how the technique is

wicked bear
#

yeah, annoyingly the only way I can think of to fix it is using the depth buffer to offset the vertecies of the shadow to conform to whatever it's casted on, but then avatars with it would require a depth light so performance suffering makes it useless anyways

blissful pollen
blissful pollen
#

the problem with that approach though is yes the depth buffer writing will suck up performance

#

but not only that, how well the shadow conforms to the geometry will depend on how many verticies there are

#

and it will flicker alot

wicked bear
#

... maybe treat the origin of the mesh as the floor? would at least solve the world compatability problem somewhat

#

you'd still get floating shadows when on uneven ground or near stairs or a ledge but it'd at least allow it to be usable

blissful pollen
#

that can be done also

#

but yeah it would mean floating shadows

#

but its certainly some kind of solution

wicked bear
#

I mean, if projectors were ever whitelisted that'd pretty much make it almost flawless

blissful pollen
#

I'll go ahead and implement that though

#

got it

#

hmm this definetly does pose some problems when doing it this way

#

not much I can do about it though

wicked bear
#

I guess have a checkbox for different use cases

blissful pollen
#

implementing a quick blob shadow version

#

alrighty

#

uploading

#

got ya

blissful pollen
#

distance fading implemented

blissful pollen
wicked bear
#

yes

modest shadow
#

hey all, i was wondering if any of you could help me out with this. i have this weird issue with baking my lights using bakery. There is this one mesh that occasionally generates these weird shadows. sometimes its overthe edge, but sometimes they also apear as weird blocks. Every other mesh works fine and its just this one that does it occasionally. Even when i bake with higher res they still happen. Ive been trying to mess with some of these UV settings to see if it would make it go away but so far i havent had any success with it.

If any of you know whats going on here or have any suggestions, i would appreciate the help :)

teal dune
#

Hey everyone ! sorry to bother but Is there a way to get the current Build Target ( windows or android ) from the sdk ?? I'd need to limit something to just pcvr

#

ah found, EditorUserBuildSettings.activeBuildTarget it is ♥

south phoenix
#

does anyone know how to run VRC in a cloud VM (such as Azure VM)? I'm trying to do world development in a cloud VM but I can't build & test because EAC blocks VMs.

I know there is documentation for running VRC in a VM (https://docs.vrchat.com/docs/using-vrchat-in-a-virtual-machine) but it appears to only be for self-hosted VMs. Because I'm running my VM in Azure, I do not have access to the various configuration commands mentioned on this page.

VRChat

🚧Advanced Users Only!This information is generally only useful for advanced users and specifically only those running VRChat in a virtual machine. It will contain language that may not be recognizable or useful for most users.❗️Running VRChat in VMs is Unsupported!Using VRChat via a Virtual Machine...

near bronze
#

make sure that you're pointing to vrchat.exe and not launch.exe

south phoenix
#

oh, that's great! thank you!!

untold flame
#

Does anybody use the Oculus C API? I'm trying to figure out how what the "PropertyName" values are?

Eg, I want to be able to query certain properties on the Quest Pro Controllers using functions such as ovr_getFloat, however, it requires the specified propertyName that I want to query, and I have not been able to find out these property names.

gray narwhal
#

Hey everyone ! I'm new here, I was wondering how much the SDK could offer compared to using Unity only. Basically I would like to give A.I Agents custom facial animation + non verbal communication gesture. This would require using some APIs, and also facial expression models, and gesture models. Is it implementable in VRChat ? The goal is to create more realistic npcs powered by A.I

near bronze
# gray narwhal Hey everyone ! I'm new here, I was wondering how much the SDK could offer compar...

The SDK is just the part that uploads to vrchat. If you want to upload to VRChat, you have to fit within the limitations imposed for security. If you're talking about a VRChat world, then that's doable with udon but you'll probably have to write it from scratch, as most normal C# code is not drag n drop into vrchat. If by AI you mean machine learning, then the performance cost of udon would likely be prohibitive, but it is potentially doable, especially if you offload the bulk of the work to the GPU - but doing so would be very nonstandard and tailored to VRChat's specific limitations, written from scratch by someone with extensive knowledge on the subject. If by AI you just mean decision trees, then yeah, that's very doable without anything too crazy.

If the scope of your project falls within the bounds of what VRChat allows, then you'll have several benefits - you get multiplayer for free, with accounts, avatars, VR, everything done for you. You can share the world safely, without sending a sketchy exe. And there's many existing communities that you can engage with for feedback and testing.

near bronze
# untold flame Does anybody use the Oculus C API? I'm trying to figure out how what the "Proper...

I don't have the answer to your question, but I do know that none of that is exposed to udon. You can't just include random libraries in a vrchat world, especially anything that communicates with hardware. you must use provided methods. There are two ways to get input in VRChat:

input events are very standardized and will work well on all controllers and all binding configurations, but only have a limited number of buttons that they support: https://docs.vrchat.com/docs/input-events

Legacy Input.GetButton and Input.GetAxisRaw have access to more buttons in more formats, but each controller is different so it's difficult to support all hardware: https://docs.google.com/spreadsheets/d/1_iF0NjJniTnQn-knCjb5nLh6rlLfW_QKM19wtSW_S9w/edit?usp=sharing

VRChat

You can read the input of a Player's controller in a unified way across all platforms by using Udon Input Events. These events will work correctly even when the player has remapped their controls.There are currently two types of events - Button and Axis, which include boolean and float values. Each ...

untold flame
#

My way of getting it into vrchat is to use it to drive a controller (i’m feeding data into OpenGloves

#

So vrchat sees emulated index controllers

near bronze
#

not sure if this server can really help with that, writing drivers is a very specialized thing and only barely tangentially related to vrchat

untold flame
#

Yeah i figured it was worth a try - you never know who’s involved!

Do you have a better server in mind?

#

The driver is already done though (it’s OpenGloves)

near bronze
#

if you're emulating an index controller, then I'm pretty sure that's a driver

#

that's also very important information you should include in the initial question

untold flame
#

OpenGloves is a driver but its rather on the other side - the driver can’t read any of this, so the data has to come from an overlay.

gray narwhal
# near bronze The SDK is just the part that uploads to vrchat. If you want to upload to VRChat...

I see, those are great benefits. By A.I I mean using machine learning, OpenAI Api for the language model, or maybe an open source one like Dolly, which may require to run on a GPU. Also, the speech to face model would requires GPU I believe. I saw that Udon was a new programming language. Will it be beneficial to use this instead of C# ? Can't I use C# for creating the world ?

The goal is to create compelling npc's that could interact with users, having more than scripted behaviors and more like procedural animation (if that's the term) or A.I powered animation (but I don't think the tools are available for that yet). Nonverbal communication would be implemented in those A.I Agents, and that need machine learning

untold flame
#

In MWoon’s question, my question would be more about how you’re getting the data from openai into the npc’s.

gray narwhal
near bronze
# gray narwhal I see, those are great benefits. By A.I I mean using machine learning, OpenAI Ap...

Using an external API is prohibitively difficult and low bandwidth because you'd have to communicate using string/image loading, which have a 5 second enforced delay between each request and cannot be arbitrary URLs, they must be pre-determined URLs. So you can't send a whole user input string and get something back in a single request. Anything you do would likely need to be done entirely on the local machine.

Udon is required for world development scripting, full stop. You cannot use arbitrary C#, for security reasons. However, udon is not just a graph language. It is an assembly language. Which means that people can write their own compilers into udon. One such compiler is udonsharp, which compiles C# into udon. But keep in mind this is a very small subset of C# that doesn't support things like custom classes, interfaces, generics, lambdas, or lists (though it does have datalist).

untold flame
#

You could potentially use something like shadermotion which reads the data from url’s. But it would not be interactive.

#

(Which embeds the motion vectors into the video stream)

near bronze
#

shadermotion is used to encode the motion of a skeleton into a video, and then the world decodes the video to reconstruct the motion of the skeleton. It doesn't really do anything for this problem because getting the data in from the web is easy. The problem is getting the user's input out to the web

#

and this isn't just a weird quirk, it's an intentional limitation to prevent mass data exfiltration that could be used to violate GDPR

untold flame
#

Indeed.

gray narwhal
near bronze
#

it's not a new language, it's pretty standard assembly. Nobody actually writes assembly unless they're a masochist, it's just a target for compilers

#

the purpose of udon being assembly is so that people can write their own compilers. Udonsharp is vastly more capable than the built in udon graph

gray narwhal
#

Thank you for all the information !

untold flame
#

I think of it as a sandbox.

gray narwhal
untold flame
#

No, i mean like how one tab on your web browser is sandboxed so that it can’t interact with other tabs you have or other programs on your computer.

candid owl
#

like it would suck to get a computer virus from a vrchat map

gray narwhal
#

How is this working ? It needs to send information over the net, so it may be possible ? https://youtu.be/2OU0mfna69w

Are you a VRChat enthusiast looking to take your virtual conversations to the next level? Look no further than GPT-VRC! Our revolutionary system seamlessly integrates the powerful language models of GPT-3 and GPT-4 into your VRChat experience, allowing you to communicate with unprecedented ease and accuracy.

With GPT-VRC, you'll enjoy a range o...

▶ Play video
untold flame
#

Oh that's different. That's about augmenting your own chatbox with chatgpt. That's using OSC, I believe.

#

That video could be in a mirror or watching someone else with that avatar.

gray narwhal
#

Oh you're right, there seems to be a mirror
I don't know more about OSC, but looks like a great tool, allowing tracking facial expression, and other cool stuffs.

gray narwhal
near bronze
#

it's the same problem

gray narwhal
#

I see, thank you very much for taking time to answer !

astral glacier
astral glacier
gilded haven
spare field
#

Direct output without multiplying fresnel:

blissful pollen
#

and with multiplication?

spare field
blissful pollen
#

did you throw a saturate node?

#

it looks correct to me

#

how does it look in the actual scene view

#

I wouldn't necessarily trust the little preview window there

spare field
#

Light is... red?? Lemme add a greyscale node

#

Alright, it works, but I do want more contrast between light and dark.

blissful pollen
spare field
#

Oh, lemme do that

blissful pollen
#

because light values will expand past 0..1

#

well beyond 1 more specifically, they won't be negative

spare field
blissful pollen
#

yep, thats fine

#

its there for whenever you have intense light values, then the result will be clamped, making sure that your emission doesn't get brighter than you would want

#

as for contrast, I suppose if you wanted control over the "curve" so to speak

#

after the clamp node you can do a multiplication node by a value that you can adjust

#

and then a subtract node after that, by a value that you can adjust

#

@spare field anything?

spare field
#

Oops, srry, forgot about this |:

#

Anyway I tried it in game and it looked horrible (Not your fault at all dw) so I just decided to scrap the fake subsurface project

ruby wedge
gilded haven
#

nice

#

was about how you cant apply an armature modifier if there's shapekeys

ruby wedge
#

Oh, that's an old message of mine lol

#

Yeah I figured all that out.

warm niche
south phoenix
#

unfortunately I still haven't figured that out, but I'd like to know too

warm niche
#

Closest answer I got was "Spoof the vmx capabilities for your process to 0 via cpuid."

#

But I have zero idea if this is possible because cloud services are much more strict compared to using your own vm

south phoenix
#

well there are cloud services like plutosphere and shadow that run in cloud VMs and they seem to have figured it out, so it must be possible

warm niche
#

But I genuinely have zero idea how they did it

south phoenix
#

apparently if you use the paravirtualization VM on AWS it doesn't have this problem

#

unfortunately I don't believe azure has an equivalent

warm niche
#

Are PV servers a thing for Windows servers then or no?

warm niche
eternal quartz
#

Anyone played around with fake skyboxes before?
I made this shader based of of one I found on reddit (https://www.reddit.com/r/Unity3D/comments/vyqrpa/how_do_i_create_a_self_contained_fake_skybox/), and it works really well. However, when using this on quest, the right eye behaves weirdly. As far as I can tell, it seems to using the 'World Space Camera Pos' of the left eye for both eyes. This is noticeable at a distance (hard to spot in recording), but it really shows up when I get really close.
I'm completely lost as to what to try or test next, and any help or comments would be greatly appreciated. Any ideas?

eternal quartz
#

Even simplifying further using view direction instead (should have from the start), sees the same problem occur

blissful pollen
#

hmmm

#

doing an ssr implemtnation

#

.....not as a post process

#

lets see how it goes

golden valley
blissful pollen
#

forgot to update here but I managed it

south phoenix
#

Has anyone successfully used the Package Maker tool to create a package that depends on UdonSharp? When I try and use the tool, it breaks my references to UdonSharp while moving my assets from the Assets folder to the new Package subfolder.

thick walrus
south phoenix
thick walrus
south phoenix
# thick walrus Ok, I'll take a look to see if we can fix that. In the meantime, try adding the ...

Thank you!

I added these manually:

"UdonSharp.Runtime",
"UdonSharp.Lib",
"VRC.Udon"

And it did fix the compile errors. However, now trying to run a U# compile results in this error:

[UdonSharp] Script 'Packages/com.kemocade.testpackage/Runtime/AnotherTest.cs' does not belong to a U# assembly, have you made a U# assembly definition for the assembly the script is a part of?
UnityEngine.Debug:LogError (object,UnityEngine.Object)
UdonSharp.UdonSharpUtils:LogError (object,UnityEngine.Object) (at Packages/com.vrchat.udonsharp/Editor/UdonSharpUtils.cs:329)
UdonSharp.Compiler.UdonSharpCompilerV1:ValidateUdonSharpBehaviours (UdonSharp.UdonSharpProgramAsset[],System.Collections.Generic.HashSet`1<string>) (at Packages/com.vrchat.udonsharp/Editor/Compiler/UdonSharpCompilerV1.cs:392)
UdonSharp.Compiler.UdonSharpCompilerV1:Compile (UdonSharp.Compiler.UdonSharpCompileOptions) (at Packages/com.vrchat.udonsharp/Editor/Compiler/UdonSharpCompilerV1.cs:323)
UdonSharp.UdonSharpProgramAsset:CompileAllCsPrograms (bool,bool) (at Packages/com.vrchat.udonsharp/Editor/UdonSharpProgramAsset.cs:295)
UdonSharp.UdonSharpProgramAsset:RefreshProgramImpl () (at Packages/com.vrchat.udonsharp/Editor/UdonSharpProgramAsset.cs:216)
VRC.Udon.Editor.ProgramSources.UdonProgramAsset:RefreshProgram () (at Packages/com.vrchat.worlds/Editor/Udon/ProgramSources/UdonProgram/UdonProgramAsset.cs:111)
UdonSharp.UdonSharpProgramAsset:UpdateProgram () (at Packages/com.vrchat.udonsharp/Editor/UdonSharpProgramAsset.cs:570)
UdonSharpEditor.UdonSharpEditorUtility:RunBehaviourSetup (UdonSharp.UdonSharpBehaviour,bool) (at Packages/com.vrchat.udonsharp/Editor/UdonSharpEditorUtility.cs:926)
UdonSharpEditor.UdonSharpEditorUtility:RunBehaviourSetupWithUndo (UdonSharp.UdonSharpBehaviour) (at Packages/com.vrchat.udonsharp/Editor/UdonSharpEditorUtility.cs:936)
UdonSharpEditor.UdonSharpBehaviourOverrideEditor:OnEnable () (at Packages/com.vrchat.udonsharp/Editor/Editors/UdonSharpBehaviourEditor.cs:491)

I searched through here for other people getting the does not belong to a U# assembly error, but don't see anyone talking about it in the context of packages.

(FYI this is a fresh test package that just contains one empty U# script, nothing fancy)

south phoenix
thick walrus
thin matrix
#

Hi!
I saw VRChat recently tweeted about "Unity Engine upgrade", I've been unable to find any references to any of that within their Developer Update posts. Not sure where I can ask for help to find this posts or if anyone knows anything about this?
Thinking about doing a revamp of my avatar and wondering if I should put it off until this engine upgrade comes or just get it over and done with now. Then port it over when the Engine upgrade comes (maybe to Unity 2022?)

inland grove
#

Don’t worry it’s probably to a newer version of 2019 cause the current one is a bit buggy

#

Actually nvm I’m just stupid

#

Was not searching the correct title

#

But still

#

I would really like if this issue could be fixed soon because I need that menu to see what is causing issues in my world

unreal orchid
# thin matrix Hi! I saw VRChat recently tweeted about "Unity Engine upgrade", I've been unable...

They intend to make it a seamless transition.
To the point where they are working with Unity directly to overcome one of the (or the only) bigger problem with migrating to a newer Unity version, which would have broken all custom shaders. (Also that asset bundles apparently haven't been cross compatible, even though they are advertised as such)

We also have little idea when it will happen, except for probably this year.

inland grove
#

I’ve been able to load asset bundles from unity 5.6 into unity 2019 just fine

#

Unless it’s versions after 2019 that have issues

unreal orchid
thin matrix
inland grove
#

Vision will actually support vrchat?

maiden atlas
#

afaik nothing confirmed. But the devs have said they're looking into ios mobile support after they get the android mobile build out so it's not out of the question that vrc could come to the vision headset sooner rather than later.

thin matrix
warm niche
#

Is there any workarounds for compute shaders

#

I made some beautiful grass but as it turns out compute shaders are banned

#

Can I somehow bake it into a solid mesh?

manic zealot
thin matrix
manic zealot
# thin matrix Ouh! That's exactly what I'm trying to find, which developer update did they giv...
thin matrix
#

Awesome!
Thank you 🙂

manic zealot
thin matrix
#

It'll be interesting to see when this Closed Beta end (looks like it started in early April)

vocal creek
#

I know very little about code. This question is directed either at someone who helped write the code for the new (or new to me?) physbone reset when disabled option or someone who has dissected exactly what it does to function.

Previously, I used the method below in the animation layer to reset the position of a physbone when I disabled it.

Is either the new reset feature or the previous method more optimized than the other, or are they technically the same in terms of calls made?

#

If the new method is more optimized, I plan to update my avatars to use it. If it is less optimized, I’ll continue using the old method. If they are the same, I will leave my old avatars as is, but use the new method in the future because it’s easier to implement.

#

The entry state is physbone on, the second one disables the physbone and resets all affected bones in the chain, then it exits if the physbone is turned on again to re-enter the entry state.

Normally my entry state is off, but from a visual standpoint this was easier to read

viral flume
wheat condor
#

So I am creating a combat styled world and in the world there are large drops that you have to fall from and I want to make that part more realistic like adding parachutes or a way to make them slow down while they’re falling, is there a prefab or udon code I can add?

dawn creek
#

you could use SetGravityStrength on the falling players, maybe once they've reached some terminal velocity

wheat condor
#

Is there a way to change gravity by holding onto a object?

#

Change the gravity of a player

dawn creek
#

yes, with OnPickup. I think these questions are better suited for #udon-general

grand sapphire
agile slate
#

anyone know how to fix no such file or directory, mkdir 'G.'

fringe sage
#

How to make a follow ai do a random roam

warm niche
#

Here's the part of the VRChat dev blog that Alastor wrote about:

rapid hamlet
#

Hello, May I ask a question?

#

About SDK..?

near bronze
#

You should look into either LTCGI or VRSL

hardy patio
#

I am trying to use OSC as Input Controller for some movent thing in vrchat. But I was wondering about how Velocity is calulated since I want to convert movment from base unity to vrchat movment.

night birch
#

I suppose it depends on what you need from the system. Area lit is fairly easy to set up but the emission is cast over the entire mesh for each object you choose to be affected by it, so basically there's no shadows which is fine for things like small objects in the scene and floors, walls, ceilings of a single room. If your room is more complex, has multiple floors, etc, LTCGI allows you to bake maps that mask out those zones which light should not be able to reach. I like the clarity of area lit as well but each has their own trade offs I suppose. I have been told you can achieve the same masking from LTCGI inside of Area Lit but I've got no clue how to do that

crimson fog
#

@candid owl Asked me to provide the texture compression list to monitor texture sizes with and without mips. Google Sheet and Notes are below:
https://docs.google.com/spreadsheets/d/1OlwSzpkQm0uW5wswDdE6SjFyWf-z0-M6gaoC6jDlIgs/edit?usp=sharing

  • This is VRAM size, which is always predictable regardless of content. Compressed download size, on the other hand, changes tremendously by the texture's content (a black square compresses much easier than intense and noisy detail).
  • Quality is broken down as bits per channel. 8 bits per channel is uncompressed, Max. 4 bpc is High++. 2.66 is High+, 2 is High, 1.5 is Low, 1.25 is Very Low.
  • Color-coding on the sizes shows how frequently textures can be used: Blue can be used tens of thousands of times before topping 1 GB of VRAM, and should be considered "free." Green can be used thousands of times, Orange can be used hundreds. Red would reach multiple GBs with hundreds, so should be used less frequently. Grays should be avoided: Light Gray can be only be used 40 times before topping 1 GB. Medium Gray tops at 10. Only a few Dark Gray textures would top 1 GB. A single Black texture already topples 1 GB and would cause massive issues for all systems if such a file were ever called.
  • Y or N to read out texture size with and without mipmaps. I simply consider 1/3rd of the file size for Mips. I'm not getting the actual size of each file down the list, so the real sizes of all textures with Mips should be a tad smaller than what's reported here. Will fix later.
  • Vertex sizing is done at face corners. UV seams split face corners into multiple pieces. Please be aware most modeling programs don't report vertex counts from face corners: this statistic must be read from the vertex count within Unity.
boreal mango
#

How are you getting bpc? Is it bits per channel per pixel? I can see that it helps convey the colorspace of the different formats. Especially, dxt1/5s weird 5:6:5 rgb. But it just doesn't sit well with me.

Also, do you have a source for the dxt1 4 color + black texel palette? Everything I've read says dxt1 is either 4 colors or 3 colors + alpha (stored as black).

boreal mango
crimson fog
#

Bits per channel is special consideration for DXT1, 4 for both BC4 and BC5, and BC7 is limited to 8 bits per pixel, with the alpha channel optional. Uncompressed formats are 8 bpc/24 for RGB, or 32 RGBA. I'm not including HDR textures on this list.

I saw a technical document describing the bit order for DXT1 and said special consideration was given for the color black on the tales. It reads the order of both values, and whether one value is higher or lower than the other, or the same, in order to generate more options from only 2 colors of data per 4x4 block. I'll have to go find it. Also, the way DXT 1 works, there are derived colors which can break free from a strict 5,6,5 grid, but as far as addressable colors are concerned, that's what you're limited to.

From an artist's standpoint everything supports sRGB in Unity. I'm not exactly sure how they're doing the conversion, if it's LUT or programmatic.

There is no special size for Alpha except for DXT5 which has its own 4-bit alpha consideration. It's best to use BC7 with alpha for this reason: much better color quality overall. Everything else is shared evenly: uncompressed is 8 bits per channel, and the different formats have different numbers of channels.

#

Here it is - S3 Texture Compression breakdown for DXT 1 from Khronos.org. Code 0 is the first color. Code 1 is the second color. Code 2 leans more to the first color, or average halfway point between both colors depending on the order of colors in the bit values. Code 4 is also dependent on order, leaning more to the second, or resulting in Black.

So the total number of colors that can possibly be addressed is 6: first color, second color, 1/3rd lean towards first, average, 1/3rd lean towards last, and black.

#

Updated doc.

#

Unity docs also imply sRGB conversion is programmatic... which is minorly concerning, as not all textures require such expensive, accurate transforms to the exact sRGB standard. But considering cache does exist, it's possible these transforms aren't being operated on repeatedly.

Khronos clarifies conversions are done before compression, so if you check sRGB it's going to manipulate the colors to proper sRGB spec prior to any compression. This is not a ubiquitous feature or function, but something virtually everyone does to get more accurate colors and better performance. This is why every texture "supports" sRGB. Unity's doing it.

crimson fog
#

Rough outline:

  • Stepping up in resolution X and Y quadruples the file size. Lower resolution with higher quality can halve the file size, and may be preferred.

  • Anything 256 or below, consider "free." You'd need more than 1,000 of these to run up one GB. You can even leave textures 128 or smaller uncompressed.

  • 4K normal maps, BC7 or BC5, are 25 MB with mips. This can be rather hefty, and adds up when you add other maps of this size.

  • Completely avoid 8K and higher.

  • DXT 1 for detailed textures is very low quality, but still the most efficient.

  • BC7 for 3 and 4-channel masks are quite efficient for the quality. One texture gets you 3-4 maps with much higher quality and half the size. 3-channel is higher quality than 4, but both are the same size.

  • BC4 offers the best quality grayscale maps at half the size of uncompressed R8.

  • BC5 offers the best quality normal maps at the same size of BC7.

  • Uncompressed RGB is 3x larger than high quality BC7, and 6x larger than low quality DXT1. Most are good about avoiding uncompressed maps, but they have a time and a place, particularly for small res textures with careful details on normals and displacement.

candid owl
#

wonder if it might be handy for a future expansion to this list covering the Android texture formats as so folks know what to choose from when setting up their Quest builds?

crimson fog
#

My whole life I've used the DXT and BC formats, and only barely dabbled in Android formats.

But as far as sizes go, ETC is 4 bits per pixel, 24-bit RGB the only supported mode, while ETC2 has both 4 and 8 bpp modes. ASTC is dependent on block size, with each block representing 16 bytes, and sizes ranging from 4x4 (8 bpp) all the way up to 12x12 (0.89 bpp). From my limited experience with the Android formats, ETC is horrible, far worse than DXT1, and the only reason it's used as default is for compatibility with a small group of outdated Android devices.

boreal mango
crimson fog
#

Hmm... you're right! That does explain a lot. DXT1, BC7, and Uncompressed work with sRGB. RG BC5 and single-channel uncompressed R8 do not. It seems information is scattered all over the place on this. Wild.

#

Updated the spreadsheet to include this information.

boreal mango
#

Also looks like you'll have to compress dxt1 outside of unity to get the alternate color palette. I set up a 4x4 that should have worked fine with red, blue, black, and a halfway color, and the unity compression looks like it is still trying for the 2 addressed + 2 interpolated mode.

crimson fog
#

Oof. Then Unity doesn't support the more advanced encoding of DXT1.

boreal mango
#

yeah, I saw someone who used NVIDIA texture tool to try out the 1bit alpha variant of DXT1 in unity.

crimson fog
#

I'd highly recommend never using the 1bit alpha DXT 1... but it would be nice to see if it works.

boreal mango
#

Works mostly fine for large cutouts, but since the pixel is marked as the color black, it does have issues with stuff like bilinear filtering.

crimson fog
#

You can't properly filter black and white. There are definitely useful applications for 1-bit alpha, but none that I can think of with regards to DXT 1. Perhaps a trim sheet and some material definition/masking. But since you're removing color variance on a texture with already extremely poor color variance, that's not ever going to be a best practice this day and age.

Past a certain point, the optimizations become debilitating. Use BC7 with alpha.

boreal mango
#

Also, for anyone who wants some deep nitty gritty look at PC compression, check the microsoft docs on BCn compression. BC1 and BC3 are DXT1 and DXT5 respectively.
https://learn.microsoft.com/en-us/windows/win32/direct3d10/d3d10-graphics-programming-guide-resources-block-compression#compression-algorithms
https://learn.microsoft.com/en-us/windows/win32/direct3d11/bc7-format

crimson fog
#

Once again, 1-bit alpha does NOT filter well. No matter how good your AA is, it's a pure black and white staircase every single 1-bit alpha. In modern game dev with textures being inspected on high resolution, this is highly unrecommended. Even bicubic filtering won't fix this issue. The very best use case, a perfect grid, would still be very unlikely to need a color pattern. This is coming from the notion A: a perfect 1-bit mask is desired, and B: colors worse than DXT1's already very low quality is acceptable. There are many uses for 1-bit alpha, but I'm struggling to find a use-case for that with such poor coloring.

This is an optimization that saves you, at the very most, a couple MBs, in order to make everything look awful. Maybe there's a use, but I can't think of a good one right now.

storm birch
#

Whats going on with the Unity 2021 implementation? When is that expected to go through? Also whats up with the dynamic cloth system that was teased at the same time as physbones?

unreal orchid
hidden slate
#

I don't know if anyone will have the answer for this, but I'm currently collaborating (Plastic SCM) with a friend on making an avatar, and for some reason the VRC Avatar Descriptor wont show. Does anyone know why?

near bronze
hidden slate
#

all thats in the console :((

near bronze
#

hm, that's odd. I'm not quite sure how that can happen if you don't have errors

#

maybe try using the creator companion to re-install the SDK?

hidden slate
#

Yeah that's what I'm confused about

hidden slate
near bronze
#

try going to packages and right click > reimport the VRChat SDK - Avatars

hidden slate
#

I completely forgot about that

#

Trying it now

#

Yeah that was it

#

I feel absolutely dumb

near bronze
#

ayy

hidden slate
#

Big thanks tho oh my god

near bronze
#

nah don't worry about it, that was just a guess and if it didn't work I would have been stumped lol

hidden slate
#

I'm grateful you were around here to help

#

Setting up Plastic SCM was annoying enough

queen glen
#

My question has been for a long time, how do you even get BC5 compression, the only BC5 i see is RG which is useless if i need RGB and how do you use BC7 without Alpha, i don't quite understand the (A) in RGB(A), does it mean its optional? Does do i just need to turn "Alpha Source" off in the texture to turn it into BC7 RGB compression?

#

Also something of note that i just read up on and noticed myself BC7 has compression bugs with alpha, randomly turning some fully opaque pixels into transparent pixels (from 255 to 254) i can often see this on my body in the masked personal mirror

dawn creek
#

BC5 is indeed only for 2-channel textures, and yes BC7 can be either RGB or RGBA.

candid owl
queen glen
#

Well yea, but how do i get BC7 to be RGB ONLY, the UI does not seemingly reflect that and i don't see a difference on the texture either. When is BC7 RGB and when is it RGBA, is there a way to force it to either, that was my question. Also good to know BC5 is for normal maps, i think last time i tried it fucked the normal map (due to the altered colors it would break the normal maps)

dawn creek
#

if you set the "alpha source" to "none," or if the source image has no alpha channel, it will be RGB. if the source image has an alpha channel and the "alpha source" is set to "Input Texture Alpha," it will be RGBA.

queen glen
#

I see, what i find weird about that is that the UI doesn't reflect this at all, nor does the quality seemingly change (should be most visible on very fine color gradients), but switching between "None" and (for instance) a forced mode like "Greyscale" which should generate alpha i see absolutely no visual difference despite the table above saying it should improve a bit.

dawn creek
#

ok, looking it up, I was a bit misled. it sounds like BC7 can have different alpha modes per fixed-size block, giving more bandwidth to blocks that don't have alpha. so if you don't see a difference in quality between alpha forced off and alpha forced on, maybe Unity's compressor doesn't make use of the color-only mode

queen glen
#

Yea thats the thing i'm led to believe, BC7 is automated per pixel chunk, so it might or might not already pick "color only" regardless, hence why i don't see a difference and hence the (A)

dawn creek
maiden atlas
#

Does unity respect external encoding? I honestly never thought about it. I'd just assumed it'd always convert it to it's own encoding during the build process

dawn creek
#

if you give it a DDS or KTX in a format it understands, it will keep the data as-is

slim summit
dawn creek
#

good to know

boreal mango
#

A better example of the isolated artifacts vs blocks at a lower mip. My green channels are very blocky on DXT5, BC7 looks better but has artifacts where there shouldn't be any green.

boreal mango
#

On a side note, I've been trying to see if NVIDIA's texture export tools has a better encoder but it seems to have issues with the alpha channel that's causing artifacts that are even visible without mipmapping. This only appears with sRGB unchecked in unity though.

boreal mango
#

Tested Unity 2021's faster BC7 compression. It's faster, but the artifacts are still there.
I'm still seeing little green artifacts in areas that should only have red, blue or alpha. Same with the other channels, but green is easier to see.

Correction*: BC7 set to best compression has the artifacting, setting compression to normal does not have the artifacting with the BC7e compressor.

#

This entire issue is only noticeable on linear images with BC7 compression. I can't see it on sRGB images, although it may still be present and just incredibly hard to see due to the low values that the artifacts have.

slender wharf
#

Has anyone found a good true-HDR workflow for VRChat photography? The current camera doesn't support EXR/JXR yet and as far as I know VRCLens only does tone-mapping down to SDR.

blissful pollen
slender wharf
#

Yes, and I am experimenting with exposure bracketing. However I would like to find a better solution to use on moving subjects.

carmine latch
#

Was there any news on whether vrchat will support the apple vision pro headset?

slender wharf
#

The vision pro doesn't even have controllers. There would be no way to any play game. Your best bet would be to wait till iVRy or RiftCat can get it linked to SteamVR.

unreal orchid
warm root
warm niche
#

I think its more about the concurrence, apple wants people to use their headset

warm root
maiden atlas
#

Really the main sticking point with an ios version is uploading yet another version of your avatar/world to a new platform. iirc most of the stuff that works on android should also work for ios. I think the devlog that talked about mobile and ios mentioned that they'd look into auto propagation of android content to ios if it's possible. We'd probably get an ios(mobile) port of vrc before we get it fully suported on the vision.

candid owl
maiden atlas
#

I kinda wouldn't be suprised if roblox is allowed to slightly break some of the appstore rules since it's a cash cow. Consistently in the top 10 highest earning apps every month.

Though a counterpoint to that would be Rec Room since that's also on mobile now and has UGC even if iirc you're kinda limited on what UGC you can make.

velvet zodiac
#

From what I heard about the beta program in videos, they're using URP and shader graph for the vision pro. I can't find direct quotes from Unity, so, grain of salt.

But that'd be another sticking point for VRChat, if so.

magic loom
#

was looking at drawpile's info on why they don't have an iOS app and it turns out they can't put that up to the app store because it's licenced in a way that keeps it open and free in perpetuity. Apple wants to reserve the right to alter prices on the store

#

though on that note, I'm still kinda bewildered VRC still doesn't have the simple feature SL has, of having a creator upload a single copy of something so people can buy it through the game, and you can just *attach it to your skeleton from an inventory along with any accessories, so long as they're appropriately weighted. Would protect creators better than just handing over all the working files

unreal orchid
candid owl
#

a skeletal attachment system like that would increase the draw calls of avatars quite a bit because every single object would have to be a separate material and mesh

#

and also like no two avatars on VR chat are going to share names on weight painting

magic loom
#

I'd hope for something as simple as "an avatar base creator has also uploaded premade outfits that are skinned to that rig", draw calls are definitely something that stack up quick and this has to stay optimal for vr framerates, yeah
my bigger interest in built in storefront/inventory is more that right now if you want to customize an avatar, many people buy, edit with less technical knowledge, and reupload hundreds to thousands of time. It sounds like a hosting logistical nightmare full of bloated avs

candid owl
#

honestly trying to get clothing to fit between Avatar bases without access to blender to modify the proportions might be kind of tricky

#

like pretty much all Second Life avatars are the same skeleton under the hood

warm root
#

Thus they have a working clothing/accessory system because they have standard avatar bases you can design and build on.

candid owl
# warm root AFAIK Cluster works like this, seems to work well but that's because most avatar...

from what I can tell cluster lets you pretty much upload any arbitrary vrm so you could easily get terrible VR chat avatars on there https://help.cluster.mu/hc/ja/articles/360029465811

warm root
dawn creek
#

just curious, anyone know why exactly transparency on mobile is considered slow? from what I know about tiled GPUs, any type of frame-buffer read-back is slow because it has to flush tiles to main memory. so that's why grab passes are disallowed, and HDRP doesn't support mobile (because it uses deferred rendering). but afaik transparency is just sorting and blending, which should be just fine.

candid owl
#

from what I recall tile based renderers have a harder time with Alpha overdraw

dawn creek
#

I guess I'm curious about what it is about a tiled architecture that makes that slow. I think I read something about early-Z-test optimizations, so maybe the fact that transparency can't use Z test forces it to use a slow path? But I don't know how that would be different from immediate mode architectures.

#

Maybe it's that they expect to be able to re-order triangles per tile, which they can't do with Z test disabled?

silk wave
dawn creek
#

On the Quest, discard (or clip()) and alpha to coverage is faster than transparency in areas of high overdraw.
Well that's good to know, I had heard that it was just as slow.
This is because the Adreno is a tiled deferred renderer, meaning it renders the depth of everything, then renders the scene, ensuring only the closest opaque surfaces get rendered.
[…]
And most GPUs have optimizations so they can store depth in a cheaper / compressed way, but that gets disabled when either alpha testing or alpha to coverage are used.
That does sound like the early Z-test stuff, and partially explains why it would be different than an immediate-mode GPU. I guess it's just easier for tiled architectures to add that extra step into the pipeline.

warm niche
#

reading the #announcements
What are the " back-end changes" to help reduce crashing on Quest?

fickle junco
#

So like i ran into this unity thing by bugging a hinge joints limits and it let me collide with it sometimes. To my knowledge it only interacts with non-trigger colliders so how did this even happen??

near bronze
#
  1. the player collider is not trigger
  2. the player rigidbody is kinematic and does a rudimentary scripted collision detection, so when it runs into things it just stops rather than applying force to them
fickle junco
#

thank youu

hardy patio
#

Does anyone know if VRC checks controller pos. Been testing some stuff with open vr. Can get the hmd to work and trackers but for some reason vrc dosn't seem to want to track the controllers.

fickle junco
#

So i've got a world with a few different things in it and after being in it for like 10+ minutes I seem to be getting a timed lag. Like every 3 seconds a frame is lost then regained. This happens locally to others as well no matter how powerful your pc is. My udon behaviors are set to manual but I do have one with a for loop.

near bronze
fickle junco
near bronze
#

can you show how you're using it?

fickle junco
near bronze
#

ok if you're not dynamically creating a new array then it's not that

#

if it happens in clientsim as well you could run a profiler

fickle junco
#

it doesnt happen in client sim

near bronze
#

try removing things from the world and see if it goes away

fickle junco
#

alright.

warm niche
wet tinsel
#

A friend has a working OSC heart tracker, but each time the tracker checks to update the number the blink twitches. Video attached. Anyone know how to fix this...? @ me if so

elder nymph
remote frigate
#

Hi, what's the "proper" way to implement the IVRCSDKBuildRequestedCallback interface?
The callback and my validation itself is working, but on every script reload I keep getting the warning

<MyClass> must be instantiated using the ScriptableObject.CreateInstance method instead of new <MyClass>.
(it's extending UnityEditor.EditorWindow, but I'm getting a similar warning when it's extending MonoBehaviour)

near bronze
remote frigate
near bronze
#

huh that's weird, can you provide examples of how you're trying to use this?

remote frigate
#

when building I'm checking all UdonBehaviours if their SerializeFields are not null
and cancel the build if at least one property isn't set

near bronze
#

no not an explanation

#

I mean how is your class set up

#

what is the code producing these errors

remote frigate
#

the code is

#if !COMPILER_UDONSHARP && UNITY_EDITOR
using System;
using System.Linq;
using UnityEngine;
using VRC.SDKBase.Editor.BuildPipeline;
using VRC.Udon.Serialization.OdinSerializer.Utilities;

public class EnsureProperties : IVRCSDKBuildRequestedCallback
{
    public int callbackOrder => 0;

    public bool OnBuildRequested(VRCSDKRequestedBuildType requestedBuildType) => CheckAll();

    private static bool CheckAll(){
        // find all Udonbehaviours and check properties
    }
}

#endif

and the errors are 'EnsureProperties' is missing the class attribute 'ExtensionOfNativeClass'!
and if I add that it's EnsureProperties.cs(8,2): error CS0122: 'ExtensionOfNativeClassAttribute' is inaccessible due to its protection level

near bronze
#

oh, that means that this script used to be a monobehaviour and was put as a component onto an object somewhere in your scene. You need to remove it

remote frigate
#

I'll check, might have accidently added it somewhere

#

nope, that's not attached to anything

#

it's in the Editor folder, could that cause issues?

near bronze
#

no

#

try putting monobehaviour back on it and then search

remote frigate
#

still nothing

#

I think I got it working
it used to be an EditorWindow and I guess Unity still had some reference or something to it
I restarted Unity and that fixed it

subtle lava
#

I have one question about player run movement speed. Since PlayerAPI.SetRunningSpeed() takes a float as parameter, this run speed should be a float value right? But in practical, I notice passing a speed of 4.9f will result the same running speed as passing 4. Is this intentional?

warm niche
subtle lava
#

Or is 22% just not an noticible amount?

warm niche
#

I think so

subtle lava
#

Originally in the game I set infected player 5 running speed and human with 4 running speed, usually infected can easily chase down a human player, but when I changed it to 4.5, even with a perk that gives 0.3 more speed, it can barely chase down anothet player from behind. I don't have a perfect method to test this, maybe it's just me feeling wrong.

#

I will double check with my functionality and do a bit more test on this.

warm niche
elder nymph
#

If you suspect a rounding issue, try 1 vs 1.9. Or even 1 vs 0.9. That should show a significant difference.

warm niche
#

maybe the speed is affected by the screen refresh rate

subtle lava
subtle lava
warm niche
#

I also got better score in udon surf at 165 hz than 60hz

#

but this is minimal and only can seen in competition

subtle lava
#

Ah it's gonna be hard to balance if it's bind to frame rate,

#

Aftet all it's not a hardcore competition game, as long as people don't complain I think it's fine

warm niche
#

what you can do to test it is set a timer and run forward at 4.5, when the timer stop set the player speed at zero and see how far you traveled, then repeat the process at speed 5 and compare the results

subtle lava
#

I will test the 0.9 and 1 first or maybe 1.9 vs 2, it would be a significant diffrence if it's rounded in the background.

warm niche
#

if you debug vector3 it will be rounded, be sure to debug the magnitude instead ;)

austere salmon
#

are u guys hiring lol. I am a strong web dev, but in my earlier days i wrote a 3d modeling/level editor app in d3d/C++, and i currently work on a vr/3d web project.
If u guys went web based (webgpu enabled), i think it would make vrc more accessible and commonplace.

#

This is prolly the wrong thread for this but just saying

#

Also, a hot dog is a taco :3

vague girder
austere salmon
#

have already applied. not sure if u guys hiring

boreal ferry
#

apologies for the long question incoming:

#

Is there any way to make a world/avatar access a website/act as a web browser?

I want to make a world based on a book i love. The author distributes the first chapter for free on his website. i would love to put that snippet of literature into an immersive VR experience for my friends to enjoy. But, i realize simply copy-pasting the content of the except without permission would constitute copyright infringement, and i don't imagine the author would be pleased. but the story is there, for anyone to read, so long as they take off their VR headset and sit at a boring web browser.

I've seen screens in VRChat worlds that are able to access Youtube videos and Twitch livestreams. Is there anything like that, but for accessing other web content? I imagine creating a virtual book with the author's website, that lets users read the chapter excerpt inside VR. Is this possible? If so, what's the first step i should practice or guide i should follow before i try to build it, if i need to accquire prerequisite skills? Is there something else i should be doing or thinking about?

Apologies if this is not the proper place/manner to ask, i am new and have never developed a world before, but i did try to find the most appropriate place to ask before posting this message.

near bronze
#

you might be able to load the source of the website and filter out all the html until you have just the text, but that would take a lot of programming knowledge

boreal ferry
#

I could probably handle that. I could do it all in unity, if i learn how to use Udon?

near bronze
#

yeah, you'd definitely want to use udonsharp for any kind of string parsing

boreal ferry
#

Noting that down. I'll make sure to check out a bunch of udon guides. Thanks for your help!

subtle lava
#

So... it supposed to be synced for late joiners automatically right? I put the entryUI state update function inside the OnDeserialization and the join buttons will only be shown if this OnDeserialization is executed, but I still receive tons of reports that people can see the join button before they sync to the game. Did I use it in a wrong way?

#

My temporary workaround solution is just forcefully calling the sync again when there's new player joined after 5 sec and it works. But I'm still curious why it's not automatically sync for late joiners as the documentary said.

near bronze
near bronze
#

is that the only place where you're doing RequestSerialization?

subtle lava
#

ya I do RequestSerialization when I changed synced data. I'm just curious if I didn't call the RequestSerialization() function, will the manual sync variable be synced for late joiners?

#

when they join

near bronze
#

if you don't call requestserialization on a manual sync behaviour then it won't sync to anyone, late joiners or people already in the instance

subtle lava
#

I see, so it doesn't matter if they are late joiners or not, I call the RequestSerialization(), it syncs, that's it.

near bronze
#

yes

subtle lava
#

Then it comes to a weird state, if the late joiner never synced when they join.... why they can see the join buttons lol

near bronze
#

late joiners just receive whatever the last state it is you sent out to everyone

#

can you show more of where you're changing variables?

#

and why does the instance owner do OnDeserialization on start

subtle lava
#

That's the only place join buttons are toggled to be shown.

subtle lava
near bronze
#

that's kinda a weird way to use ondeserialization

subtle lava
#

I don't have other method for achiving this behavior.

near bronze
#

but the reason you described doesn't seem to match the solution you picked. If you only want to enable buttons after you have received synced data that's valid, but why is the instance owner shortcutting that?

#

InstanceOwner is the person who created the instance, it is not the owner of objects or the master of the instance

subtle lava
near bronze
#

right, I understand that, Networking.IsInstanceOwner is not the correct choice for that though. I'd probably recommend making a function called HandleSerialization and then both ondeserialization and onpreserialization call HandleSerialization. As a result, both the owner and everyone else will run HandleSerialization. That's where you apply the synced data to the world, and do things like enable join buttons. Then when you join, you do an initial requestserialization to kick off that process

subtle lava
near bronze
#

I'm not saying to run handleserialization on start

#

run it in both ondeserialization and onpreserialization. onpreserialization is the function that the owner gets when they send data

tribal horizon
subtle lava
near bronze
#

no, it will be executed when the owner sends data

#

note that owner is not the same as instance owner

#

forget about instance owner, that's about permissions and moderation stuff, not networking

subtle lava
#

that's what I thought, okay... so, if I create an new instance, without calling any function on start, how do I let table know that it should show join button for me when I join?

near bronze
#

if you're the owner, do requestserialization on start

#

then when that goes through, you'll get onpreserialization

#

which will do handleserialization

subtle lava
#

make sense now

#

okay so the suggestion is just replace this OnDeserialization() into RequestSerialization(), and setup a handle function for those?

near bronze
#

that and also stop using instanceowner

subtle lava
#

This should only be called by whoever joining a new instance for the first time though, would that make a difference?

near bronze
#

yes, because the instance owner does not mean the first person who ever joined. The instance owner is the person who made the instance.

#

they could drop the portal and never go in

subtle lava
#

make sense

near bronze
#

or they could rejoin 20 minutes later

#

and instanceowner would still be true

subtle lava
#

I will change it to this way then. I don't fully understand what's the purpose of using preSerilization tbh. I know what it does, but isn't all the functions within it should only for setting up variable and making sure all the functions linked to this variables update properly before they are synced? What's the difference between calling a RequestSerialization() then OnDeserialization() afterwards, compared to moving many check and update functions into the OnPreSerlialization() and only calling the RequestSerlialization() ?

near bronze
#

onpreserialization is just the owner's version of ondeserialization

subtle lava
#

Because all the updates and setups based on sync variables will be put into the OnDeserilization() for non-owner anyway.

subtle lava
#

vrcRat so... something like this? would save some lines from doing this?

near bronze
#

that works too, I still find it weird to directly call ondeserialization but some people do it

subtle lava
near bronze
#

I'd love to see something like OnSerialization but it would not be correct for the owner to call OnDeserialization because thats not what it means

subtle lava
#

I guess, I've been using OnDeserialization just like a OnSyncVariableChanged() function.

near bronze
#

yes, that's exactly what it should be used for

#

which is why it's kinda weird to call it manually

amber dust
#

Hey,
I'm trying to access CinemachineSmoothPath through udon. But I just get this as an error where it tries to find "CinemachineCinemachineSmoothPath" TypeResolverException: Type referenced by 'CinemachineCinemachineSmoothPath' could not be resolved.
I add it like this.[SerializeField] private CinemachineSmoothPath _path; [SerializeField] private CinemachineDollyCart _cart1, _cart2; And it's not complaining about CinemacineDollyCart. Is this just an error. Or do we not have access to it?

tribal horizon
wary sky
#

Umm....
VRCSDK 3.2.3 breaks Semantic Versioning Again.
VRCSDK 3.2.3 has some new features so it should be VRCSDK 3.3.0.
If VRCSDK want to use modified semantic versioning-like versioning system (For example, 3.Major.Minor), Could you declare such?

We use Semantic Versioning for SDK packages
https://vcc.docs.vrchat.com/guides/version-matching

https://feedback.vrchat.com/sdk-bug-reports/p/vrchat-sdk-3111-doesnt-follow-semantic-versioning

We use Semantic Versioning for SDK packages managed by the VRChat Package Manager (VPM) instead of the date-based format used in the .unitypackage format. This document shows the matches between the two versions for the latest SDK releases.

solemn radish
#

"You should never ask for or store someone's VRChat credentials" - So VRCX is against rules?

#

And if a response like "VRCX specifically is okay" comes back, can you please explain what would be the case if I were to build an application with similar functionality to VRCX?

#

Cause I'm planning on doing that currently and this is a little off putting / discuraging.

tight vessel
#

Not sure where to put this (too many channels lol):

Has anyone here experimented with custom wheel colliders in Udon? The default unity wheel collider is pretty meh and a few months ago I was looking into writing my own wheel collision code but I didn't get too far. Looking for any open source code resources, your own implementations, books, guides, etc on the subject

modern fog
#
https://forum.unity.com/threads/the-dark-art-of-unity-wheel-colliders-what-unity-doesnt-tell-you.1109261/
https://www.youtube.com/watch?v=CdPYlj5uZeI
https://github.com/unity-car-tutorials/Unity5-WheelColliderSource
https://ftp.idu.ac.id/wp-content/uploads/ebook/tdg/TERRAMECHANICS%20AND%20MOBILITY/epdf.pub_tyre-and-vehicle-dynamics-second-edition.pdf
http://www.racer.nl/reference/pacejka.htm

Various resources for getting started

#

As of now, Udon runs pretty slow when you want to do your own math and I recommend going down the route of the 2nd link (yt video) for performance.
This is what I have done with the sim route of development

tight vessel
tight vessel
#

Just a bit of context, my biggest gripe with the Unity wheel collider is it only has one raycast and this falls over if you wanted to make like monster trucks or something over hilly terrain

modern fog
#

Indeed, Unity did not port some of the features from PhysX wheels. In your own implementation, you could use multiple raycasts, spherecast, or sweep test via convex collider (e.g. a cylinder mesh)

queen glen
#

So after wanting to find out how this works for a long time i looked into VRLabs World Physics asset but i'm not entirely sure yet how it fixes the mirror clone issue. Maybe someone with more technical insight into how VRChat creates and uses those mirror clones can confirm this.

From what i can see it seems to be abusing the fact that mirror clones have a short delay (possibly down to a single frame) when mirroring animation actions, so what it does is have a branching path, one with the normal animation, that sets a parameter to true, which leads the delayed mirror clone down the other path to play a modified version that does not enable the collider, resulting in only a single collider being active and thus not freaking out colliding with itself.

vague girder
#

if the mirror clone has the colliders enabled, they will interact with the real colliders and freak out

grizzled jackal
subtle lava
near bronze
#

The larger and more complex a project gets, the more difficult it is to stick to that architecture, by all means. Rarely, it might be impossible. But I'd always consider it a good goal to do it that way, or at least make infrastructure that loops it back to the same ideal rather than building off away from that ideal

grizzled jackal
#

It's definitely a good rule of thumb to not need edge case handling. Though I still think calling OnDeserialization(); or other VRC overrides should be avoided as it deviates from the expected behavior outlined in the documentation.
Instead I call my own method, for example HandleSerialization or UpdateScoreboard. These would also just be called in OnDeserialization.

Not having edge case handling for remote players and late joiners is an ideal that often simply can't be met with Udon's networking.

#

Using synced variables in this manner is admittedly a workaround due to missing functionality *cough* networked events with params *cough*, but that's usually the case with anything we do when making more advanced projects with Udon anyways.

#

Enough rambling from me, I agree with what you said.

light remnant
#

I'm asking in here since the reasons for my running into this are bizarre, but: are there any known circumstances under which Phys Bones stop phyzzing when you do an Action layer dance? I've got a parent constraint on a transform, and *then *a child transform chain that has a Phys Bone script on it. I'm getting really unexpected behavior when the ancestor transform switches to certain Sources in its parent constraint, like suddenly the physbone responding to its collider with a bugged offset of like +0.8m, not updating properly to moving through its collider, and then, while it has normal-looking inertia walking around, going totally rigid when I try an Action layer dance...

#

This is a clip of the "bugged" mode, with the oddly frozen collider offset (doesn't respond to moving up and down relative to the floor collider, just stays the same amount of deformed by it), and then switching to NON bugged modes (which, now baffle me bcs they DO work correctly).

#

The Sources that are fine on the parent constraint, are fine, and really very similar in type to the new ones I just added that have this bugged behavior. I can't tell what I've done that's different at all, so I was hoping someone else had run across this kind of issue...

vague girder
#

is IsAnimated enabled on the physbone, considering you're technically "animating" the position of it by changing constraint source weights?

#

@light remnant

light remnant
#

Yes. It wouldn’t be able to move into the poses you see the rest of the avatar copy, otherwise.

#

(the rest of the avatar is going into a mode where it constrains itself to the physbone “clone” of it.)

#

Yeah like, my setup is pretty strange, but this “invisible, phys bone enabled clone of my avatar” should actually be really straightforward… that’s why I’m confused that changing a Source on its root/ancestor makes the physbone script bug out in this way.

#

It’s literally just a bunch of regular transforms with no constraints on it or anything, all it does is go into different poses/transform animations. The ONLY thing up with it is that it’s a child of a transform that has a parent constraint w/ five sources; the first two work fine, the last three have this stupid buggy effect on it.

#

One of those first two working Sources is a pretty complicated one, like, a thing constrained to a thing and then to another thing. And it’s totally okay! Those last three nonworking sources are NOT any weirder than that.

#

I mean, I guess they must be, but I can’t see how.

iron oar
#

Howdy I seem to be having a issue with UI Button text mesh pro. It dosent seem to be clickable and tried few diffrent ways to solve it, no luck so far.. Not sure why you cannot click the button in VR but the graph seemed fine and followed a instructional video. The object in the 2nd picture is the one am trying to turn on and off with the UI button included.

near bronze
iron oar
#

everything worked fine in an other map but not this one.

near bronze
#

yeah that's what I mean, that's all good

#

did you intend to leave the "Gate" empty on the udonbehaviour? Looks like it's just disabling itself

iron oar
near bronze
tribal horizon
grizzled jackal
near bronze
grizzled jackal
#

Kek

jolly yarrow
#

Not sure if this is the correct section, but has anyone successfully managed to get VRC running within a VMWare(ESXi) VM? I've seen the docs on the website for Microsofts Hyper-V, and attempted the related thing on ESXi, but no dice.

prime fable
#

Yes, it is possible if your hardware supports GPU Passthrough

light remnant
jolly yarrow
last oar
#

Can I make a VRchat world talk to a firebase server? I am trying to make a bridge simulator with a huge variety of clients, and I really want one of them to be a vrchat world. I know there are workarounds to the external API thing, but I have a few projects that could really kick a lot of ass not having to do a funky work around.

near bronze
uncut idol
#

does the vrchat sdk take into account materials swapped through animations when giving the warnings for disallowed shaders on the android build target

uncut idol
#

things like physbones, contact receivers, and contact senders all have different sizes depending on something which im trying to figure out
a radius of .06 on one avatar can be perfect head size while on another it can be absolutely massive
is there any info on what the actual size is based one?

near bronze
uncut idol
#

i’ve noticed even if both are scaled to 1 it can still happen

near bronze
#

look through allll the parents of the object you're confused about. Somewhere, the scale is weird

uncut idol
#

ah yes i see it its the armature

near bronze
#

It's a good practice to never change the scale of something if it has children. But that rule is broken in world space canvases and avatars

uncut idol
#

if im creating contacts through a script you think its might be safe to just base the radius off that number ?

near bronze
#

don't try to go up in the hierarchy and find a specific transform to base it off of, just use the general lossyscale of the transform you're trying to add

uncut idol
#

only real ways i can think of to get around the weird scaling is either do that
or create an object with the component in the scene then parent it to the avatars bone after so that unity automatically scales it down or up to keep its original scale

#

never heard of lossyscale but ill look into that

#

i guess the way i was creating the objects already made it so the weird scaling doesnt matter

fringe wagon
#

I've seen now a whole bunch of implementations where a bot in twitch chat can relay commands from Twitch directly to osc into VRChat, likely as a command that has some sort of effect on the person's avatar. However, is there something that exists that can just, show and read off the entirety of live Twitch chat on an avatar(/world?) as some sort of prop? In theory it should be possible but I may be missing something

grand sapphire
#

Is there any news on whitelisting any potential new first party unity tools, scripts and features from unity 2022?

#

Other than old version bad outdated new version good, I haven't seen any dev updates talking about possible new tools in 2022 or under the hood changes that make VR chat better with the new engine update

bitter juniper
cinder grotto
polar wagon
#

Because from what I can tell, it doesn't work with BIRP

cinder grotto
# polar wagon How?

It just works. I am a game developer and have used it for many Built-In Pipeline projects

candid owl
#

someone has modified it to run in the built-in render pipeline

polar wagon
cinder grotto
candid owl
cinder grotto
polar wagon
#

So we can use it once we can update our SDKs to 2022 I presume

cinder grotto
#

Yes. Also I bet you could create a shader graph in 2021, export it as HLSL and it'd work in 2019? Untested, just a theory

polar wagon
#

Neat.

#

Are there any obvious pros or cons to using that over, say, amplify?

#

(Other than that it's free)

cinder grotto
#

I've never used Amplify so it's probably best to use Amplify instead if you can afford it

polar wagon
#

I do own it, mostly because Shader Graph wasn't previously supported in VRChat

#

So I suppose I'll stick to it

cinder grotto
#

Yeah so I'd say to stay on Amplify. Shader Graph doesn't provide anything extra, and actually has a few bugs for Built-In that I've encountered

polar wagon
#

Either way, thanks for the tip

candid owl
#

certainly will be nice having a free to download Shader editor that everyone can use

subtle lava
#

I've been using the vrc legacy Combat system for the ragdoll effect. But recently I notice this ragdoll setup cost a huge amount of CPU performance. Is there any functions that I can refer to to disable this setup after I called this? So I can save the performance by disable their combat setup when the player is back to the lobby?

#

I know it's a legacy function and not updated, but it's also the only way to have a ragdoll effect as far as I know, or if there's any alternative way to achieve ragdoll?

visual burrow
#

bro who does curtis think he is vrcCrying

#

😭

zenith bone
#

Forgive my ignorance as I'm not very familiar with Unity outside of having used it for VRChat, and I'm also not a regular C# dev.

I'm looking to implement IVRCSDKBuildRequestedCallback (from here https://creators.vrchat.com/sdk/build-pipeline-callbacks-and-interfaces/) in a world project to do some prebuild processing, and my understanding is that I can do this in a normal C# file instead of one used for U#. But what mechanism tells Unity to run this code? Is there a certain place I need to put it (either in the file structure or referenced in the project) to tell it to run the file?

grizzled jackal
#

If you want your preprocessing to also run when entering play mode you can subscribe to playModeStateChanged.

[InitializeOnLoadMethod]
private static void Initialize()
{
    EditorApplication.playModeStateChanged += OnPlayModeStateChanged;
}
private static void OnPlayModeStateChanged(PlayModeStateChange change)
{
    if (change != PlayModeStateChange.ExitingEditMode) return;

    // Do preprocessing.
}
zenith bone
grizzled jackal
#

Yeah, just create a normal C# script anywhere you want.

zenith bone
grizzled jackal
#

Yup

zenith bone
#

Awesome, thank you ^_^

grizzled jackal
#

Np! Any time :D

zenith bone
#

I couldn't get OnPlayModeStateChanged() to invoke from EditorApplication.playModeStateChanged += OnPlayModeStateChanged;, but through logging it appears that

private static void Initialize() {...}```
is executing every time I enter play mode anyways, so putting the method call in there directly seems sufficient.
zenith bone
#

Follow up question. I'm trying to pregenerate an array of objects for an UdonSharpBehaviour on build. But since UdonSharpBehaviour can't contain static members, is there any way to set a property via GetComponent<UdonSharpBehaviour>(), or do I just need to commit all the way for creating a custom component and set the property that way? Or is there a simpler method I'm overlooking?

grizzled jackal
zenith bone
#

It's in the same namespace, and in this case I actually just included it in the same file using /*#if !COMPILER_UDONSHARP && UNITY_EDITOR for the C# editor code. But it's a separate class in order to implement IVRCSDKBuildRequestedCallback. The problem is whereas I could normally just assign from one to the other by setting it on the class itself as a static value, Udon throws Static fields are not yet supported on user defined types. The type is VRCUrl.

grizzled jackal
#

Can you show me your code?

zenith bone
#

Lemme get a distilled down version and not the full thing here lol

grizzled jackal
#

ofc lol

zenith bone
#
using UnityEngine;
using VRC.SDKBase;
#if !COMPILER_UDONSHARP && UNITY_EDITOR
using UnityEditor;
using VRC.SDKBase.Editor.BuildPipeline;
#endif

namespace Prismic247.Example {
    #if !COMPILER_UDONSHARP && UNITY_EDITOR
    internal class ScriptPreBuild : IVRCSDKBuildRequestedCallback {
        private static readonly string base16 = "0123456789abcdef";
        private VRCUrl[] urls = new VRCUrl[16];
        public int callbackOrder => 0;
        public bool OnBuildRequested(VRCSDKRequestedBuildType requestedBuildType) {
            Debug.Log("OnBuildRequested");
            return RunChecks();
        }

        [InitializeOnLoadMethod]
        private static void Initialize() {
            Debug.Log("Initialize PreBuild");
            new ScriptPreBuild().RunChecks();
        }

        public bool RunChecks() {
            for (int i = 0; i < urls.Length; i++) {
                urls[i] = new VRCUrl("https://example.com/" + base16[i]);
            }
            Debug.Log("Generated urls");
            ExampleBehavior.urls = urls;
            return true;
        }
    }
    #endif

    public class ExampleBehavior : UdonSharpBehaviour {
        public static VRCUrl[] urls;

        void Start() {
            Debug.Log(urls);
        }

    }
}```
#

Slimmed down to the essense of it

grizzled jackal
#

You uh

#

Can't declare static variables like that in an U# behaviour

zenith bone
#

I'm aware

#

Lol

grizzled jackal
#

Sorry, I missed that. What is the reason you want your VRCUrl[] to be static?

#

All you want to do is populate it on build right?

zenith bone
#

All good, I very much appreciate your help. Since URLs cant be generated at runtime, I'm trying to do them at build time, so I dont have a massive list of them splayed out in the code. Also eventually considering making a package that allows for multiple lists to be generated for a different url dynamically.

zenith bone
#

But since I can't set it on a static, and I can't (as far as I tried) pass it in via an inspector property on an UdonSharpBehavior, I'm trying to figure out what the best course is here

near bronze
#

you can definitely use an editor script to set properties on udonsharpbehaviours. You just need to set them dirty and make sure all the properties are copied over. I can't recall the exact details to do that right now

zenith bone
grizzled jackal
#

iirc you need to use SerializedObject

#

uhhhh something like this:

public class MyEditor : Editor
{
    private SerializedProperty urlProperty;

    public void MyBuildMethod()
    {
        // Get an UdonSharpBehaviour reference to the script you want to modify and then get it as a serialized object.
        SerializedObject mySerializedScript = new SerializedObject(YourBehaviourInstance);

        urlProperty = mySerializedScript.FindProperty("urls");
        urlProperty.GetArrayElementAtIndex(index).objectReferenceValue = TheUrlToAssign;

        mySerializedScript.ApplyModifiedProperties();
    }
}
#

Urls aren't reference types but whatever

#

xd

zenith bone
#

Was about to say, your example was perfect and gets me about 90% of the way there, but that last step is erroring XD

#

I highly doubt there's a VRCUrlReferenceValue lol, so I need to figure out this part now it seems

grizzled jackal
zenith bone
#

Straight on the behavior, no serialization?

grizzled jackal
#

yea

zenith bone
#

😮

#

Can I inquire how you're getting the behavior?

#

Doesn't seem to work for my method

grizzled jackal
#

For my test I was just casting the Inspector target to the class

#

since I put it in OnInspectorGUI

#

But it shouldn't matter where you get the UdonSharpBehaviour reference from

#

OHHHH

zenith bone
#

lol, hadn't seen that bot before

grizzled jackal
# zenith bone

You declared the iteration variable as UdonSharpBehaviour

#

Which doesn't contain your field

zenith bone
#

Right

#

Wait...

grizzled jackal
#

kek

zenith bone
#

What do you know...

#

Seems I was doing a dumb 😅

grizzled jackal
#

Happens to us all :p

zenith bone
#

Okay, just wanted to make sure it was truly all good. There persisted a race condition that was solved by bringing OnPlayModeStateChanged back in, since its callback is triggered at the right time. Seems to be working reliably now 🙂 Thank you very much KitKat and Phasedragon!

dawn creek
regal forum
# zenith bone

I thought I was smart when I was learning game design but when I look at this it’s a whole different level of smart

grizzled jackal
regal forum
#

That’s a lot of big words

grand sapphire
#

I'ma be honest If amd can fix their awful VR perf driver level framegen would be a game changer for vr

crystal oxide
#

Anyone with a bit of insight on the OSCQuery lib and why you must set oscTypeString? Just setting oscType to string seems to work, even if my OSC application listens for string, int, float and bool so currently VRChat doesn't seem to respect this parameter anyway? There doesn't seem to be possible to add multiple types either.

{"DESCRIPTION":"root node","FULL_PATH":"/","ACCESS":0,"CONTENTS":{"avatar":{"DESCRIPTION":"Listening for dynamic avatar mapping","FULL_PATH":"/avatar","ACCESS":2,"TYPE":"s"}}}

Even if it seems to work right now with all datatypes, if VRChat starts respecting the data type parameter, then my application is going to stop working 🤷‍♀️

grizzled jackal
#

I need to make sure every VRCStation in the scene has one StationNotifier behaviour.
The method AssignNotifierToStations is called from EditorApplication.playModeStateChanged.

[RunOnBuild]
[MenuItem("KitKat/RunOnBuild")]
private static void AssignNotifierToStations()
{
    VRCStation[] stations = UnityEditorExtensions.FindObjectsOfTypeIncludeDisabled<VRCStation>();
    foreach (VRCStation station in stations)
    {
        foreach (StationNotifier notifier in station.GetComponents<StationNotifier>())
        {
            if (!notifier) continue;
            DestroyImmediate(notifier);
        }
        UdonSharpComponentExtensions.AddUdonSharpComponent<StationNotifier>(station.gameObject);
    }
}

It correctly assigns the UdonBehaviour to the station, but only if I'm currently inspecting the object with the station when entering play mode.
If I'm not inspecting the object with the station when entering play mode it adds a single instance of the StationNotifier behaviour but it adds one more Client Sim Udon Helper than there are StationNotifiers.
When exiting play mode again, it shows two StationNotifier components on the object.

#

I suspect this is because it doesn't have time to realize the previous StationNotifier was removed.

#

Essentially what I'm asking for is how I can reproduce whatever is making it work when I'm actively inspecting the object.

grizzled jackal
#

Solution, use the correct method to destroy the UdonSharpBehaviour component.
UdonSharpEditorUtility.DestroyImmediate()

night birch
grizzled jackal
zenith bone
night birch
#

OHH i see that makes a lot more sense

#

thought about it too hard

velvet ermine
velvet ermine
#

Even more scummy unity execs doing this days before the shitstorm

unreal orchid
warm niche
#

who wanted to charge 1$ PER BULLET in Battlefield 3

#

back in 2011

#

i dunno if it was for the campaign or multiplayer
but both are equally terrible

grand sapphire
#

20 cents is more than fair they aren't charging a percentage and 20 cents is the max they charge

#

Also it's not per install it's per platform copy

#

Basicly steam deck and PC are somehow treated seperately

#

I'm usually against this stuff but the engine is still free to use and it doesn't seem to be affecting free games

#

Now if a dev uses this as an excuse to raise the price more than 20 cents we should blame the dev

#

I don't think this is going to effect vrc either since they haven't released a public statement they either don't care about informing the community or they aren't being impacted by it

#

If unity can give me more tools to use and optimize the engine better I will happily pay an extra 20 cents per game I buy

grizzled jackal
candid owl
warm niche
#

not only the retroactive change, but the whole idea of install fees is stupid

candid owl
#

yes because let's go have how much we're charging you be completely uncapped from how much revenue you make

warm niche
#

even if they change their mind now, they lost devs trust, its too late

candid owl
#

yes they have killed themselves as a business

grand sapphire
#

Can they even legally charge for something that has happened before they made a policy change?

warm niche
#

apparently its not illegal but I know for sure people will do class actions against unity

#

and I hope they will win

grand sapphire
#

Shouldn't this fall under misleading or aggressive sales tactics?

#

Just like you can't wash someone's car without them knowing and then charge them for it shouldn't it fall under the same category?

warm niche
#

Pretty sure Unity is GDPR compliant, and devs have the right to protect users' PII, so this installation tracking would go against GDPR guidelines and could result in serious consequences. Violating GDPR can lead to significant fines and damage to a company's reputation, not to mention legal consequences

grand sapphire
#

Btw I'm not seeing anything that says developers are being charged for previous sales what's this retroactive stuff about?

#

If it's for future sales of games that are already on the market just raise your price by 20 cents

#

Nobody cares about 20 cents it's when the game raises by 5 to 10$ we have an issue

warm niche
#

its 2 different things, the counter will start after January, but fees will be applied to games released before, so yes its retroactive

grand sapphire
#

How are they even going to measure older games? Do they even have installation tracking in older versions of unity?

warm niche
#

that's the whole issue of this new, unity pretend to have an "accurate" method, but nobody trust it x)

#

its funny how they have the accurate method but also do not share how it works lmao

grand sapphire
#

Honestly due to Eula I and licence agreements I find it difficult to believe this will hit games on previous versions of the unity engine and games

warm niche
#

they removed this info from their tos

grand sapphire
#

If a company doesn't tell you upfront they are going to charge you I don't think they can it would have to be for future sales if I'm correct

candid owl
#

Folks who work for unity mentioned they have no capability to actually detect the stuff properly

grand sapphire
#

Honestly I think that's why the per device fee exists apparently u get charged per installed computer

#

They probly just don't have the ability to measure per account

warm niche
#

even this method is easy to bypass

candid owl
#

Like changing proton versions is enough to get a steam deck to count as multiple installs

grand sapphire
#

Oh it can definitely lead to some bad actors let's say a rival company goes out and buys a ton of crappy laptops even tho the game can't run properly it installs runs and counts towards the charge

warm niche
#

they should have learned that even Microsoft failed to control windows installations per devices since 1990

candid owl
grand sapphire
#

That's true as well

#

Unless there's some way it detects it's running in a vm environment which is plausable

#

But there's still a ton of cheap crappy methods that can be abused

warm niche
#

btw everyone seems to agree that unreal engine have a good royalties fee, why unity don't use the same method ?

grand sapphire
#

I'd rather pay 20cents than 5%

#

And 20 cents is the high end

#

I agree with unity handling prices bc it's a flat fee but their methods are bad

warm niche
#

idk but I was reading the unity forum which is currently in fire and everyone mentioning that UE princing method is better

candid owl
#

5% is easier to budget for than the install fees

grand sapphire
#

But let's say a bad actor like EA gets pissed at a tiny developer they spend 2 million on shitty PCs and laptops at 50$ a pop they could severely hurt someone by costing them 180000$

#

There's to many ways for this to be abused

#

They need to charge per account activation

#

Not per device install

#

Also unity said the platform holder like microsoft would be charged for subscription installs like gamepass xD good luck sending that bill to microsoft

#

If anyone will go after unity it will be when they try that

sterile wave
#

I know tupper said it its fine but its kinda spooky for vrchat if you think about it, I guess servers already cost a bunch of money to run per user regardless if they pay or not already but an extra 20 cents per user doesn't sound insignificant when most users aren't paying at all

candid owl
#

Vrchat would probably qualify for the one cent per install for being a Enterprise customer

sterile wave
#

thats true

small ingot
#

Also, only new installs after the activation date (1/1/24) have to be paid for

#

Previous installs count against the threshold to have to start paying, but they don't need to be paid for

candid owl
celest epoch
#

This stuff is clearly aimed at the miHoyo verse apps and Unity wanting it's share of the cake of those gachas that are getting miHoyo some serious money
Genshin Impact is like 140 million installs

median tendon
#

I understand that, but the best way to get a piece of the pie is to do what epic games does with unreal engine

#

with 5% royalties per purchase after 1m $.

candid owl
#

a flat Revenue split is a lot easier to budget for then essentially random charging with the install fees

median tendon
#

yeah

#

Doing what Epic Games does would actually benefit them MORE 😅.

#

Because let's face it, 5% of $1m is ~50k$, (and more per m $)

#

They could even go as far as say this for example:

  • Everyone gets a flat 5% royalty fee after 1m$ per year of profits (with unity splash).
  • Everyone gets a flat 10% royalty fee after 2m$ per year of profits (without unity splash).

End: Unity Pro and Enterprise make it all start out as Free up until 1m$/2m$ depending on what the person selected as the royalty fee amount that they want (if they want the splash or not).

#

Either way they would get money 😅.

light remnant
#

Is there any way to parent constrain animated phys bones without getting jitter? I have a p complicated rig I only just realized has unacceptable shaking when I add phys bones… right now my phys bones are outside my Armature and moved around to various sources by parent constraints. Would it help to move them inside my Armature so they’re “directly parented” to me by default, and then parent constrain them to sources outside my Armature from there?

vague girder
#

you could also try using isAnimated, but that might already be needed

light remnant
#

I know those ones, thank you (genuine). Trying to get around actually implementing it lol. But I’ll try it and report back.

vague girder
#

a friend ran into a similar issue and I can't quite remember what the fix was

light remnant
#

So like, I have a ROOT.001 transform that actually has the constraint. Then it has some children, one of its children has the phys bone script on it. So the phys bone is “downstream” of a constraint, or, a child of a transform that has a constraint.

late abyss
#

Random question since I've had a lot of problems with avatar audio in particular
Is it better to toggle audio source component or the gameobject with the audio source in it? I used to do the latter then moved to doing the former but now I'm having weird crackly and misplaced audio issues after a while and it's hard to replicate because it doesnt happen all the time

cinder grotto
warm niche
polar wagon
warm niche
polar wagon
#

Or is your point just that there is no difference between disabling the component vs the gameobject?

warm niche
#

yes I mean that there is no difference between disabling the audio source component or the whole gameobject if there is nothing else than an audiosource into it

polar wagon
#

I would like some confirmation (if anybody else has experience) of whether enabled but non-playing (finished) audio sources count towards the hard cap (3) or not

warm niche
polar wagon
warm niche
#

I am trying to find this info from the docs

polar wagon
#

AFAIK it's not documented. Just like the Hard cap of 6 for stations

warm niche
#

you can maybe test and see if it makes any differences

polar wagon
#

I can test, yeah. I might later. Just checking if there was anybody else active here with knowledge of it before I waste my time

warm niche
#

I think they are checking for AudioSource.isPlaying, but its just a guess

urban ravine
#

yeeeeeesssss 🥹

#

Well, it is better

sweet ibex
#

So this doesn't work:

public class SomeManager : UdonSharpBehaviour
    {
        public static SomeManager Instance;

void Start()
        {
            Instance = this;
        }
    }

...

public class SomeOtherScript : UdonSharpBehaviour
    {
        public void GetManager()
        {
            SomeManager manager = SomeManager.Instance;
        }
    }

But is there another way to create singletons? or am I doing something wrong?

near bronze
sweet ibex
#

Awesome. @grizzled jackal dropped me a reference to VRRefAssist which will probably meet my needs. Any idea if static variables may work in the future? or is it too much of a risk?

near bronze
grizzled jackal
#

That would be great

sweet ibex
#

THat's great!

sweet ibex
#

Well, maybe not. it's working now :/

sweet ibex
#

ok seriously

#

Assets/Scripts/VRPG/Modules/BNS Vampire/VRPGManagerBNS.cs(18,22): U# does not yet support hiding base fields What is the point of inheritance at this point if you can't do half the things related to inheritance

#

Sorry, a little miffed. Trying to improve current systems and I am getting stuck because of stuff like this

sweet ibex
#

just wasted like 4 hours trying to implement this only to ifnd out my whole strategy won't work

#

Is there a way to stop Udon from recompiling temporarily?

#

please