https://bugreports.qt.io/browse/QTBUG-56305
2016-09-30 16:47 GMT+02:00 Sean Harmer <s...@theharmers.co.uk>: > Hi, > > please do open a JIRA. However, it is more natural to share the Geometry > rather than the GeometryRenderer component itself. > > Cheers, > > Sean > > On 30/09/2016 15:18, Xavier Bigand wrote: > >> I found a workaround : >> >> QGeometryRenderer*clonedGeometryRenderer=newQGeometryRenderer(); >> >> QGeometry*clonedMeshGeometry=newQGeometry(clonedGeometryRenderer); >> >> >> foreach(QAttribute*attribute,geometryRenderer->geometry()->attributes()) >> >> { >> >> attribute->buffer()->setParent(clonedMeshGeometry); >> >> attribute->setParent(clonedMeshGeometry); >> >> clonedMeshGeometry->addAttribute(attribute); >> >> } >> >> clonedGeometryRenderer->setGeometry(clonedMeshGeometry); >> >> subEntity->addComponent(clonedGeometryRenderer); >> >> >> >> I have to call setParent on buffers and attributes, that will have more >> than one parent, but it works, they can be shared in this way. >> >> Need I open a bug, because it doesn't seems natural and reusing directly >> a component will be much better. >> >> >> >> >> 2016-09-30 15:34 GMT+02:00 Xavier Bigand <flamaros.xav...@gmail.com >> <mailto:flamaros.xav...@gmail.com>>: >> >> I took a look to the addComponent implementation and it seems normal >> that my code doesn't work because a component is intended to be >> attached once. >> So I don't understand the meaning of the shareable flag. >> >> I'll try to share the geometry instead. >> >> 2016-09-30 15:20 GMT+02:00 Xavier Bigand <flamaros.xav...@gmail.com >> <mailto:flamaros.xav...@gmail.com>>: >> >> >> I am trying to share my QGeometryRenderer between many Entities, >> but the addComponent doesn't have any effect. >> >> When I load our models from files, I save the root entity node >> in a map, and after I clone the node tree when a previously >> model is in the map. >> I have no issue with the material component that is in the >> cloned tree, but the geometryRenderer isn't printed by my trace >> method (material and geometryRenderer components are at the same >> level on sub-entities). >> >> I set the shareable flag to true on the geometryRenderer. >> >> PS : for the material component I don't assign the same ptr to >> the cloned model, because I don't want to share the material all >> attributs. My material class have is own clone method to copy >> only the shareable attributs (maps, specular,...). >> >> >> Here is my cloning method : >> >> voidModel::cloneModel(Qt3DCore::QEntity*source,Qt3DCore:: >> QEntity&destination) >> >> { >> >> QNodeVectorsourceEntities=source->childNodes(); >> >> >> foreach(QNode*node,sourceEntities) >> >> { >> >> QEntity*sourceSubEntity=dynamic_cast<QEntity*>(node); >> >> QEntity*subEntity=newQEntity(&destination); >> >> >> H3D_ASSERT(sourceSubEntity!=nullptr); >> >> >> subEntity->setObjectName(sourceSubEntity->objectName()); >> >> >> QComponentVectorsourceComponents=sourceSubEntity->components(); >> >> >> foreach(QComponent*component,sourceComponents) >> >> { >> >> QGeometryRenderer*geometryRenderer=dynamic_cast<QGeometryRen >> derer*>(component); >> >> LightingMaterial*material=dynamic_cast<LightingMaterial*>( >> component); >> >> >> if(geometryRenderer) >> >> { >> >> subEntity->addComponent(geometryRenderer); >> >> LOG_INFO("geometryRenderer%s%s",qPrintable(component->metaOb >> ject()->className()),qPrintable(component->objectName())); >> >> } >> >> elseif(material) >> >> { >> >> LightingMaterial*clonedMaterial=newLightingMaterial(); >> >> >> clonedMaterial->clone(*material); >> >> subEntity->addComponent(clonedMaterial); >> >> } >> >> elseif(dynamic_cast<QPhongMaterial*>(component))//TODOtoremove >> >> { >> >> } >> >> elseif(dynamic_cast<QPhongAlphaMaterial*>(component))// >> TODOtoremove >> >> { >> >> } >> >> else >> >> { >> >> H3D_ASSERT_MSG(false,"Unsupportedcomponenttype%s",qPrintable >> (component->metaObject()->className())); >> >> } >> >> } >> >> } >> >> } >> >> >> I have this issue with Qt 5.7 and 5.8 build from the git branch. >> >> -- >> Xavier >> >> >> >> >> -- >> Xavier >> >> >> >> >> -- >> Xavier >> >> >> _______________________________________________ >> Interest mailing list >> Interest@qt-project.org >> http://lists.qt-project.org/mailman/listinfo/interest >> >> _______________________________________________ > Interest mailing list > Interest@qt-project.org > http://lists.qt-project.org/mailman/listinfo/interest > -- Xavier
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest