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."

Thursday, August 18, 2011

Ray tracing: aliased specular reflections

Sometimes it's difficult to model shapes that look really smooth when we use polygons. Depending on the light position and material configuration, the faces can appear very evident in some regions.

Usually we can solve this problem with some extra work on 3D objects modeling, changing the polygons spacial configuration or increasing moderately the number of polygons.

But there is a much bigger problem: the specular reflections are much more sensible to non-continuous surfaces. Reflection tends to spread the original light rays, so it works like a magnifying glass to geometric imperfections.

To solve this situation, many times it's needed to increase exponentialy the number of polygons for 3D objects, so the rendering time is too high. It's really a very big problem and I'm trying to minimize it using some heuristics.

Below I show three images to illustrate what I have just explained. Pay attention to the reflection of the right side object on the left side one.

1) object at left side really has few polygons and produces a very poor reflection;


2) when I model the object with hundreds of polygons, the object itself is already totally smooth, but it still produces an "aliased reflection";


3) to generate a continuous reflection, it was needed to render an object with thousands of polygons.

Subscribe in a reader

Tuesday, August 2, 2011

3D Text: rendering with global illumination

It has been almost 20 years I'm involved with Computer Graphics studies, researches and developments. Most of this time I spent with Digital Image Processing and artistic filters, effects and transformations. During this time, I have dealt with 3D CG several times, but my main focus always was on 2D world.

Since two years and a half ago, I decided to make serious 3D tools for Picture to People project. I have been studying and researching about 3D during this time, handling many different math models, algorithms and techniques.

A ray tracer to create 3D realistic texts is an old dream that is ongoing. I will need a good piece of time to finish it yet. So, in this meantime, I decided to make other 3D text generator using other paradigm. I would implement it anyway sooner or later.

It's already under development a text renderer based on global illumination algorithms. I'm trying to find a good point between impressive results and reasonable performance.

One interesting thing about this kind of software is: it can generate natively very realistic soft shadows, what gives a very convincing 3D look to the models. Direct illumination methods (like ray tracing) are not good to create this kind of shadow that is very common in nature. Each paradigm has its strengths and weaknesses.

Well, let me show what I'm talking about. Below you see two 3D texts created with a global illumination renderer.



By the way, I have an important thing to celebrate today: it's my post number 200! Most blogs are abandoned before getting one year old and I'm still here. I started this blog in October 2007 and a lot of Computer Graphics subjects were discussed here since that time. This blog tells a lot about Picture to People evolution in recent years.

Subscribe in a reader

Sunday, July 24, 2011

Water text effects

The newest Picture to People tool already is online. It's a tool totally focused on drawing water text effects.

Its results are essentially different of the ones you get by using the Liquid Text tool. Briefly speaking, this new software draws text with water appearance without destroying the font curves, but using them to guide the shape that water should have.

Unlike most tools of this kind, usually these new water renderers work better with font faces that are not very irregular. Too irregular fonts tend to generate a lot of interference, so the final image has too much foam.

Below I show you what our new Water Text software can make.


Subscribe in a reader

Wednesday, July 13, 2011

Maccala improvement: Curves simplification again

The first implementation I did for curves optimization was good, but not good enough. In very extreme situations, the algorithm could fail, so the result of simplification was a curve with a different shape from its original form.

After some more hard work, I could finally develop an algorithm that I was not able to make fail, even when simplifying the more bizarre font faces I have ever found in my whole life.

Below I show some more tests made using even more weird and complex fonts than the ones tried before. It's never easy, but my vector drawing library is getting more and more powerful.





Subscribe in a reader

Saturday, June 25, 2011

Maccala improvement: Curves optimization

Picture to People Project has the best and biggest set of text effects around the Internet and much more will be released yet. It was possible just because our software haa a strong foundation: our low level libraries are powerful and are constantly upgraded.

These days I have been improving Maccala again. The vector based rendering engine is receiving an important optimization: an algorithm able to make curve simplification with almost zero quality lost. The main advantages this technique will bring are:

- reduced memory usage for curves/fonts representation;
- faster 2D curve drawing;
- faster set operations over polygons;
- faster 2D font rendering;
- faster 3D text rendering.

In fact, my biggest motivation to make this right now is to help to accelerate the realistic 3D text renderer I'm developing, but many vector based P2P tools will benefit from that.

Most time I use the font rendering engine to test this optimization. If the algorithm can simplify strange fonts with no visible quality loss, so I can suppose it's working correctly.

Since I'm very excited about this improvement, I show below some examples about what it can do and how it works. Each image shows the simplification of an "a" letter of a different font. At left, you can see the points representation and at right the generated drawing.

The tiny black dots are the points used to create the character; the black continuous curves regions usually are dozens or even hundreds of points very close to each other and they just happen in the non-simplified (top-left) chars. What is important here is: when a simplified "a" is drawn, it has the same looking than the non-simplified one, so the quality decreasing is negligible. The simplification has been made to be a nondestructive process.





Subscribe in a reader

Saturday, June 18, 2011

Maccala improvement: Adaptive Curves

Picture to People makes vector based drawing using Maccala API. It's very powerful and robust, so P2P has many tools that make/use 2D rendering.

Anyway, there was a small problem when drawing curves. They are more difficult to render when they have these two properties at the same time:
1) to have very strong or sharp curvatures;
2) to be too thick.

In this situation, some curves were not drawn smoothly as they should be. It's what I show you in the first image below. You see a curve skeleton and its version with a thickness of 150. Basically the thin curve shows how smooth it really is, but the thick one is not that smooth.

I improved Maccala and now it has adaptive curve drawing. In practice, it means Maccala can draw perfectly even very thick regions that are too curved. The second image shows the same curve as before, but perfectly drawn using my adaptive rendering algorithm.

Now Picture to People can draw super professional 2D vector curves even in the more unfavorable situations. It can help, for example, to draw in higher quality a thick outline of some very weird and complex True Type fonts.



Subscribe in a reader

Saturday, June 11, 2011

The best text effects

Picture to People official website already is 2.5 years old and already received more than 2,500,000 visitors (the counter is public at the site).

After a very long and hard work, we already have the biggest set of online professional Computer Graphics tools around the Internet, and there are much more coming.

To celebrate, I created an official "Hall of Fame" at Picture to People site. There I show many amazing text effects created by our beta test team and regular users exclusively by using our tools. This page is open for anybody who wants to participate. For sure there are uncountable effects and results to be discovered, tried and used, so anyone who gets a great image can send it to be shown in our roll. I will publish new samples from time to time.

Feel invited to visit The Best Text Effects page. I hope this page with some of our best text effects shows how powerful Picture to People is and inspires people trying to find more and more nice ways to use our graphic softwares.

Subscribe in a reader

Saturday, June 4, 2011

Professional light text effects

I have been studying and implementing light models and algorithms for at least 3 years. I have developed, more than a year ago, a library to render light effects. I have even created some light text effects, but I didn't publish them, because they were very slow to calculate.

These last months I made a huge effort trying to create from scratch a new fast library focused on rendering lights. I finally did it and this new library is not just faster, but better than the old one. Now I'm developing a big collection of ready to use light text effects. Many users have asked for it since Picture to People is online.

Below I show you some examples about what is up to come: professional results with no configuration.



Subscribe in a reader

Saturday, May 14, 2011

Picture to People now has font effects

Have you ever wanted TrueType or OpenType fonts were able to make a little more? Have you ever wanted to change a little an usual font face? Well, I did.

I created a tool to go beyond the traditional font rendering engines and turn regular fonts in something more complex or more stylized. It's our first tool totally focused on typography. If Picture to People usually releases "text effects", we could think about this like a software to make "font effects".

Below I show you a text made with a regular font and so two typographic transformations created using the same font as input.




This new feature was already released at the Typography Effects page.

Subscribe in a reader

Friday, May 6, 2011

Maccala improvement: Polygon filling modes

During these last years, this blog showed the development of my 2D drawing library called Maccala. I really passed through many problems and challenges since I started it more than four years ago.

Nowadays I have a very comprehensive, professional, powerful and robust library for 2D drawing, font rendering and vector based effects, but I knew it had a point to be solved: the polygon filling modes. Since its first days, the library had only the alternative filling mode. I always knew about this weakness, but I have let it behind, since its only mode always was enough to my needs until now.

Currently I'm developing a new sub-library especially to make typography effects. At this point, the lack of another filling mode became a barrier to creation of my new effects.

I'm (finally) implementing the winding filling mode in Maccala. Since it's more complex by nature, I'm taking a big care about performance, so I can draw using any filling mode with no (or very few) performance penalty.

If you don't know what I'm talking about, let's put it simple: the winding mode can be imperative when filling some kinds of polygons that have self-intersection. This kind of polygon is very common, mainly when you make some operations like polyline thickness widening.

Below there is a simple example. First I show a self-intersected polygon. Second I show the same polygon filled using the alternative mode. As you can see, a colateral effect of this technique is that, in this case, the polygon is not completely filled. Finally I show the winding mode applied to our polygon. It has the behavior we usually want in this situation: the polygon is totally filled.



Subscribe in a reader