Create a 3D product landing page with ThreeJS and React
richardhaines.dev
richardhaines.dev
- center the axis of rotation so I can zoom in and out properly.
- use lower resolution textures and geometry for faster loading
- start with an image, then allow a switch to 3D model
- provide on screen camera controls. A shocking number of people never infer you can interact with the model.
- add labels to the model the user can click on to see features (eg fancy laces, waterproof design, etc)
To see a production version of a 3d product page check out Boom using Sketchfab: https://boomsupersonic.com/xb-1/model
Good example is thingverse [i]. The bandwidth they consume is significantly reduced with this.
This is over-complicating an already very complicated execution.
Sometimes it's cool to just see what can be done with a technology and it's great that this person documented so others could learn from it or give useful feedback on improving implementation.
For more pure hacker forums, you'd be looking, what, Hackaday? Is that still relevant?
I agree it's an interesting bit of tech, but I also agree that it's not a method I'd use or suggest to showcase a real product in most cases.
I’ll also say that I’ve spent the last few months of my life working on a web project that would satisfy the most anti-JS zealots around here, but with a DX I prefer (all built in TypeScript, with Preact and CSS-in-JS).
This is possible because I selected, contributed to, and developed from scratch tooling to improve the product of the original tooling (Hyperscript, React, styled-components etc).
But I’ve poured so much of my heart into the project that I’m pretty sure I won’t bother sharing it here, even though I’m quite proud of the tech aspects, because I can already anticipate being inundated with criticism for even preferring that DX, even though it has no impact on anyone but me (or anyone who elects to use the tools I’ve used or the many I plan to open source after launch).
It’s a pretty disappointing feeling nonetheless. HN has routinely shown me that there are people who would rather I share their priorities than have my own, even if it doesn’t affect anyone else in any way.
I know that doing stuff because you can is cool, but what if we also focus on making it work in ways that aren't annoying to use?
Avoid experiences like this like the plague.
Update: It has loaded. Not worth it. Great concept, but crappy reality.
Eg. 1. Load the text 2. Load a placeholder image 3. 30s later, when the 3d model loaded, swap it with the image
Also it crashed my MacBook (black screen of death, short fan burst and then turned off the laptop). Reproducible on both Mac and Windows with latest chromium on a Radeon 5300M.
Three JS is cool, and probably has more features now than Flash did back in 2010. But an article like this makes it clear that 3D motion graphics for the web are going to be the domain of software developers and not designers or artists.
Is there a GUI-based authoring tool for three JS?
https://solvespace.com/index.pl
Some examples embedded in a web page here: https://m-labs.hk/software/solvespace/
Just to name a few dependencies: Chakra-ui, React, Threejs, Three-js-fiber, MDX, all with their own syntax and methodologies, but somehow combined in a single file, all for showing a 3D sphere that would requier fewer lines of code if it was done natively in WebGL.
46 requests
70.30 MB
Finish: 41.33 s (fiber) / 6.15 min (in Firefox Regular 3G emulator but I quit when the bar was 60%, so is like 10 minutes)
I get that those 3D sneakers have good textures, several polygons and all that, but it can be lighter than 70MB right?
Also an UX improvement can be apply progressive load, show the text instantly and put a spinner in the shoes, now I got a long progress bar to see all the elements of the page.
Nice to play with the shoes!