Hello,
Object materials won't show up in final render even though it shows up in the render view. bellow is my code:
BaseObject* MyObject::GetVirtualObjects(BaseObject* op, HierarchyHelp* hh)
{
if (!op)
return BaseObject::Alloc(Onull);
Bool bIsDirty = op->CheckCache(hh) || op->IsDirty(DIRTYFLAGS_DATA);
if (!bIsDirty)
return op->GetCache(hh);
BaseObject* container = BaseObject::Alloc(Onull);
if (!container)
return BaseObject::Alloc(Onull);
BaseObject* cube = BaseObject::Alloc(Ocube);
if (!cube)
return container;
// create the texture tag
TextureTag* const textureTag = static_cast<TextureTag*>(cube->MakeTag(Ttexture));
if (textureTag == nullptr)
return container;
// apply material
BaseDocument* doc = GetActiveDocument();
BaseMaterial* material = doc->SearchMaterial("mat_name");
if (!material)
return container;
textureTag->SetMaterial(material);
cube->InsertUnder(container);
container->Message(MSG_UPDATE);
return domeContainer;
}
Bool MyObject::Message(GeListNode* node, Int32 type, void* data)
{
switch (type)
{
case (MSG_MENUPREPARE):
{
Material* const material = Material::Alloc();
if (material == nullptr)
return maxon::OutOfMemoryError(MAXON_SOURCE_LOCATION);
const Vector color(0.85, 0.85, 0.85);
material->SetParameter(DescID(MATERIAL_COLOR_COLOR), color, DESCFLAGS_SET_0);
material->SetParameter(DescID(MATERIAL_USE_REFLECTION), Bool(false), DESCFLAGS_SET_0);
material->SetName("mat_name");
BaseDocument* doc = GetActiveDocument();
doc->InsertMaterial(material);
break;
}
}
return SUPER::Message(node, type, data);
}