Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Money was never the end goal – mrdoob – threejs creator (twitter.com/mrdoob)
119 points by greatgib on Nov 9, 2024 | hide | past | favorite | 42 comments


If I recall correctly mrdoob used to be (or still is?) employed by Google. I'm sure this is his passion project.

Even the Box2D library is written and maintained by one person as a passion project who happens to also have a successful tech job.


Three.js is (or at least was) what Google pays him to do. Works out great for everyone, IMHO.


Recently I wanted to make a rotating 3D pyramid for illustration but without loading a 3D library. I thought how hard can it be in SVG?

Very.

Backface culling, a lighting model, a little bit of trigonometry, new CSS color model features and much else took more than two minutes. The result does not have true perspective but looks okay-ish.

This experiment and the trifles made me appreciate three.js so much more!

Props to the creator.


Fun fact: three.js has an SVG renderer! https://threejs.org/docs/#examples/en/renderers/SVGRenderer

Maybe you could have created the pyramid in 3D and rendered it ahead of time to SVG, so you could end up with a perfect perspective projection.


I did something similar! Used the `animate` element to move some lines around. A fun project from a few years back: https://github.com/TomasHubelbauer/svg-3d


Did your approach require JS or were you able to do the rotating part completely in CSS and SVG?


Now you are teasing me. I did use javascript because of sins and cosines. I think, now I have something, I need to step up to do it entirely in CSS. Another day will be wasted on that...

The pyramid also has layers and an initial routine where the layers get added, with a carousel made from details/summary elements to describe the layers. Clicking on the layers opens the respective details/summary and the colour changes.

The shading of the pyramid was particularly hard, since that changes as it rotates. I will have to do that in CSS too...


It's possible to have simple animation only in SVG but you can add CSS to have complex ones.


Almost all open source, including some of the most prominent open source projects you can think of, do not make enough revenue to fund the full-time employment of one principal engineer.

Most of them would be grateful for a $12 donation.

Why do I use $12 as a benchmark? If you paid a single open source project $1 a month, you could fund their VPS hosting for year by paying $12.

If you paid $24, you could pay their domain lease and VPS hosting as a single benefactor.

Think of some of the most underfunded, most used open source projects you use on a daily basis, and please consider donating what you surely spend less on coffee in a month at least one time a year.

I'm not talking about open source projects that have their own foundation, or limited private company. I'm talking about the random open source contributor whose project you love and use daily who is just an individual. Maybe they don't even get enough attention on GitHub but they're in all honesty publishing something that people (you!) want.

I've published open source projects for 15 years, almost a majority of them now are discontinued or archived, but the ones that are still maintained have been for over a decade. And I have had the opportunity to have my work shared with many people, others are not so fortunate.

It's nearly a full-time job to market them, and mrdoob is right, you end up sacrificing a lot to publish these things.


where could one find VPS for $12 a year?


https://my.racknerd.com/cart.php?a=confproduct&i=0&aff=2502

> 1 GB KVM VPS (2024's 11.11 Promo)

> 1x vCPU Core

> 14 GB PURE SSD RAID-10 Storage

> 1 GB RAM

> 2000GB Monthly Premium Bandwidth

> 1Gbps Public Network Port

> Full Root Admin Access

> 1 Dedicated IPv4 Address

> KVM / SolusVM Control Panel - Reboot, Reinstall, Manage rDNS, & much more

> Available in San Jose, Seattle, Dallas, Chicago, New York, and Atlanta

Source: LowEndBox. I own a software business that uses RackNerd as a downstream provider. We use their VPSs for a majority of our clients who have low traffic requirements.


For a website or processing, sure. They're not a very discerning brand though - their customers like to launch port scans, try to send spam, URL scan (WP, Admin, portal, crypto tests). Mail delivery must be atrocious at this point.

Not that stretchoid & binaryEdge operating on Microsoft, Digital Ocean, Linode aren't doing the same.


A rare gem in our profit-driven world. Reminded me of https://sive.rs/ayw4


In open source we've carved a huge hole in the middle of our ecosystems where projects go to die specifically because of our instance that everything is free or its creator is a greedy capitalist.

Most all of the open source maintainers I know would LOVE to work on their projects full-time for a modest wage. But developers, teams, and companies have no interest or mechanisms to support that model... which is why VCs swept in to try to corrupt open source into a twisted product lead growth strategy.

Sorry to rant. I'm so glad mrdoob could do all this amazing work without needing revenue from it. I just get bristly at anyone who claims maintainers wanting to focus on their passions are "profit-driven".


He claims money wasn't the motive and I'm sure that's true but I thought he was a for hire website creator of the type that had a website with fancy demos to adversize his skills and therefore get clients. So, while three might have been a fun hobby project it was also something he used to make client sites or at least lure clients.

Then, as three got popular he got lucky and google hired him full time to maintain it. Who knows where it would be without a corporate sponsor to fund it fulltime. it's unlikely he'd have been able to keep it going so long if he needed to spend all is time on other things to earn a living.

In other words, he is getting revenue from it. In fact on a google salary he's getting quite large revenue from in and he also takes donations in top of his $500k+ salary. https://github.com/sponsors/mrdoob

Super happy for him and super jealous. Wouldn't we all like a high paying corporate sponsor for our personal project


Not sure if you're familiar with the state of 3D browser graphics when this project started; it was not good. Even by the time I came to the party in the mid 2010's mrdoob had been at it for a while. I was trying to build visual, interactive modeling software for the energy industry, competing with big enterprise software and still remember my first boardroom demo when we bluescreened their computer with a "web app".

My point is you frame this like he planned to capitalized on it and was really lucky, but based on the context I think you've got it backwards. Mrdoob had already poured so much work and effort into this it would have been a foolish & unsustainable strategy if it was a way to "get clients and a great job". That's like deciding to do a startup as the best way to get really rich. I find it hard to believe given the consistent energy and progress of three.js that it's the product of someone with a "lottery winning" mentality.


I'm not suggesting he planned to capitalize on it. I am suggesting it was work adjacent. That while it was fun to make it was also useful for his day job.

On top of that, even if it wasn't a goal he did win the lotto in the end. There were 12 or so competing 3d js libraries back when three.js started. He won both the popularity lotto and then the sponsorship lotto.


> which is why VCs swept in to try to corrupt open source into a twisted product lead growth strategy

I wouldn't call it 'corrupt', but rather a by-design "feature" of open-source: https://www.gnu.org/philosophy/open-source-misses-the-point....

> I just get bristly at anyone who claims maintainers wanting to focus on their passions are "profit-driven"

The person you replied to never said that.



Wonderful project. Built video games and music visualizers that I never thought were possible on web.


I think this is true of a lot of projects. Making nice tools to work with serves a more fundamental need than money does. You could say that money is just a means to get nice tools. Open source software can be duplicated or amended by anyone as much as they want so theft or shortages of it isn't an issue.


People have no idea the amount of effort it requires to make 3D anything, and then at the quality level they frequently see 3D things in media. Then there's the different types of ways to do 3D, from scanline to polygons to rays to volumes and then abandon all that for splats; likewise with color models where RGB gets replaced with RGBA and then sRGB/CMYK and others, and now physically based rendering has a whole other color model with different names and formulas. I've not even mentioned the differences between software rendering and hardware accelerated rendering, nor distributed cluster farm rendering as used in film and commercial productions.

It's multiple full time Phd level careers, and most people think it's easy and they could do all of it if given the opportunity.


It’s a ton of knowledge , but not gatekept behind degrees or anything. Like web development, you can learn much of it by reading freely available documents, blog posts, and white papers. (Tho it’s much more math heavy. Mostly trig and very basic linalg)

There’s a famous “ray tracing in a weekend” book even.

Color spaces and PBR also isn’t some magic. It’s just math. You implement it in shaders and color space conversion functions.

It gets really hard when you try to optimize it, like you said with render farms. IMO synchronization in Vulkan (and other low low level graphics APIs) is the really difficult stuff.

But nothing that requires a PhD or whatever.

For the curious “Real Time Rendering” is a really great textbook all about modern rendering techniques


I don't keep too many reference books forever, but "3D Math Primer for Graphics and Game Development" and Eric Lengyel's book are on my shelf. The are very accessible, IMO aimed at the "kid who was good at high school math, wanted to make video games".


Fair


It's absolutely not.

The math behind rendering is pretty straightforward and has been available since forever (Graphics Gems). On top of that, three.js was sort of a port of an existing library called away3D, which was a port of papervision, but that's another story.


Definitely not a port of Away3D or Papervision3D.


People have no idea how much effort you put in, bless their innocent little hearts.


Thanks for the kind word.


Hey doob!

I remember you from the good ol flash times. I didn't wanted to downplay your effort you put into threejs. <3

My point was that you don't have to have a PhD to write a 3D engine, the math is here, there's a plenty of literature, reference and libraries at hand that anyone can make their own toy 3D rendered on a weekend.

... to make that work in the browserland, that's whole another story. :)

I remember writing a tiny deeplinking "library", back in 2006. When I finished implementing the specification it had ~30 lines of code. At the time it was compatible with all common browsers it got to about 500. :)


Looks like you can find papervision source here: https://github.com/Papervision3D/Papervision3D


I've forgotten most of the specific matrix multiplication stuff I needed to know to write a ray tracer, and my ray tracer was dog slow compared to pixar's renderman. I wouldn't say it takes multiple PhD careers, though. It was discrete math and a couple upper level CS undergrad courses to get to a working ray tracer, write interesting shaders, and do stuff like fourier transforms of audio on a gpu.


To get to a working raytracer, yes.

But, take a game, or a movie. One needs render things very efficiently in a game, you have 33.3ms of frame budget. Today, raytracing in games either uses just 1 or 2 techniques (e.g. shadows) and calls it a day. If you want to do more, you probably need some help with machine learning (think DLSS). Not to mention, you need a system that accelerates the structures needed to perform it, and somehow marry all this with everything else in game that uses the GPU. You get animations into the mix and the complexity goes up in all areas.

In movies, you have more leeway, but the artists still need to iterate fast. You want them to be able to see something akin to the final product fast.

It intersects a lot of areas.


Writing a slow incomplete impl of something is 0.1% of the progress of building an actual one that you would use in production.


yes, sure people are "starting" toy projects in this area all the time. That's not the same thing as a production version will wide support, deep features and targeting the browser.


You don't actually need matrices at all for basic ray tracing.


You're right, just vectors and trig are fine for rendering a few spheres or whatever. Doing transforms on 3D model coordinates was where it came in.


I'm having a hard time matching these with some of the 3D things I've done before. As in, little vendiagram overlap.

What I'm used to, using hardware APIs, or software rendering: - Nodes - Edges - Triangles - Meshes - Shaders - Matrices - Quaternions (Or bivectors etc) - Projection (3d state to 2d screen)

I suppose I'm confused because the basics don't seem cosmic. It's a straightforward application of considering the state you need to store your 3D model in, then some linear algebra and quaternion operations to convert that 3d state to a 2d screen.

For quality level seen in media, it's different; all the additional techniques that make things realistic or have effects that get complicated. I suspect this is where the disconnect lies; if so, I suppose my point is that it's not 3D that's complicated; it's realistic 3D.

edit: I Looked up Gaussian Splats: Very cool!


it's not hard and not that much work. there are tons of people making their own 3d engines for fun all the time. Usually they get something on the screen relatively quickly. There are articles and YouTube channels all over on how to do it. If you want to make all of UE5 then it's a lot of work but if you just want to display a pBR 3d model it's a day's work if you already know how and a few days if you don't

rebuilding every feature of a 3d engine takes lots of time but getting to a lit model does not.


Before Three.js there was Papervision3D for Flash written in ActionScript. While it was not a direct port I imagine a lot of ideas were already established and pretty straightforward to implement in Javascript. Happy to see Three.js going strong.


I mean, it’s literally his job at Google?


Money not being the goal is the norm for these good projects, I hope one day to find out for my favorite project money is actually the end goal, that'll be fresh.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: