Calligraphic Interface for Tri dimension Surface Modeling

Progress Reports

Main Page


 

 
 
13/12/2002
Firstly we developed the remaining solids though both revolution and duct are still missing due to a bug in the duct.

The primitive set class was all done and is now working in it's full.
We entered in debug mode and fixed the suggestion box that now shows the recognize solids in a proper way.

Regarding the Tablet Pc's, we contacted Acer and Toshiba in order to find out how soon will their tablet pc's be available and at what price.
Selection was implemented too after solving a bug in the perspective matrix. So now, every object can be identified just by clicking on it.

Work time : 27 Hours.

 
 
06/12/2002
Usability tests were conducted last Saturday having lead to a few changes to be included in future development. A report summing up the ideas gathered at this experience was produced, and some comments were written, regarding the Recommendations for Base Software and System Requirements technical report, produced by IGD.

The primitive set of suggestions is implemented. Thus the system can now reconize gestures, as it did before, but it now shows a list of suggested 3D objects, similar to what happens with strokes drawn by the user. A few bugs still have to be corrected and remotion of strokes from the graph is still in development.

The creation of primitives using ACIS is now beign used at the right step of the process, but this requires a significant amount of new code, since it differs greatly from the method used in the former GIDes, so new primitives are being included but this takes us more time than we expected because all the math regarding projections and transformations needs to be be carefully determined before calling the pertaining ACIS functions.

Work time (from Monday - Friday) : 30 hours

 
 
29/11/2002
After recognizing a possible 3D object, some data has to be kept in order to create it later in the process. For this, a few new classes had to be developed. The main one is the ObjectData class which is simple a list of 3D primitives.The objects kept in this list are all derived from a base class, the Primitiva class. Various subclasses were also implemented in order to specify the kind of object we want.
We also continued recognizing more objects having included prisms, cylinders, pyramids and cones.

A small bug in the MatchEllipse method off the Stroke class has also been corrected, and one in the DrawSet.
The drawing of the strokes as been transfered to the UserStroke class, having all the drawing code in the appropriate objects.
 
 
22/11/2002
Config class is done. Now is much easier to access constants and to change then. Some bugs in the Graph were fixed. We implemented the line edition feature. With this the user can now modify a line just by redrawing a new stroke over the old one. All 2D process is now completed (without selection or deletion) as we can draw any type of line and change it after or even extend it.

We started to look into the recognition engine. A gesture recognition class is starting to be develop.We are now trying to recognize 3D primitives. By analyze the graph and it's loops, we already recognize spheres and cubes.

As an early demo, this 3D primitives are created (in ACIS) and rendered but in the future they'll be created with another process so that we can manipulate them.
 
15/11/2002
To hold the strokes drawn by the user the Graph class was implemented. It keeps all the points and the respective connections (segments) in an organized fashion. The connections are know as Nodes and the corresponding class was also coded this week. During the coding process we we're faced with a lot of constants that are loaded from an INI file. These used to be held in global variables but we chose to develop a Config class. This way it lives up to the
OOP and any change will affect the hole program.

If we take some time to analyze what has been done and what still needs to be done, we can see that we still have a lot of work ahead. We now have to start trying to recognize gestures so that we can suggest some 3D primitives. Only at
this stage will we try to incorporate the ACIS modeler in GIDes and it is still too soon to be able to make any accurate predictions about a prototype releasing date. It can go either way. ACIS can make it a very simple process where most of the code will be thrown away and replaced by ACIS code, or perhaps the structures used are so "glued" to the code that we'll have lots of work trying to rearrange it to take advantage of ACIS. Only time will tell.
Then, after we finish the modeling we have to incorporate the other commands since, for now, we're only focusing on the drawing command. Finally, there are several modifications to apply to the current GIDes, being that the most
important is an accurate measure systems, for it to be used by professionals.
we'll take it one step of a time. Establishing dates so early could have negative consequences in the quality of the project.
 
08/11/2002
After the implementation of Splines we focused in circle recognition in the four planes (X=0, Y=0, Z=0 and Perspective planes).
With this, when the user makes a stroke in the shape of an ellipse (a circle in a certain plane) this circles are recognized and stored for posterior use.
A match ellipse method was implemented too, this method matches the user stroke with the splines. This indicates if the user was trying to draw a segmented line or a spline.
The class DrawSet was all done. This class gets the user stroke and tries to guess what he was trying to draw.
First it tries to find ellipses (circles in planes), then it will create a spline from the control points.
After this all expectations are shown to the user: Ellipses, Spline, Segmented stroke, etc..
For this, we created a new frame with a new canvas to allow the suggested lines to be show to the user and for the user to choose one.
01/11/2002
A new class of line was implemented. This class is based on the control points of the original stroke, but all small angles are left out, so the line is much more straight and with large angles only. This line is a good way to find squares, triangles or other primitive geometric figures from the not-so-straight stroke by the user.
With this new class of line all tree class of lines derived by the user stroke are implemented: the initial stroke filtered (to take of redundant points), the control points line and the control points line with merged low angles.

We also started to understand how this lines were saved for posterior process and interaction with posterior lines.

The drawset structure is now being implemented in this new version of GIDes. This structure is responsible for the prediction of 2D lines or geometric figures from user stroke.

 
25/10/2002
We've started looking in depth at the code for GIDes.
The code is not very well structured regarding the OOP so we've spent some time thinking of new classes to hold the existing variables and methods.
We now have an application that permits free-hand drawing os a stroke.
Although this stroke is not yep saved. We've also implemented the split method that determines a number of control points in the stroke and in the application we draw this line in blue (for now).
In the remaining days we'll try to use these control points to draw a spline with ACIS and try to reuse as much code as possible from the existing GIDes.

18/10/2002
This week we continued to improve our knowledge on some libraries used in this project (ACIS + OpenGL + wxWindows). A small application was produced with a torus and a cube, allowing the selection of one or both objects and their rotation. For moreover we started already seeing GIDes code having already implemented a similar interface to the original. Seen that the initial application used a previous version of WxWindows we had to make some alterations. The initial code presents a structure that does not seem most adequate, presenting some global variable, for that is intended, in this initial phase, to understand which is the functionality of each one of them, distributing them in convenient classes.
 
In the following times it is intended to reproduce the existing functionality in the old version, but functioning with ACIS. This isn't a simple task as great part of the code contains algorithms for direct processing on the vertices, having the structure to be modified take advantage of the capacities of ACIS.

One more time, the task would be facilitated if the existing code could be printed so that we had a fast consultation reference, allowing that notations were taken.

It is important to relate that our page is already online and it will be gradually up dated as the project is developed. Here is the link: http://virtual.inesc.pt/~tfdc/

11/10/2002
We installed in our houses the software installed in INESC (Windows XP, Linux, Visual Studio 6,0, WxWindows, ACIS). We send a mail to the GIDes's author, to which we still did not get reply (we need to confirm the mail address). We continue to study the functioning of all libs (Acis, opengl, wxwindows, etc...) and how they all work together, starting to make some code from root and reading some tutorials.

We implement a small application has tested with one torus and a cube (with wxwin + acis + opengl) capable to rotate with mouse command.

04/10/02
Initially, we add the digitizer in Linux, not being however still well configured. We install in Inesc the Visual Studio .Net, ACIS and WxWindows. We configured ACIS and WxWindows to work in the Visual .Net. We tried some examples, but we always came across with an error. Finally we discovered that the version of ACIS for the VS .Net only functions in 64 bits processors (Intel Itanium). We reinstalled the Visual Studio, but in the previous version, 6.0. We repeated all the previous process, finally getting the waited results.

We toke advantage of the last days of Ferran in the INESC to try to better perceive the functioning of ACIS.

We tested the new product from Autodesk.

However, we were studying the book "3D Modeling with ACIS", documentation of WxWindows and OpenGL, as we didn't had knowledge on any of the libraries.
 
04/10/02
Windows XP as well as Linux was already installed in the machine. This last one is causing us some problems since we don't have the most recent driver from nVidia nor the driver adequate to Wacom screen. After the installation we didn't obtain access to the net but we already ask Ferran to tell Andre to deal with this.

However we have installed in our houses the same system (XP + Linux) and we already installed the nVidia driver. The plan would be then to try to configure the Cintiq in Linux in form to have everything operational. We'd liked to ask for a copy of GIDes, including the videos and the code, to start analyzing it.

Another subject is the fact that the application have to function in a vast number of platforms. So we would like to know where does GIDes functions and how it is developed. In case it is dependent of a specific O. S., we think it would be better to use a library for the creation of the interface with the user as well as for the treatment of the events. The possibilities are many, wxWindows, GTK, QT... etc.... being that this last one seems the best solution, even thou the version for windows don't have a license that allows the use in commercial applications. But this subject will only be treated in bigger detail after observing the GIDes code.

We think that until the end of this week we will have everything functioning and we'll start already to look at the code and to make some experiences with ACIS (which we also need a copy).