Multitouch Blogs

UI Addict » Multi-touch

see -- want -- make

Entries  (1-17   of   17)

New NUI

Sunday, December 20, 2009 01:49pm on UI Addict » Multi-touch

Recently I saw a interesting tweet from Seth Sandler regarding a AS3 speech recognition lib. The demo was very impressive. So I wondered why not for python ?. So I started looking around for some premade librarys in Python. I found three good ones

The first two where windows only solution so they where rejected immediately. The Sphinx library from CMU is very vast library. After some reading I found out that the dwarf version of Sphinx called pocketsphinx is just a plugin for Gstreamer. It was very easy to integrate them and finally integrated them to PyMT. :) . I will be posting the example app as well as Speech Recognition engine for PyMT will be included in the 0.4 release. Can’t wait to see how users will use this new capabilities in their apps :)

Other then this i’ve been working on completely rebuilding the animation framework for PyMT 0.4 and its complete now WITH the wiki documentation. Thanks Mathieu for all the advices you gave me in improving this. Heres a video of the app he made with the animation framework.

This one I did.

We are trying our best to release a Alpha version before Christmas, lets see how it goes. Lots and lots of changes and feature additions :)


New NUI

Sunday, December 20, 2009 01:49pm on UI Addict » Multi-touch

Recently I saw a interesting tweet from Seth Sandler regarding a AS3 speech recognition lib. The demo was very impressive. So I wondered why not for python ?. So I started looking around for some premade librarys in Python. I found three good ones

The first two where windows only solution so they where rejected immediately. The Sphinx library from CMU is very vast library. After some reading I found out that the dwarf version of Sphinx called pocketsphinx is just a plugin for Gstreamer. It was very easy to integrate them and finally integrated them to PyMT. :) . I will be posting the example app as well as Speech Recognition engine for PyMT will be included in the 0.4 release. Can’t wait to see how users will use this new capabilities in their apps :)

Other then this i’ve been working on completely rebuilding the animation framework for PyMT 0.4 and its complete now WITH the wiki documentation. Thanks Mathieu for all the advices you gave me in improving this. Heres a video of the app he made with the animation framework.

This one I did.

We are trying our best to release a Alpha version before Christmas, lets see how it goes. Lots and lots of changes and feature additions :)


NUIPaint 0.1 Screenshots

Tuesday, August 18, 2009 04:48am on UI Addict » Multi-touch

Here are few of the screenshots of the application.

Initial Screen

Initial Screen

Collaboration Windows

Collaboration Windows

Fullscreen Mode

Fullscreen Mode

Windows in Fullscreen mode

Windows in Fullscreen mode

Layers within Canvas

Layers within Canvas

Filter Application

Filter Application

Comments, Suggestions and Criticisms welcome :D


NUIPaint 0.1 Screenshots

Tuesday, August 18, 2009 04:48am on UI Addict » Multi-touch

Here are few of the screenshots of the application.

Initial Screen

Initial Screen

Collaboration Windows

Collaboration Windows

Fullscreen Mode

Fullscreen Mode

Windows in Fullscreen mode

Windows in Fullscreen mode

Layers within Canvas

Layers within Canvas

Filter Application

Filter Application

Comments, Suggestions and Criticisms welcome :D


Delayed

Monday, July 27, 2009 05:00am on UI Addict » Multi-touch

Sorry for the delayed blog post, I’ve been busy shifting our house and getting adjusted to the environment here. First of all I would like to say that i passed the mid terms. Now im coding for the next milestone, The Final Evaluation. I will be writing about a report about my mid terms and a complete blogpost on Layering system that I implemented, how my mentor Matheiu showed me ideas to think in terms of software engineering. He guided me about using Design Patterns for layering system. Stay tuned for that blog :)


A Color Picker for PyMT

Tuesday, July 07, 2009 02:40pm on UI Addict » Multi-touch

It’s been long since I last posted about my GSOC work, so today I’ll be writing about how I achieved the color picker. There are several points that comes to the mind when we thing about the colorpicker.

  • How to achieve the gradient color selection area
    • Use a pre-rendered image ?
    • Generate using computer algorithm ? If what are the appropriate opengl calls?
  • What is the algorithm for picking the color from the location ?
    • Use opengl methods to pick the pixel from the point where the user touches ?
    • Or use some algorithmic technique to determine where the user is touching local to the gradient and then calculate the appropriate RGB values

There is a humongous list of resources available for Color pickers especially AJAX based, but my problem was different, I wanted a Quarter Circle Color Picker :) , nowhere in the internet did i find one single open-source quarter circle color pickers, but hey no pain no gain :) , so I set out to create a Opengl rendered quarter circle color picker with algorithmic based color picking.

1. Rendering the Gradient Circle

So my first goal was to create a opengl rendered quarter circle, well its very easy to generate a single color circles in opengl like the ones that I have used in my previous widgets, Rendering a gradient one is a very hard task. I know that opengl allows to blend colors by specifying different colors at different vertices of a polygon, but how can one do the same in a circle ?!!, circle has no vertex edges.

A Color Blended Triangle

A Color Blended Triangle

GL_TRIANGLE_FAN

I did not find any way to get around this problem using Circle render, so the alternative solution was to render thin triangles and arrange it in the form of a fan, and when i looked around the net for this one, to my surprise there was one opening call to make such a polygon using triangle fan.

def drawPartialCircle(pos=(0,0), radius=100):
    with gx_begin(GL_TRIANGLE_FAN):
        glColor3f(0,0,1)
        glVertex2f(0,0)
        for angle in range (90,185,5):
            glColor3f(sin(radians(angle-90))*sqrt(2),cos(radians(angle-90))*sqrt(2),0)
            glVertex2f(int(cos(radians(angle))*radius),int(sin(radians(angle))*radius))

So in the above algorithm i’ve chosen the angle range from 90 to 185 because i want it to appear at the bottom right corner. So what the algoritm does it,

  • It generates 5 degree triangles to form a quater circle.
  • The center of the circle is blue so the other two edges of the two radii will be red and green respectively.
  • The mid way of the circumference must be yellow that is RGB =>(1,1,0) , so to we know that only at 45 degrees sin 45 = cos 45.
  • sin 45 = 1/sqrt(2), so to obtain 1 at the center we multiply it by sqrt(2), so we get (1,1,0) at the center.
Opengl rendered Quarter Circle

Opengl rendered Quarter Circle

If you have any queries regarding this algo, feel free to comment.

2. Calculating color at the touch point

I used the similar sine cos formula to calculate the RGB values, The R and G values varies according to the angle made by the line joining the center and the touch point with the horizontal line. Whereas the blue value is a function of the distance touch point from the center. So here goes the algorithm

def calculate_color(self):
        b = 1-self.point_distance/self.size[0]
        r = (sin(radians(self.point_angle))-b)*sqrt(2)
        g = (cos(radians(self.point_angle))-b)*sqrt(2)

where self.size[0] is the radius of the circle.

3. Hue and Saturation

As you can see in the rendered quarter circle above there is no range of black nor white, so this posed a new challenge to use a slider to make a hue saturation variation, HSV[Hue, Saturation, Value]  is an alernative representation of RGB color space, something similar to Rectangular to Polar coordinates conversion.

HSV Representation

HSV Representation

Since I need to vary the color from White>>Color>>Black, the variation has to be done in two steps

  • White >> Color variation, which is nothing but variation of the Saturation, here saturation = 0 implies White
  • Color >> Black which is variation of the Value field

Thomas (My mentor) pointed me to this really nifty function in core python rgb_to_hsv and hsv_to_rgb , which converts between the colorspaces with ease. So I divide the slider into two portions lower limit to middle value for saturation, middle value to upper limit for Value. I chose to take 2 as the maximum range of the slider, so it varies from 0 to 2, and middle i get 1. I developed the following algorithm.

value = rgb_to_hsv(self.slider.slider_color[0],self.slider.slider_color[1],self.slider.slider_color[2])
h,s,v = value[0],value[1],value[2]
if self.slider._value <= 1.0:
    s = self.slider._value
else:
    v = 2-self.slider._value
self.slider.slider_color = hsv_to_rgb(h,s,v)

Overall this entire widget was very complex to build, but I got to learn alot from this tiny project. If you have queries regarding any of the algorithm that I developed, or if you have suggestions of better algorithm, or anything at all feel free to comment :) , it will definitely help me make this project better


A Color Picker for PyMT

Tuesday, July 07, 2009 02:40pm on UI Addict » Multi-touch

It’s been long since I last posted about my GSOC work, so today I’ll be writing about how I achieved the color picker. There are several points that comes to the mind when we thing about the colorpicker.

  • How to achieve the gradient color selection area
    • Use a pre-rendered image ?
    • Generate using computer algorithm ? If what are the appropriate opengl calls?
  • What is the algorithm for picking the color from the location ?
    • Use opengl methods to pick the pixel from the point where the user touches ?
    • Or use some algorithmic technique to determine where the user is touching local to the gradient and then calculate the appropriate RGB values

There is a humongous list of resources available for Color pickers especially AJAX based, but my problem was different, I wanted a Quarter Circle Color Picker :) , nowhere in the internet did i find one single open-source quarter circle color pickers, but hey no pain no gain :) , so I set out to create a Opengl rendered quarter circle color picker with algorithmic based color picking.

1. Rendering the Gradient Circle

So my first goal was to create a opengl rendered quarter circle, well its very easy to generate a single color circles in opengl like the ones that I have used in my previous widgets, Rendering a gradient one is a very hard task. I know that opengl allows to blend colors by specifying different colors at different vertices of a polygon, but how can one do the same in a circle ?!!, circle has no vertex edges.

A Color Blended Triangle

A Color Blended Triangle

GL_TRIANGLE_FAN

I did not find any way to get around this problem using Circle render, so the alternative solution was to render thin triangles and arrange it in the form of a fan, and when i looked around the net for this one, to my surprise there was one opening call to make such a polygon using triangle fan.

def drawPartialCircle(pos=(0,0), radius=100):
    with gx_begin(GL_TRIANGLE_FAN):
        glColor3f(0,0,1)
        glVertex2f(0,0)
        for angle in range (90,185,5):
            glColor3f(sin(radians(angle-90))*sqrt(2),cos(radians(angle-90))*sqrt(2),0)
            glVertex2f(int(cos(radians(angle))*radius),int(sin(radians(angle))*radius))

So in the above algorithm i’ve chosen the angle range from 90 to 185 because i want it to appear at the bottom right corner. So what the algoritm does it,

  • It generates 5 degree triangles to form a quater circle.
  • The center of the circle is blue so the other two edges of the two radii will be red and green respectively.
  • The mid way of the circumference must be yellow that is RGB =>(1,1,0) , so to we know that only at 45 degrees sin 45 = cos 45.
  • sin 45 = 1/sqrt(2), so to obtain 1 at the center we multiply it by sqrt(2), so we get (1,1,0) at the center.
Opengl rendered Quarter Circle

Opengl rendered Quarter Circle

If you have any queries regarding this algo, feel free to comment.

2. Calculating color at the touch point

I used the similar sine cos formula to calculate the RGB values, The R and G values varies according to the angle made by the line joining the center and the touch point with the horizontal line. Whereas the blue value is a function of the distance touch point from the center. So here goes the algorithm

def calculate_color(self):
        b = 1-self.point_distance/self.size[0]
        r = (sin(radians(self.point_angle))-b)*sqrt(2)
        g = (cos(radians(self.point_angle))-b)*sqrt(2)

where self.size[0] is the radius of the circle.

3. Hue and Saturation

As you can see in the rendered quarter circle above there is no range of black nor white, so this posed a new challenge to use a slider to make a hue saturation variation, HSV[Hue, Saturation, Value]  is an alernative representation of RGB color space, something similar to Rectangular to Polar coordinates conversion.

HSV Representation

HSV Representation

Since I need to vary the color from White>>Color>>Black, the variation has to be done in two steps

  • White >> Color variation, which is nothing but variation of the Saturation, here saturation = 0 implies White
  • Color >> Black which is variation of the Value field

Thomas (My mentor) pointed me to this really nifty function in core python rgb_to_hsv and hsv_to_rgb , which converts between the colorspaces with ease. So I divide the slider into two portions lower limit to middle value for saturation, middle value to upper limit for Value. I chose to take 2 as the maximum range of the slider, so it varies from 0 to 2, and middle i get 1. I developed the following algorithm.

value = rgb_to_hsv(self.slider.slider_color[0],self.slider.slider_color[1],self.slider.slider_color[2])
h,s,v = value[0],value[1],value[2]
if self.slider._value <= 1.0:
    s = self.slider._value
else:
    v = 2-self.slider._value
self.slider.slider_color = hsv_to_rgb(h,s,v)

Overall this entire widget was very complex to build, but I got to learn alot from this tiny project. If you have queries regarding any of the algorithm that I developed, or if you have suggestions of better algorithm, or anything at all feel free to comment :) , it will definitely help me make this project better


A Circular Slider

Wednesday, June 24, 2009 11:23am on UI Addict » Multi-touch

Sliders are very nifty UI control tool, they provide some sort of natural feedback to the user visually when they interact with it. Especially in a touch user interface sliders are very useful. In PyMT we already have Horizontal and Vertical rectangular sliders.

PyMT rectangular sliders

PyMT rectangular sliders

But I needed something different, a circular slider for the next widget that I wanted to develop a Quarter Circle color picker. So I sat down with the sketchbook again and noted down the following pointers

  • The Slider must provide a way to limit the angle of the slider i.e not full 360 always, meaning it should provide me a way to select 60 Degree Circular sliders too.
  • Must be rotatable so that it can be set in any direction.
  • Must provide a way for customizations like color, size etc.
  • Must provide all features of a regular rectangular slider.

The three main things that i had to take care when designing the algorithm was that

  1. Drawing the Ring in Opengl
  2. Angle Calculation to fill in the slider as you touch it
  3. Collision detection, as the existing collision detection code was for rectangular widgets

Let start with each part one at a time

1. OPENGL Ring

I was wondering how I can make a ring like structure in opengl, I thought maybe make two circles one of the outer radius another of the inner radius, with the difference between the two being the thickness of the ring. But a bit of browsing on the internet revealed that there is a OPENGL call to draw the exact same thing, and its very customizable too.

 void gluPartialDisk( GLUquadric* quad,
			       GLdouble	inner,
			       GLdouble	outer,
			       GLint slices,
			       GLint loops,
			       GLdouble	start,
			       GLdouble	sweep )

you can read more about gluPartialDisk here. This really simplified the drawing part of the slider.

2. Angle Calculation

Slider Angle Calculation

Slider Angle Calculation

The angle calculation was easy once i found out how to do it,

  • First Make a vector of the one edge of the slider w.r.t the center.
  • Now as the touch is moved on the slider, take one more vector at the current touch location w.r.t to the center
  • Find the angle between the two vector, this is the fill angle for the slider

3.  Collision Detection

Next problem was collision detection algorithm, since the sliders where in a arc form, the collision detection has two boundary conditions and which itself formed the algorithm for collision detection.

  • The distance of touch from the center of the slider must be lesser than the outer radius and lesser than the outer radius-thickness of the slider
  • The Angle created by the current touch location and the vertical axis must be greater than the angle of the start edge of the slider with the vertical axis and lesser than the angle of the end edge of the slider with the vertical axis

Using the above two conditions I wrote the following code which works very nicely

def collide_point(self, x, y):
    #A algorithm to find the whether a touch is within a semi ring
    point_dist = Vector(self.pos).distance((x, y))
    point_angle = Vector(self.radius_line).angle((x - self.pos[0], y - self.pos[1]))
    if point_angle < 0:
       point_angle=360+point_angle
    if point_angle <= self.sweep_angle and point_angle >=0:
       return  point_dist<= self.radius and point_dist > self.radius-self.thickness

Here is a screenshot of the circular sliders, this was taken by my other mentor Thomas, see how they can be stacked over one another and still the collision detection algorithm can work flawlessly

Stacked Circular Sliders

Stacked Circular Sliders

You can read more about the widget here. In the next blog i’ll be posting about Color Wheel, and that involves alot of trigometric equations :) .


A Circular Slider

Wednesday, June 24, 2009 11:23am on UI Addict » Multi-touch

Sliders are very nifty UI control tool, they provide some sort of natural feedback to the user visually when they interact with it. Especially in a touch user interface sliders are very useful. In PyMT we already have Horizontal and Vertical rectangular sliders.

PyMT rectangular sliders

PyMT rectangular sliders

But I needed something different, a circular slider for the next widget that I wanted to develop a Quarter Circle color picker. So I sat down with the sketchbook again and noted down the following pointers

  • The Slider must provide a way to limit the angle of the slider i.e not full 360 always, meaning it should provide me a way to select 60 Degree Circular sliders too.
  • Must be rotatable so that it can be set in any direction.
  • Must provide a way for customizations like color, size etc.
  • Must provide all features of a regular rectangular slider.

The three main things that i had to take care when designing the algorithm was that

  1. Drawing the Ring in Opengl
  2. Angle Calculation to fill in the slider as you touch it
  3. Collision detection, as the existing collision detection code was for rectangular widgets

Let start with each part one at a time

1. OPENGL Ring

I was wondering how I can make a ring like structure in opengl, I thought maybe make two circles one of the outer radius another of the inner radius, with the difference between the two being the thickness of the ring. But a bit of browsing on the internet revealed that there is a OPENGL call to draw the exact same thing, and its very customizable too.

 void gluPartialDisk( GLUquadric* quad,
			       GLdouble	inner,
			       GLdouble	outer,
			       GLint slices,
			       GLint loops,
			       GLdouble	start,
			       GLdouble	sweep )

you can read more about gluPartialDisk here. This really simplified the drawing part of the slider.

2. Angle Calculation

Slider Angle Calculation

Slider Angle Calculation

The angle calculation was easy once i found out how to do it,

  • First Make a vector of the one edge of the slider w.r.t the center.
  • Now as the touch is moved on the slider, take one more vector at the current touch location w.r.t to the center
  • Find the angle between the two vector, this is the fill angle for the slider

3.  Collision Detection

Next problem was collision detection algorithm, since the sliders where in a arc form, the collision detection has two boundary conditions and which itself formed the algorithm for collision detection.

  • The distance of touch from the center of the slider must be lesser than the outer radius and lesser than the outer radius-thickness of the slider
  • The Angle created by the current touch location and the vertical axis must be greater than the angle of the start edge of the slider with the vertical axis and lesser than the angle of the end edge of the slider with the vertical axis

Using the above two conditions I wrote the following code which works very nicely

def collide_point(self, x, y):
    #A algorithm to find the whether a touch is within a semi ring
    point_dist = Vector(self.pos).distance((x, y))
    point_angle = Vector(self.radius_line).angle((x - self.pos[0], y - self.pos[1]))
    if point_angle < 0:
       point_angle=360+point_angle
    if point_angle <= self.sweep_angle and point_angle >=0:
       return  point_dist<= self.radius and point_dist > self.radius-self.thickness

Here is a screenshot of the circular sliders, this was taken by my other mentor Thomas, see how they can be stacked over one another and still the collision detection algorithm can work flawlessly

Stacked Circular Sliders

Stacked Circular Sliders

You can read more about the widget here. In the next blog i’ll be posting about Color Wheel, and that involves alot of trigometric equations :) .


A Theory behind Circular Menu

Monday, June 22, 2009 11:06am on UI Addict » Multi-touch

At first I thought it would be very simple to code a circular menu, as there was already a scatterwidget in pymt which would rotate on a gesture, I can shut of translation and scaling gesture and make a simple circular menu out of it, but then how does a rotation work ? well you need two points to rotate a scatter widget to find the angle of rotation, so using a scatterwidget was ruled out.

So i started with a sketch book, and started deciding how my Circular Menu should work and look. Here are the few pointers I noted down

  • One finger should be able to rotate the widget, like a swipe
  • How do i calculate the angle of rotation when only finger is used ?!!
  • Should be a Circular Design which is obvious :P
  • The icons/buttons should be arranged circularly around the circumference of the widget.

I started  with the angle calculation. I thought of the following logical algorithm

  1. Save first touch point coordinates
  2. For every movement of the same touch point location, find the angle between the first touch point coordinates and the current touch point coordinates with respect to the center of the circle.
  3. Add the angle calculated to the total rotation of the widget when you finish the gesture i.e when you remove your touch.
  4. Use this total angle calculated to rotate the widget using openGL transformations.
Angle Calculation

Angle Calculation

The angle calculation can be easily done using pymt’s awesome Vector class, tito showed me how I can use it to do alot of vector calculations which really simplies most of the things i want to do like angle calculation, before using Vector class I intially wrote my own angle calculation code using trignometrics :P .

Next problem was to arrange the widgets on the circumference. I remembered from my Highschool Trigonometrics that we can find the point on the circumference of a circle given a angle theta using the formula

P(x,y) = (radius*cos(theta), radius*sin(theta))

This worked brilliantly. It arranged the widgets around the Widget in a circular manner, and this would rotate the icons along with the widget. Here is the screenshot of the final widget and here is the final code.

Circular Menu

Circular Menu


What I’ve been uptop

Monday, June 22, 2009 09:01am on UI Addict » Multi-touch

Lately I’ve been coding a lot, especially on NUIPaint, but I couldn’t blog because of my Final exams and plus blogging uses up too much of precious development time :P , so I tend to blog less. Anyways in the next few days I’ll be posting  about all the theory behind the new widgets that I developed. The Opengl Algorithms, Trigonometric equations and other stuff. Hopefully this will be useful for somebody, as i dint now find much information and had to code on my own. Following are the widgets of which I’ll be blogging about

  • A Circular Menu
  • A Circular Slider
  • A Quarter Circle Color Picker

What I’ve been uptop

Monday, June 22, 2009 09:01am on UI Addict » Multi-touch

Lately I’ve been coding a lot, especially on NUIPaint, but I couldn’t blog because of my Final exams and plus blogging uses up too much of precious development time :P , so I tend to blog less. Anyways in the next few days I’ll be posting  about all the theory behind the new widgets that I developed. The Opengl Algorithms, Trigonometric equations and other stuff. Hopefully this will be useful for somebody, as i dint now find much information and had to code on my own. Following are the widgets of which I’ll be blogging about

  • A Circular Menu
  • A Circular Slider
  • A Quarter Circle Color Picker

NUIPaint Update 1

Monday, June 01, 2009 11:59am on UI Addict » Multi-touch

So Last three days i’ve been working continously on the GSOC project. I Manage to achieve the following

  • A toolbar with dummy icons in place, but two of the buttons zoom and brush are activated. They are used to switch between the two modes of the canvas Widget
  • A Canvas Widgets, its a FBO based workarea/canvas, it has two modes of operation
    • Zoom mode: In this mode the canvas can be altered using multitouch gestures, it can be translated,rotated and scaled
    • Paint Mode: In this mode any touch on the canvas draws a circle using a default brush and color
  • I also developed a file browser widget, its a  file browser with kinetics and it generates appropriate icons for each file type. There is alot to improve on this widget, like provide filters, several buttons, and generate events on launch and exit  as suggested by my mentor Matheiu.

I’m getting the hang of this, several new kinds of widget requirements are coming into picture which is great :) . I have attached a screenshot of the work in progress

NUIPaint Screenshot 1

NUIPaint Screenshot 1


NUIPaint Update 1

Monday, June 01, 2009 11:59am on UI Addict » Multi-touch

So Last three days i’ve been working continously on the GSOC project. I Manage to achieve the following

  • A toolbar with dummy icons in place, but two of the buttons zoom and brush are activated. They are used to switch between the two modes of the canvas Widget
  • A Canvas Widgets, its a FBO based workarea/canvas, it has two modes of operation
    • Zoom mode: In this mode the canvas can be altered using multitouch gestures, it can be translated,rotated and scaled
    • Paint Mode: In this mode any touch on the canvas draws a circle using a default brush and color
  • I also developed a file browser widget, its a  file browser with kinetics and it generates appropriate icons for each file type. There is alot to improve on this widget, like provide filters, several buttons, and generate events on launch and exit  as suggested by my mentor Matheiu.

I’m getting the hang of this, several new kinds of widget requirements are coming into picture which is great :) . I have attached a screenshot of the work in progress

NUIPaint Screenshot 1

NUIPaint Screenshot 1


Let the Coding Begin!!

Saturday, May 30, 2009 04:16pm on UI Addict » Multi-touch

Finally i’m over with the college project and now on i can concentrate on GSOCing, i’m relieved no more h/w work is involved. There are several updates which occured during the long absense of my posting on this blog.

  1. Mathieu Virbel a.k.a tito is also my GSOC mentor wohoo. So i got the two best Computer Graphics mentors a student can get. Now i call myself double lucky ;) . I have already know them very well, and i’ve been learning under them for nearly 3+ months now. Wohhoo
  2. Got a free gift from Google, a years subscriptions to ACM digital library. thank you google.

As for coding, The source code is here http://code.google.com/p/nuipaint/source/checkout, i’ll keep this blog updated regarding my endevours as usual now that my college project is done :P


Let the Coding Begin!!

Saturday, May 30, 2009 04:16pm on UI Addict » Multi-touch

Finally i’m over with the college project and now on i can concentrate on GSOCing, i’m relieved no more h/w work is involved. There are several updates which occured during the long absense of my posting on this blog.

  1. Mathieu Virbel a.k.a tito is also my GSOC mentor wohoo. So i got the two best Computer Graphics mentors a student can get. Now i call myself double lucky ;) . I have already know them very well, and i’ve been learning under them for nearly 3+ months now. Wohhoo
  2. Got a free gift from Google, a years subscriptions to ACM digital library. thank you google.

As for coding, The source code is here http://code.google.com/p/nuipaint/source/checkout, i’ll keep this blog updated regarding my endevours as usual now that my college project is done :P


GSOC 09: I’m in !!!

Friday, April 24, 2009 07:49am on UI Addict » Multi-touch

I’m posting after a long time now, I was pretty busy with my college work and projects. Along with this I came to know that NUIGroup is selected to GSOC 09 as a mentoring organization. I wanted to participate in this great initiative by Google. So i started brainstorming what can be a good proposal. I decided since I’m already a contributing member in the PyMT team, its best to work on it and I know it really well.

Painting Applications are at a very nascent stage in NUIGroup, A Drawing Sandbox+Photo Manipulator seemed a credible app to me, somewhat like a subset of photoshop with use of graphic hardware acceleration to speed things up, i want to learn GLSL anyways, so building an app is the best way to do it.

After consulting alot of forum members, pymt core developers and my brother, I realised a proposal, Mathieu Virbel and Thomas Hansen helped me to figure out the technical aspects of the application, my brother a senior software architect he helped me correct the  proposal document. Other people who i consulted and got advice from are nuiman, cerupcat, gorkem, Falcon4Ever, Harry, bauer, aditya, leachim (Yeah i know alot of people :) , but GSOC is not a easy competition to get in either ), I really thank all of them for spending time in advicing me.

It took me nearly a week to finalize the document.Structure it out, make the UI mock ups and figure out the timeline. Here are some of the mockups that i did and here is the my proposal document for download as well.

UI

UI

Interaction Idea

Interaction Idea

There are several other Interaction ideas and UI mockups in the PDF do check it out..

On April 20th results where out and I am In!!!. It was one of the happiest moments of my life. 7 applications for NUIGroup where selected and all are great. And Thomas Hansen is my mentor, he is a last years GSOC student for nuigroup and specializes in OPENGL and a PHD student. Here is a list other applications which selected are.

MPX X.Org TUIO Driver
Student: Ryan Huffman
Mentor: Martin Kaltenbrunner

Recognition, Tracking and Association of Hands, Fingers, and Blobs: A Tbeta Upgrade
Student: Thiago Araujo
Mentor: Laurence Muller

Component-Based HCI UI Framework and High-Level HCI Library for Java
Student: Ori Rawlings
Mentor: Christian Moore

Multitouch Extension Module for Google SketchUp
Student: Anirudh Sharma
Mentor: Pawel Solyga

An openframeworks toolkit for developing multi-touch musical interfaces
Student: Dimitri Diakopoulos
Mentor: Seth Sandler

Creating Models for Learning and Recognizing multitouch gestures
Student: Sashikanth Damaraju
Mentor: Alexander Popovich

Congratulations to all the winners!!. All said and done, the real work starts from now :)



Embed this widget

Multitouch Blogs is Sponsored by:

MT-50 Multitouch Table - Built for museums and busy public environments, the high-resolution MT-50 multitouch table supports intuitive gestures.

GestureWorks - A Flash framework for creating multitouch applications on the HP TouchSmart, Dell Studio One, and optical platforms.

Touchstands - TouchStands, made of hardened steel, are the only stand available on the market that securely cradles the HP TouchSmart.

Ideum