New commited models arent rendered in Speckleviewer after updating to newest stable version

Hello everyone,

I am working on a .net project where I have to commit to a stream via code. The project worked initially but stopped working after I updated the version. The problem that I have is that the speckle viewer can not render the objects that I commit to my stream through my C# server. I just get an endless loading screen. I also don’t get visible error messages. When I open the console in the Speckle-Frontend-Viewer I get the error “Uncaught (in promise) TypeError: Cannot read properties of null (reading ‘bufferGeometry’)” and I dont really understand what is causing this or how I could solve this.

I have tested this by getting a specific commit and then just commting this one again and after that my model is broken.
If needed I can of course also provide some code but it’s just weird to me that it worked fine before the update.
This is the my current workflow for testing:

  1. Get specific commit.
  2. Get Base for that commit.
  3. Commit Base.
  4. Commit successful but model cant be rendered in speckle viewer.

I appreciate any help.

can you send one of those bad boys to xyz, so we can have a look as well? we did change a few things in the viewer around multi-material support, etc. - but we haven’t stumbled on issues so far (or maybe they’re unreported)…

1 Like

kinda weird. I removed Speckle.Core from the project and installed Speckle.Objects instead and removed everything from …\AppData\Roaming\Speckle\Kits and now its working again.

Any explanation for this? :o

Hey @mgerhardt ,

I’m afraid we can’t know what’s going on as that’s not a typical setup!
As always, if you could provide us with steps to reproduce the issue we’d be more than happy to investigate :slight_smile:

Hey :slight_smile:

so I’ve tested around quiet a bit with a simple usecase:

  1. Get commit by commitId
  2. Get Base for that commit
  3. commit this one as a new commit

To commit I use this line of code

await Operations.Send(obj, new List<ITransport>() { sendTransport }, false, serializerVersion: SerializerVersion.V2, onErrorAction: handleError);

and in some cases the onErrorAction gets called with a 404 Exception.
I have tested this with different models and it turns out that the new connector sometimes does not add the renderMaterial paramter to some objects. And when the rendermaterial paramater under displayValue is missing, than I can not commit to Speckle.
Objects that have no set material in revit also dont have a renderMaterial after I have pushed them into a stream but the Operations.Send function apperently expects every object to have a renderMaterial.

Thanks @mgerhardt ! I’ve tried to replicate on my end with this code, but it seems to work fine, if you can share some reproducible code we’d be happy to debug it on our end:

using Speckle.Core.Api;
using Speckle.Core.Credentials;
using Speckle.Core.Transports;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Xunit;

namespace SpeckleCoreRandomTest
{
  public class UnitTest1
  {
    [Fact]
    public async Task Test1()
    {
      try
      {
        var account = AccountManager.GetDefaultAccount();
        var commitId = "f43e2f2a6b";
        var streamId = "86b82cef6c";

        var client = new Client(account);
        var transport = new ServerTransport(account, streamId);

        var commit = await client.CommitGet(streamId, commitId);
        var commitObject = await Operations.Receive(commit.referencedObject, transport, disposeTransports: true);
        transport = new ServerTransport(account, streamId);

        var objectId = await Operations.Send(commitObject, new List<ITransport>() { transport }, disposeTransports: true);


        var res = await client.CommitCreate(new CommitCreateInput
        {
          streamId = streamId,
          branchName = "main",
          objectId = commitObject.id,
          message = "Fibber Fibbo",
          sourceApplication = "Tests",
          totalChildrenCount = 100,
        });
        Assert.NotNull(res);
      }
      catch (Exception a)
      {
      }
    }
  }
}

what would be the best way to share a stream with you? My problem is definetly tied to the model because for some parts of the model commiting works just fine but for some it doesnt and I cant seem to find the difference in these certain objects.

You can make it public or add me as a collaborator, as you prefer :slight_smile:

I added you to a new stream “CommitErrorTest”. There you should find two commits with a very simple model. The first one should work with your test and the second one should fail. The difference between the two commits is just one object in the model that you should see right away.