Take the 2-minute tour ×

Is anyone aware of a way to create a fisheye effect with elements in InkScape? Freehand used to have an xtra tool that did just that.

The specific effect I'm trying to achieve is applying horizontal lines on a spherical object...akin to the latitude marks on globe. If you're staring at the equator, the latitude lines above bend upwards towards the pole and the reverse for those below the equator.

I could do this a number of ways and have some alternatives in mind, but Freehand's Fisheye tool seemed the easiest if there was something similar to that in Inkscape.

share|improve this question
add comment

2 Answers

up vote 4 down vote accepted

This isn't perfect, but one way is to use the Envelope Deformation path effect.

First convert your object to a path (you have to remove all groups and just end up with one path -- yes this is limiting). Then choose "Path" > "Path Effects Editor...". Select the Envelope Deformation path effect and click "Add". I suggest only enabling top and bottom paths. Then click the icons to edit the top/bottom paths on screen. You can play with them a bit to get the desired effect.

The downside of course is that using path effects necessitates destructive editing and can't be applied to groups of objects.

See this image for an example: example

share|improve this answer
Sean gets the answer. This isn't quite a nice as an actual fisheye lens filter, but perhaps that'll be coming down the pipe eventually. –  DA01 Jun 10 '12 at 1:03
add comment

To apply lines on a sphere, you could use Interpolate between two paths (half circles). Like this for example:

sphere interpolation 1

(1). Draw a circle, then draw a vertical line, align them both using the Align tool. Select both the circle and the path, go to Path > Cut path. This will use the path (which is on top) to cut the path of the circle into two separate paths.

(2). Select the right half of the circle, go to Path > Reverse. This is an important step, and is NOT the same as simply flipping it.

(3). Select both halfs of the circle, go to Extensions > Generate from path > Interpolate. In this case, I chose the following settings: exponent 0, interpolation steps 6, duplicate endpaths off, interpolate style on. Click Apply, or use Live preview before clicking apply.

Notice that the lines have equal distance to each other. On a real sphere this would not be the case because of perspective, but it might be good enough. To make it more realistic, you may want to do these extra steps:

sphere interpolation 2

(4). Copy one of the paths (here I chose the green one). Edit its nodes to make it closer to the outside circle (yellow is the result).

(5). Copy the resulting path, flip it, and move it to the other side. That's better!

Now, if you don't want to see the "poles" of the sphere, you could use a circle to clip it:

sphere 3

(6). Draw a circle, align it on top of the sphere (group the lines of the sphere beforehand), make it a little smaller than the sphere, and a bit transparent. Duplicate it, move one behind all the others (you will use it later).

(7). select the sphere and the transparent circle on top (2 objects), right click, then Create clip (or go to Object > Clip > Set). The back circle will appear. Change colors etc.

share|improve this answer
add comment

Your Answer


