D-Mesh Documentation - Main

Documentation Sections

Curve Control Points: Additional Explainations

Bone Curvature

Point Muscles


Bone Curvature

The bone curvature can be set from the Object:Muscle:Anatomy layer. The curvature of the bone is described using a curve in

Most humanoid (and other) limbs are not perfectly straight, and the underlying bones generally have a slight curvature to them. Limbs are generally created using a conic object, which has a well defined but perfectly straight center line. The Bone Curvature option is intended to address this need by allowing this center line to be slightly offset from the actual center of the conic.

Bone Curvature is defined by a curve in the same manner as curves are entered throughout DMesh. In this case however, an actual <x, y, z> triplet is entered for each control point. The x and z components define the amount and direction the center line will be offset at each point along its length. The y component is generally kept within the 0.00->1.00 range to properly reflect its relationship to v. Note that the conic will not actually be bent or rotated, but skewed and/or offset in the x z directions.

A Bone Curvature definition such as: <0, 0, 0>, <0.5, 0.5, 0>, <0, 1.0, 0> would slighly bow the object in the x direction; while <0, 0, 0>, <0, 0.5, 0.5>, <0, 1.0, 0> would slighly bow it in the z direction. You can combine both x and z values to create objects that curve in both directions.

See the new rope, (alli)gator or antelope horn sample files.

(Future enhancements to this option will likely implement true bending of the object to follow the tangent of the control curve. At present, it is meant only to supply small deviations to the object center.)


Curve Control Points: Additional Explainations

The manner in which muscle are created by the combination of the various muscle curves can be somewhat confusing at first. The various curves used to describe a muscle are not 3 Dimensional objects in themselves. Although they become a 3D surface when taken all togeather, individual curves are really only 2D (and in some cases 1D) objects.

The center curve has no 3D aspects by itself, and is better thought of as a 'line' drawn on the surface of the underlying object. The width curve further describes how 'wide' this line is at any point along it's length. This is similiar in concept to using a line drawing tool in a paint program. You use the mouse to mark the end points of the line, (and any additional points for a multi-segment line, ) and a line is drawn connecting all the dots and using the current pen width.

The control points for the center curve can then be thought of as being equivalent to the dots used in the connect-the-dots line drawing routine. The width curve is similiarly related to the pen width, except that rather than specifying the pen width as X many pixels wide, we use a curve instead. This gives us a pen width that is variable throughout the length of the line. These two parts don't completely define/draw the line, they just describe 'where' the line will be!

Just as the paint program will have to be told what colour(s) and gradient variations to use in drawing the line, the muscle definition will similiarly need to know the x-section and height variations. As an example, consider drawing a line with a color gradient that ranged from dark blue at the start ot the line, and increased to light blue at the end. The single colour 'blue' could then be likened to the x-section curve, as they both describe the basic characteristic of what will be 'added'. The gradient from dark to light would be likened to the height curve, in that both describe 'how much' of this characteristic to apply to the line as we proceed from beginning to end.

In many cases, we will be drawing lines using brushes, rather than a single colour pen, and the x-section curve is actually much closer in concept to using a one-pixel-wide brush. Whereas each pixel in the brush would specify a single colour, the x-section will define the amount of 'bulge' or surface displacement. Note though, that both are oriented 'perpendicular' to the direction of the line. Also, just as the brush will be squished and stretched to fit the actual line/pen pixel width, so the x-section curve will be scaled to fit the actual width of the muscle at that point along the line. (Typically, the x-section is an inverted U shape, so the outside edges of a wide line/muscle have little or no displacement, while the middle of the line has the most. ) The gradient or height components are further used to modulate or scale this colour or displacement, and follow 'with' the direction of the line.

So in summary:

The center and width curves describe the 'position' of the muscle, but by themselves have no real impact on, or make any changes to, the surface. Just as the end points of a line and a pen width will describe 'where' a line will be drawn and how many pixels it will cover, they don't describe 'what' will be drawn. Similiarly, neither the x-section or height curves are dependent on 'where' you draw the line, or how 'wide' you make it. The line can be long and skinny, or short and fat, and the height and x-section curves will be scaled to fit within this area. The indivdual curves are each only 2D, and it is the combination of the four that provides a 3D result.

Of the four, only the center curve has any real 'physical' coordinates, while the rest are all defined relative to the other parts. The width curve describes how wide the line is, but not where. The x-section curve will be scaled to fit within the specified width, and the height curve will be scaled to fit within the length defined by the center curve.


Defining point muscles.

Clip Position: actually defines the xz scaling factor, so be sure that neither is set to zero. Setting to 1 (one) and 1 (one) will make a spherical bulge, while using none-equal values will create elliptical ones.

Center curve: defines the center of the muscle. only the first control point is needed, and the two values refer to the uv position of the muscle center. so an entry such as <0.5,0.50> will place it exactly in the middle, while <0.5,0.25> will place it in the lower middle.

Width Curve: defines how far out from the middle the muscle will radiate. For point muscles, the starting point is at the bottom, and rotates clockwise around the point, with the end being back at the bottom again.

Height Curve: describes how high the muscle is using the same method as the width. Generally only a single height value is given, so that the muscle has the same height throughout its circumference. The beggining values should be equal to avoid jaggies.

A typical entry would be simply <0,1>, giving it an equal height thoughout. Another example would be <0,1>,<0.5,0>,<1,1>, which would make the muscle full height at the bottom, reducing to zero height at the top, and back to full at the bottom again.

X-section Curve: describes the muscle cross-section from the center of the muscle to its outer edge. The zero point of the curve is at the center point of the muscle. This curve is then rotated around the center point in a clockwise direction, and stretched out to fit the associated width.