OSG简介与最简单的实例

 

OSG简介

OpenSceneGraph(简称OSG)使用OpenGL技术开发,是一套基于C++平台的应用程序接口(API)。OpenGL技术为图形元素(多边形、线、点)和状态(光照、材质、阴影)的编程提供了标准化的接口。而OSG开发的主要意义在于,将3D场景定义为空间中一系列连续的对象,以进行三维世界的管理。正是由于场景及其参数定义的特点,通过状态转化、绘图管道和自定制等操作,OSG还可以用于优化渲染性能。   可以运行OSG的平台需要具备OpenGL的支持能力,以及C++的编译环境,支持OSG的系统包括SolarisIRIXWindowsMac OSXHP-UXSony Platystation等等,不过XBox除外。     

OSG是一个开源系统,主要包括场景图形核心,Producer库,OpenThread库以及用户插件四个部分。自Robert Osfield主持这个项目以来,OSG就作为一个开放源代码的图形开发工程开始在全球运作了。   

目前,部分高性能的软件已经使用了OSG来渲染复杂的2D3D场景。虽然大部分基于OSG的软件更适用于可视化设计和工业仿真,但是在使用3D图形的每个领域,都已经出现了OSG的身影。这其中包括了地理信息系统(GIS),计算机辅助设计(CAD),建模和数字内容创作(DCC),数据库开发,虚拟现实,动画,游戏和娱乐业。

 

简单的实例导入一个模型

OSG简介与最简单的实例_第1张图片

 

/* * File : OSGprg002.cpp * Description : * Author : GuoShaoHao * E-mail : [email protected] * Date : 2011/01/08 * * CopyRight @ South China Institute of Software Engineering,.GZU * */ #include <osgViewer/Viewer> #include <osgDB/ReadFile> #include <osg/DrawPixels> #include <osg/Geode> #include <osg/MatrixTransform> #include <osgViewer/ViewerEventHandlers> #include <osgGA/StateSetManipulator> int main() { osgViewer::Viewer viewer; //添加状态事件 viewer.addEventHandler( new osgGA::StateSetManipulator(viewer.getCamera()->getOrCreateStateSet()) ); //窗口大小变化事件 viewer.addEventHandler(new osgViewer::WindowSizeHandler); //添加一些常用状态设置 viewer.addEventHandler(new osgViewer::StatsHandler); osg::Group *root = new osg::Group(); osg::ref_ptr < osg::Node> b25 = osgDB::readNodeFile("F://Models//B25//B25.IVE") ; // 对模型进行变换 osg::ref_ptr < osg::MatrixTransform> scale = new osg::MatrixTransform ; scale ->setMatrix(osg::Matrix::rotate(osg::DegreesToRadians(45.0), 1, 0, 0)*osg::Matrix::scale(0.5, 0.5, 0.5)*osg::Matrix::translate(4, 0, -2)) ; scale ->addChild(b25.get()) ; root->addChild(scale.get()); viewer.setSceneData(root); viewer.realize(); return viewer.run(); //return 0; }

你可能感兴趣的:(OSG简介与最简单的实例)