SDK Bug & Feature Requests

Please check out the following rules and use the provided template when posting a bug report! Off-topic posts will be deleted.http://bit.ly/vrchat-bug-reports
Race condition in ContactManager often crashes contacts in the editor
If a contact is enabled in the editor play mode while contacts are being processed in their background thread, the addition of that contact crashes with the following stack trace, and fails to process from that point on. This issue is new in VRCSDK 3.7.3 and still exists in 3.7.4. InvalidOperationException: The previously scheduled job ContactManager:UpdateReceivers writes to the Unity.Collections.NativeArray`1[VRC.Dynamics.ContactManager+ReceiverData] UpdateReceivers.receivers. You must call JobHandle.Complete() on the job ContactManager:UpdateReceivers, before you can read from the Unity.Collections.NativeArray`1[VRC.Dynamics.ContactManager+ReceiverData] safely. Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle.CheckReadAndThrowNoEarlyOut (Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle handle) (at <cb81df0c49c643b1a04d9fc6ccca2433>:0) Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle.CheckReadAndThrow (Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle handle) (at <cb81df0c49c643b1a04d9fc6ccca2433>:0) Unity.Collections.NativeArray`1[T].CheckElementReadAccess (System.Int32 index) (at <cb81df0c49c643b1a04d9fc6ccca2433>:0) Unity.Collections.NativeArray`1[T].get_Item (System.Int32 index) (at <cb81df0c49c643b1a04d9fc6ccca2433>:0) VRC.Dynamics.ContactManager.FindAvailableId () (at <18f19c27e14b4ae6a2e430e7e9917e85>:0) VRC.Dynamics.ContactManager.AddContact (VRC.Dynamics.ContactBase contact) (at <18f19c27e14b4ae6a2e430e7e9917e85>:0) VRC.Dynamics.ContactBase.Start () (at <18f19c27e14b4ae6a2e430e7e9917e85>:0) VRC.Dynamics.ContactReceiver.Start () (at <18f19c27e14b4ae6a2e430e7e9917e85>:0) And then every frame after that (because the contact was not added to the manager properly): IndexOutOfRangeException: Index 65535 is out of range of '4096' Length. Unity.Collections.NativeArray`1[T].FailOutOfRangeError (System.Int32 index) (at <cb81df0c49c643b1a04d9fc6ccca2433>:0) Unity.Collections.NativeArray`1[T].CheckElementReadAccess (System.Int32 index) (at <cb81df0c49c643b1a04d9fc6ccca2433>:0) Unity.Collections.NativeArray`1[T].get_Item (System.Int32 index) (at <cb81df0c49c643b1a04d9fc6ccca2433>:0) VRC.Dynamics.ContactReceiver.UpdateContact () (at <18f19c27e14b4ae6a2e430e7e9917e85>:0) VRC.Dynamics.ContactManager.HandleDynamicsFrameComplete () (at <18f19c27e14b4ae6a2e430e7e9917e85>:0) VRC.Dynamics.VRCAvatarDynamicsScheduler.FinalizeJob (System.Boolean force) (at <18f19c27e14b4ae6a2e430e7e9917e85>:0) VRC.Dynamics.VRCAvatarDynamicsScheduler.OnCameraPreCull (UnityEngine.Camera cam) (at <18f19c27e14b4ae6a2e430e7e9917e85>:0) UnityEngine.Camera.FireOnPreCull (UnityEngine.Camera cam) (at <cb81df0c49c643b1a04d9fc6ccca2433>:0)
3
·

available in future release

Freezing constraints on bones with parents that have -1 as their X scale to the world
SDK Version: 3.7.2 Description of the bug: So I noticed a problem while making a clone of my avatar with vrc constraints; when you try to freeze bones with vrc constraints of any type (that affects rotation) to the world if the scale of the parent is set to -1 on the X axis, it seems like the constraint is accounting for the parent's scale incorrectly and in the example explained below, leads to it setting the Y and Z axes to their respective additive inverse, when they should be unchanged, which results in weird rotations. (see first photo) This seems to only affect rotations, and naturally, the further the rotation of the bone is from 0,0,0 the more "off" the bone ends up being, so for the sake of consistency, I'll be attaching the constraints to the (left lower arm) of the models, it is worth noting that I have a constraint on all the bones however. Steps to reproduce: Import any humanoid model into the scene. Duplicate said model and parent it to Model 1 (see second picture). Set the scale of Model 2 to -1 on the X axis. Attach any vrc constraint (I recommend a vrc parent constraint) on the left lower arm bone in Model 2 and set the source to the corresponding bone of Model 1 (left lower arm, see third picture), and now press Activate on the constraint. Enter play mode, and rotate Model 1's left lower arm bone to any rotation. Activate the "Freeze To World" feature on the constraint and the left lower arm of Model 2 should snap to another rotation and the Y and Z axes should be changed to their negative value.
2
·

available in future release

VRC Constraints drift over time when far away from world origin and seated
Been running into an interesting bug relating to vrc constraints. I will be using this avatar as an example: avtr_c32b6dbf-e8f8-46a4-a338-4828d68e307e It uses VRC Constraints for twist bones in many places. For some reason the lower arm twist bones start to drift out of alignment over time in some circumstances. They have only one axis (Y) frozen, but somehow they slowly drift more and more along the other two axis. Once the bug starts, they seem to very very slowly "orbit" around their pivot over time. The furthest I've seen them go is completely backwards (wrist pointing towards elbows), though usually the effect starts quite subtle. The constraint still appears to function otherwise perfectly, the weight slider even offsets it towards the resting position (though with the bugged rotation it is still in the wrong place). The strangest part is that it only seems to affect these two constraints on the lower arms, despite there being many more very similar constraints all over the avatar. I suspect it has something to do with gimbal lock and floating point precision. Resetting the avatar or doing anything that reloads the avatar fixes it instantly, until the next time it occurs. Repro: Wear this avatar avtr_c32b6dbf-e8f8-46a4-a338-4828d68e307e Go to this world wrld_66431182-f46c-45c9-9c8e-ba7f47c10177 Sit in any chair on the vehicle. Wiggle / move around in chair, like your having a convo, or practically anything to move the avatar After a bit, check to see if the lower arm joints no longer line up at the elbow. If arms not separated, continue step 4.
5
·

available in future release

Load More