# 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

`{ object`

`name neck;`
`attribute {`

`from "2" ;`
`to "1" ;`

`}`
`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 {`

`from "2" ;`
`to "1" ;`

`}`
`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: x , y ; 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