-
首页
-
C4D R23.110 C++ SDK
BaseMaterial Class Reference
#include <c4d_basematerial.h>
详细描述
This is the material base class that all materials in
Cinema 4D
are derived from.
-
注意
-
Has to be created with
Alloc()
and destroyed with
Free()
。使用
AutoAlloc
to automate the allocation and destruction based on scope.
Update Material
|
void
|
更新
(
Bool
preview,
Bool
rttm)
|
Additional Inherited Members
|
const
Char
*
|
GetViewportRenderId
(
VIEWPORT_RENDER_ID
typeId) const
|
BaseList2D
*
|
GetNext
()
|
BaseList2D
*
|
GetPred
()
|
void
|
SetBit
(
Int32
mask)
|
Bool
|
GetBit
(
Int32
mask) const
|
void
|
DelBit
(
Int32
mask)
|
void
|
ToggleBit
(
Int32
mask)
|
Int32
|
GetAllBits
() const
|
void
|
SetAllBits
(
Int32
bits)
|
void
|
SetBitEx
(
Int32
mask,
Int32
flags)
|
BaseContainer
|
GetData
()
|
void
|
SetData
(const
BaseContainer
&bc,
Bool
add=true)
|
const
BaseContainer
*
|
GetDataInstance
() const
|
BaseContainer
*
|
GetDataInstance
()
|
const
BaseContainer
&
|
GetDataInstanceRef
() const
|
BaseContainer
&
|
GetDataInstanceRef
()
|
String
|
GetName
() const
|
void
|
SetName
(const
maxon::String
&name)
|
String
|
GetBubbleHelp
()
|
Bool
|
TransferGoal
(
BaseList2D
*dst,
Bool
undolink)
|
Bool
|
TransferMarker
(
BaseList2D
*dst) const
|
Bool
|
比例
(
Float
scale)
|
Bool
|
编辑
()
|
void
|
GetIcon
(
IconData
*dat)
|
GeListHead
*
|
GetNLARoot
()
|
BaseList2D
*
|
AnimationLayerRemap
(
BaseObject
**layer=nullptr)
|
String
|
GetTypeName
()
|
BaseList2D
*
|
GetMain
() const
|
void
|
InsertTrackSorted
(
CTrack
*track)
|
Bool
|
AddEventNotification
(
BaseList2D
*bl,
NOTIFY_EVENT
eventid,
NOTIFY_EVENT_FLAG
flags, const
BaseContainer
*data)
|
Bool
|
RemoveEventNotification
(
BaseDocument
*doc,
BaseList2D
*bl,
NOTIFY_EVENT
eventid)
|
Bool
|
FindEventNotification
(
BaseDocument
*doc,
BaseList2D
*bl,
NOTIFY_EVENT
eventid)
|
Bool
|
SetDescIDState
(const
DescID
&id,
DESCIDSTATE
descidstate)
|
DESCIDSTATE
|
GetDescIDState
(const
DescID
&id,
Bool
tolerant) const
|
GeListHead
*
|
GetOverrideRoot
()
|
BaseOverride
*
|
GetFirstOverride
()
|
GeListHead
*
|
GetShaderRepositoryRoot
()
|
GeListHead
*
|
GetHiddenShaderRoot
()
|
maxon::NimbusInterface *
|
GetNimbusRef
(const
maxon::Id
&spaceId) const
|
maxon::Result
< maxon::NimbusInterface * >
|
GetOrCreateNimbusRef
(const
maxon::Id
&spaceId)
|
void
|
RemoveNimbusRef
(const
maxon::Id
&spaceId)
|
maxon::Result
<
maxon::HashMap
<
maxon::Id
,
maxon::ForwardRef
< maxon::NimbusRef > > >
|
GetAllNimbusRefs
() const
|
Bool
|
IsNodeBased
() const
|
void
|
GetMarkerStampEx
(
UInt32
*l1,
UInt32
*l2)
|
const
GeMarker
&
|
GetMarker
() const
|
void
|
SetMarker
(const
GeMarker
&m)
|
Bool
|
AddUniqueID
(
Int32
appid, const
Char
*const mem,
Int
bytes)
|
Bool
|
FindUniqueID
(
Int32
appid, const
Char
*&mem,
Int
&bytes) const
|
Int32
|
GetUniqueIDCount
() const
|
Bool
|
GetUniqueIDIndex
(
Int32
idx,
Int32
&id, const
Char
*&mem,
Int
&bytes) const
|
Bool
|
SetAnimatedParameter
(
CTrack
*track, const
DescID
&id, const
GeData
&t_data1, const
GeData
&t_data2,
Float
mix,
DESCFLAGS_SET
flags)
|
Bool
|
GetAnimatedParameter
(const
DescID
&id,
GeData
&t_data1,
GeData
&t_data2,
Float
&mix,
DESCFLAGS_GET
flags)
|
BaseShader
*
|
GetFirstShader
() const
|
void
|
InsertShader
(
BaseShader
*shader,
BaseShader
*pred=nullptr)
|
void
|
ClearKeyframeSelection
()
|
Bool
|
FindKeyframeSelection
(const
DescID
&id)
|
Bool
|
SetKeyframeSelection
(const
DescID
&id,
Bool
selection)
|
Bool
|
KeyframeSelectionContent
()
|
LayerObject
*
|
GetLayerObject
(
BaseDocument
*doc)
|
Bool
|
SetLayerObject
(
LayerObject
*layer)
|
const
LayerData
*
|
GetLayerData
(
BaseDocument
*doc,
Bool
rawdata=false)
|
Bool
|
SetLayerData
(
BaseDocument
*doc, const
LayerData
&data)
|
GeListHead
*
|
GetCTrackRoot
()
|
CTrack
*
|
GetFirstCTrack
()
|
CTrack
*
|
FindCTrack
(const
DescID
&id)
|
GeListNode
*
|
GetNext
()
|
GeListNode
*
|
GetPred
()
|
GeListNode
*
|
GetDown
()
|
GeListNode
*
|
GetUp
()
|
GeListNode
*
|
GetDownLast
()
|
void
|
InsertBefore
(
GeListNode
*bl)
|
void
|
InsertAfter
(
GeListNode
*bl)
|
void
|
InsertUnder
(
GeListNode
*bl)
|
void
|
InsertUnderLast
(
GeListNode
*bl)
|
void
|
移除
()
|
GeListHead
*
|
GetListHead
()
|
Int32
|
GetNodeID
(
Int32
index=0) const
|
template<typename CAST >
|
const CAST *
|
GetNodeData
(
Int32
index=0) const
|
template<typename CAST >
|
CAST *
|
GetNodeData
(
Int32
index=0)
|
void
|
SetCustomData
(
GeListNode
*node)
|
GeListNode
*
|
GetCustomData
()
|
BaseDocument
*
|
GetDocument
()
|
Int32
|
GetBranchInfo
(
BranchInfo
*info,
Int32
max,
GETBRANCHINFO
flags)
|
Bool
|
IsDocumentRelated
()
|
Int32
|
GetInfo
()
|
Bool
|
GetNBit
(
NBIT
bit) const
|
UInt32
|
GetNBitMask
(
Int32
index) const
|
Bool
|
ChangeNBit
(
NBIT
bit,
NBITCONTROL
bitmode)
|
Int32
|
GetType
() const
|
Int32
|
GetRealType
() const
|
Int32
|
GetDiskType
() const
|
Bool
|
IsInstanceOf
(
Int32
id) const
|
Int32
|
GetClassification
() const
|
Bool
|
消息
(
Int32
type, void *data=nullptr)
|
Bool
|
MultiMessage
(
MULTIMSG_ROUTE
flags,
Int32
type, void *data)
|
C4DAtom
*
|
GetClone
(
COPYFLAGS
flags,
AliasTrans
*trn)
|
Bool
|
CopyTo
(
C4DAtom
*dst,
COPYFLAGS
flags,
AliasTrans
*trn)
|
Bool
|
读取
(
HyperFile
*hf,
Int32
id,
Int32
level)
|
Bool
|
Write
(
HyperFile
*hf)
|
Bool
|
ReadObject
(
HyperFile
*hf,
Bool
readheader)
|
Bool
|
WriteObject
(
HyperFile
*hf)
|
Bool
|
GetDescription
(
描述
*description,
DESCFLAGS_DESC
flags)
|
Bool
|
GetParameter
(const
DescID
&id,
GeData
&t_data,
DESCFLAGS_GET
flags)
|
Bool
|
SetParameter
(const
DescID
&id, const
GeData
&t_data,
DESCFLAGS_SET
flags)
|
DynamicDescription
*
|
GetDynamicDescription
()
|
Bool
|
GetEnabling
(const
DescID
&id, const
GeData
&t_data,
DESCFLAGS_ENABLE
flags, const
BaseContainer
*itemdesc)
|
Bool
|
TranslateDescID
(const
DescID
&id,
DescID
&res_id,
C4DAtom
*&res_at)
|
UInt32
|
GetDirty
(
DIRTYFLAGS
flags) const
|
void
|
SetDirty
(
DIRTYFLAGS
flags)
|
UInt32
|
GetHDirty
(
HDIRTYFLAGS
mask) const
|
void
|
SetHDirty
(
HDIRTYFLAGS
mask)
|
static
BaseList2D
*
|
Alloc
(
Int32
type)
|
static void
|
Free
(
BaseList2D
*&bl)
|
static const
Int32
|
SETBIT_FLAG_NODIRTY
|
static const
Int32
|
SETBIT_FLAG_REMOVE
|
构造函数 & 析构函数文档编制
◆
BaseMaterial()
◆
~BaseMaterial()
成员函数文档编制
◆
Alloc()
Allocates a base material. Destroy the allocated base material with
Free()
。使用
AutoAlloc
to automate the allocation and destruction based on scope.
-
参数
-
-
返回
-
The allocated base material, or
nullptr
if the allocation failed.
◆
Free()
Destructs base materials allocated with
Alloc()
。使用
AutoAlloc
to automate the allocation and destruction based on scope.
-
参数
-
[in]
|
bl
|
The base material to destruct. If the pointer is
nullptr
nothing happens. The pointer is assigned
nullptr
afterwards.
|
◆
GetNext()
Gets the next material in the list. Convenience version of
GeListNode::GetNext()
returning a
BaseMaterial
*.
-
返回
-
The next material, or
nullptr
if there is none.
Cinema 4D
owns the pointed base material.
◆
GetPred()
Gets the previous material in the list. Convenience version of
GeListNode::GetPred()
returning a
BaseMaterial
*.
-
返回
-
The previous material, or
nullptr
if there is none.
Cinema 4D
owns the pointed base material.
◆
Update()
void Update
|
(
|
Bool
|
preview
,
|
|
|
Bool
|
rttm
|
|
)
|
|
|
Recalculates the material's thumbnail and updates its internal values.
-
注意
-
Recalculating the thumbnail/RTTM image is time intensive. It only needs to be done to let the user change the view. The calculations are done asynchronously.
-
参数
-
[in]
|
preview
|
若
true
the preview thumbnail will be updated.
|
[in]
|
rttm
|
若
true
the real time texture map of the material will be recalculated.
|
◆
GetChannel()
Retrieves the channel associated with a standard Material, such as the color channel or bump channel.
-
警告
-
Only works with standard materials of type
Mmaterial
. For plugin materials this method does nothing and return
nullptr
.
-
参数
-
-
返回
-
The requested channel, or
nullptr
if there is no such channel or if the material is not a standard Material.
◆
InitTextures()
Initializes the material textures, loading any files required.
-
参数
-
[in]
|
irs
|
A struct with information about the upcoming material rendering. The caller owns the pointed struct.
|
-
返回
-
The result of the initialization:
INITRENDERRESULT
◆
UnlockTextures()
Unlocks all textures used by the material.
◆
Displace()
Calls the displacement routine of a material with associated barycentric weights.
-
注意
-
The passed
VolumeData
structure must be fully initialized and must contain a render instance. This can only be achieved by copying/initializing from an existing
VolumeData
.
-
参数
-
[in]
|
sd
|
A volume data to use and modify. The caller owns the pointed
VolumeData
.
|
[in]
|
weights
|
使用
nullptr
.
Private
.
|
◆
ChangeNormal()
Calls the bump routine of a material. For plugin materials this is
MaterialData::ChangeNormal()
.
The call changes
BaseVolumeData::bumpn
.
-
注意
-
The passed
VolumeData
structure must be fully initialized and contain a render instance. This can only be achieved by copying/initializing from an existing
VolumeData
.
-
警告
-
Normalization is not done by the routine.
-
参数
-
[in]
|
sd
|
A volume data to use and modify. The caller owns the pointed
VolumeData
.
|
◆
CalcSurface()
Computes the surface properties of the material. For plugin materials this is
MaterialData::CalcSurface()
.
The call changes
BaseVolumeData::col
,
BaseVolumeData::trans
,
BaseVolumeData::refl
,
BaseVolumeData::tray
,
BaseVolumeData::rray
and/or
BaseVolumeData::alpha
(depending on the parameters).
-
注意
-
The passed
VolumeData
structure must be fully initialized and contain a render instance. This can only be achieved by copying/initializing from an existing
VolumeData
.
-
参数
-
[in]
|
sd
|
A volume data to use and modify. The caller owns the pointed
VolumeData
.
|
◆
CalcTransparency()
Computes the transparency properties of the material. For plugin materials this is
MaterialData::CalcTransparency()
.
The call changes
BaseVolumeData::trans
.
-
注意
-
The passed
VolumeData
structure must be fully initialized and contain a render instance. This can only be achieved by copying/initializing from an existing
VolumeData
.
-
参数
-
[in]
|
sd
|
A volume data to use and modify. The caller owns the pointed
VolumeData
.
|
◆
CalcAlpha()
Computes the alpha properties of the material. For plugin materials this is
MaterialData::CalcAlpha()
.
The call changes
BaseVolumeData::alpha
.
-
注意
-
The passed
VolumeData
structure must be fully initialized and contain a render instance. This can only be achieved by copying/initializing from an existing
VolumeData
.
-
参数
-
[in]
|
sd
|
A volume data to use and modify. The caller owns the pointed
VolumeData
.
|
◆
CalcVolumetric()
Computes the color of a volumetric ray in the material. For plugin materials this is
MaterialData::CalcVolumetric()
.
The call changes
VolumeData::col
and/or
VolumeData::trans
.
-
注意
-
The passed
VolumeData
structure must be fully initialized and contain a render instance. This can only be achieved by copying/initializing from an existing
VolumeData
.
-
参数
-
[in]
|
sd
|
A volume data to use and modify. The caller owns the pointed
VolumeData
.
|
◆
InitCalculation()
If (and only if) (
GetRenderInfo()
&
VOLUMEINFO::INITCALCULATION
) is
true
, then call this function, with the right
type
, before any of the calculation functions is called.
-
注意
-
The passed
VolumeData
structure must be fully initialized and contain a render instance. This can only be achieved by copying/initializing from an existing
VolumeData
.
-
参数
-
[in]
|
sd
|
A volume data to use and modify. The caller owns the pointed
VolumeData
.
|
[in]
|
type
|
Set the calculation
type
according to the method to call. See the default call order of
MaterialData::InitCalculation()
.
|
◆
Compare()
Check if the materials are identical.
-
注意
-
Only the name of the compared materials can be different.
-
参数
-
[in]
|
snd
|
The material to compare with.
|
-
返回
-
true
if the materials contents are the same, otherwise
false
.
◆
GetPreview()
Retrieves the preview picture of the material.
-
参数
-
[in]
|
flags
|
0 for the material editor preview, 1 for the viewport preview.
|
-
返回
-
The preview picture. Guaranteed to be valid, i.e. not
nullptr
.
-
注意
-
To check if the preview has been calculated successfully, calling GetBw() on the returned bitmap should give a value superior than
0
.
◆
GetRayIllumination()
Private
.
◆
GetAverageColor()
向量
GetAverageColor
|
(
|
Int32
|
channel
=
-1
|
)
|
|
Gets an average color for the material, based on the material preview.
-
参数
-
[in]
|
channel
|
An optional specific channel to get the average for:
CHANNEL
|
-
返回
-
The average color.
◆
GetRenderInfo()
Retrieves information about what the material requires from the raytracer and what it will return.
-
返回
-
The return values are:
VOLUMEINFO
◆
HasEditorTransparency()
Bool
HasEditorTransparency
|
(
|
|
)
|
|
Checks if the material supports viewport transparency.
-
返回
-
true
if the material support viewport transparency, otherwise
false
.
◆
InitEditorPreviewImage()
[1/2]
Initializes the preview image for the editor.
Private
.
◆
InitEditorPreviewImage()
[2/2]
Initializes the preview image for the editor into a given
BaseBitmap
Private
.