细读cow.osg

细读cow.osg

转自:http://www.cnblogs.com/mumuliang/archive/2010/06/03/1873543.html

对,就是那只著名的奶牛。

//Group节点,可有子节点。
Group {

UniqueID Group_0         //Gourp名称
DataVariance STATIC   //不知道用来干嘛,一般都是static
cullingActive TRUE      //参与culling?
num_children 1               //子节点数

Geode {   //子节点是Geode节点(Geode节点是叶节点,它不会再有子节点,可以与任意多个Drawable的对象关联)

DataVariance DYNAMIC
    name "cow.osg"              //Geode名称,应该是模型路径吧
    cullingActive TRUE       //参与culling
    num_drawables 1           //可绘制元素Drawable对象的数目,1

Geometry {   //Drawable :Gemetry,是可绘制对象类型之一。用指定顶点数据,绘制几何体。

DataVariance DYNAMIC

StateSet {   //渲染状态。分为渲染属性和渲染模式两部分。是个状态值,直到子节点重新设置前,它的值一直沿节点树向下有效。
        DataVariance STATIC
        rendering_hint OPAQUE_BIN    //和渲染有关的
        renderBinMode INHERIT            //和渲染有关的
        GL_CULL_FACE OFF                 //和裁剪有关的
        GL_LIGHTING ON                       //和裁剪有关的

Material {   //材质
          DataVariance STATIC
          ColorMode OFF                    //光的啥啥
          ambientColor 0.5 0.5 0.5 1     //环境光
          diffuseColor 1 1 1 1               //漫反射
          specularColor 1 1 1 1             //镜面反射
          emissionColor 0 0 0 1            //自发光
          shininess 1                              //????????
         } ////材质结束

textureUnit 0 { //纹理单元,1,可以多个。序数依次。

GL_TEXTURE_GEN_S ON   //啥啥啥???
          GL_TEXTURE_GEN_T ON   //啥啥啥???
          GL_TEXTURE_2D ON           //啥啥啥???

Texture2D {    //2D的贴图
            DataVariance STATIC
            file "Images/reflect.rgb" //贴图文件
            wrap_s REPEAT             //repeat嘛,很容易懂
            wrap_t REPEAT
            wrap_r REPEAT
            min_filter NEAREST_MIPMAP_LINEAR //什么filter
            mag_filter LINEAR                                        //另一个filter
            internalFormatMode USE_IMAGE_DATA_FORMAT //??
            subloadMode OFF                                                               //??
          }////Texture结束

TexGen {   //贴图坐标?
            DataVariance STATIC
            mode SPHERE_MAP   //啥啥球面?——"环境反射贴图,选球面就可以了"?
          }////贴图坐标结束

}////纹理单元1结束

}////Geometry的stateset结束

useDisplayList TRUE    //显示模型的列表????

Primitives 1   //貌似是Gemotry的图元信息
      {
        DrawArrayLengths TRIANGLE_STRIP 0 984    //画几何面?985个?
        {
          3
          // 略一堆面?的数值。。。3是指3边形么?@[email protected]
        }
      } ////primitives完

VertexArray 7772   //顶点坐标
      {
        // 略一堆表示顶点的数值。
        0.701499 2.00244e-05 0.71267
        0.501693 4.00296e-05 0.865046
        0.465203 0.372921 0.802818
      }

NormalBinding PER_VERTEX     //法向量绑定方式,每个顶点
      NormalArray 7772                          //法向量数组
      {
        0.254622 -0.918791 -0.301648
        0.440603 -0.85537 -0.272417
        0.244499 -0.920072 -0.306084
      }

ColorBinding OVERALL      //Geometry的颜色绑定,啥意思我也不知。

ColorArray Vec4Array 1     //颜色的值
      {
        0.8 0.8 0.8 1
      }

TexCoordArray 0 Vec2Array 7772 //应该是修饰顶点的啥东西=.=
      {
        0 0
        // 略一堆。。。。。。数值。
      }

}////Geometry完

}////Geode完

}////Group完

1   总结一下  

一个根节点Group,名字叫Group0,它的属性和参数包括:
UniqueID
DataVariance
cullingActive
num_children
1个Geode

Geode,名字叫"cow.osg",它的属性参数包括

DataVariance
    name "cow.osg"
    cullingActive
    num_drawables
    1个Geometry

这1个Geometry的属性参数包括

DataVariance
      StateSet
      useDisplayList
      Primitives
      VertexArray
      NormalBinding 
      NormalArray 
      ColorBinding
      ColorArray
      TexCoordArray

其中StateSet又有

DataVariance STATIC
        rendering_hint
        renderBinMode
        GL_CULL_FACE
        GL_LIGHTING
        Material
         1个textureUnit

Material和textureUnit又有各自的blablabla.....

时间: 2024-11-11 00:41:41

细读cow.osg的相关文章

【OSG学习笔记之一:】OSG+VS2010+win7 64位环境搭建

虽然出生的时候,没有说过“Hello World!”,但是自从走上了编程之路,每一次输出“Hello World!”的时候,都觉得好比中了彩票大奖似的: 仔细算算,从2012年暑假到现在,经历了3年半的光阴,这段时间,不仅是知识.阅历.成长获得最大的一段,也是人生的一大转折点.在这期间,得以继续深造学习自己的专业,虽然踏入这行的时候,也是调剂来的,但是我用这3年的时间,恶补自己7年的不足:2015年,发生了三件大事,我毕业了,我工作了,我有女票了(三件事的重要程度递增):吃得苦中苦,方位人上人,

OSG+VS2010+win7环境搭建---OsgEarth编译

OSG+VS2010+win7环境搭建---OsgEarth编译 转:http://www.cnblogs.com/hnfxs/p/3161261.html Win7下 osg+vs2010环境搭建 一.相关准备 a) Osg源码 当前最新版:OpenSceneGraph的3.0.0.zip 下载链接: http://www.openscenegraph.org/downloads/stable_releases/OpenSceneGraph-3.0/source/OpenSceneGraph-

推荐一篇好文:OSG OSGearth vs2010编译

链接:http://weibo.com/p/2304189447a8480102v2c2 此文作者把用到的相关代码包放在:http://pan.baidu.com/s/1qW9a4zU 按照步骤操作完,目前我的OSG源代码版算是编译成功了. 在cmd中测试osg是否编译成功时,如果仅仅编译的是Debug版的话,那需要执行:osgviewerd cow.osg:如果是release版的话,那需要执行osgviewer cow.osg 至此,http://weibo.com/p/2304189447

Qt加载OSg视图例子

//QT += core gui opengl //LIBS += -losgViewer -losgDB -losgUtil -losg -lOpenThreads -losgGA -losgQt #include <QtGui/QApplication> #include <osg/ArgumentParser> #include <osgViewer/Viewer> #include <osgViewer/CompositeViewer> #inclu

Win8.1+vs2012+osg环境搭建

Win8.1+vs2012+osg环境搭建 一.    相关准备 a) Osg源码 当前最新版:OpenSceneGraph-3.2.0.zip 下载链接: http://www.openscenegraph.org/downloads/stable_releases/OpenSceneGraph-3.0/source/OpenSceneGraph-3.0.0.zip b) Osg第三方库 3rdParty_VS2012.3_v110_x86_x64_V8b_small.7z http://ww

OSG世界坐标转屏幕坐标(转载)

OSG世界坐标转屏幕坐标 #define M(row,col) m[col * 4 + row] void Transform_Point(double out[4], const double m[16], const double in[4]){    out[0] = M(0, 0) * in[0] + M(0, 1) * in[1] + M(0, 2) * in[2] + M(0, 3) * in[3];    out[1] = M(1, 0) * in[0] + M(1, 1) * i

osg for android (一) 简单几何物体的加载与显示

1. 首先需要一个OSG for android的环境. (1).NDK 现在Eclipse 对NDK已经相当友好了,已经不需要另外cygwin的参与,具体可以参考 Android NDK开发篇(一):新版NDK环境搭建(免Cygwin,超级快)  (2).osg for android的编译,参考 osg for android学习之一:windows下编译(亲测通过) 建议编译OpenGL ES2版本. 2.然后加载OSG自带的Example:osgAndroidExampleGLES2 (

OSG调试信息显示

调试信息显示 OSG 可以将各式各样的调试信息输出到std:cout.这在开发OSG 程序时十分有用,你可以借此观察OSG 的执行的各种操作.环境变量OSG_NOTIFY_LEVEL用于控制OSG调试信息显示的数量.你可以将此变量设置为七个不同的信息量层级之一:ALWAYS(最简略),FATAL,WARN,NOTICE,INFO,DEBUG_INFO以及DEBUG_FP(最详细).一个典型的OSG开发环境可以设置OSG_NOTIFY_LEVEL为NOTICE,如果要获取更多或者更少的输出信息,可

OSG配置问题

BUILD_OSG_ARAPPERS: 这一项要选,不然后面编译自己的测试程序的时候,会报无法打开文件"osgIntrospectiond.lib"错误. Could not find plugin to read objects from file "cow.osg"这个是要编译osgdb_rgbd.dll 可以在链接器->输入(或者命令行)中删除osgIntrospectiond.lib项即可.