直接使用osg渲染ifc数据,提高渲染速度。

#include "teslamanage.h"
#include <QtWidgets/QApplication>
#include <QtGui/QIcon> #include <osgViewer/Viewer> osg::ref_ptr<osg::Node> createLand(int widthParam, int heightParam, int zParam);
void loadIFCFile(osg::ref_ptr<osgViewer::Viewer> &viewer1,std::wstring &fileNmae); int main(int argc, char *argv[])
{ std::wstring fileName = L"D://ck1.ifc";
osg::ref_ptr<osgViewer::Viewer> viewer1 = new osgViewer::Viewer; loadIFCFile(viewer1, fileName);
viewer1->setUpViewInWindow(, , , , );
return viewer1->run();
} osg::ref_ptr<osg::Node> createLand(int widthParam, int heightParam, int zParam)
{
osg::ref_ptr<osg::Geode> geode = new osg::Geode;
osg::ref_ptr<osg::Geometry> geo = new osg::Geometry; //申请一些顶点
osg::ref_ptr<osg::Vec3Array> vers = new osg::Vec3Array;
geo->setVertexArray(vers.get());
//#if 1
// geo->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINE_LOOP, 0, 4));//创建一个线圈
//#else
geo->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS, , ));//创建一个正方形
//#endif //设置顶点
//vers->push_back(osg::Vec3(-15, 3.0, -15));
//vers->push_back(osg::Vec3(15, 3.0, -15));
//vers->push_back(osg::Vec3(15, 3.0, 15));
//vers->push_back(osg::Vec3(-15, 3.0, 15)); vers->push_back(osg::Vec3(widthParam*(-1.0), heightParam*(-1.0), zParam*(1.0)));
vers->push_back(osg::Vec3(widthParam*(1.0), heightParam*(-1.0), zParam*(1.0)));
vers->push_back(osg::Vec3(widthParam*(1.0), heightParam*(1.0), zParam*(1.0)));
vers->push_back(osg::Vec3(widthParam*(-1.0), heightParam*(1.0), zParam*(1.0))); //申请颜色
osg::ref_ptr<osg::Vec4Array> color = new osg::Vec4Array();
color->push_back(osg::Vec4(1.0, 0.0, 0.0, 0.5));
color->push_back(osg::Vec4(0.0, 1.0, 0.0, 0.5));
color->push_back(osg::Vec4(0.0, 0.0, 1.0, 0.5));
color->push_back(osg::Vec4(1.0, 1.0, 0.0, 0.5)); //设置颜色
geo->setColorArray(color.get());
geo->setColorBinding(osg::Geometry::AttributeBinding::BIND_PER_VERTEX);//设置颜色绑定 //设置法线,正对屏幕的时候最亮
osg::ref_ptr<osg::Vec3Array> norm = new osg::Vec3Array;
geo->setNormalArray(norm);
geo->setNormalBinding(osg::Geometry::AttributeBinding::BIND_OVERALL);
norm->push_back(osg::Vec3(0.0, -1.0, 0.0)); //打开透明度
geo->getOrCreateStateSet()->setMode(GL_BLEND, osg::StateAttribute::ON); //设置线宽
osg::ref_ptr<osg::LineWidth> w = new osg::LineWidth;
w->setWidth(5.0);
geo->getOrCreateStateSet()->setAttributeAndModes(w.get(), osg::StateAttribute::ON); geode->addDrawable(geo.get()); return geode;
}

osg 渲染ifc数据-测试的更多相关文章

  1. 不同三维引擎渲染IFC数据效果对比

  2. osg渲染数据高程文件

    使用gdal解析DEM文件,将高程数据转换为HeightField对象,然后在osg渲染. 1 源代码 #include <gdal_priv.h> #include <osgVie ...

  3. [转][osg]osg渲染引擎框架图,流程图(根据《最长一帧》整理)

    转自:http://m.blog.csdn.net/article/details?id=49679731 本文参考<<osg最长一帧>>, <<OpenScene ...

  4. CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探

    CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码 ...

  5. 适应laytpl 渲染模板数据

    前言 当我们异步读取数据过来的时候,还要通过手动赋值,显示在页面上吗,那样你就太OUT了,哥告诉你个新方式. 那就是 laytpl 插件 用法一:渲染单条数据 <table id="B ...

  6. 【vue】渲染大量数据时性能优化

    对应vue渲染大量数据时可以考虑下面几点: 1. 异步渲染组件:因为组件渲染太多,影响页面的渲染时间,所有可以延迟组件渲染,可以考虑v-if处理 2. 可以使用虚拟滚动的组件:参考使用这个插件 vue ...

  7. 超全table功能Datatables使用的填坑之旅--1: 无法渲染表格数据: ajax调用了参数 : success

    问题:Datatables: 无法渲染表格数据 原因:datatables的ajax 传了"success":function(){},导致无法渲染数据. ajax 删掉" ...

  8. ionic ngRepeat追加数据(加载更多,不需要重复渲染dom数据)

    1)模版循环在之前的随笔中已经说过,使用挺简单的 http://www.cnblogs.com/tujia/p/6078217.html 简单来说就是控制器输入一个数据变量,模版里用ng-repeat ...

  9. React.js 小书 Lesson13 - 渲染列表数据

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson13 转载请注明出处,保留原文链接和作者信息. 列表数据在前端非常常见,我们经常要处理这种类型 ...

随机推荐

  1. bcb中TParamter传NULL值

    if (status_Desc.IsEmpty()) Queue_Status->Value = Null(); else Queue_Status->Value = status_Des ...

  2. scala 中的集合类

    集合最重要的继承路线 —— Traversable -> Iterable -> Seq -> LinerSeq -> List Traversable 中的公有方法: 分类 ...

  3. Go语言 - 流程控制 if else | for | switch case

    流程控制 流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”. Go语言中最常用的流程控制: if | for | switch | goto// switch ...

  4. C# Apache Thrift Demo

    转载至 https://headsigned.com/posts/csharp-apache-thrift-demo/ This demo application shows how to imple ...

  5. 自定义菜单和高级接口-获取Access Token

    自定义菜单和高级接口都需要使用APPID和AppSecret来创建. 对应暂时没有这些权限的微信公众账号,开发者可以申请测试账号来体验和测试体验微信公众平台的所有高级接口的功能.链接 https:// ...

  6. EL运算符和基本运算

    1.EL存取器:.和[] ${applicationScope.list[].name} 获取applicationScope中list集合的第二个元素的name属性. 2.三元运算符: ${> ...

  7. yum和apt-get 软件包管理器的用法及区别

    yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器. 一般来说著名的linux系统基本上分两大类: 1.R ...

  8. Java SpringBoot全局错误处理类,返回标准结果

    package demo.utils; import com.alibaba.fastjson.JSON; import demo.controller.ProductController; impo ...

  9. 【论文阅读】DCAN: Deep Contour-Aware Networks for Accurate Gland Segmentation

    DCAN: Deep Contour-Aware Networks for Accurate Gland Segmentation 作者:Hao Chen Xiaojuan Qi Lequan Yu ...

  10. kubernetes入门学习系列

    一.kubernetes基础概念 初识kubernetes kubernetes相关概念 二.kubernets架构和组件 kubernetes架构 kubernetes单Master架构 kuber ...