Episode 088

Episode 088 – Wrap Text Around a Globe

by heathenx

In this episode I will demonstrate how to wrap text around a three-dimensional globe in Inkscape v.046.

I used a fairly new extension from Gerrit Karius (aka G33K) called Bezier Envelope. If you want to follow along or use the Bezier Envelope for whatever future purpose then be sure to download it here. Thanks Gerrit. :)

icon for podpress  Other Media: Download

Tags: , ,

71 Responses to “Episode 088”

  1. screencasters.heathenx.org/blog » Blog Archive » Episode 088 - Wrap Text Around a Globe Says:

    [...] got Episode 088 uploaded. It’s a whopper too. This was the first time that I recorded in Ubuntu using 26fps [...]

  2. gimpuser Says:

    Hello

    Many, many thanks for this episode (and all the others). I learn so much by viewing and using the techniques from your screencasts. I like your clear voice.

    With best regards from the sunny Schwetzingen, germany.

  3. Bercik Says:

    Hi!
    I have got a problem… when I’m selecting Bezier Envelope, i have an error.

    C:\Program Files\Inkscape\share\extensions\bezierenvelope.py:231: DeprecationWarning: raising a string exception is deprecated

    raise( “Too many curves in envelope.” )

    Traceback (most recent call last):

    File “C:\Program Files\Inkscape\share\extensions\bezierenvelope.py”, line 351, in

    e.affect()

    File “C:\Program Files\Inkscape\share\extensions\inkex.py”, line 154, in affect

    self.effect()

    File “C:\Program Files\Inkscape\share\extensions\bezierenvelope.py”, line 93, in effect

    axes = extractMorphAxes( simplepath.parsePath( envelopeElement.get(‘d’) ) );

    File “C:\Program Files\Inkscape\share\extensions\bezierenvelope.py”, line 231, in extractMorphAxes

    raise( “Too many curves in envelope.” )

    Too many curves in envelope.

    Please, can somebody help me?

  4. heathenx Says:

    @Bercik
    You must only have a total of 4 segments (or 4 nodes, I guess) in your bezier path. Open the bezierenvelop.py in a text editor and read how to use this new extension. Also, selection matters. Pick your object first then your bezier path to apply the effect without errors.

  5. Richard Querin Says:

    Very nice tutorial! I am going to be all over that bezier envelope extension like a bad smell…

    One thing I was thinking about watching the very beginning, was that offset ellipse method. I think it might be improved further still by doing two things:

    1. The upper ellipse should be stretched (or compressed I guess) slightly narrower in it’s vertical size.

    2. Likewise, the lower ellipse should be stretched slightly taller in it’s vertical size.

    I think doing the above might give an even more natural shape as a guide for the bezier envelope.

    With regards to filesize, while the 26fps ones are larger, I think your 200+MB filesize might have a little to do with the fact that it was about 50min in length. But you packed lots of good info into that 50min so it was well worth it. Truth be told, I didn’t see any sort of difference between your 15fps casts and my 26fps. Did you see that difference?

  6. Don W. Says:

    Very good, Bezier Envelope sure made the work in EPS 60 easier and more accurate. I hope he (G33K) will continue to work on it.

  7. pyropingvin Says:

    Hi!
    I have got a problem… when I’m selecting “Bezier Envelope”, i have an error.

    Traceback (most recent call last):
    File “/home/pyropingvin/.inkscape/extensions/bezierenvelope.py”, line 70, in
    import inkex, os, simplepath, cubicsuperpath, simpletransform
    ImportError: No module named inkex

    Please, can somebody help me?

  8. heathenx Says:

    @Richard
    Thanks for the tips. I’ll give that a shot and see what it looks like.

    Regarding the 26fps, the thing I noticed right off the bat was that the cursor motion was much better (smoother) but if it cranks up my file size like it did then I’m not sure it is worth it for me. My last episode was just as long and it is only 133MB in size (recorded at 15fps).

    Another thing that is different too is that I am using the latest and greatest RMD that I compiled on Ubuntu 9.04. Maybe something changed there.

    @pyropingvin
    That error looks like you haven’t placed the bezierenvelope.py and .inx in the same directory as inkex. You cannot place the extensions in your /home .inkscape directory structure. Where have you placed your extensions?

  9. w1zzy1nk Says:

    I am a not smart windows user of Inkscape. I am just inquiring as to where exactly I should place the Bezier Envelope extensions to have them function in Inkscape. Love the work Heathenx and Richard, keep it up.

  10. heathenx Says:

    @w1zzy1nk
    If you’re behind an Ubuntu machine then they go in /usr/share/inkscape/extensions. If you are behind a Windows machine then the default location is C:\Program Files\Inkscape\share\extensions. If you’re behind a Mac then heaven knows where they go cuz I don’t have a clue. :) Perhaps a Mac user can chime in on that one.

  11. jbrgfx Says:

    The path on a MAC for installing Inkscape extensions is:

    /Applications/Inkscape.app/Contents/Resources/extensions/

    Inkscape runs under X11 on the MAC, so this path should work unless non- default paths were chosen at the time of unpacking and installation by the user.

  12. gp Says:

    Where I can download this extension? I not find it in my Inkscape with Kubunt 9.04…

    gp

  13. jbrgfx Says:

    The link is near the end of introduction to the tutorial (above).
    Here it is also:

    http://screencasters.heathenx.org//wp-content/uploads/bezier_envelope.tar.gz

  14. gp Says:

    doh…I’m idiot…

  15. gp Says:

    When I use the extension I have thie error:
    Traceback (most recent call last):
    File “/usr/share/inkscape/extensions/bezierenvelope.py”, line 351, in
    e.affect()
    File “/usr/share/inkscape/extensions/inkex.py”, line 154, in affect
    self.effect()
    File “/usr/share/inkscape/extensions/bezierenvelope.py”, line 93, in effect
    axes = extractMorphAxes( simplepath.parsePath( envelopeElement.get(‘d’) ) );
    File “/usr/share/inkscape/extensions/bezierenvelope.py”, line 231, in extractMorphAxes
    raise( “Too many curves in envelope.” )
    TypeError: exceptions must be classes or instances, not str

    Why?

    Where is my mistake?

    Giuseppe

  16. heathenx Says:

    @gp
    You can only have 4 segments in your bezier path (just like using the perspective effect). In other words it has to be a quadrilateral. Then you must select the object that you want to deform first (it has to be a path too) then the bezier path.

    Judging from your error report:
    File “/usr/share/inkscape/extensions/bezierenvelope.py”, line 231, in extractMorphAxes
    raise( “Too many curves in envelope.” )
    Tells me that you might have more than 4 segments.

  17. gp Says:

    OK…thanks…today I’m very idiot :)

    Giuseppe

  18. cleroy61 Says:

    Congratulations for this tuto ;

    I regret you don’t put an image for a world map effect …

    Christophe

  19. RedBirdiii Says:

    Oh.. very interesting tutorial.. Thanks a lot..

    BTW, you have a very beautiful icons set, where did you get them?

  20. heathenx Says:

    @RedBirdiii
    I use a Tango version of the icon set. I’m not sure if it’s the official set coming for 0.47 but I like it regardless. I’m a big fan of anything Tango. It’s my favorite icon set. :)

    See my blog post about it:
    http://screencasters.heathenx.org/blog/2009/01/11/updated-tango-icons-for-inkscape

  21. Rk Castillo Says:

    I just can’t get the gradient to reverse. I’m using VMware on a mac to run the windows version of Inkscape.

    I hit Shift R and nothing happens to the gradient. I click on Path, then reverse. NOthing happens. How do you change a gradient?

  22. heathenx Says:

    @RK Castillo
    That’s interesting. I wonder if there is an issue with VMWare somewhere. Seems odd if that were true. I’m not sure how to help you because I don’t have a similar environment to test this. Regardless, you can do it the old-fashioned way (pre 0.46) by going into the gradient editor and making your changes there. That includes adding stops if needed. I even illustrated this in this episode when I was unable to add a stop to a gradient on the canvas. I got it in the end but it tripped me up a little.

  23. Simon Says:

    Nice tutorial!

    And i’ve figured out what your problem with your gradient node was

    When you make a gradient you may not move it any other place just add the node from the original spot it has.

    I have the same problem with it really annoying

    Hope it helped you :)

  24. Bugsbane Says:

    Thanks for a(nother) great tutorial!

    I’ve been wanting something like bezier envelope for quite a while. What is the software displaying the keys you have pressed. It looks like you’re on Ubuntu, but I haven’t managed to find any Linux software to accomplish this simple task. :(

  25. heathenx Says:

    @Bugsbane
    We use Daniel Taylor’s key-status monitor (http://www.programmer-art.org/projects/key-status-monitor). I think it works on any distro but indeed use Ubuntu.

    I modified Daniel’s monitor with a smaller dialog box and larger text keys. I run that version without the windows decoration via devilspie so that it’s even smaller. Check out this blog post:
    http://screencasters.heathenx.org/blog/2009/04/06/smaller-key-status-monitor

  26. VladHimself Says:

    i’ve got a problem.. i downloaded the file you posted, “bezier_envelope.tar” GZ file, and it’s only 5kb. i placed it in the extensions folded just as you said to do. i have closed and restarted my inkscape and i’ve even restarted my computer. i still don’t see the extension under effects. the file shown in the video is a different name, “bezierenvelope.py” and its 12kb instead of 5kb like the one i downloaded.

    any help would be greatly appriciate. i need to get this working!

  27. heathenx Says:

    @VladHimself
    You downloaded the bezier_envelope.tar.gz file which is an archive file like a zip file. You need to extract the contents of that archive. There are two files inside, one with a .py extension and one with a .inx extension. Both of those files need to go into your extensions folder in your install path. From your comment it looks like you just placed the .tar.gz file in there instead…which won’t work.

  28. VladHimself Says:

    ah… ok, good deal. thanks a lot buddy. i tried opening it with 7zip, i thought it could extract that type of file but i guess not

  29. Internes: Updates und neues Logo « WoW Manufaktur Says:

    [...] ein neuer Avatar erschaffen. Ich möchte an dieser Stelle vielmals Heathenx und sein hervorragendes Tutorial danken, es hat richtig Spass gemacht und war eine grosse Hilfe um erste Schritte mit Inkscape zu [...]

  30. ricky Says:

    how do you open ur extensions folder

  31. Don W Says:

    @RK Castillo..After the gradient is applied, and you want to add nodes, or reverse the gradient ON CANVAS, just hit “ctrl+F1 Create and edit Gradients”. You can then toggle the reverse of the gradients using “shft+R” and/or add nodes..

  32. sangbima Says:

    I found this error when i use the extension on my ubuntu mechine.

    Traceback (most recent call last):
    File “/usr/share/inkscape/extensions/bezierenvelope.py”, line 305, in
    e.affect()
    File “/usr/share/inkscape/extensions/inkex.py”, line 154, in affect
    self.effect()
    File “/usr/share/inkscape/extensions/bezierenvelope.py”, line 92, in effect
    axes = extractMorphAxes( simplepath.parsePath( envelopeElement.get(‘d’) ) );
    File “/usr/share/inkscape/extensions/bezierenvelope.py”, line 202, in extractMorphAxes
    raise( “Unsupported segment type: %s” % cmd )
    TypeError: exceptions must be classes or instances, not str

    What i’m wrong and what should i do?

  33. Richard Querin Says:

    @sangbima

    Hmm. Are you using version 0.46 of Inkscape or something newer like a pre-release version of 0.47?

    I ran that last statement in my own python shell (the ‘raise…’ line) and while it worked, mine simply gave me a warning that using a string for exceptions was ‘deprecated’, but didn’t throw the same TypeError you got. Maybe you’re using a newer version of Python that simply doesn’t except the fact that the python extension uses a string.

    Actually — check up a few comments from this one for the one from GP which heathenx answered. It sounds *very* similar to the problem you’re having.

  34. The Messenger Says:

    Can somebody send me the SVG file??
    Or maybe simply help me solving my problem?
    The ehing is, that even if i have the ennvelope file in my inkskape-extensions folder, its not listed in effekts. What to do?

  35. Don W Says:

    @ The Messenger,
    Click on : Extensions>modify path.
    On the editor screen

  36. ricky Says:

    im running xp
    the extension does not come up in effects
    what do i do

  37. The Messenger Says:

    @ Don W:
    Do you mean inkscape or in the inkscape folder? Because I (cause of my stupideness) downloaded the german version…

  38. Don W Says:

    @ Messinger–Ricky

    This is on the editor screen Command Tool Bar. Don’t know about the German version.

    In 0.46 it is under Effects>modify path
    In 0.47 it is under Extensions>modify path.
    If not either, it is not installed correctly.

  39. The Messenger Says:

    Is there any sheme how to install it correctly? I just downloaded the file and put it in the inkscape–>share–>extensions folder.

  40. Don W Says:

    @ The Messinger: It is a ZIP file, must be unzipped before placing in folder

  41. ricky Says:

    i unzipped the file and put everything into my folder it just doesn’t work =’(

  42. Don W Says:

    @ The Messinger-@Ricky

    If you installed inkscape into the default location in Windows, you may want to try this:

    http://public.heathenx.org/drw12333/Beizer%20Envelope/

    It is a self extracting zip that places the correct files into the correct folder.
    Click on the file and download to your desktop and run it.
    It works for 046 and/or 047.

    If the version is German, it may not work.

    Let me know how you come out.

  43. heathenx Says:

    @The Messenger, @ricky, @Don W

    Thanks for helping Don W. Richard and I were away over the weekend.

    Ok guys, the Bezier Envelope extension must reside in your application path. That path will vary on different operating systems. Which OS are you guys running and what version of Inkscape are you using? Regardless, you’ll want to find your extensions sub-directory and unpack the contents of the archive file there. bezierenvelope.inx and bezierenvelope.py must be in the same directory. The .inx file causes the the effect to be listed in the menu and the .py does all of the heavy lifting.

    Once you get those files unpacked and placed in the right directory open the .py file in a text editor to read how to use it.

    I know nothing about the German version so there might be issues with that. If nothing works then try the English version just to see if the effect works. If it does then we can at least warn users that it might be an English only extension.

  44. Don W Says:

    @ The Messinger—
    Do not put the downloaded program in the folder, just run it from the desktop by double clicking it.
    The program will INSTALL the needed files into the correct folder automatically if you installed Inkscape using the default setup.
    Then reopen Inkscape and find Bezier Envelope under (effects>modify path) in 046 release.

  45. The Messenger Says:

    Look in my blog pls =)
    We already got a disscussion about this in the comment box under the 1st pic “Unknown manga girl”
    Thx for your time.
    btw. I extracted it into my inkskape_–>share–>extensions folder

  46. heathenx Says:

    @The Messenger

    “Too many curves in the envelope” means that you have too many nodes, points or vertices placed on your path. You may only have 4 nodes (and 4 segments like as in a rectangle) and they have to be drawn in proper order in order for the effect to work. It looks as if you have the effect installed correctly but rather not quite sure how to use it. Am I right?

    I’ll post the same thing over on your blog. ;)

  47. The Messenger Says:

    There is an answer on the page.

  48. The Messenger Says:

    Thank you very much for your help, I really appreciate and respect this. I am happy that you sped your time on such a n00 as i am. The Problem isnt solved yet, but…=((
    Btw. do you prefer to read my crappy posts here or in my blog? Cause there is smthing new=)

  49. heathenx Says:

    @The Messenger

    I don’t care where we post. We can comment on your blog if it’s more convenient.

  50. ricky Says:

    waaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaay
    it worked
    but why didn’t it work before?? i put the same two files into the extension folder.
    thanks anyway

  51. ricky Says:

    don w
    i just had to thank you again
    i never knew i could be this happy

  52. Don W Says:

    @ Ricky
    No problem, if that made you happy, that’s all that counts. We are here to have fun. I don’t have a clue why it didn’t work before.
    Looks like THE Messenger is doing OK too.

  53. knirps Says:

    hi all

    I am using inkscape 0.47pre4. I had some problems to get Bezier Envelope working.

    The problem was: Text => object to path produced a group of paths. See here:

    http://wiki.inkscape.org/wiki/index.php/ReleaseNotes047#Converting_text_to_path_produces_a_group

    with ctrl K (combine) i could combine them to one single big path and the Bezier Envelope worked…
    (was a little out of the middle)

    but now i am stuck with the interpolation :(

    I have 2 objects of type group selected. When i interpolate nothing happens… i guess i need to single big pathes again
    but with ctrl K i can only change 1 group to a single big path ….

    If i am wrong somewhere pls give me a helping hand…
    this is the first time i use inkscape.

    cheers knirps

  54. heathenx Says:

    @knirps
    Looks like the Render Grid extension is broken in 0.47pre4 but not all is lost. When I try to select my circle and then render a grid I get a detached vertical group and horizontal group of lines. If that’s what you get too then you’ll need to to Break Apart the object, group those vertical and horizontal lines separately and place them on top of each other so that a grid is made. Then ungroup them and Combine to make one complete path. Select your grid and circle in that order and you’ll get the same effect in the screencast.

  55. knirps Says:

    Ah sorry damn hard to explain it in english,

    I had problems with the interpolation of the dublicated text group.
    (in your tutorial the step ‘directly’ after you used the Bezier Envelope).

    0.47pre4:
    When i use object to path on a text i am getting a group of objects.
    These objects i can combine (CTRL-K) to a big node.
    But when i use dublicate on it, it’ll jump back to a group of objects and
    those i can not interpolate with each other.

    I found a solution for me, i’ll try to explain it on a example:

    Create a new text
    Use ‘Object to Path’ on it… now you get a group of x objects.
    Use Combine on it and you ll get a Path with x nodes.
    CUT the Path out and PASTE it back two times.
    These two newly pasted Pathes (they keep there node status) you can interpolate with each other.

    Not sure if i made a mistake somewhere else but i could’nt find any other solution

    Thanks for the tip with the Render Grid saved me at least a day and some headache!!!!

    Now i have finishd the globe!!!

    Thank you :)

  56. heathenx Says:

    @knirps
    Ah, sorry. Why the heck was I thinking you were having problems with the grid? You never mentioned it. Perhaps I should get some help. ;)

    Anyway, I followed your steps but I am able to interpolate the text object right after I combine them individually (without cut and paste).

    I recently discovered a new Inkscape extension that makes proper meridian/parallel lines. You may want to use that instead of the grid.

    Wireframe Sphere

  57. Don W Says:

    @ hx
    How did you get the interpolation to work? The only way I could is by using knirps process. May have something to do with Linux vs Windows (Vista). This text to path change in 0.47-4 seems to be a fix for something that was not broken.
    D

  58. heathenx Says:

    @Don W and @knirps

    Watch this

  59. Don W Says:

    @ HX knirps,

    Poor video but as you can see here, once the text is unselected it looses it’s path marker. The objects work as with 0.46.
    It’s only the text that is a problem. Evidently not in your release for Linux.

    See this: http://public.heathenx.org/drw12333/Interpolate/capture-1.html

    D

  60. knirps Says:

    Quote= Don W Says:
    Poor video but as you can see here, once the text is unselected it looses it’s path marker. The objects work as with 0.46. It’s only the text that is a problem. Evidently not in your release for Linux.

    When the text is unselected and loses its path marker you have to ungroup it and then it should keep the path marker.
    Thats what i was missing…

    So thanks to HX again

    Btw will try out the wireframe.

  61. Don W Says:

    @ knirps…HX,
    Ditto on the UNGROUPING, that’s the answer.
    That’s why we keep HX around. ;-) .

  62. Don W Says:

    @ knirps..HX
    UPDATE. After watching the HX video several times, I see that the text shows as a path and stays a path even before the un grouping. The text in my 047-4 must be un grouped before duplicating or it will not remain a path (showing nodes). hmmmmm

  63. Ed n Says:

    great tutorials, heathenx.

    i will almost certainly give this a try, i need all the help i can get,just started from 0.46 and getting ready for 0.47.throughly enjoyed this video,made me smile at the gradient/and globe text mishaps.:)

    Ed

  64. coatit Says:

    I know there are a few of these posted but I haven’t seen one with the \Both letter and envelope must be SVG paths\. I made sure my text was and ‘object to path’. Am trying to follow the heathenx tut and got stuck on the bezier envelope step:

    Traceback (most recent call last):
    File \/usr/share/inkscape/extensions/bezierenvelope.py\, line 351, in
    e.affect()
    File \/usr/share/inkscape/extensions/inkex.py\, line 207, in affect
    self.effect()
    File \/usr/share/inkscape/extensions/bezierenvelope.py\, line 90, in effect
    raise(\Both letter and envelope must be SVG paths.\)
    TypeError: exceptions must be classes or instances, not str

    coatit

  65. heathenx Says:

    @coatit

    The behavior changed a bit in .047. Make your text and convert it to a path and then combine it to make it all one path again. In order for the bezier envelope to work you must start point one at the upper left and work your way around to the right, down, and to the left and up to close. Follow those steps and it should work just fine. :)

  66. coatit Says:

    Thanks for the quick response. You screencasts are essential in my learning and I can’t say enough about them. I am pretty new to this so you have really helped guide me. Also how to I get the extentions for inkscape on a windows platform.
    Thanks again heathenx for all the support and learning tools

    – coatit

  67. heathenx Says:

    You’re welcome. I must admit that some of the tuts that Richard and I have done have sort of a shelf life. A lot has changed since 0.45. Nevertheless, hang in there and if you run into trouble just shout at us. ;)

    Extensions in Windows work the same way as they do in Linux. Just stick your extensions in the extensions directory in your install path and everything will work. I think the default location is “C:\Program Files\Inkscape\share\extensions”. All you’ll need is the .inx and .py files.

  68. coatit Says:

    Thanks it worked but there was a twist.
    I created the text, selected text, clicked object to path, selected text and the bezier path, click on bezier envelope and Viola…. SAME ERROR!!!
    Fix was this (and I have run into this before):
    I created the text, selected text, clicked object to path (reviewed the description in the bottom window and it was still calling the text a “Group” and not a “Path”), selected the now grouped letters, right click and un-grouped (no the description was saying it was a path), selected text and the bezier path, click on bezier envelope and Viola it worked. It did relocate my text far above the original position but it worked non the less. I aways seem to have some little quirk like that to deal with.
    Thanks again for the help you guys ROCK!!

    – Coatit

  69. coatit Says:

    EDIT:
    I created the text, selected text, clicked object to path (reviewed the description in the bottom window and it was still calling the text a “Group” and not a “Path”), selected the now grouped letters, right click and un-grouped (no the description was saying it was a path), selected letters again and COMBINED, selected text and the bezier path, click on bezier envelope and Viola it worked.
    Coatit

  70. What Does God Want Me To Do? Says:

    It took me a long time but I finally finished this as a logo for our family’s ministry. Really appreciate you putting up these videos for all of us…and for free.

    You think you could do a thing on how to do t-shirt designs?

    Or what about taking designs for illustrator and making them compatible with Inkscape?

  71. heathenx Says:

    What does God want me to do? Whatever he asks of me. ;)

    Well, you can find hundreds of t-shirt design tutorials online. The majority of them, I’m sure, can be adapted to Inkscape without much problem. The best things to keep in mind are those things required by the outfit doing the printing. Ask them what format they need. The last time Richard and I made shirts (http://is.gd/6yHNR), we had to export the work in EPS format. We chose to stick with black ink only which was cheaper too. The more colors you use the more expensive it gets.

    Many of the Illustrator tutorials can be adapted to Inkscape. However, Illustrator has some nice effects and some 3D tools that cannot be adapted easily. For those, you have to channel your inner artist. There are a few tutorials here where I adapted Illustrator and Photoshop to Inkscape.

    Inkscape is by far the easiest vector editor that I have ever used. Unfortunately, it’s just a pup compared to Adobe, Corel, and Xara. It lacks some power features but it’s usually perfect for most work. Gimp, Blender, and maybe Scribus can fill in the gaps.

Leave a Reply