Sebastian


Thank you for your patience and guidance. Programmatically definitely makes 
sense and I did look into that a short while back. I was initially looking 
at PositionAttitudeTransform. Now revisiting that approach, I understand 
why I started to look in another direction. Here is the dilemma I've come 
across. All is good until I try to assign a parent to the Transform 


hive::display::FindNamedNodeVisitor fnnv("Main_Hub");

scene->accept(fnnv);

osg::ref_ptr <osg::PositionAttitudeTransform> autoTrans = new osg:: 
PositionAttitudeTransform();


//puts node and all children under transform

autoTrans->addChild(fnnv.getFoundNode());


//set the parent (this doesn’t seem completely right to me, but may be)

fnnv.getFoundNode()->getParent(0)->addChild(autoTrans);


issue 1) at this point it appears to create a duplicate object (node and 
children) of the “Main_Hub” group; 

issue 2) when I attempt rotation of the object it seems to be around the 
origin of the model instead of the previous “pivot pilot”


I seem to be missing how to squeeze that transform between the parent and 
child appropriately.


Jeremy

On Thursday, April 16, 2020 at 9:41:55 AM UTC-4, OpenSceneGraph Users wrote:
>
> Hi Jeremy, 
>
>  
>
> Yes programmatically. You simply create a  Transform, DOFTransform, 
> whatever and set all the children of the original Group as childs of the 
> new one (transforms, as you surely know are groups too).
>
> Lastly you want to want to set the parent as well. I haven’t used OSG in a 
> while, but this pattern for sure works. 
>
> If you have more questions fell free to ask.
>
>  
>
> Cheers 
>
> Sebastian 
>
>  
>
> *From:* osg-users <[email protected] <javascript:>> *On 
> Behalf Of *OpenSceneGraph Users
> *Sent:* Donnerstag, 16. April 2020 14:36
> *To:* OpenSceneGraph Users <[email protected] <javascript:>>
> *Subject:* Re: [osg-users] Edit 3D (osgt) model to add DOFTransform and 
> perform "node" rotation
>
>  
>
> Sebastian, I've used the nodevisitor to find the node by name, the node 
> just happens to be a osg::group. Could you explain what you mean by 
> "replace them with a DOF-Transform"? I'm optimistic that you mean 
> programmatically. My current approach is to replace it manually in the osgt 
> file.
>
>  
>
> Thanks
>
> Jeremy
>
> On Thursday, April 16, 2020 at 7:14:18 AM UTC-4, OpenSceneGraph Users 
> wrote:
>
> Hi Jeremy, 
>
>  
>
> As your geometry-parts are usually under a transform /group you can use a 
> NodeVisitor to collect those (Find the nodes by name) and replace them with 
> a DOF-Transform. 
>
> You could of course also mess with the osgt-files, but that would be a 
> last resort. 
>
>  
>
> Cheers
>
> Sebastian 
>
>  
>
> *From:* osg-users <[email protected]> *On Behalf Of 
> *OpenSceneGraph 
> Users
> *Sent:* Mittwoch, 15. April 2020 21:54
> *To:* OpenSceneGraph Users <[email protected]>
> *Subject:* [osg-users] Edit 3D (osgt) model to add DOFTransform and 
> perform "node" rotation
>
>  
>
> First off, I hope everyone is staying sane and healthy during this 
> pandemic.
>
>  
>
> I’m working with a collection of 3D models that have come from a variety 
> of different source but are now all in osgb format. For several of the 
> models I’d like to grab a “node” and apply rotation.
>
>  
>
> As I’m working through my understanding of the approach, I’ve created a 
> simple application that loads the model, traverses the scene, returns a 
> pointer to the “node”, casts to a DOFTransform and manipulate the “node” 
> (DOFTransform). Snippet:
>
> FindNamedNodeVisitor fnnv("turret");
>
> scene->accept(fnnv);
>
> osg::ref_ptr<osgSim::DOFTransform> dofTrans = new osgSim::DOFTransform();
>
> dofTrans = 
> dynamic_cast<osgSim::DOFTransform*>(fnnv.getFoundNode()->asTransform());
>
> if(dofTrans != NULL)
>
>                                 //manipulate (rotate)   
>
>  
>
> This approach works for the tank.osg model. Now I’m trying to apply this 
> approach to a different model (helicopter for example). When I access the 
> “node” of interest, “Main_Hub” which is an osg::Group I obviously can’t 
> cast that to a osgSim::DOFTransform. I’m trying to get an understand of how 
> I can change the model, now in osgt (readable) format, to a structure that 
> can be used. I’ve been using the tank.osg as a guide and attempted to 
> recreate a similar structure in the helicopter.osgt. I’m trying to take 
> logical stabs in the dark, in the helicopter model I’ve attempted to simply 
> renamed the “node” of interest from an osg::Group to osgSim::DOFTransform. 
> The model still displays correctly, but the cast to osgSim::DOFTransform 
> returns NULL. I thought there may be some required variables at are needed 
> as part of the osgSim::DOFTransform structure, so I began adding 
> currentHPR, currentTranslate, and currentScale and continued to add more 
> bringing it in line with the tank.osg example. Through all the attempts I 
> still getting NULL when casting.
>
>  
>
> I’m looking for any guidance/suggestions/lessons learned on how to 
> properly do this.
>
>  
>
> Thanks in advance
>
>  
>
> Jeremy
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "OpenSceneGraph Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/osg-users/cbb4b132-24a7-4e75-b10f-7474c1a99378%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/osg-users/cbb4b132-24a7-4e75-b10f-7474c1a99378%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "OpenSceneGraph Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/osg-users/5fcaac09-655d-44f9-bf97-47eee2a19b97%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/osg-users/5fcaac09-655d-44f9-bf97-47eee2a19b97%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"OpenSceneGraph Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/osg-users/4fe387e2-619f-48b5-8b8d-d99b1c28198d%40googlegroups.com.
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to