
STL File Viewing - bencevans
https://github.com/blog/1465-stl-file-viewing
======
subway
This is really cool, but I always feel kind of dirty putting my STL (or any
other binary) files into a git repository.

I hope GitHub adds support for scad files soon. In theory it should be pretty
easy since they already support STL -- have openscad generate an STL from the
scad files on the fly.

~~~
ajross
STL has an ascii variant if you like. But the real issue is placing derived
files under source control. There's no good answer here. If the STL is the
output of, say, a script engine that generates parametrized parts, then of
course it shouldn't be in git. If it's the output of a manual process in an
interactive tool (e.g. a CAD program) then the distinction is fuzzier. It's
not really the "editable source", but then neither can it be automatically
derived by a build system.

~~~
derefr
> If it's the output of a manual process in an interactive tool (e.g. a CAD
> program) then the distinction is fuzzier. It's not really the "editable
> source", but then neither can it be automatically derived by a build system.

It sounds like what you'd really want, in that case, would be an ASCII-encoded
log-structured manipulation-history format--sort of similar to a Redis Append-
Only File.

------
s3th
Github amazes me all the time with the sheer number of features they ship over
a given time period. Major props! The STL rendering is an awesome feature.

~~~
TheLegace
It would be great if they could setup something like this in github:

<http://www.youtube.com/watch?v=WhNGUJjV1zQ>

This model is a combination of stl or dae files, created with a script file
that puts the coordinates of the individual stl files. I'm waiting for the day
that maybe github could host full simulations and we test them out in the
browser. (Now that would be cool).

------
kanzure
Yo github... while you're bothering, here are some other things that would be
handy:

* Visual STL diffs, maybe by coloring deleted/added triangles. Possibly with a viewer on gh-pages or on the /:username/:reponame/commits/:branchname endpoint?

* DXF sucks, but yeah DXF rendering.

* Maybe consider thingiview.js (which does not use WebGL) or possibly a WebGL equivalent viewer. Controlled rotation, zooming, camera repositioning, etc. It seems that most of these features are implemented:

[https://github.com/josefprusa/Prusa3/blob/master/mini/z-bott...](https://github.com/josefprusa/Prusa3/blob/master/mini/z-bottom-
left.stl)

[https://github.com/josefprusa/Prusa3/blob/master/mini/y-moto...](https://github.com/josefprusa/Prusa3/blob/master/mini/y-motor.stl)

* openscad rendering- I know this is a pain in the butt, especially since openscad still requires xserver. But at least it feels more like source code. There are some other options other than openscad that could be easier to render without an xserver, which would be fine in my book, I am not particularly attached to openscad.

* Other scripting/rendering options... maybe implicitcad, pythonocc (opencascade/python bindings), HeeksCAD/python, FreeCAD/python, OpenJSCAD, something like that. The problem with STL is that it's like transmitting compiled binaries to other developers, but what developers really want to work with is the source code. Having to commit STL is like having to commit compiled binaries.

* UI widgets for committing from SolidWorks, Pro/Engineer, CATIA, AutoCAD, HeeksCAD, FreeCAD, and other front-ends would be really useful. I would be happy to use github.com while working on my next fighter jet project.

* Upverter claims to support git, but really it's just a link to a remote git repository and you can't push your schematics to Upverter. Please feel free to eat their lying lunches. Maybe also circuitlab's (although they have never claimed to have git integration). So yeah, schematics.

* Some projects require thousands of parts that need to be included when rendering, especially in assemblies. It would be nice to be able to see a fully rendered image of a version of the repository contents. This quickly devolves into a mess of file format hell, which I imagine is not something you want to tackle. But maybe this could be done through continuous integration hooks or something?

For whatever it's worth, here's a terrible post-receive bash script I wrote in
2010 for scad rendering on a git server:

<http://diyhpl.us/~bryan/irc/gitduino-post-receive.sh.txt>

* It would be exceedingly awesome if you could get the RepRap project to jump ship from svn to git. RepRap is the largest, most well organized open source hardware project, and I think it would be a great community to work with to show how strong git is for distributed hardware development.

There are already some really excellent RepRap projects in git repositories on
github:

<https://github.com/josefprusa/PrusaMendel>

<https://github.com/josefprusa/Prusa3/tree/master/mini>

~~~
nickpinkston
LOL you talk about such features as if they're simple add-ons! Each is a
huuuuge commitment from dev to maintenance. But yea, it'd be nice.

GrabCAD is about as close to this as you get as far as implementing solid CAD
stuff.

~~~
thedaniel
The maintenance commitment cannot be understated. If you add some kind of
processing to a file format, people are going to expect it to always be there,
and always work, so you're taking on an eternal renderer maintenance workload.
That said, we'd love to cleverly render all sorts of formats. The limitation
is the time and developer energy to do it _right_ and keep it updated.

~~~
jonemo
Why not allow third parties to develop plugins, if you don't want to maintain
the feature yourself?

------
steeve
I'm surprised nobody has mentioned <https://sketchfab.com/>, which does this
for pretty much any 3D file.

------
elisee
Getting the following error when loading an STL file on GitHub:

    
    
        Invalid 'X-Frame-Options' header encountered when loading 'https://render.github.com/view/3d/?url=https%3A%2F%2Fraw.github.com%2FEmmanuelG%2FFoldaRap2%2Fmaster%2Fstl%2Flower-corners.stl': 'ALLOW-FROM: https://github.com/' is not a recognized directive. The header will be ignored.
    

(from
[https://github.com/EmmanuelG/FoldaRap2/blob/master/stl/lower...](https://github.com/EmmanuelG/FoldaRap2/blob/master/stl/lower-
corners.stl))

Running Chrome stable. Looks like a malformed cross-origin directive?

EDIT: The error is still here but it works from time to time. Some of the time
I get a "Something went wrong? Reload" message, the rest of the time, the 3D
model actually appears.

~~~
sshirokov
Chrome doesn't have support for the `ALLOW-FROM` `X-Frame-Options` option, and
just complains about it when it sees it.

See: [https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-
Option...](https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options)

------
VikingCoder
Is the source for this STL Three.JS viewer available on GitHub?

It's be nice if, when you sign in, you could change which viewer was
associated with which file type. Then I could fork their viewer, add my own
features, and use that.

------
tibbon
Strange- I just pushed an STL file from a Lynx camera that was taken of me at
SXSW and it won't view. Any ideas what's wrong?

[https://github.com/tibbon/my-3d-models/blob/master/me-
in-3d....](https://github.com/tibbon/my-3d-models/blob/master/me-in-3d.stl)

~~~
sshirokov
Your file is 11MB :(

~~~
tibbon
Oh, that might do it. I didn't realize how big of files the Lynx creates...

------
solox3
There's also a huge market for scientific collaboration. GitHub has lots of
space to grow. <https://www.scigit.com>

------
shykes
There's already a github for 3D models, it's called Sketchfab
(<http://sketchfab.com>) and it rocks.

~~~
kanzure
> There's already a github for 3D models, it's called Sketchfab

Sketchfab doesn't have native support for git repositories. You could upload a
tarball of a git repository, but that's seriously missing the point.

------
hcarvalhoalves
Cool, it works pretty well.

Next step: support Wavefront's .OBJ files.

~~~
LukeShu
Implementations would no doubt be similar, but here they are targeting
hardware/manufacturing, not gaming/graphics.

~~~
jonemo
You wrote this comment in multiple places, but it's wrong. All 3D printing
services I am aware of accept OBJ. Many printer softwares accept it. In fact,
as soon as you want to print in color, you have to move away from STL and OBJ
would be a good choice.

------
glyphobet
Only a matter of time before someone writes a service hook for automatic 3-D
printing of a model after each push....

That or Thingiverse integration.

~~~
aspir
GitHub's Make Me project might be close to what you're looking for.
<https://github.com/blog/1368-releasing-make-me>

------
fafner
Is the blog post broken for anybody else using Firefox? The font is completely
messed up for me. Both in Nightly and 20.0.

~~~
steveklabnik
I'm on Aurora, it's not here.

------
shurcooL
I remember a few years ago Collada was quite the popular 3D file format. What
are the latest trends in that field now?

~~~
LukeShu
Different fields. Collada was for 3D graphics (and I don't know what's going
on in that field).

STL is for manufacturing. STL has long been popular for commercial FDMs and
CNC machines, and it is also what hobbyists use for their FDMs ("3D
printers").

~~~
shurcooL
Ah, this is for 3D printers, no wonder it got popular enough for GitHub to add
support for visualizing it. Thanks!

------
in_deep_thought
wow. I built a STL file viewer and showed it to hacker news a few days ago and
got absolutely no response. (www.supercuber.com). It was a different account
though. I realize that this is quite a bit different than supercuber but its
amazing how different the traffic to two similar links can be.

------
wereHamster
Collada support pls.

~~~
angersock
Fuck. That.

Here, here's the specs for that pile of offal:

<http://www.khronos.org/collada/>

It's a shitty, bad, bloated, slow, rubbish XML format. It has accumulated so
much garbage in the name of interop that it is overkill for >95% of
applications, and parsing/generating it is really annoying. It's a solution in
search of a problem.

------
skurmedel
Why STL? I'd wager OBJ is a much more common interchange format for 3D models.

~~~
LukeShu
OBJ is for 3D graphics, STL is for 3D manufacturing.

~~~
skurmedel
Wasn't really my point.

~~~
LukeShu
Well, github is targeting users of 3D printers, not game/graphics developers.

