Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Openscenegraph 拾取对象时获取索引节点或名称节点_Openscenegraph - Fatal编程技术网

Openscenegraph 拾取对象时获取索引节点或名称节点

Openscenegraph 拾取对象时获取索引节点或名称节点,openscenegraph,Openscenegraph,我在Android上使用OSG 我在主目录中初始化了indexNode=0 int main(int, char **) { osg::ref_ptr<osg::Node> model1 = osgDB::readNodeFile( "cessna.osg"); osg::ref_ptr<osg::Node> model2 = osgDB::readNodeFile( "cow.osg" ); unsigned int indexNode= 0

我在Android上使用OSG

我在主目录中初始化了indexNode=0

int main(int, char **)
{

    osg::ref_ptr<osg::Node> model1 = osgDB::readNodeFile( "cessna.osg");
    osg::ref_ptr<osg::Node> model2 = osgDB::readNodeFile( "cow.osg" );

    unsigned int indexNode= 0;

    osg::ref_ptr<osg::Group> root = new osg::Group;
    root->addChild( model1.get() );
    root->addChild( model2.get() );

    osg::ref_ptr<PickHandler> picker = new PickHandler;
    root->addChild( picker->getOrCreateSelectionBox() );

    osgViewer::Viewer viewer;
    viewer.setSceneData( root.get() );
    viewer.addEventHandler( picker.get() );
    return viewer.run();

}
我想在拾取任何节点(cow或plane)时获取节点名称或索引节点, 我需要归还任何东西来帮助我知道我选了什么东西


我不知道我所做的是否正确,但当我点击任何对象时,它是给我3号,一眼就看不清它在哪里“给”你3号。我没有看到任何打印的内容,也没有看到任何可能包含3的int。我看到很多边界和矩阵


您需要更好地解释这种情况,也许可以使用更简单的演示代码。

这就是添加节点名称和标识符的方法:

int main()
{
    ....
    osg::ref_ptr<osg::Group> root = new osg::Group;
    root->setName("Node Name");
    root->setUserValue("id", idNumber);
    ...
}
osg::Node *node;
node->getUserValue("id", returnedString);
std::string name = node->getName();
希望这能消除你的疑虑

int main()
{
    ....
    osg::ref_ptr<osg::Group> root = new osg::Group;
    root->setName("Node Name");
    root->setUserValue("id", idNumber);
    ...
}
osg::Node *node;
node->getUserValue("id", returnedString);
std::string name = node->getName();