I’m wondering if the following is possible-- package different types of content within the JSON wrapper of a stream? Potential data types below; 1/2 are natively supported. Numbers 3/4 are possible, I think* but looking for some pointers. We may actually develop a Houdini Speckle connector to pull off item 3.
- Objects from Rhino
- Objects from Revit
- GLTF file (not sure how we would “inject” this in stream
- Additional ‘meta’ content related to objects in 1,2, and 3
Any input is especially appreciated. I’ve attached a quick sketch of what we’re trying to do with data.
Good morning @markcichy! It really depends what you’re trying to do, but in short, it’s 3 and 4 are possible.
If in the land of .NET, additional meta content can always be added in the SpeckleObject’s
properties dictionary. It’s the same place I would store any other custom blobs. For example, the brep type already stores the rhino representation, and uses it for Rhino/Grasshopper bound exchanges as part of the schema itself.
If your usecase requires creating custom objects, I would have a look at how to define your own object model. Nevertheless, if the usecase is to make existing objects readable in other software (Houdini), then you probably just need a subset of that, namely adding a converter to an existing speckle object model, with
ToNative() methods that do the conversions to and from that software.
If goig the route of embedding blobs in the streams, main limitation is probs file size. You could also think about having additional routines in your converters that store the blobs in s3 buckets and then retrieve them…
Thanks @teocomi ~ max size of items would probably not exceed 50MB~ give or take. I’ve already increased allowable Stream size to 150MB. Have not had any performance issues when maxing this. There seems to be a maximum limitation on Stream elements of about 10-12k. Where, regardless of size, the server tapers off rapidly. We’ve overcome this by splitting streams…
This sounds logical, @dimitrie ill def look into this and whether it makes sense to pack the gltf into the Stream OR if we create a native Houdini via their SDK. It appears they too use C++
This screams a bit for a C++ SpeckleCore. I haven’t written C++ since high school, like that’s… 15 years ago
That’s two I’ve come across in the past few weeks now … UE/Houdini. It seems that many (save for Unity) of the apps within the VR realm are using C++ as opposed to C#
That’s a bit strange - arrays are not capped in mongo. The only cap is the 16mb per document limit.
Consequently, if you have single objects > 16mb, then speckle in its current 1.0 version will not help, though this is something i hope to eliminate in 2.0 (we haven’t written a line of code for 2.0, mind you!). That’s usually meshes of 300k+ vertices and corresponding faces.
Not to get any hopes up, but it’s logged
Yes, that makes sense … the example I am referring to had 2mil+ meshes/verts.
Was for an multi-terminal airport/multi-modal network (massive areas)
Wowzers. Can’t those meshes be simplified a wee bit? (just fishing for a screenshot, so you can ignore me )
I would love to share, but images protected by Client driven NDA-- public project = tight restrictions.
Maybe you need the Omniverse?