Presentation constructor based on web-viewer

Hi there!
We continue to push the maximum functionality out of the web-viewer :muscle: The next idea is… what if we can use it as an embeddable and interactive presentation tool?

There are 3 basic function that can be easily implemented:

  1. Layers - loading objects from other branches of the stream
  2. Animations - objects sent as a list of objects with corresponding numerical value assigned to each (MeshX: 1, MeshY: 2, etc)
  3. Simple counter of the Named Views - basically buttons switching between Named Views one by one.

By now, you can even capture the camera views directly in the web-viewer and save each in the list, along with visibility of the layers, some comments and maybe other features.

Currently we implemented a small demo (gif below) with extra panel to view the presentation (grey buttons), edit (blue) and save/delete changes (red).


Let us know what do you think! What are the features you would like to add? What are better ways to implement the ones described here?
Tagging possibly interested @HD_STEEL and @RSainmaa

P.S. animation example was not included in the demo, so here we go:


Hello @Kateryna

That is a powerful way of making presentations.

What I would add is definitely some way of adding comments (text labels with arrows or similar) to the slides.


I would also make the slides visible below or on some of the sides of the web-viewer

Also, I am not sure, can some items in the branch be hidden or can you change their transparency?

Finally, it would be very handy if the presentation can be downloaded ( PDF or JPEG’s maybe) at the end.


Hey @Kateryna this already looks pretty neat!

What I’d specifically looking be looking for is more of a 4D phasing presentation.
This would require to show/hide objects or layers for specific slides and maybe even changing the coloring of the objects to show ‘active’ or ‘inactive’ objects in different colors. It could also just change the coloring based on the difference of object visibility compared to the previous slide.

And of course all this information would be nice to generate in Grasshopper for example instead of clicking away in a web interface.

Also I didn’t really catch how the animations are pushed in? A list of meshes with corresponding values, the animation is somehow tweened or interpolated from those meshes and their sequence in a specific timeframe?

1 Like

Thank you for the inputs @HD_STEEL and @RSainmaa ! Very insightful!

The comment feature is on the roadmap and will make its way in in the next months :wink:
Some navigation for the slides would indeed be useful! Also, there is a possibility to differentiate which panels are displayed depending whether the presentation is in progress or ready for display. For example, those red/blue panels are only useful for editing, but for display it’s better to show navigation only.
Regarding filtering and hiding specific objects, there are some magic features coming soon from @cristi :mage:

Indeed it started with Grasshopper! :cricket: We just finished the summary of the implementation in GH, it is fairly easy to compose the presentation there. But there are several issues with it.
1 - You need a Rhino license:)
2 - GH seems to be having hard time with lots of objects loaded at the same time, and on the laptops like mine it keeps crashing.
3 - You can still do it, and even add much more advanced object properties to filter the object layers later (rather than creating layers from entire branches) but frontend needs to be adapted to each property name you created, and their hierarchy. So, bringing it all into web, can be a way to standardize the presentation format based on existing Speckle object structure.

Same article :upside_down_face: Basically each step of movement is saved as a separate mesh, e.g. Mesh “shadows for 9am” has an added property “9”, Mesh “shadows for 10am” has a property “10” etc. When the frontend detects this extra property, instead of showing all meshes at once, it is showing them 1-by-1.


Hi @Kateryna

One thing more. It is probably a matter of taste, but I would make the center of rotation in the viewer to be always where you click with your mouse (similar to BIMVision). Also maybe add the UCS or something else for orientation.

1 Like

If i understand correctly, this web viewer is only built to currently display objects in rhino.

and second question:
is there a limit on file size and performance? i.e. i have a point cloud that is several hundred mb in size.
Does the computing happen on a cloud server, or are we live streaming from our device and speckle is mirroring what is happening?

1 Like

Hi @Christopher_Hansen!

First of all, let me welcome you to our community! Feel free to Introduce yourself 🙆 to the community!!

@Kateryna will surely be able to give you more details if I miss something, but here’s my attempt :slight_smile:

The presentation viewer isn’t built for a specific target application, but rather for a specific data structure in your stream (please correct me if I’m wrong Kat :raised_hands:t3: ). There is no limitation for it to work on data from other connectors (such as Revit data).

As for the size/performance, we’ve recently released a new version of the viewer that should bring some big performance improvements (but it still hasn’t made its way to the public server yet :crossed_fingers:t3:). Obviously, performance will also depend on the amount of data you want to load, the speed of your internet connection and the device you are trying to load it from.

I haven’t tested the limits of viewer but maybe @cristi can give you some insight on how much is “too much” data. :sweat_smile:

As for your last question, the answer is none of them. Data is processed in GH and sent to speckle “as-is”; with all necessary information for the presentation to work (a set of meshes, and a set of “named slides”). Then the viewer processes that data (geometry and metadata for the presentation) and displays the geometries/camera-views/etc as specified.

So no cloud computing or streaming from a running machine :wink: This means you’re not dependent on an extra part of infrastructure; if the speckle server is running, your presentations will be available :slight_smile:

Hope that answered your doubts! Let us know if you have more!

1 Like

The interactive presentation tool looks great!

And these two features sound really interesting as well! I look forward to test something out and hear more details about it! Would be useful if these features could support a model/data review process (display color based on attributes, templates to automatically apply filters, tagging people, comment status, etc.).


Thanks @AlanRynne ! To sum up, this “presentation functionality” is just an addition to the current web viewer, which displays any geometry that had been sent to Speckle stream from any software🚀 @Christopher_Hansen
The presentation functionality is basically creating a list of dictionaries (1 for each slide) containing information on the camera position, object visibilities, custom comments and extra things that would need some more preparation - like animations. With the new viewer features from @cristi , like filter by attributes (@JdB ), coloring etc., they could be embedded in the slides structure too!


@AlanRynne @Kateryna
This web viewer caught my eye with hopes of this!
ill need to review more speckle documentation, but I’ve been using a blender plugin to visualize a series of point clouds as an animation and have been looking for a platform that could used to present this. The ultimate goal is to get this from blender into unreal engine, so my hope is that using speckle as an intermediary for easy cross platform integration is possible. If its simply a matter of blender to speckle data structure and speckle data structure to UE (or any other software application).