Hi there,
I’m working on a project in which I would like to tell a story based on a storyline.
For this I’ve done some research and also have some references as a guideline.
But to get things going I’d like some advice on how to handle things here.
To get started this is wat I’m after:
A visual storyline on the side or bottom
A start and an end
Keypoints in between on specific positions representing (main) chapters
A predefined path set in blender/3dsMax
Navigating by scrolling, which moves the camera forward/backward on the timeline
When we start scrolling from a chapter point, the navigation starts and smoothly goes to the next chapterpoint with an ease motion. (Preferably the option to turn this on/off)
Optional:
Add the chapter point dynamically to the url (?section=11) and update this depending on the position/chapter we’re at in the storyline.
Here are a few interesting references, in which this was used: Blue Marine Foundation
Interesting here is how the WebGL is blended with the html.
Any advice or guidance to get started on this would be very much appreciated!
We’ve previously been able to get this basically working in threejs, but I’m looking into the option to be able to use this in babylon as we’re looking into making the switch.
I am not sure there is anything particular and your 3 experience should migrate nicely. Your mouse wheel event will have to be handled on your side to launch your camera animations.
@carolhmj did an amazing camera job when she started, and I bet she could provide the ref back ?
Something worth considering with scroll navigation is UX can vary quite a lot depending on responsive width and height, and whether the user is using a mouse wheel with smooth scroll, stepped scroll or a trackpad or touch screen (which are all different as well).
I’ve worked on two such projects which ultimately, after extensive testing, were converted to prev/next click to traverse forward/backward because scroll behaviours simply vary too much between devices and users to provide a consistent user experience.
Good point, we noticed the same.
But as I’m not a big fan of giving users completely free movement (also I hate scrolling on almost all online content) I would like to implement a listener to see if a scroll is initiated, and in which direction.
And then start a predefined motion, towards the next keypoint.
This would cause a way more uniform interaction on different devices.
As we noticed this went quite smoothly on mac/touch devices, but on windows with the rough scroll-wheel it wasn’t very smooth.
I’ve been also wanting to know how to create at least a web-Scroll-XR experience like in the babylon homepage: Babylon.js Product Page Demo
but using Unity Babylon tool kit exporter.
@MackeyK24 I am willing to pitch in for a tutorial for this, I think we all should vote for a tutorial for this. It will be very much appreciated.
The way I always set it up was full page “frames” where the hotspots but had no content in them and they where hidden by an “action div” that was where all the content was really being rendered. Then the scrolling was always a fixed amount because the page was always in the backend a set number of fixed height elements depending on the clients rendering size. Worked really well for a few projects.
Also you can filter the returned results and interpolate it different ways to smooth the results, usually using the raw scroll value was not the best practice.
Indeed, I’ve also been looking into locomotive scroll, have seen nice things from that one!
These solutions all seem to be based on a container with multiple vh which scrolls in the bg.
However, we’re looking into an option to purely scroll in our 3D canvas, or to use the scroll to ‘drag’ yourself forward or backward… or set a motion into effect which starts you on a predefined camera track.
Any examples on that are also welcome, always interested in how others handle this approach, as we managed to export our camera animations over a predefined path, only the adjusting, finetuning & baking process could use an improvement. As this often breaks the parametric setup.