Friday, March 18, 2011

Today's meeting was the first meeting with Luke in this semester. I
demonstrated what I have done during summer vacation to Luke. We already have
a 3D rendering engine that can render 3D strings and those API's have been
provided for writing further user interface. They all seemed very happy with
what I have done for the project. Basic functionalities and operations of the
knot rendering engine are described as bellow ---

Add A New End Control Point Uing A key: while holding on A key, left click on
the screen; It adds a new control point at the end of the string. When there
are more than three control points, the program starts rendering the string.
Show Editing Ball Using S key: Press S key to toggle on or off showing the
editing balls on all control points.

Delete A Control Point Using D key: When the control balls are visible, a left
click on a control ball will select this ball. The ball will become red and
the X, Y, Z coordinators will appear on the ball. At this moment, press D key,
this selected contorl point will be deleted.

Add A New Internal Control Point Uing E key: To add a new control point
between two existing control points on the string. Left click to select one
control ball, holding on E key, continue to select next control ball using a
left click. Two selected balls will become red. Then release the E key, press
the E key again, a new control point will be added and a new control ball will
be drawn at the position.

Move A Control Point Using Left Click, Drag & Drop: When a control ball is
selected, the coordinators are shown, a left click on the X, Y or Z axis will
select that axis and the axis will become white. At this moment, a drag & drop
on different directions will move the control point to a new position.
Make A String To Be A Closed String Using G key: Press G key, it joins the
start point with the end point making a string to be a closed one. Press G key
again, it makes it back to be open one.

A Undo Using [ key: Press [ key to make a undo, being one step back in the
editing history. The editing history is unlimited recording all editing steps.

A Redo Using ] key: Press ] key to make a redo.

Toggle Wireframe Mode Using F key: Press F key to toggle on or off the
wireframe display mode.

Reduce The Radius Of The Strings Using - key: Press - key to reduce the radius
of the strings. It has a minimal radius restriction.

Enlarge The Radius Of The Strings Using = key: Press = key to enlarge the
radius of the strings. It has a maximal radius restriction.

Switch Between Two Strings Of A Knot Using R key: Press R key to activate
another string of the knot. It switch to working on this active string and the
previous one becomes inactive.

Put A Tree Frustum Into The Scene Using T key: Press T key to put into or take
out from the scene a tree frustum.

Put A Hanger Into The Scene Using Y key: Press Y key to put into or take out
from the scene a string hanger.

Rotate The Scene Using X Key And Drag & Drop: While pressing the X key, a drag
& drop in different direction will rotate and scene.

Pan Camera Using Arrow Keys: Holding on left, right, up and down arrow keys
will move the scence in four relative directions.

Zoom In or Zoom Out Using Mouse Wheel Or Page Up & Page Down Keys: Scrooling
the mouse wheel or holding on Page Up or Page Down key will do zoom in or zoom
out camera operations.

Switch To Four View Windows Using 4 Key: Press 4 key at any time, it will
switch to four view windows with Top, Right, Front and Perspective views.
Activate A View Window Using Left Click: When it's four views, a left click on
any view window will activate this view to be current active working one.
Swith To One View Window Using 1 Key: When it's four views, press 1 key, it
will enlarge the active view window.

Play Knot Animation Using P key: Press P key, the knot engine kernel will play
two kinds of animations showing how the strings of the knot are tied step by
step.

Saturday, March 5, 2011

Diary During Summer Vacation 17

3 hours of work tonight, a snapshot functionality has been added. Besides the ability for unlimited undo and redo, the rendering engine is now able to take snapshots and record those significant steps showing clearly how a knot can be tied. These snapshots are acturally recorded as a list of point list. Each time, a snapshot is taken, the rendering engine copies the current string state which is a set of points, and add it onto the snapshot list. Later when the user wants see or show others how a knot is tied, the animation playing function plays (renders) the snapshots one by one back into the scene.






Diary During Summer Vacation 16

Autumn session is approaching. Only three days left before meeting with group members. I'm working on simplifying and documenting the code. Documentation is something good but is really time consuming as well. Thanks to the advanced IDE Visual Studio, the handy tools to generate and edit class diagrams and those buit-in code completion features has even been expanded to help documentation work. All code in our knot rendering engine has been documented. I will soon draw more class diagrams to make it better.

Diary During Summer Vacation 15

As sometimes we want a knot to be tied around an object, such as a tree or a hook. Downloaded from internet for free, a textured tree model can be put into the scene.

Diary During Summer Vacation 14

5.5 hours of work makes a new feature: Now a second string can be added into a knot. Switch Between Two Strings Of A Knot Using R key: Press R key to activate another string of the knot. It switch to working on this active string and the previous one becomes inactive.



Diary During Summer Vacation 13

Today, two new features have been added:
1) To make a string closed (G key): using method in CubicSpline class that I wrote during last session, a string can actually be closed (Knot_Log13_0.png, Knot_Log13_1.png). Here in our knot rendering engine, press G key is to switch the string from open to closed, and from closed to open as well.

2) To change string radius: The program is now able to change string radius in real-time (- Key to reduce and = Key to enlarge). See Knot_Log13_2.png - Knot_Log13_4.png.




Diary During Summer Vacation 12

Continue with last week's work to add more editing features. Now the X, Y and Z axes can be selected by a left click and when it's seleted it becomes white to indicate its state. Then a drag & drop can move the control point towards the direction of the selected axis - demonstrated by Knot_Log12_0.png and Knot_Log12_1.png.

A feature to Add A New Internal Control Point Uing E key: To add a new control point between two existing control points on the string. Left click to select one control ball, holding on E key, continue to select next control ball using a left click. Two selected balls will become red. Then release the E key, press the E key again, a new control point will be added and a new control ball will be drawn at the position (Knot_Log12_2.png, Knot_Log12_3.png).

Another feature I have added on is to allow user to select an editing ball and then delete this control point. The operation of this one: Delete A Control Point Using D key: When the control balls are visible, a left click on a control ball will select this ball. The ball will become red and the X, Y, Z coordinators will appear on the ball. At this moment, press D key, this selected contorl point will be deleted (Knot_Log12_4.png).