
bulia byak schrieb:
On Fri, Mar 21, 2008 at 4:16 PM, Maximilian Albert <Anhalter42@...173...> wrote:
discuss with Vangelis about it who also expressed interest). So it might turn out to be one that is mainly based on my own ideas and only marginally related to those listed in the wiki (e.g., a collection of further 3D box related features combined with other geometric construction stuff).
I'd love to discuss those.
Great! Actually, I already wanted to write up a couple of thoughts in some detail but my time is extremely sparse in these days of studying for my last-but one final exam. So I'm afraid I can't elaborate too much yet. All the more would I appreciate input from you and other people. What do you think, which of the following would make (part of) a good project and what wouldn't? Also, I'm very open to further ideas and suggestions that are not mentioned here (in case any should pop up).
Here are some things I'd consider worthwhile working on for SoC:
1) Further improve the 3D box tool, smooth out some usability issues and tie up loose ends. I guess that the main missing feature in this context are draggable perspective lines. This is actually where I think collaboration with the guidelines project could be very fruitful (whether I'd work on it myself or someone else). See my previous emails on this matter for more details. Other new features could be 3D-related grids, support for "horizons" and similar small things.
2) 3D-like rotation of 3D boxes. This would work with a kind of "trackball approach", similar to what one is used to from "true" 3D applications. A quick search on Google brought this up which demonstrates very well what I have in mind:
http://www.vizmo.com/rgizmo.html
(Disclaimer: I have no relation with this site and haven't even had the time to read its contents so in case it's commercial and wants to sell something please don't buy it simply because I directed you there :) ).
You can also find a very simple mockup of how this might look for 3D boxes at the following place:
http://www.rzuser.uni-heidelberg.de/~malbert/images/trackball_mockup.png
Note that rotations parallel to the xy-plane are already possible by simply rotating 3D boxes in the selector tool (like any other item). What I propose would go much further by allowing free rotation in all dimensions. (For further comments, see below.)
3) 3D-LPEs. Implement a Live Path Effect that uses as input an arbitrary path as well as a perspective (which, for want of other means, might be specified by a 3D box). It then draws the path in this perspective (as if the canvas was the front side of the box). lib2geom provides a solid framework for the required computations, and after last SoC I already played around with, so I know that this works. Here are two screenshots of the 2geom "toy" I wrote which should illustrate what I mean:
http://www.rzuser.uni-heidelberg.de/~malbert/images/3D_LPE_01.png http://www.rzuser.uni-heidelberg.de/~malbert/images/3D_LPE_02.png
A word of caution, though. These kinds of computations are inherently numerically unstable (because points can easily "vanish at infinity) so we would have to provide a solid framework to ensure that such an effect is actually feasible to use in practice.
This would be the first step in a direction of a proposal by Pierre-Luc Auclair for "3D layers" for which a mockup can be found here:
http://heliosmulti.com/inkscape/3d-layers.png
Another possible 3D-related LPE might involve extrusion of objects (as drafted in the last image in this link).
4) Geometric constructions/tech drawing (surprisingly, totally unrelated to 3D boxes :)). I occasionally used Inkscape to illustrate geometric constructions. In this context it is often necessary to do things like the following:
- drop a perpendicular to a given line through a given point - bisect the angle between two lines - draw a circle through three given points - ... etc. - when the underlying objects are altered, the objects which were constructed from them should be adapted accordingly (e.g., the circle should be resized so that it still passes through the given three points, etc.).
I know that there exists special-purpose software to do these kinds of things but I can imagine that a lot of people (architects maybe?) would appreciate decent support for this in Inkscape, too (when I find the time I will have a look if LaunchPad already has RFEs in this direction).
Well, so far for some of the ideas that have been rumbling in the back of my mind. Any comments? Does anything sound like it could be shaped into a SoC project? Maybe even two or several of them combined? Or would it be a bad idea to propose such a "patchwork" project?
Personally, I believe that No. 2) would be extremely worthwhile because it is a first step to make 3D-like manipulation of objects possible without the need to resort to 3D boxes. After 2) is implemented, 3) could be tackled. This would allow the trackball approach to be used as an independent means to rotate arbitrary paths in 3D, and thus Pierre-Luc Auclair's vision for 3D layers would come within close reach.
However, the maths might turn out to be quite tricky (due to the unusual and distorted perspectives we allow in Inkscape). I'm sure it can be properly worked out (and have some ideas fo it) but there is a chance that the final visible result is somewhat different than what one would expect (especially if the original perspective was rather degenerated).
As for 1), I think I'd prefer not to work on this stuff during the summer because these small things can easily be implemented later in spare times (whereas the big projects are unlikely to be pushed forward if I can't work on them full-time).
Regarding 4), I don't know. Is this a direction Inkscape would like to go at all? If so, to which extent? How would these constructions work UI-wise? This is the area I have least thought about. Nonetheless I'd be delighted to work on it if it is desired.
I'm sure I forgot to mention some of my ideas but hopefully this gives people enough incentive to comment on.
Thanks in advance for any feedback and sorry for this long reading, Max