collada_urdf: added effects
This commit is contained in:
parent
9e684833d6
commit
3bf18c4b6f
|
@ -223,10 +223,10 @@ public:
|
||||||
|
|
||||||
setupPhysics(scene);
|
setupPhysics(scene);
|
||||||
addGeometries();
|
addGeometries();
|
||||||
|
|
||||||
addJoints();
|
addJoints();
|
||||||
addKinematics(scene);
|
addKinematics(scene);
|
||||||
addVisuals(scene);
|
addVisuals(scene);
|
||||||
|
addMaterials();
|
||||||
|
|
||||||
collada_->writeAll();
|
collada_->writeAll();
|
||||||
|
|
||||||
|
@ -237,9 +237,10 @@ public:
|
||||||
// <technique_common>
|
// <technique_common>
|
||||||
domPhysics_scene::domTechnique_commonRef common = daeSafeCast<domPhysics_scene::domTechnique_common>(scene.pscene->createAndPlace(COLLADA_ELEMENT_TECHNIQUE_COMMON));
|
domPhysics_scene::domTechnique_commonRef common = daeSafeCast<domPhysics_scene::domTechnique_common>(scene.pscene->createAndPlace(COLLADA_ELEMENT_TECHNIQUE_COMMON));
|
||||||
{
|
{
|
||||||
// <gravity>0 0 0</gravity>
|
// <gravity>0 0 0
|
||||||
domTargetable_float3Ref g = daeSafeCast<domTargetable_float3>(common->createAndPlace(COLLADA_ELEMENT_GRAVITY));
|
domTargetable_float3Ref g = daeSafeCast<domTargetable_float3>(common->createAndPlace(COLLADA_ELEMENT_GRAVITY));
|
||||||
g->getValue().set3(0.0, 0.0, 0.0);
|
g->getValue().set3(0.0, 0.0, 0.0);
|
||||||
|
// </gravity>
|
||||||
}
|
}
|
||||||
// </technique_common>
|
// </technique_common>
|
||||||
}
|
}
|
||||||
|
@ -733,8 +734,7 @@ public:
|
||||||
// </link>
|
// </link>
|
||||||
}
|
}
|
||||||
|
|
||||||
void addVisuals(SCENE scene)
|
void addVisuals(SCENE scene) {
|
||||||
{
|
|
||||||
// <node id="v1" name="pr2">
|
// <node id="v1" name="pr2">
|
||||||
domNodeRef root_node = daeSafeCast<domNode>(scene.vscene->createAndPlace(COLLADA_ELEMENT_NODE));
|
domNodeRef root_node = daeSafeCast<domNode>(scene.vscene->createAndPlace(COLLADA_ELEMENT_NODE));
|
||||||
root_node->setId("v1");
|
root_node->setId("v1");
|
||||||
|
@ -745,6 +745,76 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void addMaterials() {
|
||||||
|
urdf::Color ambient, diffuse;
|
||||||
|
ambient.init("0 0 0 0");
|
||||||
|
diffuse.init("1 1 1 0");
|
||||||
|
|
||||||
|
for (map<string, boost::shared_ptr<urdf::Link> >::const_iterator i = robot_->links_.begin(); i != robot_->links_.end(); i++) {
|
||||||
|
boost::shared_ptr<urdf::Link> urdf_link = i->second;
|
||||||
|
|
||||||
|
map<string, string>::const_iterator j = geometry_ids_.find(urdf_link->name);
|
||||||
|
if (j != geometry_ids_.end()) {
|
||||||
|
string geometry_id = j->second;
|
||||||
|
addEffect(geometry_id, ambient, diffuse);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
domEffectRef addEffect(const string& geometry_id, const urdf::Color& color_ambient, const urdf::Color& color_diffuse)
|
||||||
|
{
|
||||||
|
// <effect id="g1.link0.geom0.eff">
|
||||||
|
domEffectRef effect = daeSafeCast<domEffect>(effectsLib_->createAndPlace(COLLADA_ELEMENT_EFFECT));
|
||||||
|
effect->setId((geometry_id + string(".eff")).c_str());
|
||||||
|
{
|
||||||
|
// <profile_COMMON>
|
||||||
|
domProfile_commonRef profile = daeSafeCast<domProfile_common>(effect->createAndPlace(COLLADA_ELEMENT_PROFILE_COMMON));
|
||||||
|
{
|
||||||
|
// <technique sid="">
|
||||||
|
domProfile_common::domTechniqueRef technique = daeSafeCast<domProfile_common::domTechnique>(profile->createAndPlace(COLLADA_ELEMENT_TECHNIQUE));
|
||||||
|
{
|
||||||
|
// <phong>
|
||||||
|
domProfile_common::domTechnique::domPhongRef phong = daeSafeCast<domProfile_common::domTechnique::domPhong>(technique->createAndPlace(COLLADA_ELEMENT_PHONG));
|
||||||
|
{
|
||||||
|
// <ambient>
|
||||||
|
domFx_common_color_or_textureRef ambient = daeSafeCast<domFx_common_color_or_texture>(phong->createAndPlace(COLLADA_ELEMENT_AMBIENT));
|
||||||
|
{
|
||||||
|
// <color>r g b a
|
||||||
|
domFx_common_color_or_texture::domColorRef ambient_color = daeSafeCast<domFx_common_color_or_texture::domColor>(ambient->createAndPlace(COLLADA_ELEMENT_COLOR));
|
||||||
|
ambient_color->getValue().setCount(4);
|
||||||
|
ambient_color->getValue()[0] = color_ambient.r;
|
||||||
|
ambient_color->getValue()[1] = color_ambient.g;
|
||||||
|
ambient_color->getValue()[2] = color_ambient.b;
|
||||||
|
ambient_color->getValue()[3] = color_ambient.a;
|
||||||
|
// </color>
|
||||||
|
}
|
||||||
|
// </ambient>
|
||||||
|
|
||||||
|
// <diffuse>
|
||||||
|
domFx_common_color_or_textureRef diffuse = daeSafeCast<domFx_common_color_or_texture>(phong->createAndPlace(COLLADA_ELEMENT_DIFFUSE));
|
||||||
|
{
|
||||||
|
// <color>r g b a
|
||||||
|
domFx_common_color_or_texture::domColorRef diffuse_color = daeSafeCast<domFx_common_color_or_texture::domColor>(diffuse->createAndPlace(COLLADA_ELEMENT_COLOR));
|
||||||
|
diffuse_color->getValue().setCount(4);
|
||||||
|
diffuse_color->getValue()[0] = color_diffuse.r;
|
||||||
|
diffuse_color->getValue()[1] = color_diffuse.g;
|
||||||
|
diffuse_color->getValue()[2] = color_diffuse.b;
|
||||||
|
diffuse_color->getValue()[3] = color_diffuse.a;
|
||||||
|
// </color>
|
||||||
|
}
|
||||||
|
// </diffuse>
|
||||||
|
}
|
||||||
|
// </phong>
|
||||||
|
}
|
||||||
|
// </technique>
|
||||||
|
}
|
||||||
|
// </profile_COMMON>
|
||||||
|
}
|
||||||
|
// </effect>
|
||||||
|
|
||||||
|
return effect;
|
||||||
|
}
|
||||||
|
|
||||||
void addVisualLink(boost::shared_ptr<const urdf::Link> urdf_link, daeElementRef parent, int& link_num) {
|
void addVisualLink(boost::shared_ptr<const urdf::Link> urdf_link, daeElementRef parent, int& link_num) {
|
||||||
// <node id="v1.node0" name="base_link" sid="node0">
|
// <node id="v1.node0" name="base_link" sid="node0">
|
||||||
domNodeRef node = daeSafeCast<domNode>(parent->createAndPlace(COLLADA_ELEMENT_NODE));
|
domNodeRef node = daeSafeCast<domNode>(parent->createAndPlace(COLLADA_ELEMENT_NODE));
|
||||||
|
@ -773,7 +843,7 @@ public:
|
||||||
map<string, string>::const_iterator i = geometry_ids_.find(urdf_link->name);
|
map<string, string>::const_iterator i = geometry_ids_.find(urdf_link->name);
|
||||||
if (i != geometry_ids_.end()) {
|
if (i != geometry_ids_.end()) {
|
||||||
domInstance_geometryRef instance_geometry = daeSafeCast<domInstance_geometry>(node->createAndPlace(COLLADA_ELEMENT_INSTANCE_GEOMETRY));
|
domInstance_geometryRef instance_geometry = daeSafeCast<domInstance_geometry>(node->createAndPlace(COLLADA_ELEMENT_INSTANCE_GEOMETRY));
|
||||||
string geometry_id = geometry_ids_[urdf_link->name];
|
string geometry_id = i->second;
|
||||||
string instance_geometry_url = string("#") + geometry_id;
|
string instance_geometry_url = string("#") + geometry_id;
|
||||||
instance_geometry->setUrl(instance_geometry_url.c_str());
|
instance_geometry->setUrl(instance_geometry_url.c_str());
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue