osg绘制ifc工字钢的端面

发布时间:2022-06-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了osg绘制ifc工字钢的端面脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

 

 

osg::Geode* createIfcPolygon2()
{
    osg::Geode* geode = new osg::Geode();


    //face 8
    {
        osg::Geometry* geom_face1 = new osg::Geometry();
        osg::Vec3Array* coords_face1 = new osg::Vec3Array();
        geom_face1->setVertexArray(coords_face1);

        std::vector<osg::Vec3> point_vecs_bottom;
        {
            osg::Vec3 indexVecB_1;
            indexVecB_1[0] = 7700.0f;
            indexVecB_1[1] = 70.0f;
            indexVecB_1[2] = -130.0f;


            osg::Vec3 indexVecB_2;
            indexVecB_2[0] = 7700.0f;
            indexVecB_2[1] = 70.0f;
            indexVecB_2[2] = 130.0f;

            osg::Vec3 indexVecB_3;
            indexVecB_3[0] = 7700.0f;
            indexVecB_3[1] = 150.0f;
            indexVecB_3[2] = 130.0f;

            osg::Vec3 indexVecB_4;
            indexVecB_4[0] = 7700.0f;
            indexVecB_4[1] = 150.0f;
            indexVecB_4[2] = 150.0f;

            osg::Vec3 indexVecB_5;
            indexVecB_5[0] = 7700.0f;
            indexVecB_5[1] = -150.0f;
            indexVecB_5[2] = 150.0f;

            osg::Vec3 indexVecB_6;
            indexVecB_6[0] = 7700.0f;
            indexVecB_6[1] = -150.0f;
            indexVecB_6[2] = 130.0f;

            osg::Vec3 indexVecB_7;
            indexVecB_7[0] = 7700.0f;
            indexVecB_7[1] = -70.0f;
            indexVecB_7[2] = 130.0f;

            osg::Vec3 indexVecB_8;
            indexVecB_8[0] = 7700.0f;
            indexVecB_8[1] = -70.0f;
            indexVecB_8[2] = -130.0f;


            osg::Vec3 indexVecB_10;
            indexVecB_10[0] = 7700.0f;
            indexVecB_10[1] = -150.0f;
            indexVecB_10[2] = -130.0f;

            osg::Vec3 indexVecB_11;
            indexVecB_11[0] = 7700.0f;
            indexVecB_11[1] = -150.0f;
            indexVecB_11[2] = -150.0f;

            osg::Vec3 indexVecB_12;
            indexVecB_12[0] = 7700.0f;
            indexVecB_12[1] = 150.0f;
            indexVecB_12[2] = -150.0f;

            osg::Vec3 indexVecB_13;
            indexVecB_13[0] = 7700.0f;
            indexVecB_13[1] = 150.0f;
            indexVecB_13[2] = -130.0f;

            point_vecs_bottom.push_back(indexVecB_1);
            point_vecs_bottom.push_back(indexVecB_2);
            point_vecs_bottom.push_back(indexVecB_3);
            point_vecs_bottom.push_back(indexVecB_4);

            point_vecs_bottom.push_back(indexVecB_5);
            point_vecs_bottom.push_back(indexVecB_6);
            point_vecs_bottom.push_back(indexVecB_7);
            point_vecs_bottom.push_back(indexVecB_8);

            point_vecs_bottom.push_back(indexVecB_10);
            point_vecs_bottom.push_back(indexVecB_11);
            point_vecs_bottom.push_back(indexVecB_12);
            point_vecs_bottom.push_back(indexVecB_13);

        }


        //添加数据
        std::vector<osg::Vec3>::iterator iter1;
        for (iter1 = point_vecs_bottom.begin(); iter1 != point_vecs_bottom.end(); ++iter1) {
            osg::Vec3 index_point = *iter1;
            coords_face1->push_back(index_point);
        }

        //geom_face1->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINE_LOOP, 0, point_vecs_bottom.size()));
        geom_face1->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::POLYGON, 0, point_vecs_bottom.size()));



        osg::ref_ptr<osgUtil::Tessellator> tscx = new osgUtil::Tessellator;
        //设置分格类型为几何体
        tscx->setTessellationType(osgUtil::Tessellator::TESS_TYPE_GEOMETRY);
        //设置只显示轮廓线为false。设置环绕规则,这里不太懂
        tscx->setWindingType(osgUtil::Tessellator::TESS_WINDING_ODD);
        //使用分格化
        tscx->retessellatePolygons(*(geom_face1));

        geode->addDrawable(geom_face1);

    }


    return geode;
}

 

osg绘制ifc工字钢的端面

 

#############################

脚本宝典总结

以上是脚本宝典为你收集整理的osg绘制ifc工字钢的端面全部内容,希望文章能够帮你解决osg绘制ifc工字钢的端面所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: