Home | Tutorials | Next

Examples for this Tutorial contained in seamless_way_examples.zip
 


The Seamless Way To X3D/VRML

Making high quality skin animated creations using a Minimalist Approach

Opening and Saving Files
There are 2 different types of files you can open in Seamless3d,  standard x3d vrml clasic/vrml97 files (.x3dv;.x3dvz;.wrl) and smls files  (.smls). Seamless files are text files and are coded the same as vrml files using vrml protocol but smls files are made with a different extension so that there is a way to define seamless specific files (files for editing) differently to the end product. If you move the mouse to the top left corner of the 3d window or press press f10 to open the main menu and then select file you can then select:

open to open a smls file for editing.
save to save the current smls file that is open
saveAs to save the current smls file with a different name.
new to create a brand new smls file.

importSkinAnim can be used  for importing skin animated models that use Bitmanagement/Blaxxun contact's setByVertexTransform function. Seamless files generated with genContactSBVT and Blaxxun Avatar Studio wrl files should both be able to be imported with this feature if the files have not been modified (though many will import if they have been modified). Some key fields and the IndexedfaceSet will be converted to a Seamless node and Part nodes for all the parts in the model.

importFrom and exportTo applies only to when a Part node is currently selected. These two commands can be used for saving and loading triangles (in the form of Shape/IndexedFaceSet nodes) to and from (x3dv;.x3dvz;.wrl) files.

Nodes and Fields
For X3D/VRML, nodes can be thought of as building blocks. They are used for constructing X3D/VRML scenes.
There are 55 VRML 97 standard nodes (x3d has many more) but not all of these are needed to make 3d worlds and models. Not all of the VRML 97 nodes will function in Seamless3d but all VRML 97 nodes except for the PixelTexture node can at least be edited in Seamless3d. Seamless however supports more than 55 nodes because it also supports 42 of it's own special "seamless nodes" specifically designed for editing and generating x3d shapes and for animation as well as a few new X3D nodes. In Seamless3d II the nodes are represented in the scene tree window by icons ( images). In Seamless3d there is always one and only one node selected at any one time. A node is selected by clicking on the node's icon in the scene tree window. When a node's icon is clicked on, a window that contains the fields for the node will open. This window is called the node's control panel. A node can contain none or any amount of fields. Fields are settings that control how a node will function. Fields can also be said to be the properties of a node.

The Scene Tree Window
 

How Different Field Types are Displayed in the Control Panel.

All fields have a name and a value. Fields in the control panel show the names for the fields to the left and the values to the right.

for example:

    translation  0 -.05 .02

we see the name of the field "translation" and its value 0 -.05 .02
A value does not have to mean one number a field like the one shown above has 3 components (3 numbers) for it's value
Values can usually be directly written in by clicking on the value and then using the keyboard.
Fields depending on the type can be accompanied by up-down  buttons which can also be used to control the value of the fields.
 

The Different Field Types

SFBool
The values for a SFBool  field types are shown in check boxes. They can be either checked  TRUE or unchecked  FALSE.
Push buttons  may be used for this type of field when only a push button is wanted to control this field.

Example of a SFBool field displayed in the control panel:

    clearCycle 

SFColor
SFColor values are made up of 3 floating point numbers which represent the 3 respective red green and blue components. Each number is legal when its within the inclusive range of 0 to 1. Fractions of 1 make it possible to represent any color the eye can see.

Example of a SFColor field displayed in the control panel:

    color  .85 .37 0
 

SFInt32
SFInt32 values are made up of one integer number. This means they are always a whole number (do not contain fractions of a number)

Example of a SFInt32 field displayed in the control panel:

    staves  8

SFFloat

SFFloat values are made up of one floating point number. SFFloats are different to SFInt32 fields in that fractions can be expressed using a decimal point.

Example of a SFFloat field displayed in the control panel:

    xDistance  4.5

SFVec3f
SFVec3f values are made up of 3 components (3 floating point numbers) which represent the 3 respective dimensions x, y and z.

Example of a SFVec3f field displayed in the control panel:

    position  45.576 .3778 -70.745

SFVec2f
SFVec2f values are made up of 2 components (2 floating point numbers) which represent the 2 respective dimensions x and y.

Example of a SFVec3f field displayed in the control panel:

    slide 0 .5

SFRotation
SFRotation values are made up of 4 components (4 floating point numbers)  which represent the orientation x, y and z and the angle. One single SFRotation value can rotate a shape to any angle on any axis.

Example of a SFRotation field displayed in the control panel:

    orientation  1 0 0 -1.570796

SFString
SFString values can be any number of letters or characters "strung" together to make a "string" of characters.

Example of a SFString field displayed in the control panel:

    image halo.png

SFTime
SFTime values are much the same as SFFloat  values except they can contain more accurate values for the purpose of representing accurate time over a long range.

The difference between SF and MF fields

The SF you see in field types that begin with SF stands for Single Field
The MF you see in field types that begin with MF stands for Multiple Field
In the control panel Multiple Fields are controlled by two extra  up-down buttons. One is the index the other the count control. The count button is used to control how many values a multiple field shall contain and the index field is used to select one of the values in the multiple field.
Seamless allows several MF fields to share one index button and one count button. This allows MF fields that are related to be synchronized. This makes related fields easier to use and reduce the chance of human made mistakes.

So that a group of fields can be more easily distinguished as a group the background color for a group of related multiple fields  is colored differently to the color of neighbouring fields that are out side the group.

Example of two multiple fields sharing index and count up-down buttons and grouped by a common background color:

       index  3              count  5
curve 1.5708
distance .628

SFNode and MFNode Fields

SFNode and MFNode fields are not nodes but fields that can contain nodes. Just like in concept a string of characters can be said to be a value for a SFString field the same way a single floating point number can be said to be a value for a SFFloat so to can a node be said to be a value for a SFNode or one of the values for a MFNode field. SFNode and MFNode fields are not shown in the control panels like other field types are.

Adding a New Instance of a Node

The names for the SFNode and MFNode fields can be seen in the node's pop-up menu if it contains any of these types of nodes. The node's pop-up menu is activated by right clicking on the node's icon in the scene tree window and selecting paste. In the following example we see the pop-up menu open for a Seamless node. In the pop-up menu we can see the SFNode and MFNode fields appearance, geometry, skeleton, switchpart, and build which belong to the Seamless node.

In the above example we see that the build field is selected and it's corresponding sub menu open which contains all the possible legal node types for the build field. Selecting any of these nodes from the sub menu will cause a new node (or value) to belong to the selected field in the pop menu.
When a SFNode or MFNode field contains a value it is shown as one of the nodes that makes up the the scene tree.
The following picture shows the new stem node in the scene tree as a result of selecting Stem for the build field.


It can be said that we have added the value of a Stem node to the Seamless node's build field but to simplify we can say we added a Stem node to the Seamless node. Adding the first node to a MFNode field is simple enough and appending another node can be done exacly the same way as adding the first but some times we may want to insert a field rather than append it also we may not want to go all the way up to the parent node to append a node to it's MFNode field if the MFNode contians many nodes. This is where we can take advanage of selecting sibling above or sibling below in the paste sub-menu  as shown:

DEFining a Node
Some nodes need to be DEFined so that they can be referenced. This is done by giving a node a name. This name is not to be confused with the name we give the type of node and is not to be confused with the name of the field the node may belong to. A field name is the name of the field where as a DEF name is the name of the node. The node remember is the value of a field not the field itself. To DEFine a node the node must first be selected then if we click it again to the right of the node's icon we can then type in the name.
The following example shows a Part node DEFined as torso:

USEing an already existing Node
Often we don't want a new instance of a node in a SFNode or MFNode field instead we may want to reference to an already existing node. In vrml when nodes are referenced the word USE is used. To USE a node in seamless first the node that we want to reference should be copied (just to make it remembered by seamless for later).

Then we should right click on the appropriate node and select the field that is going to USE the node.
As shown in the following example the DEF name of the node will be shown in the field's sub menu

After selecting the node to be USEed by the stem node we should see:

Notice that the node is shown in 2 places in the scene tree one shown as a reference to the other by the little arrow  icon to the the lower left of it's node icon. This  is the same image seen in windows for shortcuts to folders and files. This is because the concept of USE in vrml is much the same as a shortcut concept. Which icon we click on to select the node DEFined as torso will not matter (unless we wish to delete a reference) because one is not a copy of the other they are the same node (same instance).

Why SFNode and MFNode Field Names are Not Shown in the Scene Tree
For most SFNode and MFNode field types it is not necessary to see the names of the fields in the scene tree because the type of node is enough of a clue to let us know which field the node belongs to. I took advantage of this reality by not showing them in the scene tree. Hiding non essential information to reduce clutter which can lead to confusion has been one of my objectives in the design of Seamless II. However some Seamless nodes have more than one field that can both contain the same types of nodes. Seamless nodes that have this predicament are nodes that have source and destination fields for Part nodes. To avoid ambiguities in this case without resorting to adding field names I have made it so that all fields that begin with the name source are shown with a blue dot.
In the following picture we see a node that has to Part nodes branching from it. One of the Part nodes is marked with a blue dot to show that it is a node belonging to the source field


Sending Field Values to Another Field by Adding a ROUTE
X3D/VRML allows the values of fields to be sent to other fields, usually to fields that belong to other nodes.
This is done by adding a ROUTE. A ROUTE has a source and destination field. To add a ROUTE first copy the node that has the destination field then right click on the node that owns the source field, select paste, the source field then select TO DestiationNode/destination field as shown in the folowing example.


After doing this the ROUTE will be displayed in the control panel of the node that owns the source field for the ROUTE.

To remove a ROUTE right click on the ROUTE in the control panel and select delete this ROUTE.

the source and destination fields must be of the same type. for example if the source node is a SFVec3f then the destination field must also be  SFVec3f field type. Seamless3d will only allow matching fields to be selected in the menu when adding a ROUTE.

The Scene  Node
The Scene node in the scene tree is represented by the icon . This node always exists at the top of the scene tree window though it may be hidden from view if the window is scrolled. The Scene node is the base or root node in the scene tree. This means all nodes in the scene tree will be descendants of this node. When the Scene node is selected we will see the Scene node's control panel open.

 Scene
output

The control panel has just one field called output. This button generates a (x3d;.x3dz.;x3dv;.x3dvz;.wrl) file that will have the same file name as the current smls file that is open in seamless except it will have one of the folowing extensions

.x3d     X3D XML coded
.x3dz    X3D XML coded gzipped
.x3dv    X3D VRML classic coded
.x3dvz  X3D VRML classic coded gzipped
.wrl      VRML97 for both gzipped or not gzipped

instead of a .smls extension. Any node that is not a standard X3D/VRML gets converted to nodes that can be opened by a X3D/VRML viewer.

What type of file gets created depends how some of the fields are set in Seamless3d's Settings control panel.
 

The Seamless  and Part Nodes

The Seamless node houses all seamless nodes used for displaying and generating a seamless skin animated model.
The type of effect node used for the effect field detirmins whether the parts will use color per vertex of textures to color the triangles in the part nodes.
The skeleton field is the base for all the Part nodes that make up the node's skeleton structure.
Part nodes contain the vertices and triangles.

Build Nodes

The Seamless build field is used for containing the Build nodes. This field can be left empty if the geometry field already contains geometry. However the build nodes can be used for creating mathematically perfect smooth geometry. Using build nodes can also have the added advantage of making geometry on the fly resulting in a Seamless node being tiny in comparison to a Seamless or Shape node that contains pre built geometry.



Home | Tutorials | Next

Copyright © 2000-2005 Graham Perrett thyme@seamless3d.com