Scene Objects
Availability LightWave® 6.0
Component Layout, Modeler
Header lwmeshes.h
The scene objects global gives plug-ins access to the internal representation of each
object file loaded into the current scene in Layout or the object database in Modeler.
Functions are provided for reading object geometry and the vertex map list.
Although vertex maps are stored in object files, LightWave®'s internal vmap list isn't
object-specific, and this has several consequences. If a vmap of the same name and type is
stored in two different object files, LightWave® creates a single entry in the vmap list
when both files are loaded. The vmap is shared by the two objects. If both objects are
then removed, the vmap is not removed from the list. And the only way to
determine whether a vmap affects a given object is to test all of its vertices, using the Mesh Info pntVGet function, to see whether any of
them is mapped.
Global Call
LWObjectFuncs *objfunc;
objfunc = global( LWOBJECTFUNCS_GLOBAL, GFUSE_TRANSIENT );
The global function returns a pointer to an LWObjectFuncs.
typedef struct st_LWObjectFuncs {
int (*numObjects) (void);
const char * (*filename) (int obj);
int (*maxLayers) (int obj);
int (*layerExists) (int obj, int lnum);
void (*pivotPoint) (int obj, int lnum, LWFVector pos);
LWMeshInfo * (*layerMesh) (int obj, int lnum);
int (*numVMaps) (LWID);
const char * (*vmapName) (LWID, int index);
int (*vmapDim) (LWID, int index);
LWID (*vmapType) (int index);
const char * (*layerName) (int obj, int lnum);
int (*layerVis) (int obj, int lnum);
const char * (*userName) (int obj);
const char * (*refName) (int obj);
int maxPointsPerPoly; } LWObjectFuncs;
- count = numObjects()
- Returns a count of the number of objects in the object database. This
is the number of unique object files that have been loaded, which in
general will be different from the number of animateable object items
(clones and null objects, for example, aren't counted).
name = filename( object_index )
- Returns the filename for the object. Objects in the database are indexed
by integers ranging from 0 to count - 1. Except during rendering,
the index associated with a given object can change at any time as objects
are added to or removed from the object database by the user.
maxlayer = maxLayers( object_index )
- Returns a value one greater than the highest indexed, existing layer
for the object. This is just the layer count if all layers with indexes
between 0 and maxlayer - 1 exist.
exists = layerExists( object_index, layer_index )
- True if the layer exists.
pivotPoint( object_index, layer_index, pos )
- Get the pivot point for the object layer.
mesh = layerMesh( object_index, layer_index )
- Returns a mesh info structure for the object layer. These are described
on the Mesh Info page. For object layers with subpatches,
the mesh returned by this function does not include geometry
that would be created by subdivision unless the subpatches have been
frozen.
vmap_count = numVMaps( vmtype );
- Returns a count of the number of vertex maps of a given type, or the
total of all types in the scene if vmtype is 0. Vmap type codes
are an extensible set of four-character identifiers. The lwmeshes.h
header defines some of the common vmap IDs.
LWVMAP_PICK - selection set
LWVMAP_WGHT - weight map
LWVMAP_MNVW - SubPatch weight map
LWVMAP_TXUV - texture UV coordinates
LWVMAP_MORF - relative vertex displacement
LWVMAP_SPOT - absolute vertex displacement
LWVMAP_NORM - vertex normals
- vmap_name = vmapName( vmtype, vmindex );
- Returns the name of a vmap. The index ranges from 0 to vmap_count
- 1.
dimensions = vmapDim( vmtype, vmindex );
- Returns the number of dimensions, or values per vertex, of a vmap.
Vmaps are typically 2D or 3D (two or three coordinate values per vertex),
but they can have any number of dimensions, including 0.
vmtype = vmapType( vmindex )
- Returns the LWID for the vmap. Call numVMaps with a vmtype
of 0 to find the upper bound on vmindex.
lname = layerName( objnum, lnum )
- Returns the name assigned to the layer, or NULL if the layer is unnamed.
isvis = layerVis( objnum, lnum )
- Returns a boolean indicating whether the layer is marked as visible.
-
- name = userName( object_index )
- Returns the name of the object as seen by the user. This is typically
the base filename without the path or extension, or "Unnamed N"
for unsaved objects. These are not guaranteed to be unique.
-
- name = refName( object_index )
- Returns an internal reference name for this object. The reference
name is guaranteed to be unique and unchanging for the lifetime of the
object. This is useful in Modeler as an argument to commands requiring
a filename, since some objects in Modeler may not have been saved yet
and therefore have no filename.
-
- maxPointsPerPoly (rev.5+)
- the maximum number of points that can be used to construct a polygon
in the current application.
Example
The inertia sample uses this global to display a
list of vertex maps to the user. The vmap values are used in the displacement evaluation
to scale the lag. |