osg::Camera 参数修改

#ifdef _WIN32
#include <Windows.h>
#endif // _WIN32
#include<iostream>

#include <osgViewer/Viewer>
#include <osgViewer/ViewerEventHandlers>
#include <osgViewer/CompositeViewer> 

#include <osgDB/ReadFile>

#include <osg/Geode>
#include <osg/Node>
#include <osg/Geometry>
#include <osg/GraphicsContext>
#include <osg/ShapeDrawable>
#include <osg/Material>
#include <osg/Image>
#include <osg/Texture2D>
#include <osg/TexEnv>
#include <osg/TexGen>
#include <osg/NodeVisitor>
#include <osg/MatrixTransform>
#include <osg/PositionAttitudeTransform>
#include <osg/AnimationPath>
#include <osg/Matrixd>
#include <osg/PagedLOD>
#include <osg/Camera>

#include <osgGA/TrackballManipulator>
#include <osgGA/GUIEventHandler>
#include <osgGA/CameraManipulator>
#include <osgGA/StandardManipulator>
#include <osgGA/OrbitManipulator>
#include <osgGA/TrackballManipulator>

#include <osgUtil/IntersectionVisitor>
#include <osgUtil/LineSegmentIntersector>

osg::ref_ptr<osg::Group> createCameras(osg::ref_ptr<osg::Node> node1)
{

    osg::ref_ptr<osg::Group> group1 = new osg::Group;
    unsigned int width, height;

    osg::ref_ptr<osg::Camera> camera1 = new osg::Camera;
    //osg::ref_ptr<osg::Node> node1 = osgDB::readNodeFile("D:\\参考手册\\BIM\\osg\\build20190628.osgb");

    //camera1->setGraphicsContext(graphics1);
    camera1->addChild(node1);
    camera1->setViewport(0, 0, 400, 300);
    camera1->setClearColor(osg::Vec4(1.0, 1.0, 1.0, 0.0));
    camera1->setName("camera1");

    osg::ref_ptr<osg::Camera> cameraRight = new osg::Camera;
    osg::Vec3d eyeRight, centerRight, upRight;

    //修改相机参数
    eyeRight = osg::Vec3d(0.0, 0.0, 0.0);
    centerRight = osg::Vec3d(0.0, 1.0, 0.0);
    upRight = osg::Vec3d(0.0, 0.0, 0.0);

    cameraRight->addChild(node1);
    cameraRight->setViewport(402, 0, 400, 300);
    cameraRight->setClearColor(osg::Vec4(1.0, 1.0, 1.0, 0.0));
    cameraRight->setName("camera2");

    //viewer->getCamera()->setViewMatrixAsLookAt(eye, center, up);
    //cameraRight->setViewMatrixAsLookAt(eyeRight, centerRight, upRight);
    cameraRight->setViewMatrix(osg::Matrix::rotate(osg::DegreesToRadians(-90.0),0.0,0.0,1.0));

    //viewer1->addSlave(camera1.get());
    group1->addChild(camera1.get());
    group1->addChild(cameraRight.get());

    return group1;
}

int main()
{
    osg::ref_ptr<osgViewer::Viewer> viewer1 = new osgViewer::Viewer;
    osg::ref_ptr<osg::Group> group1 = new osg::Group;
    //osg::ref_ptr<osg::Camera> camera1 = new osg::Camera;

    osg::ref_ptr<osg::Node> node1 = osgDB::readNodeFile("D:\\参考手册\\BIM\\osg\\build20190628.osgb");
    //osg::ref_ptr<osg::Node> node2 = osgDB::readNodeFile("D:\\参考手册\\BIM\\osg\\build20190628.osgb");

    //camera1->addChild(node1);
    //camera1->setViewport(0, 0, 300, 220);
    //camera1->setClearColor(osg::Vec4(0.0,0.0,0.0,0.0));

    group1->addChild(node1.get());
    //group1->addChild(camera1.get());
    group1->addChild(createCameras(node1));

    //createCameras1(node1, viewer1);

    viewer1->setSceneData(group1.get());
    //createCamera(viewer1);

    viewer1->setUpViewInWindow(200, 200, 800, 500, 0);

    viewer1->run();
}

原文地址:https://www.cnblogs.com/herd/p/11104964.html

时间: 2024-07-31 16:04:50

osg::Camera 参数修改的相关文章

NGUI创建Camera参数为Simple 2D的UI UI对象的结构UI Root(2D)

NGUI创建Camera参数为Simple 2D的UI UI对象的结构UI Root(2D) 使用NGUI创建的Camera参数为Simple 2D的UI,会在游戏的场景中生成1个名为UI Root(2D)的游戏对象,且此对象下还包含了3个其它对象:Camera.Anchor和Panel,如图1-4所示.本小节会分别介绍这4个游戏对象本文选自NGUI从入门到实战. 图1-4  在Hierarchy视图里查看新创建的UI游戏对象 1.4.1  UI Root(2D) 此游戏对象将负责控制UI控件的

JS 微信判断及分享参数修改

var iswechat = (window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'); var cloc = location.href.replace(/^#/, "").replace(/[^\/]*\.[^\/*]+$/, ""); var mainTitle = "", mainDesc = "",

攻城狮在路上(叁)Linux(二十三)--- linux磁盘参数修改(设备代码、设备名)

一.mknod:设置设备代码 linux中,所有的设备都是用文件来表示,文件通过major与minor数值来判断. major为主设备代码,minor为设备代码(需要查询),示例如下: /dev/hda ---------major:3------minor:0~63 /dev/hdb----------major:3------minor:64~127 /dev/sda----------major:8------minor:0~15 ... 命令格式:mknod 设备名 [bcp] [maj

指针作为函数参数,修改实参值

1,指针作为函数参数, 指针可以指向内存中任意一个数据,通过间接引用能够在函数内修改函数外甚至系统中的数据; 为了避免指针作为函数参数导致数据被意外修改,我们可以使用const来保护指针所指向的数据; 2,指针作为函数返回值, 同别的数据类型int,float一样,指针也能够作为函数的一种返回值类型,把返回指针的函数称为指针函数; 返回的指针所指向的数据不能够是函数内部声明的变量; 更灵活的存储,使用数组的时候面临种尴尬:数组的存储空间必须在程序运行前申请,即数组的大小在编译前必须是已知的常量表

yum方式安装的jenkins的jvm参数修改及jvisualvm监控添加

yum 方式安装的jenkins 1.添加jvm参数修改时,需添加在/etc/init.d/jenkins 文件的JAVA_CMD变量里才生效 2.为了能用jvisualvm监控到,添加 -Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=192.168.1.125 -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.authent

软键盘实例 request参数修改

软键盘实例 request参数修改 这里的键盘 里面的内容是乱序的,每次请求都会不一样的顺序. 键盘内容是一个DIV的背景图,方框是DIV边框.控制按钮直接在前台控制就行. 请求流程如下 JSP请求软键盘图片->action 绘制图片并记录 每个值对应的位置 JSP登录(密码位置)-->Filter把密码转换成真实密码值->登录校验Filter 代码如下 <%@ page isELIgnored="false" %> <%@ page languag

oracle隐含参数修改与查看

oracle隐含参数修改与查看 alter system set "_allow_resetlogs_corruption"=false scope=spfile sid='*'; col name for a30;col value for a10;selectx.ksppinm  name,y.ksppstvl  value,y.ksppstdf  isdefault,decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','

WEKA运行参数修改(RunWeka.ini文件)

一般使用weka进行数据挖掘的时候会碰到两个问题,一是内存不够,二是libsvm使用不了,这时就需要重新配置RunWeka.ini文件,解决上述问题.查看RunWeka.ini原文如下: 1 # Contains the commands for running Weka either with a command prompt 2 # ("cmd_console") or without the command prompt ("cmd_default"). 3

android Jelly Bean版本如何将camera service修改为强占式

实现强占式camera service,当某些应用(如手电筒)在后台打开camera后,当camera app open camera时可以强占被后台应用占有的camera. 1. 修改CameraService.cpp (frameworks/av/services/camera/libcameraservice/) 文件的connect()方法,将 原来的 Mutex::Autolock lock(mServiceLock); if (mClient[cameraId] != 0) { cl