|
This tutorial has been somewhat superseded by the more recently written: Making an Avatar from Immediate Spheres and Cylinders tutorial.
Making high quality skin animated creations using a Minimalist Approach
The picture of the face above shows what I have made starting with a single triangle as a demonstration of what can be done when only simple hand editing methods are used and when you don't have good drawing skills. If you are an artists who is good at getting proportions right you could do a lot better i am sure. By using low-level ways like hand editing triangles as opposed to using advanced shape generating techniques and only using color per vertex we can have great versatility with a minimum amount of functions and concepts. I want to write a tutorial that demonstrates that you don't need to learn and use lots of advanced concepts before you can start developing original worth while quality creations without loosing a sense of being fully in control of the position of each vertex the color of it and how it animates. Something I have learned over the years in building computers from chips and years of low-level programming is that you can take many short cuts and do what many would otherwise think could only be achieved by those who have been in the business for years and read many books on the subject. Although this tutorial will revolve around a low-level approach there will be no need to do any VRML hand coding in a text editor in order to edit a vertex since this can instead be done with ease using Seamless3D's graphics user interface. This tutorial is aimed to make it non intellectually taxing by keeping everything simple and using the more intuitively straight forward approach of hand editing triangles. Animation requires a little more intellectual effort but by only attempting the basics it should be pretty easy for anyone to quickly feel at home with all the essential concepts and skills to be able to feel no barrier to mastering sophisticated skin animated creations, all this using just a few functions from Seamless3d. I don't want to give the impression that I am against using the more advanced features in Seamless3d they can save a lot of time and give us the joy of experiencing enlightenment but I really want to stress the point in establishing the security of a rock solid foundation one can always depend on to be versatile enough for anyone to be able to do what they want even if it means they did not take the most efficient path to achieve it. With a stable platform the more advanced features can be learned with time at a pleasant pace without getting caught up in the stress of "must learn lots before any fun can be had". This is my goal in this tutorial! Some tips when using Seamless3d Crashes and Undo/Redo You can Undo and Redo using the buttons from the tool bar but do not rely on this without backing up your work manually because nothing is 100% reliable especially in a cutting edge program like seamless3d. If Seamless crashes unexpectedly you can usually retrieve your work. Go to the folder where seamless3d.exe is located or the working folder and open the folder named undoCache. In here there will be all the smls files that get backed up after each command. Making a new Seamless file that contains a
Seamless node save the new smls file as the name you desire. To see the nodes our new file contains, open the scene tree window Nodes are the building blocks of VRML In this minimalist tutorial we will be using 6 nodes: Scene and a Proto (a blueprint for a node) which always consists of the 3 components: ProtoDeclare We will also need one more node, a: ProtoInstance so that we get an instance of the Proto ( a user defined node created to the form of the Proto) To select a node or a Proto component in the scene tree window, click on the node's icon. This will also cause the control panel for the node to open. The Scene 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 (by clicking on it in the scene tree window ) we will see the Scene node's control panel open.
The Scene node's control panel has just one field called output. This button generates a VRML file that will have the same file name as the current .smls file that is open in seamless except it will have a .wrl, .x3d;.x3dz;.x3dv;.x3dvz extension instead of a .smls extension. The generated VRML/X3D file will have any nodes that are not standard VRML/X3D nodes converted to standard VRML/X3D nodes and or nodes specific to Bitmanagement/Blaxxun Contact if this is specified in the Settings window (genContactSBVT checked). When we create a new smls file by default we have a Seamless
node already added with a ColorEffect node added to the Seamless node. The ColorEffect node will make all the triangles use the color per vertex method, the only method of coloring vertices used in this minimalist tutorial. Adding Part
nodes in the scene tree to make a skeleton of parts To add a node to a node as a child (meaning it branches out from it): click on the node in the node bar and drag it to the right of the node you want it to branch out from and then release the mouse button To add a node as a sibling below so that it is directly below the node (meaning it shares the same parent node): drag the mouse so that it is directly over and to the lower end of the node you want it to be below before releasing To DEFine a node select it (if not already selected) then
click it again
to the right of the node's icon and then type in the name. To delete a node: Adding the first triangle to a Part
Wire frame mode (space bar) Background color (ctrl+B) Dragging a vertex to change the shape
Viewing triangles from a different Angle If we right click and drag on the 3d scene we can view our work from any orientation. This allows us to be able to drag a vertex to any location in 3d space. Viewing triangles from a different Position Use the keys from the num pad
Pressing the key Esc is very useful for resetting the view orientation translation and zoom. Pressing the key , (comma) is very useful for resetting only the orientation in the view Pressing Esc or the , key and then using the number keys above the alpha keys is good for viewing work from clean precise angles (I do this a lot to see the sides and back of my work)
press the key that has + sign on it (can be from the num pad)
to zoom
in Hiding Parts Often triangles from other parts make it hard to edit the
triangles
in the part we want to work on. When this is the case parts can be
hidden
in the 3d window by left clicking on the Part node's icon in the scene
tree window. The scene tree window shows a hidden part by showing the
icon
as a dash as shown in the following example for the part DEFined as
torso. Vertex and Triangle Selection using Mouse and W, E, F7 and F8 keys When ever we click on a vertex successfully we will see the
little red
sphere or dot lock onto the vertex. This means its the "selected
vertex".
When ever a vertex is selected a triangle is selected as well. The red,
green and blue dots show which triangle is selected.
If we press F8 we will select the next vertex in the
selected
triangle and if we press F8 again we will select the next
vertex in the
selected triangle Using the keyboard to move the selected
vertex To move the selected vertex Press Ctrl and one of the following keys from the numb pad
To change how much the keyboard moves a vertex at a time select settings from the main menu and change the value to the amount you want in the incDecRes field Using the mouse to select a vertex without changing the position of the vertex Hold down the ctrl key before clicking on a vertex. While ctrl is down the mouse is unable to drag a vertex but ctrl does not prevent the vertex from being selected when it is clicked on. Adding more Triangles We can split any triangle selected by pressing the key S. The split will be made between the red and green dots in the selected triangle. Triangle Before Split Another way of creating a triangle is to use the mirrorTriangle function. To do this press the key M. This will cause a new triangle to be made that joins the selected triangle. The new triangle will be created sharing vertices with the corners marked by the red and green dots. Triangle Before Mirror function Changing the triangle Divide of Two
Triangles (D) To swap the triangle divide first select one of the triangles, press R then select the other triangle and press D Forcing a vertex to Mirror a Vertex (F)
To make the left vertex mirror the right select the left vertex, press R and then select the right vertex and press F After move vertex to mirrorX function (key F) Centering a Vertex in the X Dimension
(Alt+X) before selected vertex not in middle Joining a Vertex to another Vertex (J)
Break a Vertex away from another Vertex (B)
Changing the Color of a Vertex
[ ] to save time we can copy a vertex by pressing R (or Ctrl+C) and paste the color of this vertex into another vertex by pressing C Finding triangles to thin or small to see
(Alt+F) Changing which part owns a vertex (Alt+o) Changing the ownership of a vertex wont make any noticeable changes to the vertex or the whole shape when not animated but changing a vertex to be owned by a different part will logically affect how the vertex gets animated. To be able to see which Part a vertex belongs to select the vertex in question and look at the blue title bar in the 3d window. The name seen here shows which part the selected vertex belongs to. To paste in the ownership from a part into a vertex first right click on the part you want to be the owner in the scene tree window and select copy then click on any vertex you want to be owned by the copied part and select Alt+o the short cut keys for paste ownership. You do not have to copy the owner before each time you press Alt+o Only once for the first vertex does this have to be done. So like this it is relatively fast to change a number of vertices ownership one at a time. Pasting the ownership might seem a bit strange to grasp at first but the concept is like pasting the color of a vertex into another except we are pasting the ownership of the vertex instead of it's color. Changing the location of a part for animation To change the location of a part ( which is logically the same
as changing
the location of a part's joint or hinge) change the value in the Part's
translation field. In wireframe mode the little yellow sphere shows the
location point of the part. When a part is rotated during animation it
will rotate around this point. Pressing Alt+0 will move the view so
that
we see the part's location point in the center of the 3d window. TimeSensor and OrientationInterpolator nodes The best way to learn how to use the TimeSensor node and
OrientationInterpolator
node is to play about with the following simple example we will make; and paste in a triangle to the part so that we see a triangle in the 3d window. DEFine the TimeSensor as timeSensor or any name you like DEFine the OrientationInterpolator as orientationInterpolator
or any
name you like. so that seamless will remember this node so that when we now right click on the OrientationInterpolator in the scene tree window
Now that our ROUTE is added we should see the ROUTE displayed
in the
OrientionInterpolator's control panel at the bottom of the window: We must also add a ROUTE from the TimeSensor to the
OrientationInterpolator. right click on the TimeSensor node and select paste/fraction_changed/TO orientationInterpolator/set_fraction
Check ( make TRUE) the loop
field so that
the TimeSensor will continuously send timing signals out via the ROUTE.
Our TimeSensor node is now powering away but our triangle is
still because
we have not added any values to the OrientationInterpolator. the part node is now receiving rotation values from the
OrientationInterpolator
but we see no movement yet because the rotation values being sent out
via
the ROUTE are all 0 1 0 0 we should see our triangle animate from the first rotation
value (the
value at index 0) to the last rotation value (the value at index 1) and
then jump back to the first value repeating the cycle endlessly. To
make
it animate smoothly back to the first value the rule is you must have
the
last value = the first. We can do this by simply clicking on the up
count
button to add one more value of 0 1 0 0 (making count = 3) When we add extra values using the count button seamless
automatically
works out the values for the key field.
The key
values can be altered manually but if you don't know what you are doing
and want to keep everything minimalist leave the key
values alone and only
play with the keyValue values. Removing Routes Tugging vertices after they have animated
Making an avatar with triggered gestures.
and select the file AvatarProto.smls (from the
seamless_way_examples.zip)
file and open it we should now see the empty AvatarProto and an instance of it
in the
scene tree window already named Avatar for us. save the file with a brand new name for your avatar in the Open a file dialogue box change the Files of type drop down menu to seamless files (*.smls) and select our minimalists avatar the same file we just saved a short time ago After importing our minimalist avatar back we have our nodes (and routes) wrapped inside the Avatar Proto where we want them for an av. To make it so that the TimeSensor is triggered by a gesture select the TimeSensor node in the scene tree window and then in the control panel uncheck the loop field so that the TimeSensor will start an animation sequence only when it is triggered by a gesture. To select a gesture right click on the name for the field startTime and select IS/gesture1 We will now see the startTime field displayed as: which shows it is now connected to the ProtoInterface field gesture1 Because all nodes for an avatar should be inside the
ProtoBody, from
now on when we add more TimeSensor and OrientationInterpolator nodes,
instead
of adding them to the Scene node we should add them to the ProtoBody Setting the position of the eyes
right click on the Scene node and select paste/children/import/nodes
from file now we should see a crosshairs object marking the center of the scene. To get the eye at centre in height change the translation field for the root Part node (in this case our only Part) by clicking down on the translation field's middle button (the Y dimension button ) until we see our avs eyes at center. If our av has more than one part we should always change the translation field that belongs to the first Part at the top in the scene tree (the root Part) to change the position of the whole av. After getting the eyes centered right click on the Seamless node named crosshairs and select delete to get rid of the corsshairs object now we no longer need it. Outputing the avatar as a wrl Now if we select the scene node and press the output button we have an animated avatar triggered by a gesture.This av may be pretty simple but if we can make this av knowing that vertices are animated in accordance to which part they belong to and that the position of the joint is determined by the rotation field there is no barrier preventing us from making very detailed sophisticated animated seamless avs and all done without the need of a text editor! Viewing the gestures in single user mode
Copyright © 2000-2006 Graham Perrett thyme@seamless3d.com |