Hello and welcome to the BJS community @Rez!
Perhaps I’m a bit biased, but I think you made the right choice and for the right reasons
Based on the list of elements you’re looking to include in your website, I threw down a few notes on things you might need to consider or how you might think about approaching them:
- The Babylon.js GUI editor is probably your fastest way to define all of the basic elements for your site’s UI if you’re planning on making the entire site experience a Scene. This is cool but has the downside of making your site effectively invisible to search engines and screen readers. Regardless, the BJS GUI editor is worth using as a way of quickly defining your GUI layout, allowing you to manage and version it as a JSON file
- The Animation Curve Editor is what I would use to define and capture the specific animations as data, which can then be applied to arbitrary elements in a scene
- Make sure you export your blender model as GLB or GLTF for best compatibility chances. Also make sure to check the appropriate export options (see link)
- Your image gallery could be done using the 3D GUI system (which would work in conjunction with a 2D GUI as well potentially), as IIRC there are some built-in controls and behaviors that might get you what you want
- Keep in mind that audio is done via browser audio API’s and is sometimes known to be a bit… finicky, so make sure you’re properly managing the audio resources in code (an Audio engine re-write is apparently in the works, if I’m understanding the teams’ plans correctly).
- For page transitions and the like, if you’re navigating to different HTML pages, you’ll probably need to use CSS animations and/or some client scripting to transition since the engine will be reset when the page is cleared and reloaded
My book, “Going the Distance with Babylon.js” is aimed at folks like yourself, and while you might find some parts of it a bit remedial, I think it could be very useful to you in implementing what looks to be an incredibly neat portfolio experience!
HTH
ed: my response was already getting long enough without addressing your individual questions but a couple quick hits are
- Yes BJS is a good choice
- See above for recco on book
- TS is optional. Since you’re already familiar with JS, I’d start with that until/unless you start feeling like you need your programming language to impose a bit more structure on your code
- There is layering and render grouping
- I would use GLTF/GLB over babylon format
- see above note on ACE
- there are mesh optimizers available in BJS, but they’re runtime only IIRC