"3d" shape extrusion feature

Bug #185720 reported by stevenj
22
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Inkscape
Confirmed
Wishlist
Unassigned
Nominated for Old by netfool

Bug Description

One feature from other vector graphics programs (I'm thinking of Deneba Canvas, Macromedia Freehand, and Adobe Illustrator) that I greatly miss in Inkscape is a "3d extrude" tool.

I fully appreciate that programs like Inkscape cannot and should not attempt to compete with a true 3d modeling program like Blender. However, in my own experience (primarily technical illustration) there have been many, many times where all I need is 3d shape with a constant 2d cross-section incorporated into a drawing, and a full 3d modeller is a huge overkill. Apparently, this is useful for many other people as well and is why multiple 2d vector graphics programs have incorporated such tools. I notice that you have a 3d box tool in your latest inkscape version --- the feature I'm talking about here would supersede that tool. It's hard to emphasize how useful this is, and how poorly suited a full 3d modeller is for such illustrations.

I'll attach a couple of screenshots from Canvas X (on MacOS) showing how the feature works there. You can also see descriptions of the feature in Freehand at http://www.digital-web.com/articles/macromedia_freehand_mx/ and http://www.adobe.com/support/freehand/learning/3_extrude/ and for Adobe Ilustrator at http://www.adobe.com/designcenter/illustrator/articles/illcs2mr3d.html .

The typical interface is that you select a filled 2d shape, and then click an "extrude" button from a palette or menu. This turns the shape into a "3d" object of the shape's 2d cross section and some depth with simple flat shading (usually you can select the light source direction). You can click and drag on the object to rotate it in 3d, and there is usually a handle you can drag to change the "thickness" of the object. At any later time, you can still resize and rotate the object, but most of the programs you can no longer edit the 2d shape after it has been extruded. Some programs, e.g. Freehand, also allow you to create surfaces of revolution (i.e. the 2d shape becomes the cross-section in cylindrical coordinates), and some other variations like twisting the cross-section as it is extruded. (It's also very nice to be able to type in numerical rotation coordinates etc., so you can use the same perspective for multiple objects.)

The key point is that the drawing task is still basically "2d", in that the shape is almost completely described by a 2d cross-section, just with a few extra variables for depth etc, and no fancy rendering (the resulting shape could easily be represented by a small number of 2d SVG shapes).

Anyway, I hope you keep this in mind for future versions; I know you get requests for 3d capabilities a lot, but other vector-graphics programs have proved that a simple extrusion facility goes a long way, and serves quite a different set of users than the consumers of full 3d modeling software.

Revision history for this message
stevenj (stevenj) wrote :

Attached are a sequence of 5 screenshots of the extrusion feature in Canvas X. They show:

1) selecting the shape and choosing the extrude button
2) the extruded "3d" shape with the control handles for rotating and changing the thickness
3) rotating the object (during rotation, it shows only the outline box rotating, and doesn't actually rotate the object until you stop holding the mouse button...I'm not sure this is the best interface, though)
4) dragging the thickness handles on the rotated object to change the thickness
5) the final object, with the color changed (changing the shape color with the normal UI)

Revision history for this message
Maximilian Albert (cilix) wrote :

For some time I have had something similar in mind as a next step where we could go from the 3D box tool. Of course that tool is nice (well, of course I have to say that ... :)) but apparently its use is quite limited at present since it only allows you to draw boxes. But the key point is that it gives you a rather flexible way to define and adjust *perspectives*. Now what I have been thinking about is a kind of live path effect that takes as input some 2D shape (like the one in your screenshots) as well as a perspective (defined, for example, by a 3D box) and extrudes the object in this particular perspective. Since it's a live path effect, the shape would remain fully editable. On the other hand, the perspective would also be fully, too - just as it's now in the 3D box tool.

The idea still needs some ripening, and it will take some time before I can work on it properly but some early experiments with lib2geom code showed that it's certainly feasible. What I'd really appreciate are suggestions for a good user interface for this kind of effect. I'd be interested to hear people's ideas in this regard.

Revision history for this message
stevenj (stevenj) wrote :
Download full text (3.8 KiB)

From what I've seen of your "3d box" tool, I'm not sure that it's the best interface for this sort of thing, although I respect your work on this. There are basically four tasks for a general 3d extrusion tool:

1) Choose the orientation of the object. This is a common task in many programs, and the standard interface for this is tracking some projection of a 2d mouse on a "virtual trackball." Besides the fact that these interfaces are familiar, there have been multiple formal usability studies of these techniques to give a rigorous basis for choosing the most effective one. Many of these techniques and studies were reviewed in a recent paper by Henriksen et al [ IEEE Transactions on Visualization and Computer Graphics vol. 10, no. 2, pp. 206-216 (2004) ] and another recent study was described by Bade et al. [ Lecture Notes on Computer Science vol. 3638, p. 138-150 (2005) ]. The latter study found that the most usable technique (and one with some theoretical advantages) was the "two-axis valuator", a kind of virtual trackball which is implemented for example in the free VTK toolkit (www.vtk.org), with a technique by Shoemake being second-best. (In any case, the specific flavor of virtual trackball can easily be changed once the basic UI is in place, so it's not something to get hung up on.)

2) Choose the orientation of the light source. See 1. (In some programs, you only have a fixed menu of choices for the light source orientation; this is adequate, but as long as you have a UI for 3d rotation you might as well use it for the light source too.)

3) Vary the "thickness" of the extrusion. Canvas' interface is very nice here, following the principle of direct manipulation: there is a handle on the 3d object that you can drag to change the thickness. (A numerical entry field in a palette would also be nice for those occasions where precision is desired.)

4) Choose the perspective/projection. For technical illustrations, almost everybody is probably going to use orthographic projection (http://en.wikipedia.org/wiki/Orthographic_projection), and this should probably be the default. Since most people aren't going to change the default, I doubt this should be the focus of the UI. Some drawing programs have a simple slider that can be used to bring the "camera" in from infinity, mainly for artistic effects. Other kinds of 2-point perspectives are, of course, interesting for artistic effects as well; I imagine that this could be handled by a pop-up palette with an interface similar to that of your box tool, or better yet a menu item/button that causes perspective control handles to appear directly on the object.

Right now, your box UI seems to focus on (4), whereas most users are likely to be satisfied with a default of orthographic projection, and your box UI doesn't seem to use any of the standard virtual-trackball interfaces for the critical task (1) of orientation. Moreover, usually the principle in graphical user interfaces is that direct manipulation of objects is preferable to indirect manipulation, e.g. rotating the object directly gives better feedback and is more usable than rotating a picture of a box and then pasting a sh...

Read more...

John Cliff (johncliff)
Changed in inkscape:
importance: Undecided → Wishlist
status: New → Confirmed
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.