[{"data":1,"prerenderedAt":328},["ShallowReactive",2],{"project-4393704":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":5,"maker":10,"posted_at":11,"year":12,"points":13,"comments":14,"rank_in_year":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":42,"post_text":44,"what":45,"said":83,"maker_in_thread":191,"shape":199,"grid":203,"attempts":291,"same_week":292,"maker_shows":31,"maker_hidden":321,"reader_version":322,"card":323},"4393704","cubehero.com","Visual diff for 3D printable models","title","Show HN: Visual diff for 3D printable models","http:\u002F\u002Fcubehero.com\u002Fphysibles\u002Fiamwil\u002Frobokitty\u002Ffiles\u002F0cecb53528a7be6eb6236e01f36b7e37dbb260c8\u002Frobokitty.stl","iamwil",1345151876,2012,127,39,152,1677,10,"notable","dev_tools","version control for 3d models","web_app",[23,24,25,26,27],"visual diff","stl","3d printing","openscad","version control","mixed",0.19,{"positive":31,"neutral":32,"mixed":33,"critical":34},5,6,3,2,16,{"performance":37,"design":39,"idea":40},{"positive":38,"critical":34},0,{"positive":38,"critical":38},{"positive":41,"critical":38},4,[38,33,38,38,38,38,33,38,38,33,38,31,38,33,33,43,38,33,38,38,38,38,38,33,43,38,31,38,33,38,38,38,38,33,38,31,38,31,31],1,null,{"problem":46,"audience":56,"pricing":44,"motivation":60,"time_to_build":44,"stack":64,"openness":81,"stage":82,"team_size":81},{"value":47,"source":48,"evidence":49},"Comparing revisions of 3D printable models is hard; text diffs don't show visual changes","maker",[50,53],{"id":51,"by":10,"text":52},"4393781","These are STL files, which are used commonly in 3D printing. The models were generated by OpenSCAD (programming language for 3d modeling). As I've worked more on 3D models for 3D…",{"id":54,"by":10,"text":55},"4394400","My understanding of his question was how I rendered the diff of the models. While git does calculate textual diffs, it does not calculate visual diffs of 3D models, which is what…",{"value":57,"source":48,"evidence":58},"3D printing modelers collaborating on OpenSCAD and STL files",[59],{"id":51,"by":10,"text":52},{"value":61,"source":48,"evidence":62},"Wanted visual diffs to collaborate more easily on 3D models",[63],{"id":51,"by":10,"text":52},[65,69,75],{"value":66,"source":48,"evidence":67},"OpenSCAD",[68],{"id":51,"by":10,"text":52},{"value":70,"source":48,"evidence":71},"WebGL",[72],{"id":73,"by":10,"text":74},"4393874","Yes. I think eventually, I'll have it generate a photo first, and not use webGL as a default. I did it mostly as a shortcut, because it would have been more work to figure out…",{"value":76,"source":48,"evidence":77},"gzip compression",[78],{"id":79,"by":10,"text":80},"4394145","It's just using regular gzip. I'm sure I could do more work to further compress the files, but for the time being, I just wanted to get something out to show people, rather than…","unknown","prototype",{"praise":84,"objections":104,"requests":119,"questions":151,"alternatives":165},[85,97],{"value":86,"source":87,"evidence":88},"Useful idea for collaborating on OpenSCAD models","commenter",[89,93],{"id":90,"by":91,"text":92},"4393785","uncoder0","This is perfect. We've been using GitHub + OpenSCAD and have been looking for a less hacky way of doing 3D diffs. Signed up!",{"id":94,"by":95,"text":96},"4393799","bri3d","Neat! Looking forward to seeing OpenSCAD and STL diffs together on the same page - that'd be a powerful OpenSCAD learning tool as well as a good change-management \u002F collaboration…",{"value":98,"source":87,"evidence":99},"Impressive work",[100],{"id":101,"by":102,"text":103},"4395728","kaib","Nice work, really impressive! A few comments: - You actually have at least four diff states you need to visualize, it's like a matrix. One axis is boolean operations (add, sub…",[105,115],{"value":106,"source":87,"evidence":107},"Downloads are very large (8-10 MB) because STL is sent as ASCII",[108,112],{"id":109,"by":110,"text":111},"4393858","mbell","Interesting demo. I don't know anything about this space but it seems to download a ton of data every time I look at a different diff (like 8-10 MB). Is there any way to reduce…",{"id":113,"by":10,"text":114},"4394873","It's because it's the ASCII version of the STL format. (horror!) A binary STL would be about quarter to half the size. And there are other open formats that would be smaller and…",{"value":116,"source":87,"evidence":117},"Transparency rendering is a poor way to show diffs",[118],{"id":101,"by":102,"text":103},[120,131,137,144],{"value":121,"source":87,"evidence":122},"Send only diffs instead of the whole model",[123,127],{"id":124,"by":125,"text":126},"4393835","acidx","Pretty useful. Although it would be better if you could just send the diff over the wire when trying to look a previous version -- it takes way too much time to download the…",{"id":128,"by":129,"text":130},"4393917","swalsh","Since you seem to understand already the changes in the file, perhaps it would be possible to download (and merge) only the changes?",{"value":132,"source":87,"evidence":133},"Show OpenSCAD source diff alongside the STL diff",[134],{"id":135,"by":95,"text":136},"4393909","That'd be most powerful as a learning tool (and a sweet \"oh wow!\" demo). However, just a GitHub-style +\u002F- diff view on the OpenSCAD files next to the STL diff view would be…",{"value":138,"source":87,"evidence":139},"Zoom, pan and better camera and lighting",[140],{"id":141,"by":142,"text":143},"4394906","tathagata","This is very good. Some suggestions - you should make the the camera point to the center of the model. Also fixing the light to the eye (not transforming it with the model) will…",{"value":145,"source":87,"evidence":146},"Swipe diff slider to reveal old and new versions",[147],{"id":148,"by":149,"text":150},"4395177","breckinloggins","Feature suggestion: be able to drag your mouse left and right to create a \"swipe diff\" line that reveals or hides the old version on the left vs the new version on the right.…",[152,158],{"value":153,"source":87,"evidence":154},"Why is the file so large",[155],{"id":156,"by":110,"text":157},"4394441","Thanks for the response. Side question: what I'm seeing appears to be a wire frame model with flat shading of a model with very few vertices. I know nothing of the STL format.…",{"value":159,"source":87,"evidence":160},"How the diff is computed: client or server",[161],{"id":162,"by":163,"text":164},"4394057","andrewcooke","i suspect it renders the model twice, in different colours, and what you end up with is the \"diff\" (one reason i think this is that there seem to be artifacts due to rounding…",[166,173,180,184],{"value":167,"source":87,"evidence":168},"Thingiview.js client-side diff",[169],{"id":170,"by":171,"text":172},"4394090","nrp","I did something similar using Thingiview.js as a base: http:\u002F\u002Fn0r.org\u002Fthingiview.js\u002Fexamples\u002Fclient_side_diff.html Source: https:\u002F\u002Fgithub.com\u002Fnrpatel\u002Fthingiview.js",{"value":174,"source":87,"evidence":175},"OpenJSCAD",[176],{"id":177,"by":178,"text":179},"4394217","kanzure","> Do you mean OpenSCAD and STL diffs side by side, and live edited, so when you change the code, you see the model change? Well, there's always openjscad. I don't think it was a…",{"value":181,"source":87,"evidence":182},"Tinkercad",[183],{"id":101,"by":102,"text":103},{"value":185,"source":87,"evidence":186},"3drepo",[187],{"id":188,"by":189,"text":190},"4407250","jozefdobos","You might want to look at http:\u002F\u002F3drepo.org for a robust integrated solution including diffing and tailored 3D version control.",{"comments":192,"answered":32,"key":193},15,[194,195,198],{"id":51,"text":52},{"id":196,"text":197},"4393844","Ahh, yes, that makes a lot of sense. And then if someone jumps around, send the whole model, but if it's sequential, just the diff will work.",{"id":54,"text":55},{"commenters":200,"max_depth":201,"maker_replies":192,"first_comment_mins":192,"lifespan_hours":202},18,7,87,[204,206,208,210,214,215,218,220,222,225,227,230,232,235,238,239,241,242,244,246,248,251,253,256,258,259,260,261,263,264,266,268,270,273,277,278,281,283,286],[51,38,38,205,10,43],"project\u002Fneutral\u002Fidea",[124,38,33,207,125,38],"project\u002Fmixed\u002Fperformance",[196,38,38,209,10,43],"maker\u002Fneutral\u002Fperformance",[211,38,38,212,213,38],"4394367","commenter\u002Fneutral\u002Fidea","delinka",[54,38,38,212,10,43],[216,38,38,217,213,38],"4397248","commenter\u002Fneutral\u002Fperformance",[101,43,33,219,102,38],"project\u002Fmixed\u002Fdesign",[170,34,38,221,171,38],"other\u002Fneutral\u002Fidea",[223,34,38,224,10,43],"4394404","maker\u002Fpositive\u002Fnone",[148,33,33,226,149,38],"project\u002Fneutral\u002Fdesign",[228,33,38,229,10,43],"4395230","maker\u002Fneutral\u002Fdesign",[90,41,31,231,91,38],"project\u002Fpositive\u002Fidea",[233,41,38,234,10,43],"4393912","maker\u002Fneutral\u002Fnone",[236,41,33,234,237,38],"4394724","bdickason",[141,31,33,219,142,38],[109,32,43,240,110,38],"project\u002Fcritical\u002Fperformance",[73,32,38,209,10,43],[128,32,33,243,129,38],"project\u002Fneutral\u002Fperformance",[162,32,38,245,163,38],"commenter\u002Fneutral\u002Fexecution",[247,32,38,212,178,38],"4394211",[249,32,38,250,10,43],"4394243","maker\u002Fneutral\u002Fidea",[252,32,38,212,178,38],"4394561",[254,32,38,255,10,43],"4394238","maker\u002Fneutral\u002Fexecution",[257,32,33,243,178,38],"4394206",[156,32,43,240,110,38],[113,32,38,209,10,43],[94,201,31,231,95,38],[262,201,38,250,10,43],"4393831",[135,201,33,226,95,38],[265,201,38,229,10,43],"4394379",[177,201,38,267,178,38],"other\u002Fneutral\u002Fnone",[269,201,38,209,10,43],"4394375",[188,271,38,272,189,38],8,"other\u002Fcritical\u002Fidea",[274,275,33,243,276,38],"4393993",9,"voltagex_",[79,275,38,209,10,43],[279,17,31,231,280,38],"4394305","drone",[282,17,38,250,10,43],"4394700",[284,17,31,285,280,38],"4399081","maker\u002Fpositive\u002Fidea",[287,288,31,289,290,38],"4394020",11,"project\u002Fpositive\u002Fnone","vj44",[],[293,297,302,307,312,316],{"id":294,"name":295,"points":296,"category":19},"4408070","bootstrap-daterangepicker",363,{"id":298,"name":299,"points":300,"category":301},"4404204","BigVideo.js",244,"languages",{"id":303,"name":304,"points":305,"category":306},"4418621","SideProjects.com",236,"learning_science",{"id":308,"name":309,"points":310,"category":311},"4413713","Nifty",171,"web_saas",{"id":313,"name":314,"points":202,"category":315},"4392656","Cobalt-Calibur-3","games",{"id":317,"name":318,"points":319,"category":320},"4401550","LiquidText",82,"productivity",false,"v2",{"id":324,"name":5,"line":6,"ai":321,"cat":19,"year":12,"points":13,"comments":14,"rec":28,"s":29,"top":17,"kw":325,"maker":10,"domain":5,"tier":18,"attempts":38,"strip":326,"url":9,"mix":327,"praise":86,"objection":106,"sub":20},4393704,[23,24,25,26,27],"030000300305033103000003105030000305055",[31,32,33,34],1793990884267]