[{"data":1,"prerenderedAt":351},["ShallowReactive",2],{"project-26142864":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":34,"aspects":35,"strip":41,"post_text":43,"what":44,"said":78,"maker_in_thread":181,"shape":189,"grid":194,"attempts":312,"same_week":313,"maker_shows":288,"maker_hidden":343,"reader_version":344,"card":345},"26142864","sdf","3D Meshes of Signed Distance Functions in Python","title","Show HN: 3D Meshes of Signed Distance Functions in Python","https:\u002F\u002Fgithub.com\u002Ffogleman\u002Fsdf","github.com","fogleman",1613398006,2021,157,51,309,2533,13,"notable","dev_tools","3d modeling library","library",[24,25,26,27],"signed distance functions","3d printing","marching cubes","python cad","loved",0.433,{"positive":31,"neutral":31,"mixed":32,"critical":33},12,1,0,25,{"execution":36,"design":37,"idea":39},{"positive":33,"critical":33},{"positive":38,"critical":33},5,{"positive":40,"critical":33},6,[33,42,33,42,42,33,33,38,38,38,42,33,33,33,38,33,38,33,38,33,42,38,38,42,33,42,38,33,42,42,33,38,38,42,33,42,33,33,33,38],3,null,{"problem":45,"audience":43,"pricing":43,"motivation":52,"time_to_build":43,"stack":56,"openness":77,"stage":77,"team_size":77},{"value":46,"source":47,"evidence":48},"Making 3D models for printing without using OpenSCAD","maker",[49],{"id":50,"by":11,"text":51},"26144352","Hi HN. Well, I wanted to make a 3D model and 3D print it, but I just didn't want to use OpenSCAD. So I ended up making a whole new 3D modeling library based on signed distance…",{"value":53,"source":47,"evidence":54},"Wanted to 3D print models without using OpenSCAD",[55],{"id":50,"by":11,"text":51},[57,67,73],{"value":58,"source":47,"evidence":59},"Python",[60,64],{"id":61,"by":62,"text":63},"26162196","emmanueloga_","Not sure how this will be received in HN, but I just want to say... when I grow up, I want to be like fogleman :-). Just look at his portfolio of truly great projects [1].…",{"id":65,"by":11,"text":66},"26162236","I absolutely prefer \"boring\" tech. Thanks for the kind words.",{"value":68,"source":47,"evidence":69},"scipy",[70],{"id":71,"by":11,"text":72},"26162230","Let me know if you do anything cool with it! I just got text working, which is very exciting. It was surprisingly easy, too. 1) Render text to a high resolution 1-bit array using…",{"value":74,"source":47,"evidence":75},"PIL",[76],{"id":71,"by":11,"text":72},"unknown",{"praise":79,"objections":107,"requests":119,"questions":142,"alternatives":154},[80,96],{"value":81,"source":82,"evidence":83},"Elegant library and API design","commenter",[84,88,92],{"id":85,"by":86,"text":87},"26162000","bhouston","So elegant. Nice job!",{"id":89,"by":90,"text":91},"26162973","jmpeax","What a beautiful library and api! I don't 3D print, but I'll be studying your code as a master-class in how python should be done.",{"id":93,"by":94,"text":95},"26151859","stuntkite","This is great. Thank you for making it! The api layout tells me you are a nice person.",{"value":97,"source":82,"evidence":98},"Simple syntax and easy to use",[99,103],{"id":100,"by":101,"text":102},"26145914","tarsiel","Very cool, love the simple syntax",{"id":104,"by":105,"text":106},"26166417","kavalg","Looks pretty cool! Kind of reminds me of Google sketchup but in code.",[108],{"value":109,"source":82,"evidence":110},"Marching cubes mesh quality needs high resolution",[111,115],{"id":112,"by":113,"text":114},"26150110","sjkelly","That's pretty cool. I see you are using marching cubes. How are you handling sharp geometry (I'm assuming previews use a finite difference for normals)? Also I see you are at…",{"id":116,"by":117,"text":118},"26166795","andybak","Or Surface Nets. Nice compromise of speed and quality. Marching cubes needs a lot of resolution and it's imperfections are especially ugly my eyes. Maybe mesh resolution isn't a…",[120,127,131],{"value":121,"source":82,"evidence":122},"Publish to PyPI",[123],{"id":124,"by":125,"text":126},"26163510","1wd","Nice! Do you have any plans to publish to PyPI? Is there an API to access numpy array containing the evaluated SDF volume?",{"value":128,"source":82,"evidence":129},"API to access numpy array of evaluated SDF volume",[130],{"id":124,"by":125,"text":126},{"value":132,"source":82,"evidence":133},"Shader or real-time ray marching output",[134,138],{"id":135,"by":136,"text":137},"26163690","nopsles","It would be really cool to have a library like this that could spit out a shader for real-time rendering with ray marching on your GPU and then use marching cubes to compute the…",{"id":139,"by":140,"text":141},"26164216","jmiskovic","I don't think rendering is the end goal here - the bigger potential is real-time manipulation of SDFs similar to Dreams geometry editor. As for rendering, the SDF can be…",[143,147],{"value":144,"source":82,"evidence":145},"How are sharp edges and normals handled",[146],{"id":112,"by":113,"text":114},{"value":148,"source":82,"evidence":149},"Why not use OpenSCAD",[150],{"id":151,"by":152,"text":153},"26163092","blt","out of curiosity, why did you not want to use OpenSCAD?",[155,163,170,177],{"value":156,"source":82,"evidence":157},"OpenSCAD",[158,159],{"id":50,"by":11,"text":51},{"id":160,"by":161,"text":162},"26165042","bvrmn","OpenSCAD is pretty rigorous regarding defining relative geometry. Like shifting origin and sketch on plane rotated 30° around X. It leads to unnecessary math to place objects.",{"value":164,"source":82,"evidence":165},"CadQuery",[166],{"id":167,"by":168,"text":169},"26164343","jononor","Impressive work! CadQuery is another library for programming 3d-models in Python. A good alternative to OpenSCAD. Has integration in FreeCAD but can also be used stand-alone.",{"value":171,"source":82,"evidence":172},"sdfx",[173],{"id":174,"by":175,"text":176},"26162163","alanbernstein","I am also a big fan of iquilez, and a little fed up with openscad. I recently tried out deadsy\u002Fsdfx, a similar tool written in golang. I was impressed and I enjoyed using it, but…",{"value":178,"source":82,"evidence":179},"libfive",[180],{"id":112,"by":113,"text":114},{"comments":182,"answered":38,"key":183},7,[184,185,188],{"id":50,"text":51},{"id":186,"text":187},"26150389","Yes, I'm well aware of libfive! I'm not doing anything special for sharp geometry. For now you just need to use sufficient resolution until it looks \"good enough.\" Normals are…",{"id":65,"text":66},{"commenters":190,"max_depth":191,"maker_replies":182,"first_comment_mins":192,"lifespan_hours":193},32,8,159,231,[195,197,199,200,202,205,206,209,211,214,216,218,219,221,223,226,229,231,233,237,240,242,243,246,249,251,254,255,257,261,263,265,266,269,271,274,277,279,282,285,286,290,292,296,298,299,302,304,306,308,310],[50,33,33,196,11,32],"maker\u002Fpositive\u002Fidea",[112,33,42,198,113,33],"maker\u002Fneutral\u002Fexecution",[186,33,33,198,11,32],[201,33,42,198,86,33],"26162012",[203,33,42,198,204,33],"26164708","user-the-name",[116,33,42,198,117,33],[207,33,33,208,204,33],"26167238","commenter\u002Fneutral\u002Fnone",[210,33,33,208,117,33],"26169089",[212,33,33,208,213,33],"26259813","tdotuos",[93,33,38,215,94,33],"maker\u002Fpositive\u002Fdesign",[85,33,38,217,86,33],"project\u002Fpositive\u002Fdesign",[89,33,38,217,90,33],[151,33,42,220,152,33],"maker\u002Fneutral\u002Fnone",[160,33,33,222,161,33],"other\u002Fneutral\u002Fnone",[224,33,33,222,225,33],"26165134","alpaca128",[227,33,33,222,228,33],"26167119","sitkack",[230,33,33,222,225,33],"26169972",[232,33,33,208,152,33],"26170081",[234,33,38,235,236,33],"26165366","project\u002Fpositive\u002Fidea","tboerstad",[238,33,33,222,239,33],"26166572","mfost",[61,32,38,241,62,33],"maker\u002Fpositive\u002Fnone",[65,32,33,220,11,32],[244,32,38,196,245,33],"26162649","etrautmann",[247,32,42,220,248,33],"26163005","pottertheotter",[250,32,33,222,245,33],"26163382",[135,252,42,253,136,33],2,"project\u002Fneutral\u002Fidea",[174,42,38,235,175,33],[71,42,33,256,11,32],"project\u002Fneutral\u002Fexecution",[258,259,38,235,260,33],"26162783",4,"cableclasper",[124,38,42,262,125,33],"project\u002Fneutral\u002Fnone",[264,38,33,220,11,32],"26166666",[167,40,33,222,168,33],[267,182,42,253,268,33],"26161824","curiousmech",[270,182,38,235,86,33],"26161999",[272,182,33,222,273,33],"26162071","userbinator",[275,182,42,276,113,33],"26162192","project\u002Fmixed\u002Fidea",[278,182,33,208,213,33],"26259918",[280,182,42,253,281,33],"26163026","mdtusz",[283,182,33,222,284,33],"26164490","nness",[104,191,38,217,105,33],[287,288,38,235,289,33],"26164536",9,"127",[291,288,33,220,11,32],"26166670",[293,294,42,253,295,33],"26162410",10,"neolog",[297,294,33,220,11,32],"26162487",[139,294,42,253,140,33],[300,294,33,208,301,33],"26164577","hjaarnio",[303,294,33,222,204,33],"26164743",[305,294,33,222,140,33],"26164797",[307,294,33,222,204,33],"26164929",[309,294,33,222,117,33],"26166841",[100,311,38,217,101,33],11,[],[314,319,324,328,333,338],{"id":315,"name":316,"points":317,"category":318},"26134915","Khan-dl",473,"learning_science",{"id":320,"name":321,"points":322,"category":323},"26138446","ustaxes.org",465,"web_saas",{"id":325,"name":326,"points":327,"category":20},"26168285","Ray.so",384,{"id":329,"name":330,"points":331,"category":332},"26154038","Endgame",368,"security_privacy",{"id":334,"name":335,"points":336,"category":337},"26131123","Jam",317,"consumer_social",{"id":339,"name":340,"points":341,"category":342},"26118756","natural-language-youtube-search",264,"ai",false,"v2",{"id":346,"name":5,"line":6,"ai":343,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":347,"top":18,"kw":348,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":349,"url":9,"mix":350,"praise":81,"objection":109,"sub":21},26142864,0.43,[24,25,26,27],"0303300555300050505035530350330553030005",[31,31,32,33],1793991023749]