[{"data":1,"prerenderedAt":313},["ShallowReactive",2],{"project-32738654":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":29,"sentiment":30,"stance_mix":31,"scored_comments":35,"aspects":36,"strip":41,"post_text":44,"what":45,"said":85,"maker_in_thread":174,"shape":185,"grid":189,"attempts":276,"same_week":277,"maker_shows":38,"maker_hidden":305,"reader_version":306,"card":307},"32738654","Bauble","Make 3D art in your browser using Lisp and math","title","Show HN: Make 3D art in your browser using Lisp and math","https:\u002F\u002Fbauble.studio","bauble.studio","ianthehenry",1662478887,2022,252,38,189,2570,8,"legend","creative","generative 3d art","web_app",[24,25,26,27,28],"signed distance functions","raymarching","shader","procedural art","janet","loved",0.276,{"positive":32,"neutral":33,"mixed":34,"critical":34},6,9,0,15,{"idea":37,"docs":39,"execution":40},{"positive":38,"critical":34},2,{"positive":34,"critical":34},{"positive":34,"critical":34},[42,34,42,34,34,34,34,34,34,43,42,34,43,34,42,42,34,34,34,34,43,34,34,42,34,34,34,43,34,34,43,34,42,34,42,34,42,43],3,5,"Bauble is a toy that I've been working on for a few weeks, and I think it's reached the point where other people could have fun with it!\n\nBauble is based on raymarching signed distance functions, which are kind of like... 3D vector art? They're pretty common in the procedural art community and you can do some amazing things with them, but normally writing SDFs means writing low-level shader code.\n\nI wanted to play with SDFs, but I found it very frustrating to translate \"I want to rotate this\" into \"okay, that means I have to construct a rotation matrix, and then apply it to the current point, ",{"problem":46,"audience":52,"pricing":57,"motivation":58,"time_to_build":57,"stack":62,"openness":83,"stage":84,"team_size":83},{"value":47,"source":48,"evidence":49},"Writing SDF shaders is low-level and frustrating; wants high-level way to rotate and transform shapes","maker",[50],{"id":51},"post",{"value":53,"source":54,"evidence":55},"People playing with procedural 3D art and SDFs","inferred",[56],{"id":51},null,{"value":59,"source":48,"evidence":60},"Wanted to play with SDFs without writing low-level shader code",[61],{"id":51},[63,67,71,77],{"value":64,"source":48,"evidence":65},"Janet",[66],{"id":51},{"value":68,"source":48,"evidence":69},"GLSL",[70],{"id":51},{"value":72,"source":48,"evidence":73},"WASM",[74],{"id":75,"by":11,"text":76},"32741809","Ohhh I totally missed that you're the author of Glicol. Okay. So you integrated Hydra as like a first-class thing -- I see I see. I thought you were plugging two 3rd party things…",{"value":78,"source":48,"evidence":79},"CodeMirror",[80],{"id":81,"by":11,"text":82},"32739448","It's CodeMirror! All I had to do was write a Janet grammar for it -- very easy to do. CodeMirror is pretty amazing -- I was able to implement the \"edit values with your mouse\" by…","unknown","beta",{"praise":86,"objections":110,"requests":118,"questions":129,"alternatives":137},[87,103],{"value":88,"source":89,"evidence":90},"Beautiful demo and interesting project","commenter",[91,95,99],{"id":92,"by":93,"text":94},"32739349","chaosprint","Wow, this is so beautiful! Your web app demo is very neat. Do you think this can be used for live coding visuals? I'd love to use it together with Glicol(https:\u002F\u002Fglicol.org). So…",{"id":96,"by":97,"text":98},"32745597","xrd","This demo and the comments makes me wish for a button underneath the original link that says \"upvote everything here.\" What an incredible project and what great comments. Thanks…",{"id":100,"by":101,"text":102},"32741780","averysmallbird","This is beautiful. My apologies if I missed it, but is it possible to download the produced figure as an STL (or something equivalent)?",{"value":104,"source":89,"evidence":105},"Useful high-level DSL for learning the math",[106],{"id":107,"by":108,"text":109},"32746055","eyelidlessness","This is awesome and I will avail myself of it pretty quickly. I may not use it directly for my project (I’m targeting SVG), but it already feels like I can benefit from the high…",[111],{"value":112,"source":89,"evidence":113},"Cannot export meshes or STL files",[114,115],{"id":100,"by":101,"text":102},{"id":116,"by":11,"text":117},"32741869","No; Bauble doesn't know how to \"rasterize\" SDFs into meshes; it only knows how to raymarch them. It's theoretically possible, but it's a pretty complex problem that would take me…",[119,125],{"value":120,"source":89,"evidence":121},"Export recordings or 3D models",[122],{"id":123,"by":11,"text":124},"32742730","STL is a format for 3D geometry, so the GP is asking if there's a way to export the 3D models themselves. Bauble will have a way to export recordings eventually! That's much…",{"value":126,"source":89,"evidence":127},"Integration with live coding tools like Glicol",[128],{"id":92,"by":93,"text":94},[130],{"value":131,"source":89,"evidence":132},"Can it be used for live coding visuals?",[133,134],{"id":92,"by":93,"text":94},{"id":135,"by":93,"text":136},"32739603","Something like this: https:\u002F\u002Fyoutu.be\u002FiKj7IibG0OU I think both Hydra and p5.js render things to a \u003Ccanvas>, which is probably the same as what your demo does, right? Then we just…",[138,146,153,160,167],{"value":139,"source":89,"evidence":140},"libfive",[141,145],{"id":142,"by":143,"text":144},"32739291","fros1y","You should check out libfive! https:\u002F\u002Flibfive.com\u002Fstudio\u002F. Previously discussed here: https:\u002F\u002Fnews.ycombinator.com\u002Fitem?id=26930822. It is the child of Ao, previously discussed…",{"id":116,"by":11,"text":117},{"value":147,"source":89,"evidence":148},"Shadertoy",[149],{"id":150,"by":151,"text":152},"32742910","andrewstuart","If you like this sort of thing then also https:\u002F\u002Fwww.glslsandbox.com\u002F?page=4 and https:\u002F\u002Fwww.shadertoy.com Unfortunately glslsanbox is not moderated very well so there's lots of…",{"value":154,"source":89,"evidence":155},"shaderpark",[156],{"id":157,"by":158,"text":159},"32743038","tehsauce","Shamelessly mentioning our project shaderpark, which is also a live-coding interface for working with SDFs but using javascript! https:\u002F\u002Fshaderpark.com\u002F",{"value":161,"source":89,"evidence":162},"retrace.gl",[163],{"id":164,"by":165,"text":166},"32743312","stasilo","I've written a tool somewhat similar that can export meshes of sdf's created using a javascript api, check it out: https:\u002F\u002Fgithub.com\u002Fstasilo\u002Fretrace.gl",{"value":168,"source":89,"evidence":169},"ImplicitCAD",[170],{"id":171,"by":172,"text":173},"32811925","gnramires","There's also ImplicitCAD (https:\u002F\u002Fgithub.com\u002FHaskell-Things\u002FImplicitCAD) which produces STLs, as it is designed for CAD. It uses implicit functions, which I believe are similar…",{"comments":175,"answered":176,"key":177},10,7,[178,181,184],{"id":179,"text":180},"32739550","Thanks! I'm not really sure how to make it work with Glicol -- I don't know anything about the livecoding world. But in theory it would be easy to add a new \"magic variable\"…",{"id":182,"text":183},"32739937","Ohhh I think I misunderstood how this works. You write the visualization ahead of time, and then you livecode the music only? Bauble would work well for that -- you could just…",{"id":75,"text":76},{"commenters":186,"max_depth":176,"maker_replies":175,"first_comment_mins":187,"lifespan_hours":188},20,34,149,[190,192,195,196,197,200,201,203,207,210,212,213,214,217,218,221,225,226,228,229,230,232,234,236,240,242,246,248,251,252,254,255,256,260,263,266,268,272],[92,34,42,191,93,34],"project\u002Fneutral\u002Fidea",[179,34,34,193,11,194],"maker\u002Fneutral\u002Fidea",1,[135,34,42,191,93,34],[182,34,34,193,11,194],[198,34,34,199,93,34],"32740720","commenter\u002Fneutral\u002Fnone",[75,34,34,193,11,194],[202,34,34,199,93,34],"32742409",[204,34,34,205,206,34],"32743940","other\u002Fneutral\u002Fnone","ynx",[208,34,34,205,209,34],"32744762","soulofmischief",[96,194,43,211,97,34],"project\u002Fpositive\u002Fnone",[100,38,42,191,101,34],[116,38,34,191,11,194],[215,38,43,216,101,34],"32742110","maker\u002Fpositive\u002Fnone",[171,38,34,205,172,34],[219,38,42,191,220,34],"32741876","frabert",[222,38,42,223,224,34],"32742389","project\u002Fneutral\u002Fnone","jcynix",[123,38,34,193,11,194],[227,38,34,199,224,34],"32742872",[164,38,34,205,165,34],[157,42,34,205,158,34],[231,42,43,211,93,34],"32743123",[233,42,34,205,165,34],"32743330",[235,42,34,205,158,34],"32743389",[237,238,42,191,239,34],"32743232",4,"anhner",[241,238,34,193,11,194],"32743335",[243,238,34,244,245,34],"32743713","other\u002Fneutral\u002Fidea","spapas82",[247,238,34,193,11,194],"32743771",[249,238,43,250,108,34],"32746077","project\u002Fpositive\u002Fidea",[142,43,34,205,143,34],[253,43,34,193,11,194],"32739345",[107,32,43,250,108,34],[150,176,34,205,151,34],[257,18,42,258,259,34],"32739200","maker\u002Fneutral\u002Fdocs","billconan",[261,18,34,262,11,194],"32739294","maker\u002Fneutral\u002Fexecution",[264,33,42,262,265,34],"32739260","icu",[81,33,34,267,11,194],"maker\u002Fpositive\u002Fexecution",[269,175,42,270,271,34],"32816842","maker\u002Fneutral\u002Fnone","shadytrees",[273,274,43,211,275,34],"32740610",11,"dejongh",[],[278,283,288,292,296,301],{"id":279,"name":280,"points":281,"category":282},"32690410","Openship",1335,"web_saas",{"id":284,"name":285,"points":286,"category":287},"32747067","quake_watch",692,"games",{"id":289,"name":290,"points":291,"category":20},"32688646","Wavvy",530,{"id":293,"name":294,"points":295,"category":287},"32717133","Zelda Breath of the Wild Street View",456,{"id":297,"name":298,"points":299,"category":300},"32753471","TinyClock",192,"productivity",{"id":302,"name":303,"points":304,"category":300},"32732158","Chitchatter",191,false,"v2",{"id":308,"name":5,"line":6,"ai":305,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":309,"top":18,"kw":310,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":311,"url":9,"mix":312,"praise":88,"objection":112,"sub":21},32738654,0.28,[24,25,26,27,28],"30300000053050330000500300050050303035",[32,33,34,34],1794036624565]