Painterly Rendering with Curved Brush Strokes of Multiple Sizes (SIGGRAPH 98)

Overview

Painterly Rendering with Curved Brush Strokes of Multiple Sizes (SIGGRAPH 98)

This is the source code for the following paper:

Aaron Hertzmann. Painterly Rendering with Curved Brush Strokes of Multiple Sizes. Proc. SIGGRAPH 1998. Project Page, ACM paper link

I haven't looked at this code in more than 20 years, but, amazingly, it runs just fine with no modification. Thanks to Manuel Rodriguez Ladrón de Guevara for the impetus to dig up the files and for testing it out.

For my NPAR2000 paper, I re-implemented this algorithm in C++/OpenGL, and I may release that code at some point too. That code does not work out of the box.

Installation

If necessary, install Java with your favorite client. For example, OS X with homebrew already installed:

homebrew install java
rehash

Then, to run

cd java
javac Painter.java
java Painter ../images/tomato83.jpg

(There will be a mountain of warnings about deprecated APIs.)

You should see an interface like this, showing the input image:

painter UI

Press Go!

Three windows will appear, showing the three layers of paint strokes, with Layer 2 being the final output:

painter output

The parameters in the UI should correspond directly to the parameters listed in the paper.

What took minutes of computation in 1998 is now instantaneous.

Some more outputs:

HuangShan layers

Lizard layers

You might also like...

A Flutter plugin to extract waveform data from an audio file suitable for visual rendering.

A Flutter plugin to extract waveform data from an audio file suitable for visual rendering.

just_waveform This plugin extracts waveform data from an audio file that can be used to render waveform visualisations. Usage final progressStream = J

Dec 4, 2022

Squaremap is a minimalistic and lightweight world map viewer for Minecraft servers, using the vanilla map rendering style

squaremap squaremap (formerly known as Pl3xMap) is a minimalistic and lightweight live world map viewer for Minecraft servers. What is squaremap If, l

Jan 3, 2023

A mod to hide or customize armor rendering.

A mod to hide or customize armor rendering.

Show Me Your Skin! Show Me Your Skin! (the exclamation mark is important) is a client-side mod that enables extensive customization of armor rendering

Dec 21, 2022

Immutable key/value store with efficient space utilization and fast reads. They are ideal for the use-case of tables built by batch processes and shipped to multiple servers.

Minimal Perfect Hash Tables About Minimal Perfect Hash Tables are an immutable key/value store with efficient space utilization and fast reads. They a

Nov 22, 2022

Sample application demonstrating an order fulfillment system decomposed into multiple independant components (e.g. microservices). Showing concrete implementation alternatives using e.g. Java, Spring Boot, Apache Kafka, Camunda, Zeebe, ...

Sample application demonstrating an order fulfillment system decomposed into multiple independant components (e.g. microservices). Showing concrete implementation alternatives using e.g. Java, Spring Boot, Apache Kafka, Camunda, Zeebe, ...

Sample application demonstrating an order fulfillment system decomposed into multiple independant components (e.g. microservices). Showing concrete implementation alternatives using e.g. Java, Spring Boot, Apache Kafka, Camunda, Zeebe, ...

Dec 14, 2022

MixStack lets you connects Flutter smoothly with Native pages, supports things like Multiple Tab Embeded Flutter View, Dynamic tab changing, and more. You can enjoy a smooth transition from legacy native code to Flutter with it.

MixStack lets you connects Flutter smoothly with Native pages, supports things like Multiple Tab Embeded Flutter View, Dynamic tab changing, and more. You can enjoy a smooth transition from legacy native code to Flutter with it.

中文 README MixStack MixStack lets you connects Flutter smoothly with Native pages, supports things like Multiple Tab Embeded Flutter View, Dynamic tab

Dec 19, 2022

A simple fast search engine written in java with the help of the Collection API which takes in multiple queries and outputs results accordingly.

A simple fast search engine written in java with the help of the Collection API which takes in multiple queries and outputs results accordingly.

Oct 24, 2022

A bitcoin explorer Java library that utilizes multiple data sources at once.

Bitcoin Explorer A bitcoin explorer library that utilizes multiple data sources at once. Branch Build Unit Tests master development Table of Contents

Jan 31, 2022

This is a plugin for Minecraft Server (Spigot API) introduces a sector system which connects a single world across multiple servers.

OpenSourceSectors 😎 🗒️ This is a plugin for Minecraft Server (Spigot API) introduces a sector system which connects a single world across multiple s

Dec 28, 2022

paste bot for discord. Choose between multiple paste services.

paste bot for discord. Choose between multiple paste services.

WriterBot Description A simple paste bot written in java. This bot uploads all kinds of text files sent in the channels to https://paste.gg and provid

Aug 27, 2022

Distribute players across multiple servers while syncing packets

Distribute players across multiple servers while syncing packets

ShardMC Distribute players across multiple servers while syncing packets ShardMC aims to be a simple plugin that allows multiple servers to sync playe

Nov 28, 2022

A Mindustry mod library provides a multiple-recipe crafter to produce items, fluids, power or even heat for Json and JavaScript mods.

A Mindustry mod library provides a multiple-recipe crafter to produce items, fluids, power or even heat for Json and JavaScript mods.

MultiCrafter Lib A Mindustry MultiCrafter lib-mod for Json and JavaScript mods. Please check the instruction. How to Use Please check the instruction

Dec 27, 2022
Owner
Aaron Hertzmann
Aaron Hertzmann
Squaremap is a minimalistic and lightweight world map viewer for Minecraft servers, using the vanilla map rendering style

squaremap squaremap (formerly known as Pl3xMap) is a minimalistic and lightweight live world map viewer for Minecraft servers. What is squaremap If, l

Jason 204 Jan 3, 2023
A mod to hide or customize armor rendering.

Show Me Your Skin! Show Me Your Skin! (the exclamation mark is important) is a client-side mod that enables extensive customization of armor rendering

null 11 Dec 21, 2022
A Mindustry mod library provides a multiple-recipe crafter to produce items, fluids, power or even heat for Json and JavaScript mods.

MultiCrafter Lib A Mindustry MultiCrafter lib-mod for Json and JavaScript mods. Please check the instruction. How to Use Please check the instruction

Li plum 24 Dec 27, 2022
Roman Beskrovnyi 250 Jan 9, 2023
Roman Beskrovnyi 248 Dec 21, 2022
A Minecraft Mod for Fabric which aims to make Block Entity rendering faster and more customizable with almost no compromises.

Enhanced Block Entities EBE is a 100% client side mod for Minecraft on the Fabric mod loader which aims to increase the performance of block entity re

null 151 Dec 30, 2022
Processing and node.js project for rendering MouseGAN images from RunwayML

Computer MouseGAN Processing and node.js project for rendering MouseGAN images from RunwayML. Usage Clone or download this repository. git clone https

Coding Train 17 Apr 1, 2022
A 3D (raymarching) rendering engine. In java because i am speed

JRender This is a 3D PBR (phsical based rendering) engine completely done in java, based on raymarching. Clarification This project is an expermiment,

Nils Brugger 59 Dec 10, 2022
Library which allows the use and rendering of Blockbench models and animations in a Minecraft server by using generated resource packs and armorstands

Hephaestus Engine Hephaestus Engine is a library which allows the visualization of block bench models and animations in a Minecraft server by the use

Unnamed Team 109 Dec 21, 2022