OSG中的示例程序簡介

 

1.example_osganimate
一)演示了路徑動畫的使用(AnimationPath、AnimationPathCallback),路徑動畫回調能夠做用在Camera、CameraView、MatrixTransform、PositionAttitudeTransform等四種類型的節點上。
二)演示了osgSim::OverlayNode的使用node

2.example_osganimationeasemotion
一)演示了osgAnimation::EaseMotion的使用,EaseMotion能夠用於表達位移、速度值隨時間的變化狀況,經過不一樣的模板參數(functor),實現了不一樣的變化曲線。
二)程序中用到了一個使用osgWidget構造的彈出式菜單。算法

3.example_osganimationhardware
一)演示了在osgAnimation::RigGeometry中使用自定義RigTransformImplementation的方法。
二)能夠參考程序中獲取骨骼動畫模型包含的動畫列表的方法。數據庫

4.example_osganimationmakepath
一)演示了osgAnimation::Sampler採樣器的使用,更新物體顏色(vec4)、物體位置(vec3)。Sampler派生模板類用於在一組已知離散數據樣本的基礎上,進行插值計算,獲得連續數據。經過模板參數支持多種插值方法。
二)在更新物體位置這方面,與路徑動畫AnimationPath相似,但它須要本身寫回調來更新節點矩陣,好處是可以使用更靈活的方式來進行數據採樣,而AnimationPath只能進行線性內插。canvas

5.example_osganimationmorph
一)演示了利用osgAnimation::MorphGeometry實現幾何體變形動畫的方法。windows

6.example_osganimationnode
一)同osganimationmakepath演示的功能基本相同。緩存

7.example_osganimationskinning
一)演示了使用osgAnimation::Skeleton、osgAnimation::Bone構建骨骼,使用osgAnimation::Animation、osgAnimation::Channel構建動畫,使用osgAnimation::RigGeometry構建蒙皮,以及使用osgAnimation::BasicAnimationManager播放骨骼動畫的流程。能夠作爲學習osgAnimation骨骼動畫實現結構的參考。數據結構

8.example_osganimationsolid
一)演示了利用多個Channel對一個物體進行運動控制(最終落實到更新MT節點的矩陣)。與示例osganimationmakepath的區別在於,這裏使用了osgAnimation::Channel、osgAnimation::Animation、osgAnimation::UpdateMatrixTransform,對同一個物體應用了多個運動控制的疊加。app

9.example_osganimationtimeline
一)演示了osgAnimation中的時間線控制。osgAnimation::Timeline、osgAnimation::TimelineAnimationManager。timeline是作什麼用的?iview

10.example_osganimationviewer
一)演示了osgAnimation骨骼動畫的加載及播放控制,能夠在多個動做間切換,但播放多個動做、動做暫停等方面彷佛很差使。
二)程序中出現了一個使用osgWidget構建的播放控制GUI,還有一個能夠滑入滑出的菜單,能夠做爲GUI構建的參考。ide

11.example_osgautocapture
一)一個自動截屏的示例程序,用到了自定義osgViewer::Renderer,osg::Camera::DrawCallback等。
二)裏面有一段用經緯高和方向角定位相機的代碼。

12.example_osgautotransform
一)演示了利用osg::AutoTransform實現自動的縮放、旋轉,從而達到按指定的效果自動面向屏幕。

13.example_osgbillboard
一)演示了osg::Billboard的使用。與AutoTransform的區別在哪裏?

14.example_osgblendequation
一)演示了osg::BlendEquation的不一樣配置對於渲染結果的影響。

15.example_osgcallback
一)演示了OSG中各類回調方法的使用。

16.example_osgcamera
一)演示了單窗口多相機(使用SlaveCamera)、多窗口多相機(一個Viewer,多個GraphicsContext,多個Camera做爲Slave添加到viewer下)、多屏幕多窗口。

17.example_osgcatch
一)一個相似接蛋遊戲的小遊戲程序

18.example_osgclip
一)演示了osg::ClipNode(osg::ClipPlane)的使用。

19.example_osgcluster
一)多機同步的演示

20.example_osgcompositeviewer
一)演示了osgViewer::CompositeViewer的使用

21.example_osgcopy
一)演示了osg中clone操做的使用,以及osg::CopyOp的自定義用法。

22.example_osgcubemap
一)演示如何使用高光貼圖加強模型顯示效果。高光貼圖使用的立方體貼圖(osg::TextureCubeMap),高光CubeMap使用osgUtil::HighlightMapGenerator自動生成。使用osg::TexGen以反射貼圖的方式自動生成紋理座標。並用osg::TexEnvCombine將高光貼圖與原始顏色混合(ADD)。
osgUtil::HighlightMapGenerator派生自osgUtil::CubeMapGenerator,還有其餘一些用途的立方體貼圖生成器。

23.example_osgdatabaserevisions
一)演示了分頁數據庫本地緩存及數據版本檢查的使用。

24.example_osgdelaunay
一)演示了DelaunayTriangulator的使用,用於對不規則網格點進行三角化處理。

25.example_osgdepthpartition
一)實現了一個派生自osg::Group的DepthPartitionNode節點類型,它能夠自動對子節點樹按照深度值進行劃分,用於解決大場景下深度緩衝的問題。

26.example_osgdepthpeeling
DepthPeeling

27.example_osgdistortion
一)演示了相似哈哈鏡的效果

28.example_osgdrawinstanced
一)演示了利用DrawArraysInstanced將一個四邊形面片渲染成若干小面片的方法。

29.example_osgfadetext
一)演示了osgText::FadeText的使用,並使用osg::ClusterCullingCallback實現文字的彙集剪裁(根據指定法線與視線對物體進行剪裁)。FadeText封裝了自動淡入淡出和自動進行互相間的遮擋技術的功能。

30.example_osgfont
一)演示了字體的使用

31.example_osgforest
一)演示了用多種技術方法實現森林的效果。首先對整個森林的全部樹木作分塊處理(cell),而後按照分塊結構,使用多種方式進行建模。對樹的建模使用的方法包括:Billboard、Shader、十字面片等。

32.example_osgfpdepth
一)演示了使用深度緩衝相關的應用。floating point depth buffer? invert the depth buffer?

33.example_osgfxbrowser
一)演示了使用osgFX建立的幾種特殊渲染效果,使用osgFX::Effect管理各類效果。包括的效果有:AnisotropicLighting、BumpMapping、Cartoon、Outline、Scribe、SpecularHighlights。

34.example_osggameoflife
一)演示了一種叫作"Ping-Pong"的渲染技術,它是指利用FBO和兩張紋理對象,在着色程序中以一個紋理爲輸入把計算結果寫入另外一個紋理,而後反轉輸入輸出紋理再進行相同的操做,如此迭代。
二)其中用到的"GameOfLife"是使用Ping-Pong處理圖片並輸出的一個示例。

35.example_osggeodemo
一)演示了.geo文件的加載,以及geo模型的動畫更新。
二)GEO PRO是CarbonGraphics出品的一個建模工具,.geo文件是它的模型文件格式。

36.example_osggeometry
一)演示了osg::Geometry(幾何體)的各類構造方法。

37.example_osggeometryshades
一)演示瞭如何利用GeometryShader程序動態改變幾何體的繪製,示例中把一個點繪製成不斷變化的十字線。

38.example_osggpx
一)演示了一個跟蹤路徑的數據結構,以及使用osgDB::XmlParser對它的讀寫。

39.example_osggraphicscost
一)演示了osg::GraphicsCostEstimator的使用,osg::GraphicsCostEstimator用來評估編譯/繪製幾何體、紋理、着色程序、節點所須要的時間。

40.example_osghangglide
一)演示了使用程序構建場景的過程。
二)實現了一個滑行漫遊器。

41.example_osgimagesequence
一)演示了使用osg::ImageSequence做爲紋理貼圖,並經過osg::ImageStream接口進行貼圖動畫播放控制的方法。ImageSequence貼圖的加載有多種控制方案。

42.example_osgimpostor
一)演示了osgSim::Impostor的使用。Impostor節點的做用彷佛是,經過在一些狀況下,把物體渲染結果保存爲紋理,然後經過渲染紋理代替渲染物體,以達到提升渲染效率的目的?
二)實現了一個自定義的漫遊器。

43.example_intersection
一)演示並對別了多種求交計算的方法,如osgSim::LineOfSight、osgSim::HeightAboveTerrain、osgSim::ElevationSlice、osgUtil::IntersectorGroup。

44.example_osgkdtree
一)演示了kdtreee的使用。OSG可以在讀取模型文件時自動構建kdtree。

45.example_keyboard
一)演示了鍵盤輸入消息的處理。

46.example_keyboardmouse
一)演示了鼠標、鍵盤消息的處理。

47.example_osglauncher
一)一個三位的程序導航菜單。爲每一個例子程序構造一個立方體對象,經過即時的求交計算斷定當前選中的對象,從而關聯一個例子程序並啓動執行。

48.example_osglight
一)演示了光照的使用。

49.example_osglightpoint
一)演示了osgSim::LightPoint、osgSim::LightPointNode的使用。

50.example_osglogicop
一)演示了osg::LogicOp(glLogicOp)的使用。

51.example_osglogo
一)演示了logo的製做。

52.example_osgmanipulator
一)演示了osgManipulator中各類拖拽器(Dragger)的使用。

53.example_osgmemorytest
一)一些GL操做的測試。

54.example_osgmotionblur
一)演示瞭如何利用累積緩衝區(accumulation buffer)實現一個簡單的運動模糊(motion blur)效果。

55.example_osgmovie
一)演示了視頻播放的功能。須要使用視頻讀取插件,如osgdb_quicktime、osgdb_ffmpg

56.example_osgmultiplerendertargets
一)演示瞭如何使用RTT(Render To Texture)、MRT(Multiple Render Targets)。

57.example_osgmultitexture
一)演示了多重紋理的使用。

58.example_osgmultitexturecontrol
一)演示了osgFX::MultiTextureControl的使用。

59.example_osgmultiviewpaging
一)多視口分屏的演示。

60.example_osgoccluder
一)演示了osg::ConvexPlanarOccluder的使用。

61.example_osgocclusionquery
一)演示了osg::OcclusionQueryNode的使用。

62.example_osgoit
一)depth peeling的使用。

63.example_osgoutline
一)演示了使用osgFX::Outline繪製物體外輪廓線的方法。

64.example_osgpackeddepthstencil
一)osg::Camera::PACKED_DEPTH_STENCIL_BUFFER的使用。

65.example_osgpagedlod
一)演示了利用osg::PagedLOD實現層次細節及流式加載。

66.example_osgparametric
一)演示了使用頂點着色程序(Vertex Shader Program)實現簡單的變形動畫。

67.example_osgparticle
一)幾個粒子效果的演示,並使用了自定義osgParticle::Operator的方法控制粒子運動。

68.example_osgparticleeffects
一)演示了osgParticle中幾個預約義Effect的效果,包括爆炸、爆炸碎片、煙、火等。

69.example_osgparticleshader
一)osgParticle實現的一個噴泉效果

70.example_osgpdf
使用osgWidget::PdfReader讀取並顯示pdf文檔的例子,須要有相應插件支持。

71.example_osgphotoalbum
一個3D相冊演示程序?實現了一種把多個圖片文件合併到一個相冊文件中的格式。

72.example_osgpick
經過求交計算進行拾取判斷的一個例子。

73.example_osgplanets
天體運行的一個示例程序,其中使用billboard爲太陽製做了大氣層效果。

74.example_osgpoints
演示了使用點精靈(osg::PointSprite)繪製點,以及設置點大小。

75.example_osgpointsprite
使用點精靈繪(osg::PointSprite)制點雲的示例。

76.example_osgposter
演示了渲染大分辨率圖片(high-resolution image)的方法。

77.example_osgprecipitation
演示了osgParticle::PrecipitationEffect實現的雨、雪效果。

78.example_osgprerender
演示了渲染到紋理(RTT)的使用。在PRE_RENDER時把場景渲染到紋理上,再使用這個紋理渲染主場景。

79.example_osgprerendercubemap
演示了使用立方體貼圖(osg::TextureCubeMap)實現環境反射的方法。

80.example_osgrefelect
演示了一個鏡面反射效果的實現。

81.example_osgrobot
演示了一個由矩陣節點樹構形成的多關節機器人。

82.example_osgscalarbar
演示了使用osgSim::ScalarBar實現的顏色標尺效果。

83.example_osgscreencapture
演示了利用osg::Camera::DrawCallback派生類實現截屏的方法。

84.example_osgscribe
在模型表面附加網格線的效果,利用osg::PolygonMode和osg::PolygonOffset實現,與osgSim::Scribe效果和原理一致。

85.example_osgsequence
演示了序列化播放多個模型的效果,利用osg::Sequence節點實現。

86.example_osgshadercomposition
演示了着色程序組合(ShaderComposition)的使用,用到osg::ShaderAttribute

87.example_shadergen
演示了利用osgUtil::ShaderGenVisitor生成替換固定功能管線的GLSL代碼。

88.example_osgshaders
演示了Data\shaders目錄下幾個shader代碼文件的使用。

89.example_osgshaderterrain
一個在着色程序中經過紋理採樣計算地形高程來生成地形的示例。

90.example_osgshadow
包含多種實時陰影算法實現的陰影效果演示程序。

91.example_osgshape
利用osg::ShapeDrawable構建經常使用幾何體的演示。

92.example_sharedarray
演示了以自定義數據結構構造幾何體的方法,派生osg::Array類。

93.example_osgsidebyside
osgSim::MultiSwitch、osgSim::DOFTransform節點的控制。單窗口多視口的使用。

94.example_osgsimplifier
演示了使用osgUtil::Simplifier對模型進行簡化的方法。

95.example_osgsimulation
演示了節點跟蹤漫遊器(osgGA::NodeTrackerManipulator)的使用。

96.example_osgslice
應該是很老的一個示例,還在直接使用osgUtil::SceneView,沒有連接osgViewer庫,因此窗口GC調用失敗,不能運行。

97.example_osgspacewarp
使用一個小技巧實現點在相機運動狀況下觀察變成線的效果(相似虛影的效果)。小技巧是,對於每一個點,也繪製一條線,線的一個端點始終在點的當前位置上,另外一個端點使用點在上一幀的位置。

98.example_osgspheresegment
使用osgSim::SphereSegment繪製弧面的例子。

99.example_osgspotlight
演示了聚光燈的使用。osg::LightSource

100.example_osgstereoimage
演示了生成立體圖片的方法。

101.example_osgstereomatch
左右眼圖像立體匹配的示例,使用Data\images目錄下的狗的圖片運行。

102.example_osgteapot
使用osg::Drawable派生類封裝經典的glut_teapot的繪製。

103.example_osgterrain
動態控制地形參數的示例,使用osgTerrain::Terrain。

104.example_tessellate
演示了鑲嵌(tessellation)的使用,osgUtil::Tessellator。

105.example_osgtext
演示了文字的各類使用方式,osgText::Text。

106.example_osgtext3D
演示了立體文字的使用,osgText::Text3D。

107.example_osgtexture1D
演示了一維紋理的使用osg::Texture1D,紋理座標生成節點osg::TexGenNode。

108.example_osgtexture2D
演示了二維紋理的使用osg::Texture2D,並經過更新回調演示了紋理在不一樣紋理過濾方式(filter)、紋理環繞模式(wrap)、各項異型係數(anisotropic)下的不一樣效果。

109.example_osgtexture3D
演示了三維紋理的使用osg::Texture3D。示例中用多張二維圖片組裝出一個三維紋理對象,在頂點數據中指定s、t兩個紋理座標,而使用osg::TexGen單獨生成紋理座標r(TexGen能夠用來獨立的生成某一維的紋理座標),經過在更新回調中更新TexGen的參數動態更新紋理座標r,因爲紋理過濾方式使用的線性過濾,從而獲得的效果是在多張紋理間平滑切換。

110.example_osgtexturecompression
演示了多種壓縮格式(InternelFormatMode)的對比效果。同時有多視口osgViewer::CompositeViewer的使用。

111.example_osgtexturerectangle
演示了矩形紋理osg::TextureRectangle的使用,矩形紋理的紋理座標範圍必須爲圖片像素範圍,而且環繞模式不支持重複,不支持邊框和mipmap。

112.example_osgthirdpersonview
使用osgViewer::CompositeViewer構建多窗口視圖,並在第二個窗口中繪製第一個窗口相同的場景的同時繪製出第一個窗口相機的視錐體。

113.example_osgthreadedterrain
一)使用增量編譯osgUtil::IncrementalCompileOperation,避免加載大模型時形成的幀率降低。
二)osgTerrain::Layer、osgTerrain::TerrainTile的使用。

114.example_osguniformbuffer
演示了osg::UniformBufferObject的使用。

115.example_osgunittests
單元測試代碼。

116.example_osguserstats
演示瞭如何在OSG的統計信息顯示界面中顯示用戶自定義的統計信息。

117.example_osgvertexattributes
演示了在着色程序中使用頂點屬性(VertexAttribute)。

118.example_osgvertexprogram
使用立方體貼圖(CubeMap)和頂點着色程序(VertexShader)實現環境反射的例子,同時提供了一個天空盒的實現。

119.example_osgviewerGLUT
OSG與GLUT窗口系統的結合。

120.example_osgviewerMFC
OSG與MFC的結合。

121.example_osgvirtualprogram
着色程序的使用。

122.example_osgvolume
三維紋理和體渲染的示例。

123.example_osgwidgetaddremove
osgWidget動態添加和刪除Widget的示例,有鼠標事件的自定義處理。

124.example_osgwidgetbox
osgWidget::Box的使用,以及拖拽處理。

125.example_osgwidgetcanvas
osgWidget::Canvas的使用。

126.example_osgwidgetframe
osgWidget::Frame的使用,可以拖動左右下及角上的邊框改變Widget大小,拖動上側的邊框移動Widget。

127.example_osgwidgetinput
接收文字輸入的osgWidget::Input的使用。

128.example_osgwidgetlabel
文字標籤osgWidget::Label的使用。

129.example_osgwidgetmenu
使用osgWidget構造菜單的示例。

130.example_osgwidgetmessagebox
使用osgWidget::Frame、osgWidget::Box、osgWidget::Label等構建的MessageBox的示例。

131.example_osgwidgetnotebook
使用osgWidget構造的帶Tab的記事本。

132.example_osgwidgetperformance
osgWidget效率測試。

133.example_osgwidgetscrolled
經過設置鼠標滾輪消息回調處理函數處理滾輪消息,實現osgWidget窗口的滾屏。

134.example_osgwidgetshader
對Widget使用着色程序渲染。

135.example_osgwidgetstyled
osgWidget::Style的使用。

136.example_osgwidgettable
表格osgWidget::Table的使用。

137.example_osgwidgetwindow
LUA腳本的使用。

138.example_osgwindows
多窗口拼接的示例。

139.example_osganalysis場景分析?

相關文章
相關標籤/搜索