# Tag: gallery

Entries for tag "gallery", ordered from most recent. Entry count: 47.

Uwaga! Informacje na tej stronie mają ponad 3 lata. Nadal je udostępniam, ale prawdopodobnie nie odzwierciedlają one mojej aktualnej wiedzy ani przekonań.

Pages: 1 2 3 4 ... 6

00:23
Tue
29
Mar 2011

IGK Conference - My Photos

Here are my photos from 8th Polish Game Engineering Conference (VIII Ogólnopolska Konferencja Inżynierii Gier Komputerowych) IGK-8'2011 - a gallery at Picasaweb:

Comments (0) | Tags: events igk warsztat gallery | Author: Adam Sawicki |

19:55
Sun
01
Aug 2010

How to Equally Blend Multiple Images in GIMP

During my today's walk on Warsaw I took many different photos. Some of them were series of photos of a road from exactly same place, with a purpose of merging them together into a single photo. My idea was to just average the color of each pixel, so it should be like:

`out = 1/4 * (img[0] + img[1] + img[2] + img[3])`

But how to do this in GIMP? There is no such filter AFAIK. An obvious solution is to use blending - Mode and Opacity settings for layers - but it turns out to be not so simple. Each layer blends with a merged image from beneath it, so instead of average formula above we have to refer to a formula for blending (linear interpolation), which is:

`out[i] = t[i] * img[i] + (1-t[i]) * out[i+1]`

Where:
i is a layer index 0..(n-1), indexed from the topmost layer,
t[i] is Opacity parameter for layer i.

After expanding it for 4 layers, the formula becomes:

`out =t[0] * img0 + (1-t[0]) * (  t[1] * img1 + (1-t[1]) * (    t[2] * img2 + (1-t[2]) * (      t[3] * img3 + (1-t[3]) * 0    )  ))`

Finally, after doing some math with pen and paper, I calculated that to equally blend (average) n images in GIMP, you should:

• Load all the images as layers - File / Open as Layers.
• Use default blending mode - "Normal".
• Set Opacity for subsequent layers, beginning from the topmost layer, to: 1/n, 1/(n-1), 1/(n-2), ..., 1 percent.

For example, I have 5 photos so I give them Opacity: 20, 25, 33, 50, 100. Here is the result: an image that could be called "Road of Ghosts" :)

By the way, I've found a website where panorama photos can be uploaded for free and interactively viewed using just Flash. Here is my profile: reg | Panogio.

23:39
Mon
19
Jul 2010

Zjazd Twórców Gier 2010 - Photos

Today I went back from Zjazd Twórców Gier 2010 - a game developers conference that took place in Gdańsk, Poland. Until now I've just managed to review, select and upload my photos from the event:

sawickiap / ZTG 2010 @ Picasa Web

11:51
Sat
03
Jul 2010

Tiny Planet

Tiny Planet is an interesting effect to be made from a photo or drawing. I saw it for the first time at Wojciech Toman's devlog. Here are some tiny planets made by me recently:

Warsaw - Chomiczówka:

My house:

To make a tiny planet, you have to first take a 360 degrees panorama photo of some landscape. For stiching photos into single panoramic one I recommend free application from Microsoft Research called Microsoft Image Composite Editor (ICE). Of course there are many others availble. Then the process involves some manual graphics work and/or smart usage of some filters, where the crucial one is converting image to polar coordinates. In GIMP you can find the appropriate menu command in Filters / Distorts / Polar Coordinates.

The biggest question when making such images appears to be how to fill the inside and the outside of the circle forming surface of the planet. Do you have any ideas better than the ones I used here?

23:02
Wed
14
Apr 2010

IGK 2010 - Photos

I've uploaded more than one hundred of photos I've taken at IGK-7'2010 Conference. For the first time I've placed my photos on Picasa Web Album.

Comments (1) | Tags: igk gallery warsztat events gallery | Author: Adam Sawicki |

23:14
Thu
09
Jul 2009

KD-Tree

People at forums are usually advised to learn BSP, quadtree or octree as space partitioning data structure, but there are many more interesting structures than these three. This time my choice for home project is KD-tree. It's actually something between BSP and octree. Just like BSP it's a binary tree (each non-leaf node has two child nodes) and optimal splitting plane is estimated each time by special algorithm, but splitting planes are always aligned to one of three main axes and thus each node can be described by an AABB (axis-aligned bounding box), just like in octree.

As my tree is designed to manage objects and not geometry, nothing can be split and some of objects may intersect splitting planes. How to deal with them? I simply assign them to the parent node, so not only leaves are allowed to contain list of objects. To avoid too many small objects intersecting splitting planes to degrade performance by falling into top level nodes (it's called "sticky planes" or something like that :) I adopted "loose octree" idea to my KD-tree. It simply means I extend each node’s bounding box so that each node's children slightly overlap each other and small objects intersecting splitting plane fall into one of the children.

My KD-tree is also dynamic, which means it reorganizes itself as objects get added, removed and moved in the tree. It's actually quite simple. Each time an object is added to a node, that node can be split into two children if it's object number exceeds constant limit. Similarly node can be merged by deleting it's children each time an object is removed from one of its children, if the number of objects in that node and its children drops under constant minimum.

For additional performance, I allocate tree nodes from my own "Free List" memory pool and I keep objects connected to each node as doubly-linked list.

I also came up with an idea how to easily visualize quality of my space partitioning technique. I keep track of the number of tree nodes and objects on each depth level. This way I can tell from these several numbers whether tree is more "tall" or "wide" and whether most of objects stay in leaves instead of some top-level nodes.

Here are some screenshots and a video from my recent code:

Comments (4) | Tags: rendering video gallery algorithms math | Author: Adam Sawicki |

21:21
Tue
09
Jun 2009

Czcionki z komputera Atari

Współcześnie "Atari" kojarzy się z wydawcą gier, ale kiedyś pod tą marką produkowane były komputery - w czasach, zanim jeszcze pecet podbił świat. W sobotę byłem na imprezie demoscenowej poświęconej miłośnikom klasycznych platform (przede wszystkim, jak się okazało, 8-bitowych Atari). Na tym spotkaniu m.in. wykłady miał TDC. Dowiedziałem się z nich bardzo dużo o budowie i możliwościach sprzętu tamtej generacji (w tym układu graficznego), ówczesnym oprogramowaniu i rynku gier. Okazuje się, że Wolfenstein i Doom wcale nie były pierwsze i że bardzo dużo działo się już w czasach, kiedy mnie jeszcze nie było na tym świecie :)

Przy okazji trafiłem na polskie strony poświęcone Atari - atari.area i Atari Online, a na nich znalazłem kolekcję czcionek z tej platformy: [1], [2]. W przypływie dziwnej ochoty (zapewne spowodowanej niewyspaniem) postanowiłem dopisać wsparcie dla nich do swojego domowego projektu (pisanego oczywiście na PC i w DirectX).

Specyfikacji formatu pliku FNT nigdzie nie znalazłem, ale udało mi się go rozgryźć samemu. To z resztą nie było trudne, jeśli wiadomo, że taki plik ma 1024 bajty, a zawarta w nim czcionka to 128 znaków bitmapowych po 8x8 pikseli monochromatycznych. W końcu 128*8*8 = 8192 b = 1024 B :) Toteż napisałem samemu specyfikację tego formatu: Atari Font FNT File Format.txt, a czcionki z wyżej wspomnianej strony (razem ze screenami) pozwoliłem sobie spakować i udostępnić jako jedno archiwum, żeby łatwiej było ściągać - Atari_Fonts.zip. Przykładowa czcionka (jedna z 335) o nazwie "Atari" wygląda tak:

A efekt mojego kodowania prezentuje się tak (niezły oldschool :D)

Comments (1) | Tags: events gui rendering gallery demoscene | Author: Adam Sawicki |

19:50
Sun
17
May 2009

Za dużo blooma ;)

Pokażę taki jeden mały screen, żeby udowodnić, że w domu wcale się nie nudzę. Dla tych którzy wiedzą o co chodzi: możnaby go zatytułować "za dużo blooma" :D

A tak na serio, to co teraz piszę to nie żaden silnik, tylko takie luźne eksperymenty. Luźne, ale jednak wymagają pewnej spójnej platformy. Póki co ta platforma zawiera: CommonLib, mój stary framework do Direct3D9 z TFQ7 (stary ale jary, po latach nadal nie wymyśliłem nic lepszego), konsolę zrobioną z użyciem tej zwykłej systemowej w sposób asynchroniczny, klasę kamery, zupełnie nowy manager zasobów (który potrafi wczytywać np. tekstury i shadery w tle, w osobnym wątku - zawsze o takim marzyłem, dopiero teraz miałem odwagę go napisać), podłączoną bibliotekę AntTweakBar i kilku innych drobiazgów. Słowem - minimalizm, żeby skupić się na tym o co chodzi.

A chodzi o zabawę z różnymi technikami graficznymi. Na pierwszy ogień poszły efekty postprocessingu (przede wszystkim oczywiście Bloom :D). Po napisaniu tych prostych zrobiłem sobie Deferred Shading. Teraz mając w przestrzeni obrazu dostęp do danych takich jak głębokość i normalna będę mógł policzyć dużo więcej fajnych rzeczy :) Jak skończę tą zabawę, to nieomieszkam się pochwalić (zapewne w formie filmiku YouTube), a potem przyjdzie czas na eksperymenty z generowaniem siatek i tekstur.

Ponieważ nie mam ostatnio natchnienia do pisania często notek na moim blogu, napiszcie w komentarzach, o czym chcielibyście przeczytać. Może ciekawie byłoby opisywać obszerniej i z fragmentami kodu konkretne tematy, tak jak to robi na swoim blogu SceNtriC (który przecież zajął 3 miejsce w konkursie na najlepszy blog IT)?

Comments (0) | Tags: rendering productions gallery | Author: Adam Sawicki |

Pages: 1 2 3 4 ... 6