About
A UVWTag stores UVW coordinates for a (polygon) object. For each polygon a set of four UVW coordinates is stored (UVWStruct ). The class UVWTag is based on VariableTag so the typical workflows on handling tags apply, see BaseTag and VariableTag Manual .
UVWTag objects are an instance of Tuvw
.
Access
A UVWTag is typically attached to a polygon object.
Note A polygon object can host multiple UVW tags.
Allocation/Deallocation
UVWTag instances are created with the usual tools.
A UVW tag with projection-based UVs can be created with:
UVWTag * uvwTag = static_cast<UVWTag*>(foundTag);
if (uvwTag == nullptr )
{
{
PolygonObject *
const polyObject = static_cast<PolygonObject*>(
object );
if (uvwTag == nullptr )
}
}
Access Data
There are two ways to edit the data stored inside a UVWTag . The "slow" way is to access every set of UVW coordinate independently. The "fast" way works with a data handle that allows direct access to the internal memory.
Slow
The UVW coordinates stored in a UVWTag can be accessed with:
for (
Int32 i = 0; i < count; ++i)
{
}
Fast
The fast access to the UVW coordinates stored in the UVWTag is provided by a data handle and static functions:
for (
Int32 i = 0; i < count; ++i)
{
const Vector a = mg * points[polygon.
a ];
const Vector b = mg * points[polygon.
b ];
const Vector c = mg * points[polygon.
c ];
const Vector d = mg * points[polygon.
d ];
CalculateUVCoordinates(a, uvwData.
a );
CalculateUVCoordinates(b, uvwData.
b );
CalculateUVCoordinates(c, uvwData.
c );
CalculateUVCoordinates(d, uvwData.
d );
}
Further Reading
Vector b
The UVW coordinate for the second point.
Definition: operatingsystem.h:503
#define Opolygon
Polygon - PolygonObject.
Definition: ge_prepass.h:967
Int32 GetDataCount(void) const
Vector c
The UVW coordinate for the third point.
Definition: operatingsystem.h:503
void * UVWHandle
Handle for UVW data. See also: UVWTag.
Definition: operatingsystem.h:449
Int32 b
Index of the second point in the polygon.
Definition: c4d_baseobject.h:41
UVWStruct GetSlow(Int32 i)
Definition: c4d_basetag.h:401
Represents a polygon that can be either a triangle or a quadrangle.
Definition: c4d_baseobject.h:39
Definition: c4d_basetag.h:40
Int32 d
Index of the fourth point in the polygon.
Definition: c4d_baseobject.h:41
#define MAXON_SOURCE_LOCATION
Definition: memoryallocationbase.h:66
#define MSG_UPDATE
Must be sent if the bounding box has to be recalculated. (Otherwise use MSG_CHANGE....
Definition: c4d_baselist.h:335
static String IntToString(Int32 v)
Definition: c4d_string.h:493
Definition: c4d_basetag.h:368
static UVWTag * Alloc(Int32 count)
Definition: operatingsystem.h:465
static void Set(UVWHandle dataptr, Int32 i, const UVWStruct &s)
Definition: c4d_basetag.h:460
#define Tuvw
UVW data - UVWTag.
Definition: ge_prepass.h:1238
maxon::Int32 Int32
Definition: ge_sys_math.h:45
#define ApplicationOutput(formatString,...)
Definition: debugdiagnostics.h:209
Bool Message(Int32 type, void *data=nullptr)
Definition: c4d_baselist.h:1350
Definition: c4d_baseobject.h:1537
Int32 c
Index of the third point in the polygon.
Definition: c4d_baseobject.h:41
Vector d
The UVW coordinate for the fourth point.
Definition: operatingsystem.h:503
Bool IsInstanceOf(Int32 id) const
Definition: c4d_baselist.h:1329
Vector a
The UVW coordinate for the first point.
Definition: operatingsystem.h:503
static String VectorToString(const Vector32 &v, Int32 nnk=-1)
Definition: c4d_string.h:569
Int32 a
Index of the first point in the polygon.
Definition: c4d_baseobject.h:41
UVWHandle GetDataAddressW(void)
Int32 GetPolygonCount(void)
Definition: c4d_baseobject.h:1692
void InsertTag(BaseTag *tp, BaseTag *pred=nullptr)