evil-mad / robopaint

The software for your friendly painting robot kit!
127 stars 34 forks source link

Mode ideas [Meta] #193

Open techninja opened 9 years ago

techninja commented 9 years ago

This issue is meant to be a catch-all for interesting projects that would be fun/interesting to have as a mode to drive RoboPaint. I see these kinds of things all the time but have no centralized location to store them (or time to work on them directly) so I figure they should just show up here as a single comment. Format should be:

#### MODE IDEA: Mode name
Description/link

**Work/Changes required:**
* Change 1
* Change 2
techninja commented 9 years ago

MODE IDEA: Interactive fractal tree

http://www.princeton.edu/~aatishb/processing/tree_noleaves/ I know there's about a million of these around, but this one has a fun exploratory interface and the code is quite small.

Work/Changes required:

techninja commented 9 years ago

MODE IDEA: "Simplify"

http://simplify.thatsh.it/ and code @ https://github.com/jpag/simplify.thatsh.it This is a very cool little app that takes a photo and creates an artistic impression of it with simple shapes and lines.

Work/Changes required:

techninja commented 9 years ago

MODE IDEA: Inspirograph

http://nathanfriend.io/inspirograph/ with code @ https://github.com/nfriend/inspirograph Incredible and well thought out spirograph like toy. Use D3.js SVG library and TypeScript. Quite fun!

Work/Changes required:

techninja commented 9 years ago

MODE IDEA: Direct Scratch/Snap support

http://scratch.mit.edu -- http://snap.berkeley.edu/ This would allow for a far more direct web based interface than the external application integration, but would rely on existing integration. Though @oskay has suggested against this method, I see some benefits:

Pros:

Cons:

Work/Changes required:

oskay commented 9 years ago

As a general caution, adding additional third-party modules like these introduces additional places for bugs-not-under-our-control to sneak in. We have already had some issues from bugs deep within the serial or method draw code causing problems. One possible approach would be to label all of these as "Experimental Modes" and leave them in permanent beta status.

Fractal trees are good. They will only look good with pens, however.

Simplify is pretty neat. I worry that it's too simple. What everyone wants is a program that will take an image and output a representational watercolor. Simplify almost promises that, but it's so absurdly simplified that it almost over-promises. (Is there an approach that will do that?)

Inspirograph has an awesome interface. Again, will look best with pens. Would be best with multiple pen colors.

Direct Scratch sounds like a huge chunk to bite off. And a screen size issue. Also, a huge amount of the success of a given programming language/environment pair (see Arduino, Scratch, etc) is the consistent interface. I think that the cost/benefit ratio of this is likely too high.

More modes:

techninja commented 9 years ago

These modes don't fit into the core model, and the idea of adding more modes to the list of "Experimental" doesn't fit either (figuratively in the sense of the program's ideals, and literally in the actual settings menu).

These would work better as some kind of "third party extension", selected from a list that users could select from to download and use in their application. Building them out as modes right now is out of scope/priority, but if they're documented here as possibilities for a time when such a 3rd party extension browser is properly thought out, they would "work" then and could be integrated by us or other interested parties. I've done nothing right now to define that or how it would even work, though I suspect it could be done entirely on Github infrastructure. Again, the point here is just to talk about options. I don't want to support these within RoboPaint any more than you.

I'll take your word on the Scratch/Snap complications. I do like the possible Pros and am glad to have documented the possibility.

I've already put quite a bit of proof-of-concept work into a fast C++ stipple/generalized raster-to-vector mode to handle the 99% of photo to watercolor conversion use cases. It has not been a priority though and I have yet to commit any code for it. If we want to prioritize that out for v1 I think it would be great, but it wouldn't really be third party, and would likely be a core mode somewhat similar to auto-paint with more dropdown options.

More modes feedback:

oskay commented 9 years ago

Understood, on the scope of the project.

techninja commented 9 years ago

MODE IDEA: Double-pendulum trace/physics sandbox

http://www.i-programmer.info/news/167-javascript/7528-a-double-pendulum-in-100-lines-of-javascript.html Code @ https://github.com/micaeloliveira/physics-sandbox/blob/master/assets/javascripts/pendulum.js

I've had this one on the list for a long time, as being able to trace and make art out of physical simulations has always been something I've loved. There's quite a few different ways this could go as well.

Work/Changes required:

techninja commented 9 years ago

MODE IDEA: Celtic Knot Maker

Design and customize a celtic knot: http://w-shadow.com/celtic-knots/ (Also usable now with SVG export from http://sourceforge.net/projects/knotter/)

Work/Changes required:

techninja commented 9 years ago

MODE IDEA: Geometric photo filter

Input via photo or webcam: http://face.haluska.sk/. Output to images or SVG! Has a BUNCH of options.

Work/Changes required:

techninja commented 9 years ago

MODE IDEA: Pursuit curves renderer

Draws polygons rotated and aligned to give the impression of a curve: http://jlchapa.azurewebsites.net/math/pursuitcurves.html

bp25fiw

Work/Changes required:

techninja commented 9 years ago

MODE IDEA: Mondrian Generator

Draws Piet-Mondrian Style images in a random yet interesting fashion. http://jefworks.github.io/mondrian-generator/ mondrian

Work/Changes required:

forresto commented 9 years ago

Mode Idea: JavaScript Turtle Graphics

I made this JS live coding turtle graphics editor a while ago... http://meemoo.org/blog/2013-02-11-live-code-editor-javascript-to-svg ... With a couple tweaks I think it could be a good mode.

Example codeWatercolorBot drawing

js turtle

forresto commented 9 years ago

Hatching editor

With pen (and brush) choosing different fills and angles in the creation view, and seeing a preview, would be great.

moka

docprofsky commented 8 years ago

3D Line Art Generator

Sample 3D line art renders Using https://github.com/fogleman/ln

docprofsky commented 8 years ago

Handwriting Font Mode

http://kevinhou.wix.com/projects#!handwriting-font-app/cbfk This could be integrated with robopaint-mode-example.

Work/Changes required:

docprofsky commented 8 years ago

Iterograph Mode

example iterograph http://iterograph.laboiteatortue.com/

docprofsky commented 8 years ago

Birthday Cake Mode

Makes a drawing of a birthday cake with an adjustable number of candles. This would take care of #136

RI0 commented 8 years ago

AUTOCAD MODE

Could be fun to be able to produce robot drawn versions of AutoCad or Sketch-Up Drawings with nuanced line-weight and stroke-weight.

http://www.cadnstuff.com/sylb/bdrs_penwts/LineThick.pdf

techninja commented 8 years ago

MODE IDEA: Maze mode

amazing

Creates mazes! Found a little code here, uses paperjs already. Unicursal maze generator.

Work/Changes required:

forresto commented 8 years ago

@techninja that's my labyrinth! Will help test. https://github.com/forresto/sketch/blob/master/labyrinth-01.paper.js

I have the start of an interactive one (mouse can be wonky).

forresto commented 8 years ago

@techninja That's a gray path drawn over a thicker black path. Is there something in paper or robopaint that could approximate that (stroke the inside and outside of one path)?

techninja commented 8 years ago

Sure. Just differentiate what gets created as the "movement path" vs the path shown on screen. In the latest RoboPaint we draw to the paper.js "Action" layer the polygons that will become the x/y coordinate movements for the robot. You can also do path manual offsetting to take a given shape and trace an inset version of it.

docprofsky commented 8 years ago

From @RI0 in #255:

MODE IDEA: Serendipity Seed Mode

Could we look at adding a Serendipity Button in the Print Mode that would render the current print absolutely unique?

The button could open a window to generate the Serendipity Seed based on a set of variables such as :

Time of Day, Current Cloud Cover, Current Temperature, or some other system based or human entered variable related to the artist's mood.

Some of the variables could come from an online service such as Wolfram Alpha

https://www.wolframalpha.com/input/?i=weather+in+san+francisco

Serendipity could play out by adding some error to the brush height, the overshoot, the speed, precision, etc. in a manner that would make it very difficult to produce two prints that are exactly the same... and some might actually be better than the vector drawing source.