Gazebo change material color successfully but doesn't show in the screen
I want to change the material color in Preupdate and following are my codes
void changeColor::Change(sim::EntityComponentManager &_ecm){
auto link = this->model.LinkByName(_ecm, "0000");
auto newLink = Link(link);
auto visual = newLink.VisualByName(_ecm, "visual");
auto color = _ecm.ComponentData<sim::components::Material>(visual).value();
color.SetAmbient(gz::math::Color(1, 0, 0, 1));
color.SetDiffuse(gz::math::Color(1, 0, 0, 1));
color.SetEmissive(gz::math::Color(1, 0, 0, 1));
cout << color.Ambient() << endl;
_ecm.SetComponentData<sim::components::Material>(visual, color);
_ecm.SetChanged(visual, sim::components::Material::typeId);
}
I the result looks weird, in right hand side we can see the color successfully change, but in left hand side it still black
hope someone can help me, thanks
Asked by Luisa on 2023-07-13 16:01:27 UTC
Comments