Hi Robert
You are definitly right!
When I set camera's matrix in main frame loop all works fine.
But is there a way to use callbacks in my situation?
Maybe osgViewer::SimpleViewer attach camera to root node and osgViewer::Viewer don't?
Roman

----- Original Message ----- From: "Robert Osfield" <[EMAIL PROTECTED]>
To: "osg users" <[email protected]>
Sent: Friday, May 18, 2007 1:21 PM
Subject: Re: [osg-users] Nub Q: node masking


I don't know what's up, perhaps the nod masks you are using are
affecting the update traversal.  It could be that the Camera's update
callback isn't being called because its part of the viewer rather than
the scene graph.

You try just setting the Camera's view matrix in the main frame loop
rather than as an update callback.

Robert.

On 5/18/07, Roman Grigoriev <[EMAIL PROTECTED]> wrote:
Thanx Robert!
All works now but I found that I used SimpleViewer instead Viewer
so cullmask works perfectly but Now my camera callback don't want to work
(I've got camera with trackball manipulator but I don't setup trackball
manipulator to my view.
so I use this to setup callback
viewer.getCamera()->setUpdateCallback(new RotateCB);

and here my callback
class RotateCB : public osg::NodeCallback

{

public :

RotateCB() : _angle(0.){}

virtual void operator () ( osg::Node* node, osg::NodeVisitor* nv)

{

osg::Camera* camera= dynamic_cast<osg::Camera *>(node);

float azAngle(1.56f),elAngle(4.74f),twAngle(-1.57f);

camera->setCullMask(~0x01);

azAngle = ( az * PI ) / 180;

elAngle = ( el * PI ) / 180;

std::cout<<"rotateCB"<<std::endl;

osg::Matrixd myCameraMatrix;

osg::Matrixd cameraRotation;

osg::Matrixd cameraTrans;

cameraRotation.makeRotate(

osg::DegreesToRadians(0.0), osg::Vec3(0,1,0), // roll

osg::DegreesToRadians(el), osg::Vec3(1,0,0) , // pitch

osg::DegreesToRadians( az), osg::Vec3(0,0,1) ); // heading

cameraTrans.makeTranslate( 1,5,1 );

myCameraMatrix = cameraRotation * cameraTrans;

osg::Matrixd i = myCameraMatrix.inverse(myCameraMatrix);


camera->setViewMatrix(i*osg::Matrix::rotate(-(osg::PI_2),1,0,0));

traverse(node,nv);

}

protected:

double _angle;

};

Could you please tell me what I'm doing wrong?

Thanx in advance

Roman




----- Original Message -----
From: "Robert Osfield" <[EMAIL PROTECTED]>
To: "osg users" <[email protected]>
Sent: Thursday, May 17, 2007 5:18 PM
Subject: Re: [osg-users] Nub Q: node masking


> Hi Roman,
>
> During traversal the cull traversal mask is AND'd with the node mask
> and if it returns a non zero value then the node and its subgraph are
> traversed, so as you've set it 0x2 & 0x2 will pass.  Set the traversal
> mask to ~0x2 and you should get the result you want.
>
> On 5/17/07, Roman Grigoriev <[EMAIL PROTECTED]> wrote:
>> Hi guys!
>> Node masking don't work at all for me
>> I setup node like this:
>> osg::Group* heli=(osg::Group*) osgDB::readNodeFile("ah64d.flt");
>>
>> heli->setDataVariance(osg::Object::DYNAMIC);
>>
>> heli->setNodeMask(0x2);
>>
>> osg::PositionAttitudeTransform* patTarget = new
>> osg::PositionAttitudeTransform();
>>
>> patTarget->addChild(heli);
>>
>> targetDataType* targetData = new targetDataType(patTarget);
>>
>> patTarget->setUserData( targetData );
>>
>> root->addChild(patTarget);
>>
>> patTarget->setUpdateCallback(new updateTargetCB(tIDevState));
>>
>> and viewer like this:
>>
>> int inheritanceMask =
>>
>> (osg::CullSettings::VariablesMask::ALL_VARIABLES &
>>
>> ~osg::CullSettings::VariablesMask::CULL_MASK);
>>
>> viewer.getCamera()->setInheritanceMask(inheritanceMask);
>>
>>
>> viewer.getCamera()->setCullMask(0x2);
>>
>> but I still see my node. How can I disable this node?
>>
>> Could you please tell me what I'm doing wrong?
>>
>> Thanx in advance
>>
>> Bye
>>
>>
>>
>> _______________________________________________
>> osg-users mailing list
>> [email protected]
>> http://openscenegraph.net/mailman/listinfo/osg-users
>> http://www.openscenegraph.org/
>>
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://openscenegraph.net/mailman/listinfo/osg-users
> http://www.openscenegraph.org/


_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/



_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

Reply via email to