细读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边形么?@v@
        }
      } ////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完

总结一下  

一个根节点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.....

细读cow.osg的更多相关文章

  1. [OSG][转]osg格式文件

    转自:http://blog.csdn.net/timothyfly/article/details/7826139 osg格式文件中如何处理多个节点共享一个子节点 下面一段程序中,共有三个Group ...

  2. osg矩阵变换节点-----平移旋转缩放

    osg矩阵变换节点-----平移旋转缩放 转自:http://www.cnblogs.com/ylwn817/articles/1973396.html 平移旋转缩放这个三个是osg矩阵操作中,最常见 ...

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

    链接:http://weibo.com/p/2304189447a8480102v2c2 此文作者把用到的相关代码包放在:http://pan.baidu.com/s/1qW9a4zU 按照步骤操作完 ...

  4. OSG配置问题

    BUILD_OSG_ARAPPERS: 这一项要选,不然后面编译自己的测试程序的时候,会报无法打开文件"osgIntrospectiond.lib"错误. Could not fi ...

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

    虽然出生的时候,没有说过“Hello World!”,但是自从走上了编程之路,每一次输出“Hello World!”的时候,都觉得好比中了彩票大奖似的: 仔细算算,从2012年暑假到现在,经历了3年半 ...

  6. osg osgDB::Options noTexturesInIVEFile ForceReadingImage dds_flip

    osgDB::writeNodeFile(node, path, new osgDB::Options("noTexturesInIVEFile")); noTexturesInI ...

  7. osg 纹理访问器

    #include<osgViewer/Viewer> #include<osg/Node>#include<osg/Geode>#include<osg/Gr ...

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

    OSG+VS2010+win7环境搭建---OsgEarth编译 转:http://www.cnblogs.com/hnfxs/p/3161261.html Win7下 osg+vs2010环境搭建 ...

  9. OSG第一个Demo

    环境:Vs2010 OpenSceneGraph-3.0.1-VS10.0.30319-x86-debug-12741 OpenSceneGraph-3.0.1-VS10.0.30319-x86-re ...

随机推荐

  1. 转:C#中TransactionScope的使用方法和原理

    在.net 1.1的时代,还没有TransactionScope类,因此很多关于事务的处理,都交给了SqlTransaction和SqlConnection,每个Transaction是基于每个Con ...

  2. 1JavaEE应用简介----青软S2SH(笔记)

    这本书主要是讲解Struts2,spring,Hibernate框架的, 因为工作中用的较多的是SpringMVC,Struts2用的较少,所以想系统学习一下,就买了这本书. 这本书是青软的,虽然是培 ...

  3. Java编程中“为了性能”需做的26件事

    1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: (1)控制资源的使用,通过线程同步来控制 ...

  4. Docker容器操作中常用命令集合

    docker pull 从仓库获取所需要的镜像 docker images 显示本地已有的镜像. docker commit 提交更新后的副本. docker build 创建一个新的镜像 ADD 复 ...

  5. hashicorp/consul

    https://github.com/hashicorp/consul/tree/master/vendor/github.com/boltdb/bolt

  6. 【Go入门教程2】内置基础类型(Boolean、数值、字符串、错误类型),分组,iota枚举,array(数值),slice(切片),map(字典),make/new操作,零值

    这小节我们将要介绍如何定义变量.常量.Go内置类型以及Go程序设计中的一些技巧. 定义变量 Go语言里面定义变量有多种方式. 使用var关键字是Go最基本的定义变量方式,与C语言不同的是Go把变量类型 ...

  7. Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解

    当网站访问量达到一定时,如何做Memcached集群,又如何高可用,是接下来要讨论的问题. 有这么一段文字来描述“Memcached集群” Memcached如何处理容错的? 不处理!:) 在memc ...

  8. 修复 ThinkPHP3.2.3 抛出异常模块的一个BUG,关闭字段缓存功能

    使用 ThinkPHP3.2.3 遇到一个奇怪的问题,正式环境上报错,提示 “页面错误!请稍后再试~” 为了查看到底出啥错误,哪里出错,于是在入口文件中加了一段代码,开启调试: defined('AP ...

  9. linux安装php & nginx

    1.安装libxml2 地址:http://ftp.gnome.org/pub/GNOME/sources/libxml2/ wget http://caesar.acc.umu.se/pub/GNO ...

  10. 交叉编译fftw

    交叉编译 fftw 使用的源码是 fftw-3.2.2-arm.tar.gz 新塘平台arm ./configure --prefix=/usr/local/fftw_arm --host=arm-l ...