A tool for assisting in the preparation of drawings of a three-dimensional, 3D, object, including: a stereoscopic display for creating a 3D virtual reality image of the object being drawn; a pointer wherein the pointer is a hand-held controller having means for receiving start-of-line and end-of line inputs; means for recording the position of the pointer from start to end of a free-drawn line; means for tracking (20, 21) movement of the pointer in three dimensions (15, 16, 17) in real space, whereby movement of the controller in real space between the start-of-line and end-of-line inputs causes a first free-drawn line to be created in the 3D virtual space, and for repeating for a second free-drawn line; means for representing the first and second free-drawn lines (300, 330) respectively as at least one spline (803, 804, 805), each spline (803, 804, 805) associated with a series of straight lines (314, 315, 316, 324, 325, 326) to which the spline (803, 804, 805) is curve-fitted, the straight lines (314, 315, 316, 324, 325, 326) being connected by control points (310, 311, 312, 313, 320, 321, 322, 323); means for presenting the first and second free-drawn lines (300, 330) and their respective control points (310, 311, 312, 313, 320, 321, 322, 323) in 3D virtual space and for representing the pointer as a virtual pointer in the same 3D virtual space; means for selecting an edit function by which movement of the pointer in real space causes movement of the virtual pointer in the 3D virtual space and causes a control point (310, 320) of the first or second free-drawn line (300, 330) in the 3D virtual space to be selected and moved in three dimensions and thereby change the shape of the first or second free-drawn line (300, 330) in three dimensions; means for selecting a join function that, when active, permits a user to point to the first free-drawn line in virtual 3D space, select an end-of-line control point of the first free-drawn line, move that control point to the second free-drawn line and cause the first free-drawn line to join the second free-drawn line; and means for selecting a surface mode, such that, when in said surface mode, joining of a plurality of lines (300, 330) in a closed perimeter causes a surface to be calculated and selectively displayed, the plurality of joined lines (300, 330) forming the perimeter of the surface. a stereoscopic display for creating a 3D virtual reality image of the object being drawn; a pointer wherein the pointer is a hand-held controller having means for receiving start-of-line and end-of line inputs; means for recording the position of the pointer from start to end of a free-drawn line; means for tracking (20, 21) movement of the pointer in three dimensions (15, 16, 17) in real space, whereby movement of the controller in real space between the start-of-line and end-of-line inputs causes a first free-drawn line to be created in the 3D virtual space, and for repeating for a second free-drawn line; means for representing the first and second free-drawn lines (300, 330) respectively as at least one spline (803, 804, 805), each spline (803, 804, 805) associated with a series of straight lines (314, 315, 316, 324, 325, 326) to which the spline (803, 804, 805) is curve-fitted, the straight lines (314, 315, 316, 324, 325, 326) being connected by control points (310, 311, 312, 313, 320, 321, 322, 323); means for presenting the first and second free-drawn lines (300, 330) and their respective control points (310, 311, 312, 313, 320, 321, 322, 323) in 3D virtual space and for representing the pointer as a virtual pointer in the same 3D virtual space; means for selecting an edit function by which movement of the pointer in real space causes movement of the virtual pointer in the 3D virtual space and causes a control point (310, 320) of the first or second free-drawn line (300, 330) in the 3D virtual space to be selected and moved in three dimensions and thereby change the shape of the first or second free-drawn line (300, 330) in three dimensions; means for selecting a join function that, when active, permits a user to point to the first free-drawn line in virtual 3D space, select an end-of-line control point of the first free-drawn line, move that control point to the second free-drawn line and cause the first free-drawn line to join the second free-drawn line; and means for selecting a surface mode, such that, when in said surface mode, joining of a plurality of lines (300, 330) in a closed perimeter causes a surface to be calculated and selectively displayed, the plurality of joined lines (300, 330) forming the perimeter of the surface.