<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=DE link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='mso-fareast-language:EN-US'>Hi Jeremy, <o:p></o:p></span></p><p class=MsoNormal><span style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>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. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>You could of course also mess with the osgt-files, but that would be a last resort. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>Cheers<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'>Sebastian <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><b><span lang=EN-US>From:</span></b><span lang=EN-US> osg-users <osg-users-bounces@lists.openscenegraph.org> <b>On Behalf Of </b>OpenSceneGraph Users<br><b>Sent:</b> Mittwoch, 15. April 2020 21:54<br><b>To:</b> OpenSceneGraph Users <osg-users@googlegroups.com><br><b>Subject:</b> [osg-users] Edit 3D (osgt) model to add DOFTransform and perform "node" rotation<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><div><p><span lang=EN-US style='color:black'>First off, I hope everyone is staying sane and healthy during this pandemic.</span><span lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><p style='-webkit-font-smoothing: antialiased;background-image:initial;background-position:initial;background-size: initial;background-repeat:initial;background-attachment:initial;background-origin: initial;background-clip: initial'><span lang=EN-US style='color:black'> </span><span lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><p style='-webkit-font-smoothing: antialiased;background-image:initial;background-position:initial;background-size: initial;background-repeat:initial;background-attachment:initial;background-origin: initial;background-clip: initial'><span lang=EN-US style='color:black'>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.</span><span lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><p style='-webkit-font-smoothing: antialiased;background-image:initial;background-position:initial;background-size: initial;background-repeat:initial;background-attachment:initial;background-origin: initial;background-clip: initial'><span lang=EN-US style='color:black'> </span><span lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><p style='-webkit-font-smoothing: antialiased;background-image:initial;background-position:initial;background-size: initial;background-repeat:initial;background-attachment:initial;background-origin: initial;background-clip: initial'><span lang=EN-US style='color:black'>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:</span><span lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><p style='text-indent:36.0pt;-webkit-font-smoothing: antialiased;background-image:initial;background-position:initial;background-size: initial;background-repeat:initial;background-attachment:initial;background-origin: initial;background-clip: initial'><span lang=EN-US style='color:black'>FindNamedNodeVisitor fnnv("turret");</span><span lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><p style='text-indent:36.0pt;-webkit-font-smoothing: antialiased;background-image:initial;background-position:initial;background-size: initial;background-repeat:initial;background-attachment:initial;background-origin: initial;background-clip: initial'><span lang=EN-US style='color:black'>scene->accept(fnnv);</span><span lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><p style='text-indent:36.0pt;-webkit-font-smoothing: antialiased;background-image:initial;background-position:initial;background-size: initial;background-repeat:initial;background-attachment:initial;background-origin: initial;background-clip: initial'><span style='color:black'>osg::ref_ptr<osgSim::DOFTransform> dofTrans = new osgSim::DOFTransform();</span><span style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><p style='text-indent:36.0pt;-webkit-font-smoothing: antialiased;background-image:initial;background-position:initial;background-size: initial;background-repeat:initial;background-attachment:initial;background-origin: initial;background-clip: initial'><span lang=EN-US style='color:black'>dofTrans = dynamic_cast<osgSim::DOFTransform*>(fnnv.getFoundNode()->asTransform());</span><span lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><p style='text-indent:36.0pt;-webkit-font-smoothing: antialiased;background-image:initial;background-position:initial;background-size: initial;background-repeat:initial;background-attachment:initial;background-origin: initial;background-clip: initial'><span lang=EN-US style='color:black'>if(dofTrans != NULL)</span><span lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><p style='-webkit-font-smoothing: antialiased;background-image:initial;background-position:initial;background-size: initial;background-repeat:initial;background-attachment:initial;background-origin: initial;background-clip: initial'><span lang=EN-US style='color:black;border:none windowtext 1.0pt;padding:0cm'>                                </span><span lang=EN-US style='color:black'>//manipulate (rotate)<span style='border:none windowtext 1.0pt;padding:0cm'>   </span></span><span lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><p style='-webkit-font-smoothing: antialiased;background-image:initial;background-position:initial;background-size: initial;background-repeat:initial;background-attachment:initial;background-origin: initial;background-clip: initial'><span lang=EN-US style='color:black'> </span><span lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><p style='-webkit-font-smoothing: antialiased;background-image:initial;background-position:initial;background-size: initial;background-repeat:initial;background-attachment:initial;background-origin: initial;background-clip: initial'><span lang=EN-US style='color:black'>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.</span><span lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><p style='-webkit-font-smoothing: antialiased;background-image:initial;background-position:initial;background-size: initial;background-repeat:initial;background-attachment:initial;background-origin: initial;background-clip: initial'><span lang=EN-US style='color:black'> </span><span lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><p style='-webkit-font-smoothing: antialiased;background-image:initial;background-position:initial;background-size: initial;background-repeat:initial;background-attachment:initial;background-origin: initial;background-clip: initial'><span lang=EN-US style='color:black'>I’m looking for any guidance/suggestions/lessons learned on how to properly do this.</span><span lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><p style='-webkit-font-smoothing: antialiased;background-image:initial;background-position:initial;background-size: initial;background-repeat:initial;background-attachment:initial;background-origin: initial;background-clip: initial'><span lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p> </o:p></span></p><p style='-webkit-font-smoothing: antialiased;background-image:initial;background-position:initial;background-size: initial;background-repeat:initial;background-attachment:initial;background-origin: initial;background-clip: initial'><span lang=EN-US style='color:black;border:none windowtext 1.0pt;padding:0cm'>Thanks</span><span lang=EN-US style='color:black'> in advance</span><span lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><p style='-webkit-font-smoothing: antialiased;background-image:initial;background-position:initial;background-size: initial;background-repeat:initial;background-attachment:initial;background-origin: initial;background-clip: initial'><span lang=EN-US style='color:black'> </span><span lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><p style='-webkit-font-smoothing: antialiased;background-image:initial;background-position:initial;background-size: initial;background-repeat:initial;background-attachment:initial;background-origin: initial;background-clip: initial'><span lang=EN-US style='color:black'>Jeremy</span><span lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p></div><p class=MsoNormal><span lang=EN-US>-- <br>You received this message because you are subscribed to the Google Groups "OpenSceneGraph Users" group.<br>To unsubscribe from this group and stop receiving emails from it, send an email to </span><a href="mailto:osg-users+unsubscribe@googlegroups.com"><span lang=EN-US>osg-users+unsubscribe@googlegroups.com</span></a><span lang=EN-US>.<br>To view this discussion on the web visit </span><a href="https://groups.google.com/d/msgid/osg-users/cbb4b132-24a7-4e75-b10f-7474c1a99378%40googlegroups.com?utm_medium=email&utm_source=footer"><span lang=EN-US>https://groups.google.com/d/msgid/osg-users/cbb4b132-24a7-4e75-b10f-7474c1a99378%40googlegroups.com</span></a><span lang=EN-US>.<o:p></o:p></span></p></div></body></html>