<div dir="ltr">Sebastian<div><br></div><div>I'll experiment with removing the original group.</div><div><br></div><div>The original model structure doesn't include any transforms. So the structure I am looking at right now is:</div><div><br></div><div>Group "Heli" -> MyNewPAT -> Group "Main_Hub" -> Geometry1 ... GeometryN</div><div><br></div><div>If the MyNewPAT either child or parent was an object that contain the appropriate information such as pivot I could definitely extract that info and apply it to the PAT, but unfortunately it's surrounded by Groups.</div><div><br></div><div>Maybe I could create both a transform and a PAT, but I would still need some of that basic information to set its reference points.</div><div><br></div><div>I've attached an osgt example.</div><div><br></div><div>Thanks</div><div>Jeremy<br><br>On Saturday, April 18, 2020 at 6:53:10 AM UTC-4, OpenSceneGraph Users wrote:<blockquote class="gmail_quote" style="margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div lang="DE" link="blue" vlink="purple"><div><p class="MsoNormal"><span>Hi, </span></p><p class="MsoNormal"><span> </span></p><p class="MsoNormal"><span lang="EN-US">you’re on the right track. Issue 1 stems from the fact, that you are not removing the original group or at least the childs you’re re-parenting (which still has references to your nodes).</span></p><p class="MsoNormal"><span lang="EN-US">Concerning issue 2. If the parent is a transform, you obviously need to take this into account. PAT has a setPivotPoint IIRC, but another option is to structure your scenegraph as follows:</span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><span lang="EN-US">Group -> OrginalTransform/Parent -> YourNewPAT -> Geometry1 … GeometryN</span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><span lang="EN-US">So leave the transform an put your PAT inbetween. That should solve the offset. If you’re still struggling with this, maybe supply a minimal osgt.</span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><span lang="EN-US">Cheers <br>Sebastian </span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> osg-users <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="fnek4A7lAgAJ" rel="nofollow" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;">osg-user...@lists.<wbr>openscenegraph.org</a>> <b>On Behalf Of </b>OpenSceneGraph Users<br><b>Sent:</b> Samstag, 18. April 2020 01:38<br><b>To:</b> OpenSceneGraph Users <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="fnek4A7lAgAJ" rel="nofollow" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;">osg-...@googlegroups.com</a>><br><b>Subject:</b> Re: [osg-users] Edit 3D (osgt) model to add DOFTransform and perform "node" rotation</span></p><p class="MsoNormal"> </p><div><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">Sebastian</span></p><p class="MsoNormal"> </p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">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 </span></p><p class="MsoNormal"> </p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">hive::display::<wbr>FindNamedNodeVisitor fnnv("Main_Hub");</span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">scene->accept(fnnv);</span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">osg::ref_ptr <osg::<wbr>PositionAttitudeTransform> autoTrans = new osg:: PositionAttitudeTransform();</span></p><p class="MsoNormal"> </p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">//puts node and all children under transform</span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">autoTrans->addChild(fnnv.<wbr>getFoundNode());</span></p><p class="MsoNormal"> </p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">//set the parent (this doesn’t seem completely right to me, but may be)</span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">fnnv.getFoundNode()-><wbr>getParent(0)->addChild(<wbr>autoTrans);</span></p><p class="MsoNormal"> </p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">issue 1) at this point it appears to create a duplicate object (node and children) of the “Main_Hub” group; </span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">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”</span></p><p class="MsoNormal"> </p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">I seem to be missing how to squeeze that transform between the parent and child appropriately.</span></p><p class="MsoNormal"> </p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif">Jeremy</span></p><p class="MsoNormal"><br>On Thursday, April 16, 2020 at 9:41:55 AM UTC-4, OpenSceneGraph Users wrote:</p><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"><div><div><p class="MsoNormal">Hi Jeremy, </p><p class="MsoNormal"> </p><p class="MsoNormal"><span lang="EN-US">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).</span></p><p class="MsoNormal"><span lang="EN-US">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. </span></p><p class="MsoNormal"><span lang="EN-US">If you have more questions fell free to ask.</span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><span lang="EN-US">Cheers </span></p><p class="MsoNormal"><span lang="EN-US">Sebastian </span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> osg-users <<a>osg-user...@lists.<wbr>openscenegraph.org</a>> <b>On Behalf Of </b>OpenSceneGraph Users<br><b>Sent:</b> Donnerstag, 16. April 2020 14:36<br><b>To:</b> OpenSceneGraph Users <<a>osg-...@googlegroups.com</a>><br><b>Subject:</b> Re: [osg-users] Edit 3D (osgt) model to add DOFTransform and perform "node" rotation</span></p><p class="MsoNormal"> </p><div><p class="MsoNormal">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.</p><div><p class="MsoNormal"> </p></div><div><p class="MsoNormal">Thanks</p></div><div><p class="MsoNormal">Jeremy<br><br>On Thursday, April 16, 2020 at 7:14:18 AM UTC-4, OpenSceneGraph Users wrote:</p><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt"><div><div><p class="MsoNormal">Hi Jeremy, </p><p class="MsoNormal"> </p><p class="MsoNormal"><span lang="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. </span></p><p class="MsoNormal"><span lang="EN-US">You could of course also mess with the osgt-files, but that would be a last resort. </span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><span lang="EN-US">Cheers</span></p><p class="MsoNormal"><span lang="EN-US">Sebastian </span></p><p class="MsoNormal"><span lang="EN-US"> </span></p><p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> osg-users <<a>osg-user...@lists.<wbr>openscenegraph.org</a>> <b>On Behalf Of </b>OpenSceneGraph Users<br><b>Sent:</b> Mittwoch, 15. April 2020 21:54<br><b>To:</b> OpenSceneGraph Users <<a>osg-...@googlegroups.com</a>><br><b>Subject:</b> [osg-users] Edit 3D (osgt) model to add DOFTransform and perform "node" rotation</span></p><p class="MsoNormal"><span lang="EN-US"> </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></p><p style="background-image:initial;background-position:initial;background-repeat:initial"><span lang="EN-US" style="color:black"> </span></p><p style="background-image:initial;background-position:initial;background-repeat: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></p><p style="background-image:initial;background-position:initial;background-repeat:initial"><span lang="EN-US" style="color:black"> </span></p><p style="background-image:initial;background-position:initial;background-repeat: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></p><p style="text-indent:36.0pt;background-image:initial;background-position:initial;background-repeat:initial"><span lang="EN-US" style="color:black">FindNamedNodeVisitor fnnv("turret");</span></p><p style="text-indent:36.0pt;background-image:initial;background-position:initial;background-repeat:initial"><span lang="EN-US" style="color:black">scene->accept(fnnv);</span></p><p style="text-indent:36.0pt;background-image:initial;background-position:initial;background-repeat:initial"><span style="color:black">osg::ref_ptr<osgSim::<wbr>DOFTransform> dofTrans = new osgSim::DOFTransform();</span></p><p style="text-indent:36.0pt;background-image:initial;background-position:initial;background-repeat:initial"><span lang="EN-US" style="color:black">dofTrans = dynamic_cast<osgSim::<wbr>DOFTransform*>(fnnv.<wbr>getFoundNode()->asTransform())<wbr>;</span></p><p style="text-indent:36.0pt;background-image:initial;background-position:initial;background-repeat:initial"><span lang="EN-US" style="color:black">if(dofTrans != NULL)</span></p><p style="background-image:initial;background-position:initial;background-repeat:initial"><span lang="EN-US" style="color:black;border:none windowtext 1.0pt;padding:0cm"> <wbr> </span><span lang="EN-US" style="color:black">//manipulate (rotate)<span style="border:none windowtext 1.0pt;padding:0cm"> </span></span></p><p style="background-image:initial;background-position:initial;background-repeat:initial"><span lang="EN-US" style="color:black"> </span></p><p style="background-image:initial;background-position:initial;background-repeat: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></p><p style="background-image:initial;background-position:initial;background-repeat:initial"><span lang="EN-US" style="color:black"> </span></p><p style="background-image:initial;background-position:initial;background-repeat:initial"><span lang="EN-US" style="color:black">I’m looking for any guidance/suggestions/lessons learned on how to properly do this.</span></p><p style="background-image:initial;background-position:initial;background-repeat:initial"><span lang="EN-US" style="font-size:12.0pt;font-family:"Times New Roman",serif;color:black"> </span></p><p style="background-image:initial;background-position:initial;background-repeat: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></p><p style="background-image:initial;background-position:initial;background-repeat:initial"><span lang="EN-US" style="color:black"> </span></p><p style="background-image:initial;background-position:initial;background-repeat:initial"><span lang="EN-US" style="color:black">Jeremy</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 <a href="javascript:" target="_blank" gdf-obfuscated-mailto="fnek4A7lAgAJ" rel="nofollow" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;">osg-...@<wbr>googlegroups.com</a>.<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" target="_blank" rel="nofollow" onmousedown="this.href='https://groups.google.com/d/msgid/osg-users/cbb4b132-24a7-4e75-b10f-7474c1a99378%40googlegroups.com?utm_medium\x3demail\x26utm_source\x3dfooter';return true;" onclick="this.href='https://groups.google.com/d/msgid/osg-users/cbb4b132-24a7-4e75-b10f-7474c1a99378%40googlegroups.com?utm_medium\x3demail\x26utm_source\x3dfooter';return true;"><span lang="EN-US">https://groups.google.com/d/<wbr>msgid/osg-users/cbb4b132-24a7-<wbr>4e75-b10f-7474c1a99378%<wbr>40googlegroups.com</span></a><span lang="EN-US">.</span></p></div></div></blockquote></div></div><p class="MsoNormal">-- <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 <a>osg-...@googlegroups.com</a>.<br>To view this discussion on the web visit <a href="https://groups.google.com/d/msgid/osg-users/5fcaac09-655d-44f9-bf97-47eee2a19b97%40googlegroups.com?utm_medium=email&utm_source=footer" target="_blank" rel="nofollow" onmousedown="this.href='https://groups.google.com/d/msgid/osg-users/5fcaac09-655d-44f9-bf97-47eee2a19b97%40googlegroups.com?utm_medium\x3demail\x26utm_source\x3dfooter';return true;" onclick="this.href='https://groups.google.com/d/msgid/osg-users/5fcaac09-655d-44f9-bf97-47eee2a19b97%40googlegroups.com?utm_medium\x3demail\x26utm_source\x3dfooter';return true;">https://groups.google.com/d/<wbr>msgid/osg-users/5fcaac09-655d-<wbr>44f9-bf97-47eee2a19b97%<wbr>40googlegroups.com</a>.</p></div></div></blockquote></div><p class="MsoNormal">-- <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 <a href="javascript:" target="_blank" gdf-obfuscated-mailto="fnek4A7lAgAJ" rel="nofollow" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;">osg-...@<wbr>googlegroups.com</a>.<br>To view this discussion on the web visit <a href="https://groups.google.com/d/msgid/osg-users/4fe387e2-619f-48b5-8b8d-d99b1c28198d%40googlegroups.com?utm_medium=email&utm_source=footer" target="_blank" rel="nofollow" onmousedown="this.href='https://groups.google.com/d/msgid/osg-users/4fe387e2-619f-48b5-8b8d-d99b1c28198d%40googlegroups.com?utm_medium\x3demail\x26utm_source\x3dfooter';return true;" onclick="this.href='https://groups.google.com/d/msgid/osg-users/4fe387e2-619f-48b5-8b8d-d99b1c28198d%40googlegroups.com?utm_medium\x3demail\x26utm_source\x3dfooter';return true;">https://groups.google.com/d/<wbr>msgid/osg-users/4fe387e2-619f-<wbr>48b5-8b8d-d99b1c28198d%<wbr>40googlegroups.com</a>.</p></div></div></blockquote></div></div>
<p></p>
-- <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 <a href="mailto:osg-users+unsubscribe@googlegroups.com">osg-users+unsubscribe@googlegroups.com</a>.<br />
To view this discussion on the web visit <a href="https://groups.google.com/d/msgid/osg-users/d396725f-9878-4b4f-b7e4-818bb7cd540e%40googlegroups.com?utm_medium=email&utm_source=footer">https://groups.google.com/d/msgid/osg-users/d396725f-9878-4b4f-b7e4-818bb7cd540e%40googlegroups.com</a>.<br />