osg自动生成法线的方法
来源:互联网 发布:matlab中矩阵归一化 编辑:程序博客网 时间:2024/05/28 15:20
所谓的法线是指 物品在光的照射下肉眼能看到的物体的面 而物体里面是看不到的。也就说,计算光照是运算需要法线。未设置法线那么一般情况是看不到物体的,处于一片漆黑状态。
注意自动算法向量要求是添加顶点顺序是逆时针
#include<osgDB/ReadFile>#include<osgViewer/Viewer>#include<osg/Node>#include<osg/Geode>#include<osg/Geometry>#include <osgUtil/SmoothingVisitor>osg::ref_ptr<osg::Node> createQuad();void main(){ osgViewer::Viewer viewer; osg::Group *root=new osg::Group(); root->addChild(createQuad().get()); viewer.setSceneData(root); viewer.realize(); viewer.run();}osg::ref_ptr<osg::Node> createQuad(){ osg::ref_ptr<osg::Geometry> geom=new osg::Geometry; //首先定义四个点 osg::ref_ptr<osg::Vec3Array> v=new osg::Vec3Array; geom->setVertexArray(v.get()); v->push_back(osg::Vec3(-1.f,0.f,-1.f)); v->push_back(osg::Vec3(1.f,0.f,-1.f)); v->push_back(osg::Vec3(1.f,0.f,1.f)); v->push_back(osg::Vec3(-1.f,0.f,1.f)); //定义颜色数组 osg::ref_ptr<osg::Vec4Array> c=new osg::Vec4Array; geom->setColorArray(c.get()); geom->setColorBinding(osg::Geometry::BIND_PER_VERTEX); c->push_back(osg::Vec4(1.f,0.f,0.f,1.f)); c->push_back(osg::Vec4(0.f,1.f,0.f,1.f)); c->push_back(osg::Vec4(0.f,0.f,1.f,1.f)); c->push_back(osg::Vec4(1.f,1.f,1.f,1.f)); //设置定点关联方式 geom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS,0,4)); //方法一 //手动定义法线 osg::ref_ptr<osg::Vec3Array> n=new osg::Vec3Array; geom->setNormalArray(n.get()); geom->setNormalBinding(osg::Geometry::BIND_OVERALL); n->push_back(osg::Vec3(-2.f,-1.f,10.f)); //方法二 //自动生成法线
//注意这里自动生成法向量是按逆时针即右手定则类似 //osgUtil::SmoothingVisitor::smooth(*(geom.get()));//自动生成法线 osg::ref_ptr<osg::Geode> geode=new osg::Geode; geode->addDrawable(geom.get()); return geode.get();}
阅读全文
0 0
- osg自动生成法线的方法
- 法线贴图的生成
- DXT5 的法线压缩方法
- OSG 学习第四天:自动生成纹理
- 关于生成地形的法线问题
- 自动生成编号的方法
- 自动生成POJO的方法
- OSG的traverse()方法解析
- OpenGL 法线自动规范化
- 自动计算顶点缓冲中所有顶点的法线
- 自动计算顶点缓冲中所有顶点的法线
- 切线空间法线贴图生成和应用的理解
- asp自动生成html文件的方法
- VS2005中自动生成属性的方法
- ASP自动生成编号的方法
- asp自动生成html文件的方法
- Oracle自动生成id的方法
- c#自动生成网页缩略图的方法
- Android Interpolator(插值器)的介绍和使用
- Yarn 安装
- C++基础知识点
- 复习
- 方法:自定义Xcode模板样式
- osg自动生成法线的方法
- Unity shader学习笔记 (二)
- java中怎么调用sort方法
- Kotlin-Android世界的一股清流-Class类
- php post提交失败,但是get正常
- UVA 10954 Add All(Huffman编码)
- FindBugs错误整理
- hadoop2.4.1伪分布式搭建
- Unity协程的yield & C#的yield关键字