About
A NormalTag stores normal vectors for a (polygon) object. For each polygon a set of four vectors is stored (NormalStruct). The class NormalTag is based on VariableTag so the typical workflows on handling tags apply, see BaseTag and VariableTag Manual.
NormalTag objects are an instance of Tnormal
.
Allocation/Deallocation
NormalTag instances are created with the usual tools.
if (normalTag == nullptr)
{
const Int32 polyCnt = polyObject->GetPolygonCount();
if (normalTag == nullptr)
polyObject->InsertTag(normalTag);
}
Represents a Point Normal tag.
Definition: c4d_basetag.h:565
static NormalTag * Alloc(Int32 count)
maxon::Int32 Int32
Definition: ge_sys_math.h:60
#define MAXON_SOURCE_LOCATION
Definition: memoryallocationbase.h:67
#define Tnormal
Definition: ge_prepass.h:1414
Edit
The normal vectors stored in a NormalTag are accessed by obtaining data handles that are used with static functions:
if (polyObject->GetTag(
Tphong) ==
nullptr)
{
if (phongTag == nullptr)
}
for (
Int32 i = 0;
i < polygonCount; ++
i)
{
normal.
x += ((random.
Get01() * 0.2) - 0.1);
normal.
y += ((random.
Get01() * 0.2) - 0.1);
normal.
z += ((random.
Get01() * 0.2) - 0.1);
}
Py_ssize_t i
Definition: abstract.h:645
Vector CalcFaceNormal(const Vector *padr, const CPolygon &v)
Definition: c4d_baseobject.h:2217
Definition: c4d_basetag.h:48
static void Set(NormalHandle dataptr, Int32 i, const NormalStruct &s)
Definition: c4d_basetag.h:634
NormalHandle GetDataAddressW(void)
Definition: c4d_tools.h:812
#define MSG_UPDATE
Must be sent if the bounding box has to be recalculated. (Otherwise use MSG_CHANGE....
Definition: c4d_baselist.h:341
#define Tphong
Phong.
Definition: ge_prepass.h:1382
void * NormalHandle
Handle for normal data. See also: NormalTag.
Definition: operatingsystem.h:463
Represents a polygon that can be either a triangle or a quadrangle.
Definition: c4d_baseobject.h:44
Definition: operatingsystem.h:601
Vector c
The vertex normal for the third point.
Definition: operatingsystem.h:633
Vector b
The vertex normal for the second point.
Definition: operatingsystem.h:632
Vector a
The vertex normal for the first point.
Definition: operatingsystem.h:631
Vector d
The vertex normal for the fourth point.
Definition: operatingsystem.h:634
void Normalize()
Normalizes this vector, so that GetLength()==1.0.
Definition: vec.h:486
Further Reading