17、osg::Camera,osg::LOD,osgSim::Impostor类函数说明

2024-02-22 00:18

本文主要是介绍17、osg::Camera,osg::LOD,osgSim::Impostor类函数说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、osg::Camera类

类说明:为视口添加camera的类。用于显示。

1、 Camera () 

       Camera (const Camera &, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
说明:构造函数,第一个是否为自动组建该类,将采用一些默认参数。默认为真。第二个构造函数为从已知的Camera创建新的Camera。拷贝类型,默认为浅拷贝,可以为深拷贝。DEEP_COPY_OBJECTS.

2、void setView (View *view) 

说明:为camera设置依附的view,view为拥有该camera的view。

3、View * getView () 

     const View * getView () const 

说明:得到该camera的view。

4、void setStats (osg::Stats *stats) 

说明:为该camera设置stats。stats为设置好的stats类。

5、osg::Stats * getStats () 

      const osg::Stats * getStats () const 

说明:得到当前camera的stats.

6、void setAllowEventFocus (bool focus) 

说明:设置可以得到事件焦点,就是可以接受外界消息。对于从视口,这个是不需要的。设置是否得到事件的焦点。

7、bool getAllowEventFocus () const 

说明:是否允许得到事件的焦点。

8、void setDisplaySettings (osg::DisplaySettings *ds) 

说明:设置displaySettings,控制在渲染时的一些信息。ds为自定义的DisplaySettings类。

9、osg::DisplaySettings * getDisplaySettings () const

 说明:得到displaysettings.

10、void setClearColor (const Vec4 &color) 

说明:设置清除缓存区背景的颜色。RGBA格式。

11、const Vec4 & getClearColor () const

 说明:得到清除缓存区颜色设置。

12、void setClearMask (GLbitfield mask) 

说明:设置使用清除标志。清除标志,可以为以下值:GL_COLOR_BUFFER_BIT 或者 GL_DEPTH_BUFFER_BIT.

13、GLbitfield getClearMask () const 

说明:得到所设置的清除标志。

14、void setColorMask (osg::ColorMask *colorMask) 

说明:设置屏蔽颜色。屏蔽色值。

15、void setColorMask (bool red, bool green, bool blue, bool alpha) 

说明:设置屏蔽颜色。red为是否屏蔽红色。green为是否屏蔽蓝色。blue为是否屏蔽绿色。alpha为是否屏蔽A通道。

16、const ColorMask * getColorMask ()

         const ColorMask * getColorMask () 

说明:得到所设置屏蔽的颜色。

17、void setViewport (osg::Viewport *viewport) 

         void setViewport (int x, int y, int width, int height) 

说明:设置视口的尺寸与位置。viewport为归设置的视口类。x为视口的左下角坐标X值。y为视口的左下角坐标Y值。width为视口的宽度。heigth为视口的高度。

18、const Viewport * getViewport () 

         const Viewport * getViewport () 

说明:得到camera的视口高宽值。

19、void setTransformOrder (TransformOrder order) 

说明:设置当局部向世界以及世界向局部转化时矩阵相乘顺序。相乘顺序,可以为以下值:PRE_MULTIPLY POST_MULTIPLY

20、TransformOrder getTransformOrder () const 

说明:得到当局部向世界以及世界向局部转化时矩阵相乘顺序。

21、void setProjectionResizePolicy (ProjectionResizePolicy policy) 

说明:设置模型如何调整以适应视口。policy为调整策略,可以是以下值:FIXED HORIZONTAL VERTICAL

22、ProjectionResizePolicy getProjectionResizePolicy () const 

说明:得到调整策略:即,模型如何调整以适应视口。

23、void setProjectionMatrix (const osg::Matrixf &matrix) 

        void setProjectionMatrix (const osg::Matrixd &matrix)

 说明:直接设置投影矩阵。matrix为透视矩阵值。

24、void setProjectionMatrixAsOrtho (double left, double right, double bottom, double top, double zNear, double zFar) 

说明:以正交投影的方式设置投影矩阵。left为正交投影中的LEFT,right为正交投影中的right,bottom为正交投影中的bottom,top为正交投影中的top,zNear为正交投影中的zNear,zFar为正交投影中的zFar

25、void setProjectionMatrixAsOrtho2D (double left, double right, double bottom, double top)

 说明:以正交投影的方式来设置投影矩阵。left为正交投影中的LEFT,right为正交投影中的right,bottom为正交投影中的bottom,top为正交投影中的top。

26、void setProjectionMatrixAsFrustum (double left, double right, double bottom, double top, double zNear, double zFar)

 说明:以平头截体的方式来设置投影矩阵。left为平头截体中的LEFT,right为平头截体中的right,bottom为平头截体中的bottom,top为平头截体中的top,zNear为平头截体中的zNear,zFar为平头截体中的zFar

27、void setProjectionMatrixAsPerspective (double fovy, double aspectRatio, double zNear, double zFar) 

说明:以透视投影的方式来设置投影矩阵。fovy为透视投影中的fovy,aspectRatio为透视投影中的aspectRatio,zNear为透视投影中的zNear,zFar为透视投影中的zFar

28、osg::Matrixd & getProjectionMatrix () 

        const osg::Matrixd & getProjectionMatrix () const

 说明:得到投影矩阵。

29、bool getProjectionMatrixAsOrtho (double &left, double &right, double &bottom, double &top, double &zNear, double &zFar) 

说明:以正交投影的方式得到投影矩阵。得到成功返回真。left为正交投影中的LEFT,right为正交投影中的right,bottom为正交投影中的bottom,top为正交投影中的top,zNear为正交投影中的zNear,zFar为正交投影中的zFar

30、bool getProjectionMatrixAsFrustum (double &left, double &right, double &bottom, double &top, double &zNear, double &zFar) 

说明:以平头截体的方式来得到投影矩阵。

31、bool getProjectionMatrixAsPerspective (double &fovy, double &aspectRatio, double &zNear, double &zFar)

 说明:以透视投影的方式来得到投影矩阵。得到成功返回真。

32、void setViewMatrix (const osg::Matrixf &matrix)

        void setViewMatrix (const osg::Matrixd &matrix) 

说明:直接设置观察矩阵。

33、void setViewMatrixAsLookAt (const osg::Vec3 &eye, const osg::Vec3 &center, const osg::Vec3 &up) 

说明:使用lookat的观察方式来设置观察矩阵。eye为lookat 中的eye,center为lookat 中的center,up为lookat 中的up

34、Matrixd getInverseViewMatrix () const

 说明:得到观察矩阵的逆矩阵。

35、void setRenderOrder (RenderOrder order, int orderNum=0) 

说明:设置渲染顺序,最后渲染会是顶层窗口。渲染顺序,order可以为以下值:PRE_RENDER NESTED_RENDER POST_RENDER,orderNum如果级别相同,具体指出渲染次序。

36、RenderOrder getRenderOrder () const 

说明:得到设置的渲染顺序,最后渲染会是顶层窗口。

37、int getRenderOrderNum () const 

说明:得到渲染次序数目

38、bool isRenderToTextureCamera () const 

说明:是否渲染至纹理相机。如果渲染了则返回真。

39、void setRenderTargetImplementation (RenderTargetImplementation impl) 

说明:设置渲染实现方式。impl为渲染目标实现方式,可以为以下值:FRAME_BUFFER_OBJECT PIXEL_BUFFER_RTT

40、void setRenderTargetImplementation (RenderTargetImplementation impl, RenderTargetImplementation fallback) 

说明:设置渲染目标实现方式。如果前方不可用,fallback.渲染目标实现方式,可以为以下值:FRAME_BUFFER_OBJECT PIXEL_BUFFER_RTT PIXEL_BUFFER FRAME_BUFFER SEPERATE_WINDOW

41、RenderTargetImplementation getRenderTargetImplementation () const

说明:得到渲染实现方式。

42、RenderTargetImplementation getRenderTargetFallback () const 

说明:得到渲染时的fallback.

43、void setDrawBuffer (GLenum buffer) 

说明:设置DrawBuffer,设置好的DrawBuffer

44、GLenum getDrawBuffer () const 

说明:得到设置的DrawBuffer.

45、void setReadBuffer (GLenum buffer) 

说明:设置ReadBuffer

46、GLenum getReadBuffer () const 

说明:得到所设置的ReadBuffer

47、void attach (BufferComponent buffer, GLenum internalFormat)

         void attach (BufferComponent buffer, osg::Texture *texture, unsigned int level=0, unsigned int face=0, bool mipMapGeneration=false) 

         void attach (BufferComponent buffer, osg::Image *image) 

说明:设置一些buffer.到特殊的用途。

48、void detach (BufferComponent buffer) 

说明:解除一些绑定到camera的Buffer。

49、BufferAttachmentMap & getBufferAttachmentMap () const

 说明:得到Buffer的绑定映射。

50、void createCameraThread () 

说明:创建Camera线程。

51、void setCameraThread (OperationThread *gt) 

说明:设置Camera线程。gt为设置已有的Camera线程。

52、OperationThread * getCameraThread () 

         const OperationThread * getCameraThread () const 

说明:得到设置好的camera线程。

53、void setGraphicsContext (GraphicsContext *context) 

说明:设置上下文。context传入需要设置的上下文。

54、GraphicsContext * getGraphicsContext () 

        const GraphicsContext * getGraphicsContext () const 

说明:得到所设置的图形上下文。

55、void setRenderer (osg::GraphicsOperation *rc) 

说明:设置GraphicsOperation,可以接受一个类的操作。rc传入的设置的图形操作。

56、osg::GraphicsOperation * getRenderer () const 

说明:得到设置的图形操作。

57、void setRenderingCache (osg::Object *rc) 

说明:设置渲染时的cache,会在渲染子类子图时使用到。

58、osg::Object * getRenderingCache ()

        const osg::Object * getRenderingCache () const 

说明:得到渲染时所设置的cache.

59、void setPreDrawCallback (DrawCallback *cb) 

说明:设置Draw前的callback.设置draw前的Drawback.

60、DrawCallback * getPreDrawCallback ()

         const DrawCallback * getPreDrawCallback () const 

说明:得到设置的Draw前Callback.

61、void setPostDrawCallback (DrawCallback *cb)

说明:设置Draw后callback.cb为设置draw后的Drawback.

62、DrawCallback * getPostDrawCallback () 

        const DrawCallback * getPostDrawCallback () const 

说明:得到设置的draw后callback.

63、OpenThreads::Mutex * getDataChangeMutex () const

 说明:得到数据改变的Mutex.

二、osg::LOD类

类说明:LOD控制结点。

1、LOD () 

      LOD (const LOD &, const CopyOp &copyop=CopyOp::SHALLOW_COPY) 

说明:构造函数,第二个构造函数为从已知的LOD构造新的LOD,第二个参数为拷贝类型。默认为是浅拷贝。拷贝方式,默认为是浅拷贝,可以为深拷贝:DEEP_COPY_OBJECTS

2、virtual void traverse (NodeVisitor &nv) 

说明:允许NodeVisitor向下遍历结点。

3、virtual bool addChild (Node *child) 

说明:添加孩子结点。需要的话,可以使用别的函数设置视矩。child为需要添加的孩子结点。

4、virtual bool addChild (Node *child, float min, float max) 

说明:添加孩子结点,且在添加的同时指明显示该函数的范围。child为需要添加的孩子结点。min为最近距离可视,max为远距离,与近矩离配对。

5、virtual bool removeChildren (unsigned int pos, unsigned int numChildrenToRemove=1)

 说明:移除某一个孩子结点,从pos个结点,移除numChildRenToR个。pos为第pos个孩子后开始移除。numChildrenToRemove为移除的孩子个数。默认为1个

6、void setCenterMode (CenterMode mode) 

说明:使用中心点模式。用户可以指定中心点,默认会使用包围球中心点。指定中心点模式,有两种模式: USE_BOUNDING_SPHERE_CENTER USER_DEFINED_CENTER

7、CenterMode getCenterMode () const 

说明:得到设置的中心点模式,可能是包围球中心点,也可能是用户定义的。

8、void setCenter (const Vec3 &center) 

说明:设置中心点。

9、const Vec3 & getCenter () const 

说明:得到设置或者自动的中心点。

10、void setRadius (float radius) 

说明:设置半径。

11、float getRadius () const

说明:得到设置的半径。

12、void setRangeMode (RangeMode mode) 

说明:设置范围的计算模式。可以是实际矩离,也可以是像素值。设置显示范围的计算模式。可以是以下两种:DISTANCE_FROM_EYE_POINT PIXEL_SIZE_ON_SCREEN

13、RangeMode getRangeMode () const

 说明:得到范围的计算模式。

14、void setRange (unsigned int childNo, float min, float max) 

说明:设置第childNo个孩子的显示范围。childNo为设置第childNo个孩子的显示范围。min为显示近距,max为显示远距

15、float getMinRange (unsigned int childNo) const

说明:得到第childNoe个孩子的最小显示距离。第childNo个孩子的最近显示距离。

16、float getMaxRange (unsigned int childNo) const 

说明:得到第childNoe个孩子的最大显示距离。

17、unsigned int getNumRanges () const 

说明:得到有多少个显示范围。可有很多的显示段。

18、void setRangeList (const RangeList &rangeList) 

说明:设置显示范围列表。

19、const RangeList & getRangeList () const

 说明:得到显示范围列表。

20、virtual BoundingSphere computeBound () const 

说明:得到包围球。

三、osgSim::Impostor类

类说明:用图代替模型的LOD技术。

1、Impostor () 

      Impostor (const Impostor &es, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY) 

说明:构造函数。第二个从已有的Imposter中构造现在的Imposter。拷贝方式,默认为是浅拷贝,可以为深拷贝:DEEP_COPY_OBJECTS

2、virtual void traverse (osg::NodeVisitor &nv) 

说明:接受NoeVisitor向下遍历.

3、void setImpostorThreshold (float distance)

 说明:设置视矩阀值。如果不设置按LOD的算。distance为距离值

4、float getImpostorThreshold () const 

说明:得到设置的阀值。

5、void setImpostorThresholdToBound (float ratio=1.0f)

说明:设置该阀值与包围球半径的比率关系。

6、ImpostorSprite * findBestImpostorSprite (unsigned int contextID, const osg::Vec3 &currLocalEyePoint) const 

说明:找到一个当前视点看起来最合适的Sprite。contextID为上下文ID,currLocalEyePoint为当前局部视点。

7、void addImpostorSprite (unsigned int contextID, ImpostorSprite *is) 

说明:添加一个Sprite到contextID所指内容当中。

8、ImpostorSpriteList & getImpostorSpriteList (unsigned int contexID) const 

说明:得到ID为contextID的Sprite的列表。

9、virtual osg::BoundingSphere computeBound () const

 说明:计算包围球。

这篇关于17、osg::Camera,osg::LOD,osgSim::Impostor类函数说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/733542

相关文章

Java面试题:通过实例说明内连接、左外连接和右外连接的区别

在 SQL 中,连接(JOIN)用于在多个表之间组合行。最常用的连接类型是内连接(INNER JOIN)、左外连接(LEFT OUTER JOIN)和右外连接(RIGHT OUTER JOIN)。它们的主要区别在于它们如何处理表之间的匹配和不匹配行。下面是每种连接的详细说明和示例。 表示例 假设有两个表:Customers 和 Orders。 Customers CustomerIDCus

17.用300行代码手写初体验Spring V1.0版本

1.1.课程目标 1、了解看源码最有效的方式,先猜测后验证,不要一开始就去调试代码。 2、浓缩就是精华,用 300行最简洁的代码 提炼Spring的基本设计思想。 3、掌握Spring框架的基本脉络。 1.2.内容定位 1、 具有1年以上的SpringMVC使用经验。 2、 希望深入了解Spring源码的人群,对 Spring有一个整体的宏观感受。 3、 全程手写实现SpringM

【操作系统】信号Signal超详解|捕捉函数

🔥博客主页: 我要成为C++领域大神🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ 如何触发信号 信号是Linux下的经典技术,一般操作系统利用信号杀死违规进程,典型进程干预手段,信号除了杀死进程外也可以挂起进程 kill -l 查看系统支持的信号

java中查看函数运行时间和cpu运行时间

android开发调查性能问题中有一个现象,函数的运行时间远低于cpu执行时间,因为函数运行期间线程可能包含等待操作。native层可以查看实际的cpu执行时间和函数执行时间。在java中如何实现? 借助AI得到了答案 import java.lang.management.ManagementFactory;import java.lang.management.Threa

SQL Server中,isnull()函数以及null的用法

SQL Serve中的isnull()函数:          isnull(value1,value2)         1、value1与value2的数据类型必须一致。         2、如果value1的值不为null,结果返回value1。         3、如果value1为null,结果返回vaule2的值。vaule2是你设定的值。        如

tf.split()函数解析

API原型(TensorFlow 1.8.0): tf.split(     value,     num_or_size_splits,     axis=0,     num=None,     name='split' ) 这个函数是用来切割张量的。输入切割的张量和参数,返回切割的结果。  value传入的就是需要切割的张量。  这个函数有两种切割的方式: 以三个维度的张量为例,比如说一

神经网络第三篇:输出层及softmax函数

在上一篇专题中,我们以三层神经网络的实现为例,介绍了如何利用Python和Numpy编程实现神经网络的计算。其中,中间(隐藏)层和输出层的激活函数分别选择了 sigmoid函数和恒等函数。此刻,我们心中不难发问:为什么要花一个专题来介绍输出层及其激活函数?它和中间层又有什么区别?softmax函数何来何去?下面我们带着这些疑问进入本专题的知识点: 1 输出层概述 2 回归问题及恒等函数 3

神经网络第一篇:激活函数是连接感知机和神经网络的桥梁

前面发布的文章介绍了感知机,了解了感知机可以通过叠加层表示复杂的函数。遗憾的是,设定合适的、能符合预期的输入与输出的权重,是由人工进行的。从本章开始,将进入神经网络的学习,首先介绍激活函数,因为它是连接感知机和神经网络的桥梁。如果读者认知阅读了本专题知识,相信你必有收获。 感知机数学表达式的简化 前面我们介绍了用感知机接收两个输入信号的数学表示如下:

vscode python pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

在vscode中控制台运行python文件出现:无法将"pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 使用vscode开发python,需要安装python开发扩展: 本文已经安装,我们需要找的是python安装所在目录,本文实际路径如下: 如果在本文路径中没有此目录,请尝试在C盘中搜索 python,搜索到相关python目录后,点击Python 3.9进入目录,

Modbus初学者教程,第三章:modbus寄存器说明

第三章:modbus寄存器说明 寄存器种类 Modbus协议中一个重要的概念是寄存器,所有的数据均存放于寄存器中。Modbus寄存器是指一块内存区域。Modbus寄存器根据存放的数据类型以及各自读写特性,将寄存器分为4个部分,这4个部分可以连续也可以不连续,由开发者决定。寄存器的意义如下表所示。 Modbus协议定义了设备间的数据传输方式,包括数据格式和通信规则。Modbus寄存器是协议中用