Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
A 3D sculpting web application (stephaneginier.com)
386 points by parisianka on Oct 14, 2020 | hide | past | favorite | 73 comments


This looks amazing, works absolutely perfectly out of the box and is probably one of the fastest prototyping tools I've seen for someone who knows what they're doing. And all of that in the browser — we've come a long way, amazing.


> we've come a long way, amazing.

I worked a demo booth for AutoDesk in the mid-90's. We had just released a Gouraud renderer for the Intel Pentium Pro launch and people were amazed to watch it render a few thousand polys (no textures, just interpolated vertex shading) in a few seconds.

This web app made my jaw literally drop.


is it really impressive that a browser can do a lot that regular desktop apps have been able to do for decades? I find it pretty depressing, really.


I think what should be celebrated here is that all it took was a click of a link and a wait time of under 1 second to begin using this application.


It's not so much that the browser can do it, as it has been able to for a long time, but that an app in a sandboxed environment, with an abstraction between itself and the host machine, can do it in decently fast times.


But why is that a good thing? You're just making an argument for an inner platform, but without any factual justification. Is sandboxing truly critical? (millions of graphical artists using Blender, Maya, etc don't care) Abstraction? Why is that important, the amount of work to get a 3D app to do something interesting in the browser is about 10X that of writing a qtpy app, and I don't see the value in any "abstraction".

webgl was a good idea and I dedicated years to trying to make interactive browser applications, and now I've concluded that if I want to make product in time, that works for decades, on all platforms, at speed, I will use systems like Qt for desktop apps, not browsers.


I played with this app and it's a great experience, I didn't have to install anything and have shared it with a few people who (in a few seconds) were happy creating stuff. None of us professional artists (like millions of people out there).

For me, that's amazing. There's a lot of value in having options (with low friction) for casual creators like myself.

Agree with your point about dev experience being painful though.


Not having to install anything on any OS or phone with a browser (or upgrade anything ever) is indeed pretty amazing.


Not having to install anything (or upgrade anything ever) is indeed pretty amazing.


And you are just acting as a gatekeeper. This app is accessible for anyone who is not able/willing to install something locally like a kid using a computer at school. This is what sandboxing gives you. Blender and Maya are useful for experts. Not all tools have to target experts.


That's the word. Accessible. I dont have to have my computer and can still get work done. Well said.


I remember the 1990s, which probably informs my view here, but I'll tell you this: There's something to be said for targeting a cross-platform browser instead of a single OS. Windows. It was Windows. Outside of what the (much smaller!) Open Source world developed, stuff worked on Windows in the 1990s and practically nothing else.

Now I can open a browser and have a 3D sculpting application and nobody needs to care what OS I run. You can denigrate webapps all you want, I won't hear you over the sound of how happy I am that I don't have to dual-boot with Windows anymore.


Maximum interoperability is always a good thing.

The web rules.

Chromebooks are everywhere these days. They do have to fallback on Android apps and Debian apps sometimes, but this is also what makes them so versatile.


You can only say this by having no clue of the machinery involved.

This is all going through IPC in a command buffer like architecture where the display lists are formed in another process. Where you can have several framebuffers that you can render 2d, 3d and intermix them in a beautiful final output thanks to the sophisticated compositor.

The state-of-the-art on desktop was a in-process direct rendering instead.

Modern browser are wonderful machines, we should be glad we are seing this happening.

Also, Google contantly are being bashed on HN, i know, who like the big man right? i think this we should thank them for pushing the envelope on a open platform, that will probably even eat the closed app platform with time.

Just Dorothy-like hackers would'nt be able to fight back the awful world of closed source applications platform if browsers were not what they are today. We are constantly in danger to get back to where we were in the nineties. If this whole "cloud computer" paradigm were not enough of a threat to a world of global scale control of the digital life of billions by only a few.

Its good to be skeptic and bash the big man, its important to fight back, but lets respect and give them props for the things they do right. A piece of software that has value on its own by the way.


I work for Google, and have 20 years experience in OpenGL, so I definitely have a clue about the machinery involved.


So you know that the tech to get were we are today, despite doing almost the same as a early 2000's tool, had to overcome a lot of obstacles to become available to all platforms in a open way, with a open 3d api, where you dont need to be forced on having Windows and buy a super expensive(as it was back in the day) license a closed source software.

Giving your presented credentials, you should now how and why this is not exactly the same.

Software is constant automation and improvement, and if the things we suffer to do today, that can make someone be considered special and be well payed, will be achieved easily by children in the future, its just because of the hard work of the pioneers that suffered but persisted in the beginning.

The Unix was there in the 70's, and yet we celebrate "the same" old thing today, because its open, its available and even kids can change and compile it in its Linux incarnation.

So while it maybe looks the same under the surface, its definitely not the same, and we should be glad every time technology gets popular and easy, because its not easy to get there.

Edit: Sorry for the way i've started my first commentary, it was rude and unnecessary, rather you knew or not anything about the matter.


[dead]


man you need to TL;DR, maybe some paragraphs

that's absolutely unreadable


You mean a desktop app that you need to download, install, and during the installation potentially give some privileges that can harm your computer.. then you are trying to install and it doesn't have the right dependency so it asks you to find some random thing to get it working. Then you do get it installed, but don't know where it installed to so you have to go searching for it. Then you get it up and running and it works fine. You play with it for 5 min. 2 months later you come back to it and want the newest version, so you have to download an update, because the auto-update feature was blocked by your firewall. Then you get it updated and running. A couple days later you decide not to use it, so you go to uninstall it. The uninstaller fails for who the f knows why so you delete the folder on your drive, but your OS still think it's installed. So you figure out how to manually remove it.


That's all well and good if you trust other people. FWIW this guy allows you to download his app, and it's open source and a very impressive achievement. In general though, I'd much prefer having an old version of an app that works (I'm still using Max 2016 or something) than the joy of waking up one day and have things be worse than they were before. All the things you mentioned in my view are a small price to pay for peace of mind that you're not beholden to someone else's whims. (See the story about Oculus currently on the front page)


> 2 months later you come back to it and want the newest version, so you have to download an update, because the auto-update feature was blocked by your firewall. Then you get it updated and running. A couple days later you decide not to use it, so you go to uninstall it. The uninstaller fails for who the f knows why so you delete the folder on your drive, but your OS still think it's installed. So you figure out how to manually remove it.

this is incredibly better than the "web scenario" which is (and I got burned by this two times - there won't ever be a third time), "you come back to the app two months later, except the company has shut down and all your data removed" or "you come back to the app two months later, but you now have to pay for the superior tier if you want to be able to edit your stuff because some features you were using have been moved in that tier" (hello genmymodel), or "you come back to the app two months later and it's now super slow and has a couple annoying bugs but you can't downgrade because it's a web app" (hello asana).


You left out the part where a year goes by and the web app randomly stops working because a subtle change in web browsers broke the app.

I don't have any of the problems you describe with updates or installers.


Also check out his most recent 3D sculpting app https://nomadsculpt.com


I was looking for digital sculpting apps a few months ago for my iPad and I wasn't too happy with the interfaces compared to Blender. This looks exactly like what I was looking for. Amazing work.


For those new to approachable 3D sculpting tools, they have been around for a long time on the desktop, but between the improvements of smart phones and the web there have been attempts to expand into those areas.

One of the older popular tools like this on the desktop is called ZBrush and they have a free version called ZBrushCoreMini limited to non-commercial usage scenarios: https://zbrushcore.com/mini/

Clearly one of the benefits of SculptGL despite not having every feature out there, is that it is free for commercial use. One example is Sketchfab using an older version of SculptGL here: https://labs.sketchfab.com/sculptfab/

You can download a standalone version here: https://stephaneginier.com/archive/standalone/

And his mobile app version: https://nomadsculpt.com/


Very neat!

it reminds me of a recent experiment I did with raymarching & sculpting:

https://nico-boo.com/claysculpter/ (warning: only for desktop and not heavily tested)

You're using triangles? Did you make any progress with raymarching? I read you did some experiments.


(dev behind sculptgl, but I didn't make the HN story)

Nice project!

sculptgl is based on polygons (tris/quads only, and using webgl for rendering).

As for the other project it was just as a quick and dirty experiments :). https://stephaneginier.com/archive/editSDF/ https://www.shadertoy.com/view/WtjXDW On Unity there is Clayxel and more recently Mudbun, both based on implicit surfaces.

And obviously, the Dreams presentation which is an inspirational must see https://www.youtube.com/watch?v=u9KNtnCZDMI


The Dreams presentation is definitely a must-watch for anyone interested in sculpting. Their splatter tech is so amazingly neat that I can't wait to see it in more games. Didn't try clayxel and mudbun but they already were in my favorites, still waiting for any of them standing out ;)

Did you explore splatter rendering?


Really neat experiment! I hope you keep working on this.


This is probably ~ 6 years old.

Before they hired the author, I worked with the Sketchfab team to deliver a version of the app that published to Sketchfab https://labs.sketchfab.com/sculptfab/


Also see https://www.onshape.com/, a 3D parametric modeller that is also a web application.


I'm sure you know this already, but for anyone else browsing the comments, there is also free version for non-commercial use: https://www.onshape.com/products/free


I did a massive project using Onshape's APIs. It's a fantastic product -- excellent modeling tool that performs very well, but the kicker is the language that makes up the underlying 3D "document"[0] into a set of instructions program, the "API" of which can be queried/manipulated/rendered/tesselated and fully edited using their REST API. The language, itself, is designed to be serialized to JSON and you can basically create very interactive program-3D-document-like-things. Or you can just mouse around and build objects in a similar manner to Fusion360 (I find Fusion easier to use, though).

We were an early customer of the API and were using it in ways it wasn't designed for so we encountered some problems early on ... the team over there consistently under-promised[1] and way-over-delivered. They were purchased by a competitor, recently (not Autodesk). The company that approached us to build a 3D customization tool on the web specifically required we use Onshape because they were a Solidworks shop and they were loving the web app's compatibility and features.

[0] It's hard to find a good name for what, exactly, it is. Storage-wise, a document in Onshape closely resembles a git repository. Under the hood, much/most/all? appears to be made up of FeatureScript, which is a language expressing transforms/operations on components within one or many documents (I'm not a cad guy/was concerned mostly with the back-end API, not the make-up of the docs, so this is probably partly wrong -- google FeatureScript for more info).

[1] That's not a back-handed compliment -- they were careful to manage expecatations about a major performance issue being resolved in code by a specific date. They often "hinted" at dates, and the dates they hinted at were hit, usually in advance. For the worst of the performance issues, they spent hours with us working out a suitable workaround that eliminated the latency.


Impressively, it’s pressure sensitive on my iPhone XS Max.


What version of iOS are you using? I thought Apple killed 3D touch.


My iPhone is on 14.0.1.

They probably killed force touch on the newer models only.


Wow, this is extremely impressive. Usually when I run a WebGL demo, my fans start blasting, but my machine seemed to handle this fine.


There's a lot of frames where you are not doing anything, so the image doesn't need to be updated, unlike most games where you always need to be refreshing the screen. Also, I believe that power management for webGL in general is/was quite bad. If I recall correctly, it didn't automatically adapt GPU power usage to the application, but rather it ran on a fixed power level. Maybe I'm wrong or misremembering, though; it would be great if someone else with more knowledge on the topic can give more details.


The biggest issue is that a lot of GPUs are blacklisted by browser vendors to force software rendering due to bugs in the GPU drivers that might cause security or overall software reliability issues. And a lot of those GPUs are AMD GPUs. And a lot of those AMD GPUs are in MacBooks. Thus why a lot of MacBook users complain about WebGL stuff pegging their CPU and kicking in the fans.


Do you have a source for that? (And maybe a list of GPUs that are blacklisted as well, so I know what to look out for with some customers?)


Interesting. Found this on a quick search:

https://www.khronos.org/webgl/wiki/BlacklistsAndWhitelists

And the more detailed list for firefox (though only NVIDIA and Intel GPUs on MacOS are reported to be disabled for security issues):

https://wiki.mozilla.org/Blocklisting/Blocked_Graphics_Drive...


For the first link > This page was last edited on 3 June 2015

For the second link > This page was last modified on 9 March 2016

There's no way that I'm aware of to find the complete black/whitelists of each browser. The only way I've been able to figure it out before is to disable the blacklisting and see how performance in a WebGL app fairs.


Yeah, I don't even have a graphics card in this laptop and it handled it fan-less the entire time with a smooth framerate. Seems very well made.


Very impressive! This is awesome. Have worked on sculpting tools before and it's pretty dang intuitive out of the box.

Two minor suggestions: 1. On mac the undo mappings would normally be CMD+Z. Not sure if it's possible to map this in the browser or not but took me a moment to find Ctrl+Z (via menus).

2. The starting geometry is a circle with a flesh-colored tone. Not sure if this is randomized but it leads to quickly creating weird human-ish shapes. It also defaults to a mirrored circular/spherical brush. May want to consider a different default tone as you'll likely get lots of female anatomy drawn w/ the current settings.


Y'know, that sounds like an interesting idea for VR with some custom controller for tactile input and feedback... something like a stress ball, or silly putty, or something like this.


Google has something like that with tilt brush

https://www.youtube.com/watch?v=TckqNdrdbgk


Oculus Medium (recently acquired by Adobe) is an incredible sculpting tool for VR: https://youtu.be/rJeMvXv0XxQ


I'll be the next one to parrot the whole "nicely done" atmosphere -- it really is cool.

It's amazing what we can do in a browser these days[0] and it's only outpaced by how quickly, it seems, those things become dramatically better.

I worked on a project to build a web-based 3D configuration tool for designing custom industrial objects to be 3D printed (aluminum/various metals and some plastics for prototyping). During the two-year span of developing this solution (which went over due to non-3D-in-the-browser-related issues), the various technologies we were working with went from "we really need to do everything except for the final rendering of the (simplified) object on the client" to "it's less code/moving parts to do most of it on the client-side ... and moar textures". I believe the customer did just that a year later.

[0] 3D Accelerated and it works in Linux on the desktop ... in Firefox ... brilliantly. It's not that I'm surprised Firefox works -- it's always been fine for me on Windows. It's the combination of Linux and Firefox on nvidia hardware that usually results in odd tearing/performance issues in FF for me. Since recent updates and enabling experimental acceleration, it's buttery smooth.


Amazing work! The creator is now followed by Mr. Doob on Twitter, the creator of Three.js. That's a great accolade!


Wow. This is super intuitive. Impressive work.


Maybe I'm not seeing the powerful features, but I don't understand why people are calling it impressive. It seems to be just moving existing mesh nodes in the normal direction which is an extremely simple operation to implement. The more you sculpt, the worse the mesh quality gets until it starts self-intersecting, and you can't extrude from the side of an existing extrusion. I work on 3D meshing software and the hard problems are ones that involve modifying the connectivity of the mesh not just moving nodes around.


Wonderful work! Any good learning resources that standout to you? I'm looking forward to reading your code. Merci!


This is quite incredible. I'm a 3D artist with a ton of experience in 3dsmax, and I am really impressed by this.


I was moving recently and needed to plan out the furniture stacking in a U-Haul truck, https://www.vectary.com/ was perfect for this, given I grew up on Blender I appreciate how much simpler the UX is (similar to this app).


https://pasteboard.co/JvX72mI.png Chicago Institute of Art, here I come! Seriously though, with zero sculpting experience I was able to immediately grasp the interface and make something. I am impressed.


Amazing. This is really impressive that it worked in my iPhone even.

Since the quality is so high, I’ll add this bug report.

Bug report:

- iPhone

- Zoom in to change brush

- Can’t zoom page afterwords


Same here. Still pretty slick though.


Very nice to see. Wish I had some more time to flub with it.

Only critique is you need to allow for the brushes to be bigger. Specifically for the move tool as that is how I was taught to vreate primary forms before going in with any brushes.


SculptGL has been around for a few years. I think it got popular when Pixologic (makers of ZBrush, the original free-form sculpting application) bought and mostly neglected Sculptris (the original free clone of ZBrush).


That's really neat, it worked great on my desktop drawing tablet. I've been looking for something to sculpt with on an iPad while sitting on the couch in front of the TV, I'll have to try that out.


It just occurred to me that sculpting should happen in voxels, not polygons. Polygons get too large or too small after sculpting, and start to self-intersect.


Love it but i found a glitch where if you take too much material off the clay it starts adding material.


Really cool! Is there somewhere we could see a gallery of what people did with it?



How do you even start to build something like this? What frameworks could I use?


I'm not the best person for this, but here it goes

Quick sketch:

- Learn WebGL (or OpenGL and transition)

- Learn some linear algebra, don't worry, all you need is 4D matrices, so you don't need to know proofs, just how to use it.

- Create a 3D graphics engine like this: https://www.youtube.com/watch?v=PH6-dLvZEiA (that's mine, I haven't progressed since in this area, so this is the level I'm at, enough to know what fields are needed to learn this but not enough to know all the specific techniques)

- Look up names/techniques people have used to create something specific like OPs post, see [1]

- Learn that stuff as well / related math

- Build it in WebGL

[1] https://www.youtube.com/watch?v=J9CExYF8yrU&ab_channel=V%C3%...


Like this: https://github.com/stephomi/sculptgl/commit/ba8cc5e60f793b72...

You don't need a framework for anything. You need to know your problem and have an idea on how to solve it.


In fact, it's a really simple app: a height map on a sphere approximated with triangles. With a bit more extra complexity, the app could do raymarching on a interpolated height map: this would remove triangle artifacts around "cliffs" on the height map. It would still be real time 60 fps even on smartphones.

To do something like this, you need to know a bit of WebGL and a bit of JS. No frameworks really needed at this level. The best guide to WebGL I know of is this:

https://webgl2fundamentals.org/

Complexity starts when the height map isn't enough and you want to make arcs or otherwise arbitrarily shaped structures. This is where you'd need a framework, unless you want to implement all the math and glsl yourself.

And as always, the idea is really the 1% of the work. Anyone can say "it's just a height map on a sphere". 99% of the work is materialising the idea, debugging glsl, fixing ugly bugs on smartphones and esotheric browsers, dealing with partial WebGL API and so on.


I think since you've asked this question, it's been answered that this specific tool was written using SculptGL.

How do you even start? I started with `three.js` about two years ago and a ton of documentation. I didn't write a sculpting tool, but I wrote a PoC for a tool that "renders" custom tessellated data, pan/tilt/zoom, by the documentation from their site in about a weeks' time[0].

[0] I do more back-end than front-end, but I did the PoC in React/TypeScript with a kludge for the Canvas and a few ugly functions for handling loading/camera positions.


works great on iphone even. i remember when alias waveform maya came out with its sculpting tools 15+ years ago and you needed a $2000 graphics card to use them with reasonable responsiveness.


It’s amazing. It even supports force touch and multi touch gestures.


Should this be labeled (2013) or is that only for written pieces?


It even supports force touch and multi touch gestures. Amazing


VR would be nice on this.




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

Search: