## Name

gattributes — standard attribute conventions in BRL-CAD databases

## BACKGROUND

Starting with BRL-CAD database format version 5, BRL-CAD supports the storage of arbitrary attribute/value data on any database object. Prior to the development of this generic ability, BRL-CAD supported a set of standard attributes used to hold key information about specific properties. These conventions predate not only the version 5 database format but BRL-CAD itself. The purpose of this man page is to identify the standard attributes, document situations where two or more attributes are used to identify the same property, and identify where appropriate what constitutes meaningful values for an attribute.

The earliest ancestor of BRL-CAD was the MAGIC code, written by the Mathematical Applications Group, Inc in 1967 to implement geometric modeling ideas developed by BRL and AMSAA from 1958-1967. That system, which was entirely non-graphical, was followed some years later by the GIFT program - Geometric Information From Targets. LIBRT, appearing around 1983, became the successor to GIFT. Today it is the core library of the BRL-CAD solid modeling package. (For more background see http://ftp.arl.army.mil/~mike/papers/96thebook/). LIBRT inherited both geometric primitives and attributes from GIFT - this heritage is occasionally apparent in attribute names.

Note that with the introduction of support for arbitrary attribute/value pairs, it becomes much simpler for both developers and users to formulate new standards of their own for storage of metadata in attributes. Attributes should only be documented in this file if one or more core BRL-CAD tools has implemented one or more features that require specific attributes to be present. Conventions for attribute names that do not involve tool support should be documented in appropriate user-level documentation. In documenting attributes, one additional distinction is made. Attributes that exist only as post-v5 attribute/value pairs are referred to as non-core attributes; older attributes (which may also be represented in core data structures) are referred to as core attributes.

## CORE ATTRIBUTES

The following table lists all known core BRL-CAD attributes and aliases. Any code setting or reading the value of one of these attributes must handle all aliases, to ensure all functions asking for the value in question get a consistent answer.

Table 1. Core Attributes

Property | Attribute Name(s) | Typical Value(s)
Region Flag | region | REGION |  |  |  | Yes, R or 1
Region Identifier Number | region_id | REGION_ID | id | ID |  | -1, 0, and positive integers
Material Identifier Number | material_id | MATERIAL_ID | GIFTmater | GIFT_MATERIAL | mat | 0 and positive integers
Air Code | air | AIR | AIRCODE |  |  | 0 or 1
Line Of Sight Thickness Equivalence | los | LOS |  |  |  |
Color (Red Green Blue) | color | rgb | RGB | COLOR |  | ###/###/###
Shader Name | oshader | SHADER |  |  |  | string
Inherit Properties | inherit | INHERIT |  |  |  | Yes or 1

Given the importance of these attributes, it is appropriate to briefly outline the meaning and purpose of each of them:

Region Flag:

  The Region Flag identifies a particular geometric combination as being a solid material - in other words, any geometry below this combination in the tree can overlap without the overlap being regarded as a non-physical description, since it is the combination of all descriptions in the region object that define the physical volume in space.

Region ID Flag:

  The Region ID Flag identifies a particular region with a unique number. This allows multiple region objects to be regarded as being the same type of region, without requiring that they be included in the same combination object.

Material ID Number:

  The Material ID Number corresponds to an entry in a DENSITIES table, usually contained in a text file. This table associates numbers with material names and density information, used by analytical programs such as rtweight.

Air Flag:

  The Air Flag alerts the raytracer that the region in question is modeling air, which is handled by specialized rules in LIBRT.

Line of Sight:

Color:

Shader Name:

  LIBRT can utilize a variety of shaders when rendering - this attribute holds a text string which corresponds to the name of the shader to be used.

Inherit:

## EXAMPLES

## SEE ALSO

attr(n).

## BUG REPORTS

Reports of bugs or problems should be submitted via electronic mail to <devs@brlcad.org>, or via the "cadbug.sh" script.