# Tag: gallery

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

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

Pages: 1 2 3 4 ... 6

# WGK 2011 - My Photos

Mon
05
Sep 2011

First National Conference on Computer Games Development in Gdańsk is over. I didn't take many photos this time, but I have some - see my gallery WGK 2011 @ Picasa.

Comments | #competitions #compo #events #igk #gallery

# IGK Conference - My Photos

Tue
29
Mar 2011

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 | #events #igk #warsztat #gallery

# How to Equally Blend Multiple Images in GIMP

Sun
01
Aug 2010

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.

# Zjazd Twórców Gier 2010 - Photos

Mon
19
Jul 2010

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

# Tiny Planet

Sat
03
Jul 2010

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?

# IGK 2010 - Photos

Wed
14
Apr 2010

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 | #igk #gallery #warsztat #events #gallery

# KD-Tree

Thu
09
Jul 2009

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 | #rendering #video #gallery #algorithms #math

# Czcionki z komputera Atari

Tue
09
Jun 2009

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 | #events #gui #rendering #gallery #demoscene

Pages: 1 2 3 4 ... 6