Behemot
Graphics Editor News 18
Behemot Graphics Editor is the new name for older
RT Editor.
New Behemot Graphics Editor version 0.8.0
Only for Windows 95 / Windows NT , soon for Windows 3.1 and Linux/386
New version 0.8.0 features:
Improved interface
Improved editor
Attributes
Skeleton objects
Multiple selection for curve
Jpeg texture
MPEG 1 support
Improved VRML Support
Events and Fields
A description of the new features:
Improved interface
-
New shell file dialog
-
most recent used files
-
printing support
-
use registry to store configuration data
Improved editor
-
Editing on preview view
The objects can be selected, modified, translate, scale or rotate in
the preview view.
-
Easy way to modify sphere, box and camera objects
When a sphere or a box is selected, some control points are showed.
Moving them the object is modified, without using the translate, scale
or rotate command.
Attributes
Attributes are special user defined values, which allow to extend the normal
characteristics of an object.
They may contain information for special user defined action like animations,
used by scripts object for complex modelling operation or by
new objects like skeleton objects.
Every object an have a list of attributes. An attribute has a name and
a value. The attribute name follows the rules for object name (only alphanumeric
characters or '_', cannot start with a digit, case sensitive).
To set the attributes of an object in the editor use the command Edit|Object|Modify
Comm. In the following dialog press the button attribute.
An attribute is selected using the "Name" combo box.
To add a new attribute press the "Create" button, then insert the name
of the new attribute; the new attribute will have a null string value.
To delete the selected attribute press the "Delete" button; it will
be immediately deleted.
To show the value selected of the selected attribute always the Update
button must be pressed.
To set the value of the selected attribute, insert the new value in
the "Value" edit control the press the "Set" button.
To set the attributes of an object in the .rt file format
name neck;
attribute {
}
material body;
model {
An attribute section may exist. All attribute values are strings.
Skeleton objects
A skeleton
object is a base structure with control points (black square) and links
between two controls (lines), and a group of objects, where each one is
tied with a link. To add or delete an object from a skeleton object, use
the special object menu. Look at the example 'skel2.rt' in the examples
directory.
To move a skeleton it is easy how to move the control points of a curve,
just fix a point (clicking on it with the CTRL+Left button of the mouse),
the move a close point (clicking on it with Left button it will become
red; press the 'm' key to rotate it).
It is possible move a control point, but not to change the length of
a link.
In this program version it is impossible to create or modify the base
skeleton structure from the editor, you need to write the code; in a next
release it will be possible to manage skeleton structure by the editor.
The .rt file format for skeleton object is:
{ object
name ske_test;
model { skeleton
npoints 16;
nrels 15;
point {
( 0 , -2 , 0 ) , ( 0 , -2 , 0 ) , 0;
( 0 , -1 , 0 ) , ( 0 , -1 , 0 ) , 0;
( 0 , 0 , 0 ) , ( 0 , 0 , 0 ) , 0;
( -2 , 0.5 , 0 ) , ( -2 , 0.5 , 0 ) , 0;
( 2 , 0.5 , 0 ) , ( 2 , 0.5 , 0 ) , 0;
( -4 , 0.5 , 0 ) , ( -2.54591 , -1.42405 , 0 ) , 0;
( 4 , 0.5 , 0 ) , ( 4 , 0.5 , 0 ) , 0;
( -6 , 0.5 , 0 ) , ( -3.09183 , -3.3481 , 0 ) , 0;
( 6 , 0.5 , 0 ) , ( 6 , 0.5 , 0 ) , 0;
( 0 , 5 , 0 ) , ( 0 , 5 , 0 ) , 0;
( -1.5 , 5 , 0 ) , ( -1.5 , 5 , 0 ) , 0;
( 1.5 , 5 , 0 ) , ( 1.5 , 5 , 0 ) , 0;
( -1.5 , 7.5 , 0 ) , ( -3.40304 , 6.62125 , 1.38778e-17 ) , 0;
( 1.5 , 7.5 , 0 ) , ( 2.36242 , 7.34654 , 0 ) , 0;
( -1.5 , 10 , 0 ) , ( -2.63621 , 7.58312 , 2.17641 ) , 0;
( 1.5 , 10 , 0 ) , ( 3.22483 , 9.69308 , 0 ) , 0;
}
rel {
0 , 1 ;
1 , 2 ;
3 , 2 ;
4 , 2 ;
3 , 5 ;
4 , 6 ;
5 , 7 ;
6 , 8 ;
2 , 9 ;
9 , 10 ;
9 , 11 ;
10 , 12 ;
11 , 13 ;
12 , 14 ;
13 , 15 ;
}
{ object
name neck;
attribute {
}
material body;
model { box
xmin -0.653266;
xmax 0.653266;
ymin -1.02757;
ymax -0.075188;
zmin -0.678392;
zmax 0.628141;
}
}
// More object here
}
}
The skeleton object is like a group object, with two new sections
npoint |
the number of the control points in the skeleton |
point |
this section contains all the control points of the skeleton.
The first if the control point number 0, the last is the 'npoint'-1.
All the points in the skeleton are in the format
(x,y,z), (xb,yb,zb),f
'f' can be 1, if the control point is fixed (impossible to move) or
0, if not fixed
'(x,y,z)' if the position of the control point
'(xb,yb,zb)' if the base position of the control point |
nrel |
the number of links (showed like a gray line when the skeleton is selected
on the editor view) |
rel |
list all the links
a link is the format:
where x and y are the indices of the two control points of the link. |
Important: an object must be associated to a link, so every time a link
in the skeleton is moved, the object move too. To associate an object to
a link, two object attributes must be set, 'from' and 'to', ...
Multiple selection for curve
It is possible to select a group of control points (only for curve), and
to move, rotate and scale them (using the 't','r','s' keys).
Jpeg texture
The jpeg file format is now supported for textures.
{ texture
name FILENAME;
model { JPG
}
}
When the program finds this section, it looks for a "FILENAME.jpg" file
in the current directory or in the texture directory.
MPEG 1 support
Using the built in animation support, the output format can be selected
by the "mpeg" check box in Edit|Param dialog. If the check box is not selected,
the "Action|Create All Frames" creates a .bmp file for each frame image
(in this case a large space on the disk is needed); otherwise, if it is
not selected, a .mpg file will be create (using MPEG 1 file format), without
requiring a large amount of disk space.
Improved VRML Support
-
New VRML rendering engine
-
The camera objects are correctly translated into the VRML syntax
Events and Fields
A new way to generate animations more powerful the anim package and anim
objects is now possible.
The objects in the scene can communicate thought events. Every object
has his own events.
The events can be in or out. The events can be linked through routes.
A route can link a event out with an event in.
-
Events data
The event field type are similar to VRML2:
SFBool |
A boolean value, can be true or false. |
SFInt32 |
32 bit, two's complement integer |
MFInt32 |
an array of integer |
SFFloat |
a float number |
MFFloat |
an array of floats |
SFString |
a string |
MFString |
an array of strings |
-
Sensor object
A sensor object can generate new events in response to external events.
A Sensor has two events:
click |
SFInt32 |
during editing, if you click with the mouse on it |
Event out |
frame |
SFFloat |
when a new frame is selected. The number of the frame is send. |
Event out |
-
Routing
In future will be possible to to manage the by the editor.
In a .rt file all the routes are listed in a route section.
{ route
from object1.eventOut to object2.eventIn;
}
For example:
{ route
from AnimationSensor.frame to Script.newframe;
}
-
Executable procedures
The scene objects can execute some procedures.
The following procedures can be executed with any object:
GetAttribute |
SFString -> SFString |
return the value of an attribute |
SetAttribute |
SFString, SFString ->SFBool |
Change the value of an attribute; return true is the operation is successful. |
GetNControl |
SFInt32 -> SFInt32 |
Return the number of control points |
GetControl |
SFInt32 ->MFFloat |
Return the value of a control point |
SetControl |
SFInt32, MFFloat->SFBool |
Set the value of a control point |
IsCurve |
SFFloat -> SFBool |
Return true if the object is a curve
A curve is in the form s(t) where t is a variable
CurveFrom < s(t) < CurveTo
|
CurveFrom |
SFFloat -> SFFloat |
Return the first valid value for a curve |
CurveTo |
SFFloat -> SFFloat |
Return the last valid value for a curve |
CurveEval |
SFFloat -> MFFloat |
Evaluate a single point in the curve |
-
PrologScript Object
A prolog script is an invisible object which can have user defined
event in and event out. A prolog script event in executes a query in the
script.
Every prolog script has a private rule space, so two different prolog
cannot share the same rules.
Special predicates to handle fields and events:
bh_getfield |
(Object,Event,ReturnValue) |
Change the value of a field
Object |
the object name |
Field |
the field name |
ReturnValue |
the field data returned |
|
bh_getfield |
(Object,Event,Param,ReturnValue) |
Execute ue of a field
Object |
the object name |
Field |
the field name |
Param |
the data in the format:
param( ..., ..., ...) |
Return Value |
the field data returned |
|
bh_setfield |
(Object,Event,Param) |
Change the value of a field
Object |
the object name |
Field |
the field name |
ReturnValue |
return a field data |
|
bh_eventout |
(Event,Data) |
Generate an event out
Object |
the object name |
Field |
the field name |
ReturnValue |
the |
|
The field data in the Prolog Script format
SFBool |
sfbool(true) or sfbool(false) |
SFInt32 |
sfint32(10) |
MFInt32 |
mfint32(1,2,3,4) |
SFFloat |
sffloat(4.6) |
MFFloat |
mffloat(1.4 , 4.7, 67) |
SFString |
sfstring('A string message') |
MFString |
mfstring('String one','String two','String tree') |
Example of a prolog script:
{ object
name Script;
model { PrologScript
script "
newframe(sffloat(X)) :- Y is ( X / 400 * 8) + 3,
bh_getfield('CameraPath','CurveEval',param(sffloat(Y)),MVal),
bh_getfield(camera,'SetControl',param(sfint32(0),MVal),RetValue).
";
event {
in newframe SFFloat;
}
}
}
-
Allow to create complex animation and modelling objects
Where to find more informations:
Behemot Graphics
Editor home Page
Download :
You can download Behemot Graphics Editor 0.8.0 for Windows 95/NT at
Simtel
.
To unsubscribe to this newsletter:
1) Go here
with a browser
OR
2) send an e-mail with
the world "unsubscribe"
Sergio Perani
e-mail: sergio.per@iol.it