[{"data":1,"prerenderedAt":430},["ShallowReactive",2],{"project-26899066":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":35,"aspects":36,"strip":43,"post_text":45,"what":46,"said":86,"maker_in_thread":206,"shape":215,"grid":219,"attempts":388,"same_week":393,"maker_shows":33,"maker_hidden":422,"reader_version":423,"card":424},"26899066","Triangula","A tool to generate triangulated art from images","title","Show HN: I built a tool to generate triangulated art from images","https:\u002F\u002Fgithub.com\u002FRH12503\u002FTriangula","github.com","rh12503",1619069157,2021,296,69,117,2533,5,"legend","creative","generative art","desktop_app",[24,25,26,27],"triangulation","low poly art","image vectorization","genetic algorithm","loved",0.471,{"positive":31,"neutral":32,"mixed":33,"critical":34},17,18,1,0,36,{"design":37,"idea":39,"performance":41,"execution":42},{"positive":38,"critical":34},6,{"positive":40,"critical":34},11,{"positive":34,"critical":34},{"positive":34,"critical":34},[34,34,34,18,18,18,18,44,34,18,34,34,18,44,18,44,18,18,44,18,44,34,34,44,34,44,44,18,44,44,44,18,34,18,18,18,18,44,44,18],3,null,{"problem":47,"audience":45,"pricing":45,"motivation":59,"time_to_build":45,"stack":66,"openness":83,"stage":84,"team_size":85},{"value":48,"source":49,"evidence":50},"Turns photos into low-poly triangle mesh art.","commenter",[51,55],{"id":52,"by":53,"text":54},"26900628","jmkd","This is great, especially the SF example as it reminds me of Brian Lotti's paintings [1] A common technique for painters is to establish areas of colour in the scene that are…",{"id":56,"by":57,"text":58},"26902935","scrooched_moose","Very cool. Images like this are fairly popular in woodworking for low poly pet art:…",{"value":60,"source":61,"evidence":62},"Started as a generative art side project.","maker",[63],{"id":64,"by":11,"text":65},"26902889","I originally intended this to be a generative art side project, but there's been a magnitude of great ideas commented here! The graph idea could work, but the algorithm produces…",[67,77],{"value":68,"source":61,"evidence":69},"Go",[70,73],{"id":71,"by":11,"text":72},"26902187","Not particularly, but Go is fast, compiles to small binaries, and supports multithreading with coroutines which works well for genetic algorithms.",{"id":74,"by":75,"text":76},"26899187","trinovantes","Somewhat of a tangent: this project's GUI was built using Wails [1]. According to their docs, \"The traditional method of providing web interfaces to Go programs is via a built-in…",{"value":78,"source":61,"evidence":79},"Wails v1 GUI framework",[80],{"id":81,"by":11,"text":82},"26899222","Wails v1 (which this project uses) uses Webview for rendering it's frontend. You can read more about how Wails works here: https:\u002F\u002Fwails.app\u002Fabout\u002Fconcepts\u002F Also because I'm…","open_source","launched","unknown",{"praise":87,"objections":122,"requests":136,"questions":169,"alternatives":180},[88,99,114],{"value":89,"source":49,"evidence":90},"Impressive, polished UI that is easy to use",[91,95],{"id":92,"by":93,"text":94},"26903767","chias","I really like this. Others have already commented on the utility \u002F impressiveness of the tool itself, but on a completely different front: you also put effort into making a…",{"id":96,"by":97,"text":98},"26900422","imhoguy","Apart of very cool visual effect, the app got my attention as an interesting example of lightweight GUI use with Go. Another rabbit hole for today. Thanks!",{"value":100,"source":49,"evidence":101},"Attractive shading that preserves highlights and fine lines",[102,106,110],{"id":103,"by":104,"text":105},"26900334","erwinh","Thats pretty sweet shading. Love how it captures the sunlight reflecting on the buildings in the SF example without just averaging out those colors and making it look bland.",{"id":107,"by":108,"text":109},"26900496","thomasahle","I'm impressed it manages to preserve the frames of the man's glasses. Did you do that manually? Or does the algorithm somehow detect lines like that?",{"id":111,"by":112,"text":113},"26906056","ikkjo","Thanks for sharing! Interesting to see how the algorithm preserves thin dark lines like in the glasses or the face of the clown. One of my side projects produces similar images:…",{"value":115,"source":49,"evidence":116},"Cool generative art result",[117,118],{"id":52,"by":53,"text":54},{"id":119,"by":120,"text":121},"26901324","willtemperley","Love it. There's a real use in generating cartographic representations of aerial imagery there I think.",[123,130],{"value":124,"source":49,"evidence":125},"Triangles visible and aliased at higher compression",[126,127],{"id":56,"by":57,"text":58},{"id":128,"by":11,"text":129},"26900536","That's an interesting idea! I suppose it could be used for compression, although my intentions were for this to be a generative art project. I triangulated a 1988×1491 jpg using…",{"value":131,"source":49,"evidence":132},"Slow genetic algorithm compared with Delaunay methods",[133],{"id":134,"by":75,"text":135},"26899310","My main concern is why the choice of a (slow) genetic algorithm vs a more traditional Delaunay triangulation algorithm?",[137,148,158],{"value":138,"source":49,"evidence":139},"Export to SVG or vector format",[140,144],{"id":141,"by":142,"text":143},"26900725","hapidjus","You could probably make it into an SVG file to reduce the size even more.",{"id":145,"by":146,"text":147},"26904959","floatrock","Instead of outputting an image, can you output the points and triangles, eg as an SVG? Could be fun to experiment with animation... especially with something like the astronaut,…",{"value":149,"source":49,"evidence":150},"Limit to a region or palette",[151,154],{"id":152,"by":11,"text":153},"26903032","For low-poly art, I wonder if there could be a way to only triangulate a specific area. (eg. only the pet and not the background) Also, if you need something less aliased, check…",{"id":155,"by":156,"text":157},"26903727","1024core","I wonder if you can constrain the problem a bit more: say, limit the number of triangles that can be used; limit the color palette to a small set of colors. It would make for…",{"value":159,"source":49,"evidence":160},"Use as image placeholder or compression",[161,165],{"id":162,"by":163,"text":164},"26900382","martini333","Looks cool! And might be useful for svg placeholders before lazy-loading larger images.",{"id":166,"by":167,"text":168},"26901229","gillesjacobs","axe312ger\u002FSQIP[1] does this effectively in low-quality image loading relying on the before-mentioned fogleman\u002Fprimitive library. I think OP's project would be great to add as a…",[170,176],{"value":171,"source":49,"evidence":172},"Is there a 3D or other export format?",[173],{"id":174,"by":11,"text":175},"26910341","This is amazing! Is there any way to download this in a 3D file format?",{"value":177,"source":49,"evidence":178},"Why a genetic algorithm rather than Delaunay triangulation?",[179],{"id":134,"by":75,"text":135},[181,188,192,199],{"value":182,"source":49,"evidence":183},"Primitive (fogleman)",[184],{"id":185,"by":186,"text":187},"26899459","clusmore","This looks cool. It reminds me a lot of Primitive Pictures[0], coincidentally also written in Go, which supports other shapes besides triangles as well. [0]:…",{"value":189,"source":49,"evidence":190},"esimov\u002Ftriangle",[191],{"id":152,"by":11,"text":153},{"value":193,"source":49,"evidence":194},"Geometrize",[195],{"id":196,"by":197,"text":198},"26905829","adrian_mrd","Similar project worth checking out is Geometrize [1] also available on GitHub [2] [1] https:\u002F\u002Fwww.geometrize.co.uk\u002F [2] https:\u002F\u002Fgithub.com\u002FTw1ddle\u002Fgeometrize",{"value":200,"source":49,"evidence":201},"Boxy SVG",[202],{"id":203,"by":204,"text":205},"26905912","jarek-foksa","Also check out my web app Boxy SVG [1] which integrates both vectorization algorithms as \"Triangulate\" and \"Primitivize\" generators [2]. [1] https:\u002F\u002Fboxy-svg.com\u002Fapp [2]…",{"comments":207,"answered":208,"key":209},16,10,[210,211,212],{"id":174,"text":175},{"id":152,"text":153},{"id":213,"text":214},"26899483","Thanks! One main difference from Primitive is that Primitive's shapes can overlap, while Triangula generates a triangulation.",{"commenters":216,"max_depth":38,"maker_replies":207,"first_comment_mins":217,"lifespan_hours":218},45,25,30,[220,224,228,230,232,234,236,238,241,242,243,246,249,252,253,255,257,258,261,263,265,269,272,274,277,279,283,284,285,288,291,293,296,298,300,301,303,305,309,312,315,317,319,321,322,324,326,328,329,332,334,338,339,341,344,346,349,352,355,358,361,364,368,370,372,376,380,382,385],[221,34,34,222,223,34],"26904150","commenter\u002Fneutral\u002Fnone","fenomas",[225,34,34,226,227,34],"26904561","commenter\u002Fpositive\u002Fnone","hmsimha",[229,34,34,222,223,34],"26904922",[174,34,34,231,11,33],"project\u002Fneutral\u002Fnone",[233,34,34,222,223,34],"26911033",[56,33,18,235,57,34],"project\u002Fpositive\u002Fdesign",[152,33,34,237,11,33],"project\u002Fneutral\u002Fidea",[52,239,18,240,53,34],2,"project\u002Fpositive\u002Fidea",[185,44,18,240,186,34],[213,44,34,237,11,33],[244,44,18,240,245,34],"26900301","yhoneycomb",[247,44,44,231,248,34],"26900304","JimDabell",[250,44,44,231,251,34],"26901990","elb2020",[71,44,34,231,11,33],[203,44,34,254,204,34],"other\u002Fneutral\u002Fnone",[196,256,44,231,197,34],4,[92,18,18,235,93,34],[259,38,34,222,260,34],"26907379","jonty",[262,38,34,222,11,33],"26910346",[264,38,34,222,260,34],"26913489",[266,267,18,240,268,34],"26903957",7,"crazygringo",[270,267,34,254,271,34],"26905882","nitrogen",[145,273,44,237,146,34],8,[275,273,44,231,276,34],"26905403","senden9",[103,278,18,235,104,34],9,[280,208,44,281,282,34],"26900438","project\u002Fneutral\u002Fperformance","Biqh1",[128,208,34,281,11,33],[141,208,44,237,142,34],[286,208,18,240,287,34],"26901473","jacob019",[289,208,18,240,290,34],"26902267","fogihujy",[292,208,34,254,204,34],"26906132",[294,208,44,237,295,34],"26903998","mdiesel",[297,208,18,235,167,34],"26901057",[299,208,34,237,11,33],"26901138",[166,208,44,281,167,34],[107,40,44,302,108,34],"project\u002Fneutral\u002Fdesign",[304,40,34,237,11,33],"26900619",[306,307,34,254,308,34],"26902117",12,"kamranjon",[310,307,34,311,11,33],"26902170","project\u002Fneutral\u002Fexecution",[313,307,44,311,314,34],"26903599","ad404b8a372f2b9",[316,307,34,311,11,33],"26912235",[74,318,34,254,75,34],13,[81,318,34,320,11,33],"maker\u002Fneutral\u002Fnone",[134,318,44,281,75,34],[323,318,34,237,11,33],"26899325",[325,318,44,311,75,34],"26900189",[327,318,34,311,11,33],"26900416",[96,318,18,235,97,34],[330,318,44,231,331,34],"26901242","zibzab",[333,318,34,231,11,33],"26901395",[335,336,44,237,337,34],"26902543",14,"motohagiography",[64,336,34,237,11,33],[340,336,44,237,337,34],"26903152",[342,336,34,254,343,34],"26903729","birktj",[162,345,18,240,163,34],15,[347,207,34,254,348,34],"26901066","franze",[350,31,34,254,351,34],"26901836","kstenerud",[353,32,18,240,354,34],"26902805","sigmonsays",[356,32,34,357,11,33],"26902909","maker\u002Fpositive\u002Fnone",[359,32,18,240,360,34],"26904354","matt_the_bass",[362,32,34,254,363,34],"26904367","matthiasv",[365,366,18,240,367,34],"26902685",19,"tgv",[119,369,18,240,120,34],20,[111,371,44,311,112,34],21,[373,374,34,254,375,34],"26906022",22,"kowlo",[377,378,34,254,379,34],"26904220",23,"enchiridion",[155,381,44,237,156,34],24,[383,381,44,384,268,34],"26905677","project\u002Fmixed\u002Fidea",[386,217,18,235,387,34],"26904015","pytlicek",[389,390],{"id":4,"t":12,"points":14,"comments":15},{"id":391,"t":392,"points":33,"comments":33},"27245224",1621679450,[394,399,404,409,413,418],{"id":395,"name":396,"points":397,"category":398},"26969173","ProjectiFi",479,"finance_crypto",{"id":400,"name":401,"points":402,"category":403},"26900079","Simulator Money",409,"learning_science",{"id":405,"name":406,"points":407,"category":408},"26929370","Verilog2factorio",313,"dev_tools",{"id":410,"name":411,"points":412,"category":20},"26931098","MarkShow",220,{"id":414,"name":415,"points":416,"category":417},"26972837","tixyz",206,"languages",{"id":419,"name":420,"points":421,"category":408},"26899100","DbGate",198,false,"v2",{"id":425,"name":5,"line":6,"ai":422,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":426,"top":18,"kw":427,"maker":11,"domain":10,"tier":19,"attempts":239,"strip":428,"url":9,"mix":429,"praise":89,"objection":124,"sub":21},26899066,0.47,[24,25,26,27],"0005555305005353553530030335333505555335",[31,32,33,34],1794036606010]