102 comments

[ 4.2 ms ] story [ 161 ms ] thread
Well, this just solved two problems I've been trying to figure out for months -- thanks, shihn!

GitHub link: https://github.com/pshihn/rough

I'm assuming you're joking :P But if it really solved 2 of your problems, I'm curious what they were?
I’m assuming the parent commentator wants handdrawn-like graphics for a service or machine generated content, but wants them in different styles. Thus, tweaking what you’ve written allows him to solve both.
Not joking at all, I assure you! Primary use case is for education/training materials where a flat or prescribed style is not desirable, and also because despite my girlfriend being an artist I have no ability there whatsoever and this has just removed a whole bunch of fear about presenting polygons.
In the same vein, I've been using Zwibbler ( http://zwibbler.com/demo/ ) for all the illustrations on my blog ( http://vjeux.com ) and it's been really nice to have images that look like they have been hand drawn.
It looks like you have to purchase a license to use it. The only price quoted on the page is $2999 -- a bit steep for some illustrations on a blog. Please explain.
I believe the $2999 price is for licensing Zwibbler so you can have it on your own site/app. For example if you had a company that made custom t-shirts, users could create their own designs using Zwibbler on your site.

On the other hand, if you just want to draw some pictures using the Zwibbler demo to put them on your blog, you don't need a license, and it doesn't cost you anything.

That is the sensible interpretation but it's not very clear from the wording on the page. I like being in the clear, legally speaking.
Better than allowing that money to go to some starving artist though. They might not spend it as responsibly.
Cool. I notice on the map example that the hatching lines in some of the states (South Dakota and Georgia, for example) don't quite match up. Why is that?
I'm doing some approximation on complex SVG paths for performance reasons. Doesn't happen on non-svg paths. Need for improvement.
Quick bar chart example with D3: http://roughjs.com/examples/bar-chart.html
Awesome. I was about to ask about D3 support.

But now that I'm here... Is there any support for animation?

Well the library provides simple drawing methods. You would animate it the same way you would animate anything on a canvas. (Note most D3 charts use SVG)
FYI: Blank page (with title text) in Firefox (58.0.2, 64-bit, Windows).
There was in issue with the CDN I believe. It was serving an old cache at some nodes. I changed the code to use a different one.
If you repeatedly clear canvas/draw with a setInterval of ~100-200ms, looks kind of like the hand-drawn un-stable lines art style of Squigglevision (Dr. Katz / Science Court) :)

EDIT: If folks want to play with a JSFiddle: https://jsfiddle.net/49g2Leqw/9/

That's true. There's so much randomness in there that every render will likely be unique - every so slightly different from the previous frame.
This is great. Thank you both for these fiddles. I've been doing a lot of SVG DOM stuff. Mostly tied to maps. I'm excited to try this out.
This is the vehicle I programmed together with my 5 year old: https://jsfiddle.net/k1g6533y/13/
Wonderfurl! It makes the kid see how a small algorithm saves time AND produces almost the same results as hand drawn animation. I have to try this myself with my own kids.
Absolutely! Assuming your 5 year old is some kind of savant. Otherwise, I can't imagine a kid actually understanding what is going on with a script like this.
Very nice!

I changed it a little bit to optimise rendering just in case you don't know about 'requestAnimationFrame()' (https://developer.mozilla.org/en-US/docs/Web/API/window/requ...):

https://jsfiddle.net/65q7c5to/

Works fine on chrome, but it seems too fast on firefox.
What do all the context transformation lines do in this example? It seems to work just as well with clearRect on its own.
There's only one such line. In general it's a good idea to reset the transform before clearing as the (0, 0, w, h) rectangle may not cover the whole canvas anymore. In this toy example there obviously isn't another transform so it's without function.
(comment deleted)
It's using setInterval on purpose, because with requestAnimationFrame the effect is a bit too fast.
Reminds me of the art used in yoshi story. Awesome!
or Ed, Edd n Eddy cartoon :)
I used some of the same core code to create sketchy UI controls using web-components: https://www.webcomponents.org/collection/wiredjs/wired-eleme...
Any plan for a react component?
I'm not planning to at the moment, but if someone wants to write a wrapper, go for it.
i dont know polymer at all so i didnt know how to use react-polymer - anyone want to give it a shot?

in the meantime ive started writing a pure react version of it: https://github.com/sw-yx/react-wired i have not published to npm yet

Simulated badly-drawn hatching! This is great!
I'd love to pair this with one of those tools that turns ascii drawings into SVGs. Looks great!
(comment deleted)
This is just lovely :) I guess I don't really have much to add, other than to say you've delighted me with this
Thanks. I'm a bit surprised by the reception actually. It was just a fun side project with no real use case in mind.
This is a very fun library. Following the tip in these comments from @bcjordan to repeatedly re-render, I've forked a little physics notebook by Jim Bumgardner apply Rough.js to the circle rendering:

https://beta.observablehq.com/@jashkenas/tumble-wheel-with-r...

Wheee.

Edit: Too much fun. Here's another: https://beta.observablehq.com/@jashkenas/scratchy-eyes

This is fantastic.
Im making over $7k a month working part time. I kept hearing other people tell me how much money they can make online so I decided to look into it. Well, it was all true and has totally changed my life. This is what I do, ====http://www.todaysfox.com
Quite headache-inducing. To me at least. There seems to be quite a challenge to make something look hand-drawn and also not change it so much on every drawn frame that you don't get dizzy watching it.
A bit off-topic but a while ago someone posted a similar tool here on HN that allows one to produce diagrams - they looked pretty much hand-drawn. Does anyone have a link?
Fantastic! I love this sort of thing, hope to see it used a lot. Could definitely use support for high-DPI screens.
This has made me so much happy. Thank you. Brilliant stuff. I've been looking for something that does this and have just started having fun with this problem using P5.js and playing around with splines, perlin noise etc.
Does anyone else get a fancy pants adventure vibe from this?

There's a critique about digital art in general here: over-perfection is dull. I'm all about that wabi-sabi.

This is awesome! Do you have plans to integrate with canvas.js?
I'm not planning to at the moment, but if someone wants to write a wrapper, go for it.