What is Picture to People ?

"Picture to People" (P2P) is a huge Computer Graphics project. It was started to create new softwares able to make 2D drawing, 3D rendering, vexel drawing, text effects, photo effects, image filtering and other complex Computer Graphics operations. It has been made from scratch, including its low level Computer Graphics libraries like Maccala. Nowadays, most final features produced for this project are released as free online tools available from its official website. This blog talks about Computer Graphics, mainly concerning Picture to People development.

"Only who makes has true knowledge. Knowledge is control. True power depends on total control. Only who makes from scratch has the real power."

Tuesday, June 24, 2008

Artistic effects for photography


As promised, I'm posting here something not so "vector based".

I dedicated a good time years ago to create artistic effects, some more suitable for photos, some better for text.

My intention is give to P2P a large (really large) menu of effects/filters. Many of them are the classical effects that all professional raster CG software has, but all my effects will be there too.

The figure above shows one of my effects that try to transform a photo in a image that looks like "drawed or painted by human hands". The thumbnail inside shows the original photo modified by the math model I created.

Monday, June 23, 2008

Just vectors?

A lot of people has been asking me about the "duality" of my software: raster & vector based tools. People say they see here almost only drawing and vector stuff.

In fact, in the very beginning of my researches years ago, I was a specialist in raster filters/effects, most of them artistic for photos or text. But, since 2007, I focused in the vector based libraries of my software.

Anyway, soon I will try to put here one or two posts about the raster effects I have already created. This way people will have some idea of what I'm talking about.

Thursday, June 19, 2008

Vectorization 2



My vectorization library is very powerful now. I made it for easy use without math knowledge, since progressive application of vectorization can give results as smooth as desired.

The priority in development was always remove aliases (false border information) and keep all true image detail.

First picture shows the original bitmap in low resolution. Second picture shows the raster representation of vectorized image using same size. The vector based image was created by direct application of vectorization model over the first image.

Of course, the better resolution of bitmap image, the better the vectorized image, but in fact it's no so simple like that. If you have interest about some intuitive explanation about how it works and how you can affect the final result, take a look at my special page about vectorization. It will get better step by step and soon it will have nice and useful information.

Monday, June 16, 2008

Vectorization



I'm developing my solution for "bitmap to vector" transformations.

The bigger challenge is a good conjugation between two conflicting goals:
1) smooth and beautiful results;
2) avoiding lost of significant details.

It's not easy to find a common point: for some images a kind of pattern can be just noise and for others it can be part of important details.

I'm considering some possible solutions dealing with topology and entropy.

Picture shows some initial tests. Typographical use is the canonical example, but of course the tool is generic.

Monday, June 9, 2008

Bitmaps to vector based images

Despite the hard work concerning the creation of a completely new renderer (new paradigms, new models, new algorithms), I started to model, project and code my tools for transforming raster images in vector based ones.

I'm still planning ... I don't know what degree of configuration I will offer for this functionality.

It is in the very beginning, but I hope I can show some screenshot next week.

Tuesday, June 3, 2008

Thick line styles in action



I'm still having hard work trying to create my models/algorithms for fast anti-aliased drawing. Anyway, I have improved my old renderer as promised.

Now thick lines can have different junction styles depending just on configuration.

For some shapes, the results can be sensibly different. The picture shows a kind of star drawn using all line styles my rasterizer offers.

Sunday, May 25, 2008

Thick lines improvement



As my new renderer will be very complicated, I will take a lot of time to plan, code and test it. Furthermore, I don't know if it will really work as I want. So, I'm still improving my old renderer.

I started to code thick lines with different kinds of junction using my vector based library. Depending on the image to be rasterized, the final result can change a lot according to the type of line used.

Image shows a square drawn using a thin line and the five types of thick lines I'm developing.

Tuesday, May 20, 2008

Rendering engine with anti-aliasing = hard work

I'm trying to make my own rendering engine with strong anti-aliasing and fast results. It's a very very very hard task. One of main challenges I have found since I started this project.

Maybe it will take much more time yet. I don't know if I will win in the end, but I'm not ready to give up.

Anyway, I want to keep the "plan B" going on. I will improve the renderizer I have now to offer new options when dealing with thick lines. I hope I will have some screenshot to show in some days.

Monday, May 5, 2008

So now what?

First I would like to thank Maxim Shemanarev. He gave me some tips about the cl-aa algorithm for drawing. In fact, this algorithm is very hard to understand in absolute completeness. I never copy an algorithm. I always understand it and implement from scratch using my own hands.

I will not use the algorithm mentioned above. The trivial idea is simple, but a complete understanding for implementation is complicated. Anyway, the cl-aa algorithm have opened my mind for other ideas. I will try to create my own rendering algorithm using my knowledge about several techniques concerning anti-aliased drawing. Probably my results will be more modest about speed and memory usage, but I hope I can create an easier to understand and maintain method, without lose the professional results.

My excuses to my readers, but I will spend two or three weeks researching and developing my own algorithms for two very important subjects:
- fast anti-aliased rendering;
- transforming bitmaps in vector based objects.

I will not post here during this time.

Sunday, May 4, 2008

Parametrized curves



Curves again again ...

I'm recoding some parts of my vector based library. I need more power and flexibility. More robust and eclectic parametrization is the only way I know to get it.

When you get enough generalization of your equations and approaches, just some different numbers in the correct places can give to you absolutely distinct curves with specific math properties.