Another question is, How can I apply glscissors or similar kind of clipping
functionality to osg::Text? I want to limit the space the HUD is drawn and
I want to clip the 2D Space. How can I do that and I apply it it osg::Text?
Thanks
On Sunday, February 20, 2022 at 1:31:40 PM UTC-5 Nebi Sarikaya wrote:
> Hello Nick,
>
> First of all, thank you for your answer. Actually, I tried all of the
> methods you indicated. My may problem here is I think to place the Group
> Node on the 2D space. Think of the HUD example of OSG. There are lines of
> osg::Text's there. And they are positioned on the 2D Ortho projection
> Matrix. But I think since I can not place the root node (group node) of
> osg::Texts on 2D ortho projection matrix
> (renderInfo.getCurrentCamera()->setProjectionMatrix(osg::Matrix::ortho2D(0,
> width, 0, height));) This does not work. You may see that on the picture
> below, The texts does not rotate based on the center. If I solve this
> problem, I will be very relieved. Here is my Drawable implemetation:
>
> osg::ref_ptr<osg::MatrixTransform> transform = new osg::MatrixTransform;
>
>
> HUDDrawable::HUDDrawable(osg::ref_ptr<osg::Group> geode) : _geode(geode) {
> timesFont = "fonts/arial.ttf";
> addTexts ();
> transform->addChild(_geode); // OSG::TEXTs ARE ADDED AS SHILD TO
> _geode Group in a function.
> }
>
> void HUDDrawable::setRotate(float& rotate) {
> _rotate = rotate;
> osg::Quat q;
> q.makeRotate(osg::Vec3(0, 1, 0), osg::Vec3(0, _rotate, 0)); //
> THESE INSTRUCTION DOES NOT WORK....
>
>
> osg::Matrix myRotateMatrix;
> myRotateMatrix = osg::Matrix::rotate(q);
>
>
> transform->setMatrix(myRotateMatrix);
> }
>
> void HUDDrawable::drawImplementation(osg::RenderInfo& renderInfo) const
>
>
> {
>
> Viewport* viewPort = renderInfo.getCurrentCamera()->getViewport();
>
> double width = viewPort->width();
> double height = viewPort->height();
>
> double orgX = width / 2;
> double orgY = height / 2;
>
> osg::Vec3 position(orgX, orgY, 0.0); // CENTER OF THE HUD
>
> for (short int i = 0; i < 34; i++) { // HERE I POSITION THE
> OSG::TEXTs ON THE HUD BEASED ON THE CENTER OF THE 2D SPACE AND OFFSET THAT
> SET IN THE BELOW FUNCTION.
>
> pozitivePitchLadderLabelsArray[i]->setPosition(position);
> // IN THIS ARRAY EACH ELEMENT IS AN OSG::TEXT
> negativePitchLadderLabelsArray[i]->setPosition(position);
> }
>
>
> renderInfo.getCurrentCamera()->setProjectionMatrix(osg::Matrix::ortho2D(0,
> width, 0, height));
>
> glPushMatrix();
>
>
> glEnable(GL_LINE_SMOOTH);
> glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
> glEnable(GL_BLEND);
> glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
>
> glTranslated(orgX, orgY, 0);
> glRotated(_rotate, 0, 0, 1);
> glTranslated(-orgX, -orgY, 0);
>
> //// DRAW PITCH LADDDERSAND OTHER STUFF HERE WITH OPENGL COMMANDS ///
>
> glPopMatrix(); //FINISH DRAWING
> }
>
> void HUDDrawable::addTexts() {
> for (short int i = 0; i < 34; i++) {
> osg::Text* text= new osg::Text;
> text->setOffser(offset); // I APPLY AN OFFSET TO TEXT SO TEXT
> IS NOT PLACED ON THE CENTER OF THE HUD
> _geode->addChild text); // HERE OSG::TEXTs ADDED AS CHILD
> TO osg::Group, BUT osg::Group DOWS NOT HAVE POSITION ON 2D SPACE, HOW I AM
> GOING TO DO THAT???
> pozitivePitchLadderLabelsArray[i] = text ;
> }
>
> for (short int i = 0; i < 34; i++) {
> osg::Text* text= new osg::Text;
> text->setOffser(offset); // I APPLY AN OFFSET TO TEXT SO TEXT
> IS NOT PLACED ON THE CENTER OF THE HUD
> _geode->addChild(text );
> negativePitchLadderLabelsArray[i] = text ;
> }
> }
>
> Thanks
> [image: 1.png]
> On Sunday, February 20, 2022 at 1:11:07 AM UTC-5 [email protected]
> wrote:
>
>> Hi Nebi,
>>
>> You can put osg::MatrixTransform on top of the group and
>> setMatrix(myRotateMatrix). And you construct myRotateMatrix
>> with Quaternion, something like this:
>>
>> osg::Quat q;
>> q.makeRotate(osg::Vec3(0,1,0),osg::Vec3(0,angle,0));
>>
>> osg::Matrix myRotateMatrix;
>> myRotateMatrix = osg::Matrix::rotate(q);
>>
>> osgh::ref_ptr<osg;;MatrixTransform> mxt = new osg::MatrixTransform;
>> mxt.setMatrix(myRotateMatrix);
>>
>> mxt->addChild(myTextGroup);
>>
>> Something like this
>>
>> On Sun, Feb 20, 2022 at 5:03 AM Nebi Sarikaya <[email protected]> wrote:
>>
>>> Hello,
>>>
>>> This may be an old subject, but how do you rotate all osg::Text's as a
>>> group in 2D space?
>>>
>>> Thanks
>>>
>>> On Monday, January 7, 2019 at 5:20:25 AM UTC-5 [email protected]
>>> wrote:
>>>
>>>> Well, it's hard to say because I don't really know how you are doing it
>>>> now, but it seems to me like you're spending a lot of effort rotating and
>>>> positioning each text element individually. Normally, I don't go through
>>>> that process.
>>>>
>>>> Normally, I make a hierarchy of a few groups, each with various
>>>> children individually positioned. Then, I can adjust the overall position
>>>> and rotation of the whole set by applying position and rotation transforms
>>>> to the Group node, not to each text or other sub-element.
>>>>
>>>> From your description (maybe I misinterpreted what you were saying) it
>>>> didn't sound like you were doing it this way, and I worried that you were
>>>> making unnecessary work for yourself as a result.
>>>>
>>>>
>>>>
>>>> On Mon, Jan 7, 2019 at 8:40 AM Nebi Sarikaya <[email protected]> wrote:
>>>>
>>>>> Hi Chris;
>>>>>
>>>>> Can you be more specific on "I usually put all of the text and HUD
>>>>> elements into a group and position them relative to the group and then
>>>>> rotate and shift that group. All the sub-children will rotate properly. "
>>>>> ?
>>>>>
>>>>> Thank you!
>>>>>
>>>>> Cheers,
>>>>> Nebi
>>>>>
>>>>> ------------------
>>>>> Read this topic online here:
>>>>> http://forum.openscenegraph.org/viewtopic.php?p=75394#75394
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> osg-users mailing list
>>>>> [email protected]
>>>>>
>>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>>>
>>>>
>>>>
>>>> --
>>>> Chris 'Xenon' Hanson, omo sanza lettere. [email protected]
>>>> http://www.alphapixel.com/
>>>> Training • Consulting • Contracting
>>>> 3D • Scene Graphs (Open Scene Graph/OSG) • OpenGL 2 • OpenGL 3 • OpenGL
>>>> 4 • GLSL • OpenGL ES 1 • OpenGL ES 2 • OpenCL
>>>> Legal/IP • Forensics • Imaging • UAVs • GIS • GPS •
>>>> osgEarth • Terrain • Telemetry • Cryptography • LIDAR • Embedded • Mobile
>>>> •
>>>> iPhone/iPad/iOS • Android
>>>> @alphapixel <https://twitter.com/alphapixel> facebook.com/alphapixel (775)
>>>> 623-PIXL [7495]
>>>>
>>> --
>>> 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/fa4f53fd-c5cc-4e3e-bf9a-a27a3eb766ban%40googlegroups.com
>>>
>>> <https://groups.google.com/d/msgid/osg-users/fa4f53fd-c5cc-4e3e-bf9a-a27a3eb766ban%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
>>
>> --
>> trajce nikolov nick
>>
>
--
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/ae20cd1a-9120-4609-b5ab-d10f0a2ad129n%40googlegroups.com.