本文整理汇总了C++中SubEntity::setMaterialName方法的典型用法代码示例。如果您正苦于以下问题:C++ SubEntity::setMaterialName方法的具体用法?C++ SubEntity::setMaterialName怎么用?C++ SubEntity::setMaterialName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SubEntity
的用法示例。
在下文中一共展示了SubEntity::setMaterialName方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: createScene
// Just override the mandatory create scene method
void createScene(void)
{
// Check capabilities
const RenderSystemCapabilities* caps = Root::getSingleton().getRenderSystem()->getCapabilities();
if (!caps->hasCapability(RSC_VERTEX_PROGRAM) || !(caps->hasCapability(RSC_FRAGMENT_PROGRAM)))
{
OGRE_EXCEPT(Exception::ERR_NOT_IMPLEMENTED, "Your card does not support vertex and fragment programs, so cannot "
"run this demo. Sorry!",
"CelShading::createScene");
}
// Create a point light
Light* l = mSceneMgr->createLight("MainLight");
// Accept default settings: point light, white diffuse, just set position
// Add light to the scene node
rotNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
rotNode->createChildSceneNode(Vector3(20,40,50))->attachObject(l);
Entity *ent = mSceneMgr->createEntity("head", "ogrehead.mesh");
mCamera->setPosition(20, 0, 100);
mCamera->lookAt(0,0,0);
// Set common material, but define custom parameters to change colours
// See Example-Advanced.material for how these are finally bound to GPU parameters
SubEntity* sub;
// eyes
sub = ent->getSubEntity(0);
sub->setMaterialName("Examples/CelShading");
sub->setCustomParameter(CUSTOM_SHININESS, Vector4(35.0f, 0.0f, 0.0f, 0.0f));
sub->setCustomParameter(CUSTOM_DIFFUSE, Vector4(1.0f, 0.3f, 0.3f, 1.0f));
sub->setCustomParameter(CUSTOM_SPECULAR, Vector4(1.0f, 0.6f, 0.6f, 1.0f));
// skin
sub = ent->getSubEntity(1);
sub->setMaterialName("Examples/CelShading");
sub->setCustomParameter(CUSTOM_SHININESS, Vector4(10.0f, 0.0f, 0.0f, 0.0f));
sub->setCustomParameter(CUSTOM_DIFFUSE, Vector4(0.0f, 0.5f, 0.0f, 1.0f));
sub->setCustomParameter(CUSTOM_SPECULAR, Vector4(0.3f, 0.5f, 0.3f, 1.0f));
// earring
sub = ent->getSubEntity(2);
sub->setMaterialName("Examples/CelShading");
sub->setCustomParameter(CUSTOM_SHININESS, Vector4(25.0f, 0.0f, 0.0f, 0.0f));
sub->setCustomParameter(CUSTOM_DIFFUSE, Vector4(1.0f, 1.0f, 0.0f, 1.0f));
sub->setCustomParameter(CUSTOM_SPECULAR, Vector4(1.0f, 1.0f, 0.7f, 1.0f));
// teeth
sub = ent->getSubEntity(3);
sub->setMaterialName("Examples/CelShading");
sub->setCustomParameter(CUSTOM_SHININESS, Vector4(20.0f, 0.0f, 0.0f, 0.0f));
sub->setCustomParameter(CUSTOM_DIFFUSE, Vector4(1.0f, 1.0f, 0.7f, 1.0f));
sub->setCustomParameter(CUSTOM_SPECULAR, Vector4(1.0f, 1.0f, 1.0f, 1.0f));
// Add entity to the root scene node
mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(ent);
mWindow->getViewport(0)->setBackgroundColour(ColourValue::White);
}
示例2: setHighlighted
void MeshObject::setHighlighted( bool highlight )
{
String nameExtension = "_HighLight";
Entity* ent = getEntity();
int numEnts = ent->getNumSubEntities();
for( int i = 0; i < numEnts; i++ )
{
SubEntity* subent = ent->getSubEntity(i);
if( subent == NULL )
continue;
// TODO - optimieren, nur wenn der Typ verändert wird
//if(StringUtil::endsWith(subent->getMaterialName(),nameExtension)
// == highlight )
// continue;
MaterialPtr oldMaterial = subent->getMaterial();
// Highlight setzen
if( highlight )
{
MaterialPtr material = MaterialManager::getSingleton().getByName( oldMaterial->getName()+nameExtension );
if( material.isNull() )
{
material = oldMaterial->clone( oldMaterial->getName()+nameExtension );
material->setAmbient(1.0, 1.0, 1.0);
material->setDiffuse(1.0, 1.0, 1.0, 1.0);
material->setSelfIllumination(0.4, 0.4, 0.4);
}
subent->setMaterialName(material->getName());
}
// Highlight entfernen
else
{
String matName = oldMaterial->getName();
matName = matName.erase(matName.length() - nameExtension.length(), nameExtension.length() );
subent->setMaterialName( matName );
}
}
}
示例3:
void OgreSample13App::setupInstancedMaterialToEntity(Ogre::Entity *ent)
{
for (Ogre::uint i=0;i<ent->getNumSubEntities();++i)
{
SubEntity * se = ent->getSubEntity(i);
String materialName = se->getMaterialName();
se->setMaterialName(buildInstancedMaterial(materialName));
}
}
示例4: buildSubEntityList
//-----------------------------------------------------------------------
void Entity::buildSubEntityList(Mesh* mesh, SubEntityList* sublist) {
// Create SubEntities
int i, numSubMeshes;
SubMesh* subMesh;
SubEntity* subEnt;
numSubMeshes = mesh->getNumSubMeshes();
for (i = 0; i < numSubMeshes; ++i) {
subMesh = mesh->getSubMesh(i);
subEnt = new SubEntity();
subEnt->mParentEntity = this;
subEnt->mSubMesh = subMesh;
if (subMesh->isMatInitialised())
subEnt->setMaterialName(subMesh->getMaterialName());
sublist->push_back(subEnt);
}
}
示例5: loadObject
//.........这里部分代码省略.........
bool background_loading = BSETTING("Background Loading", false);
MeshObject *mo = NULL;
if (String(mesh) != "none")
{
mo = new MeshObject(mesh, entityName, tenode, NULL, background_loading);
}
//mo->setQueryFlags(OBJECTS_MASK);
//tenode->attachObject(te);
tenode->setScale(sc);
tenode->setPosition(pos);
tenode->rotate(rotation);
tenode->pitch(Degree(-90));
tenode->setVisible(true);
// register in map
loadedObject_t *obj = &loadedObjects[instancename];
obj->instanceName = instancename;
obj->loadType = 0;
obj->enabled = true;
obj->sceneNode = tenode;
obj->collTris.clear();
if (mo && uniquifyMaterial && !instancename.empty())
{
for (unsigned int i = 0; i < mo->getEntity()->getNumSubEntities(); i++)
{
SubEntity *se = mo->getEntity()->getSubEntity(i);
String matname = se->getMaterialName();
String newmatname = matname + "/" + instancename;
//LOG("subentity " + TOSTRING(i) + ": "+ matname + " -> " + newmatname);
se->getMaterial()->clone(newmatname);
se->setMaterialName(newmatname);
}
}
//String meshGroup = ResourceGroupManager::getSingleton().findGroupContainingResource(mesh);
//MeshPtr mainMesh = mo->getMesh();
//collision box(es)
bool virt=false;
bool rotating=false;
bool classic_ref=true;
// everything is of concrete by default
ground_model_t *gm = gEnv->collisions->getGroundModelByString("concrete");
char eventname[256] = {};
while (!ds->eof())
{
size_t ll=ds->readLine(line, 1023);
// little workaround to trim it
String lineStr = String(line);
Ogre::StringUtil::trim(lineStr);
const char* ptline = lineStr.c_str();
if (ll==0 || line[0]=='/' || line[0]==';') continue;
if (!strcmp("end",ptline)) break;
if (!strcmp("movable", ptline)) {ismovable=true;continue;};
if (!strcmp("localizer-h", ptline))
{
localizers[free_localizer].position=Vector3(pos.x,pos.y,pos.z);
localizers[free_localizer].rotation=rotation;
localizers[free_localizer].type=Autopilot::LOCALIZER_HORIZONTAL;
free_localizer++;