Take the 2-minute tour ×
Graphic Design Stack Exchange is a question and answer site for Graphic Design professionals, students, and enthusiasts. It's 100% free, no registration required.

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

3 Answers 3

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

You should try doing that with the displacement effect. Go to Filters > Filter Editor... then add Effect: Image. Google for a fish-eye displacement map (it will look like a green-red ball) and upload it to the Image filter. Now add displacement effect. Route its first input to a Source Graphic (drag FX's triangle) and the second to the Image. Under Displacement, select Red for X and Green for Y. Voila! For global fish-eye you possibly have to use a lighting insead of the map, I am working on it right now.

share|improve this answer
    
Hi Yo-J, welcome to GDSE and thanks for your answer. If you have any questions, please see the help center or ping one of us in chat once your reputation is sufficient (20). Keep contributing and enjoy the site! –  Vincent 18 hours ago

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

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.