Family Instance coordinates shift/reset when receiving Revit data in Unity (Regression?)

Hi everyone! :waving_hand:

I’m currently working on a bidirectional BIM-VR system using Speckle to sync data between Revit and Unity. I’m facing an issue where Family Instances lose their location data and shift their coordinates when received in Unity.

My Environment:
・ Revit: 2027
・ Unity: 2022.3.62f3
・ Speckle RevitConnector: 3.23.2
・ Speckle Unity Connector: 2.20.0

Steps to Reproduce & The Issue:

  1. Send standard Family Instances (e.g., desks, windows) from Revit to Speckle.
  2. Receive them in Unity via the Speckle Connector.

The Issue:
Right at step 2, the coordinates of the instances are shifted. It seems that these objects are not being recognized as proper instances in Unity. Instead, they are being received purely as geometry/mesh data, dropping their attribute data (including absolute coordinates), which causes them to default to the origin point. Naturally, if I send them back to Revit from Unity, they are placed in the wrong locations.

Past Related Issue:
I found that a very similar bug was reported and seemingly fixed about 3 years ago here:

However, it appears this issue might have regressed or is not supported in the current version.

Context:
My ultimate goal is to update specific parameters and locations of native Revit elements using their applicationId (via Dynamo/API) to strictly avoid creating DirectShapes. However, if the base coordinates are lost the moment they enter Unity, it makes it impossible to calculate the correct delta for location updates.

Questions:

  1. Is this a known regression of the past issue, or a current limitation with how the Unity Connector handles Revit instances?
  2. Are there any workarounds, specific Connector settings, or API best practices to ensure instances retain their exact coordinates and attribute data when received in Unity?

(Note: Due to new user media limits, I have attached the Revit screenshot below, and will add the Unity and Web App screenshots in the replies.)
Any advice or insights would be greatly appreciated! Thanks in advance!


Image 1: Revit - The instance shifted from its original position after a round-trip, caused by the coordinate loss in Unity.

Here is the Unity screenshot:

Image 2: Unity - The Transform values of the received instance (defaulting near the origin). I did not move the object manually.

And here is the Speckle Web App screenshot:


Image 3: Speckle Web App - The raw location data currently stored in the commit.

Hey @tomoki-nozawa,

Unfortunately, since the release of our Next-Gen Connectors (version 3.0.0), we no longer support Unity or Unreal.

That said, the main issue in your workflow is that you are sending data from Revit using a V3 connector (3.23.2) and then receiving it in Unity using a V2 connector (2.20.0). V3 → V2 workflows are not compatible and can lead to various issues, including problems with geometry positioning and coordination.

For your workflow, the best option would be to use the V2 Revit connector so that both the sender and receiver are running on the same generation of connectors. You can download the V2 Revit Legacy connector here:

Hi Nikos,

Thank you so much for the clear explanation and for getting back to me so quickly!

That completely makes sense. I didn’t realize that mixing the V3 Revit connector with the V2 Unity connector would cause these geometry and coordinate mismatches. It is also good to know the current support status for Unity in the V3 updates.

I will download the V2 Revit Legacy connector from the link you provided and downgrade my environment so that both ends are running on the same V2 generation.

I really appreciate your support and for pointing me in the right direction. This solves my issue!

Best regards,

1 Like