OSG学习:多重纹理映射】的更多相关文章

osg学习示例之遇到问题四骨骼动画编译osgCal 转自:http://blog.csdn.net/wuwangrun/article/details/8239451 今天学到书<OpenSceneGraph三维渲染引擎编程指南>的骨骼动画示例,遇到了编译osgCal问题,书上说的不详细,网上就查到一遍相关文章 http://www.cnkinect.com/thread-15697-1-1.html 写的挺完整,我照着做基本没大问题,这里自己在他的文章基础上重新整理总结了一下 1. 编译Ca…
一.介绍 之前学习了如何绘制物体,还画了个DX自带的茶壶,然而这个东东并不怎么好看....离我们现实的物体简直相隔千里. 仅仅能说像美术他们用来写生的模型...那么要怎么样才干让我们的东西看起来更像真实的物体呢?这个就要用到今天学习的纹理映射技术了... 纹理映射(Texture Mapping),又称纹理贴图.是将纹理空间中的纹理像素映射到屏幕空间中的像素的过程.简单来说.就是把一幅图像贴到三维物体的表面上来增强真实感,能够和光照计算.图像混合等技术结合起来形成很多很美丽的效果. 总之.纹理映…
#include<osgViewer\Viewer> #include<osg\Node> #include<osg\Geode> #include<osg\Geometry> #include<osg\Texture2D> #include<osg\TexGen> #include<osg\TexEnv> #include<osgDB\ReadFile> #include<osgDB\WriteFile…
多重纹理就把多张贴图隔和在一起.比如下面示例中,一个表现砖墙的纹理,配合一个表现聚光灯效果的灰度图,就形成了砖墙被一个聚光灯照亮的效果,这便是所谓的光照贴图技术. 多重纹理只在OpenGL扩展库中才提供的.OpenGL和D3D比较起来,最大的一个优点是有扩展机制. 显卡硬件厂商开发出一项新功能,就可以针对新功能开发OpenGL扩展,软件开发人员通过这个扩展就可以使用新的硬件功能,而不用等新的OpenGL版来公布才能使用这个新功能.而D3D则必须等到新版本的DirectX发布后才能支持硬件的新功能…
虽然出生的时候,没有说过“Hello World!”,但是自从走上了编程之路,每一次输出“Hello World!”的时候,都觉得好比中了彩票大奖似的: 仔细算算,从2012年暑假到现在,经历了3年半的光阴,这段时间,不仅是知识.阅历.成长获得最大的一段,也是人生的一大转折点.在这期间,得以继续深造学习自己的专业,虽然踏入这行的时候,也是调剂来的,但是我用这3年的时间,恶补自己7年的不足:2015年,发生了三件大事,我毕业了,我工作了,我有女票了(三件事的重要程度递增):吃得苦中苦,方位人上人,…
osg::Geode (geometry node) osg::Geode类表示场景中的渲染几何叶节点,它包含了渲染用的几何信息,没有子节点. 要绘制的几何数据保存在osg::Geode管理的一组osg::Drawable对象中.osg::Drawable是一个接口,它有很多实现类渲染模型,图像,文本到OpenGL管线.这些可渲染统称为drawables. osg::Geode提供了几个方法来绑定和解绑drawables: addDrawable() removeDrawable(), remo…
ArgumentParser主要负责命令行参数的读取 #include <osgDB/ReadFile> #include <osgViewer/Viewer> int main(int argc, char **argv) { //命令行参数读取 osg::ArgumentParser arguments(&argc, argv); std::string filename; arguments.read("--model", filename); o…
接着上一篇博客说. 还有一种裁剪的方法:osg::Scissor类. 这个类封装了OpenGL中的glScissor()函数. 该类主要用于设置一个视口裁剪平面举行.设置裁剪平面举行的函数如下: void setScissor(int x, int y, int width, int height) //参数表示一个平面举行的信息(左下角坐标.宽度和高度) 上面的代码同样只是设置了一个视口裁剪平面举行,如果要启用该裁剪平面,可以用下面的方法: root->getOrCreateStateSet(…
在OSG中,默认了6个裁剪平面以去除没有必要显示的物体.也可以自己定义其他的裁剪平面来确定裁剪. osg::ClipPlane类继承自osg::StateAttribute类,封装了OpenGL中的glClipPlane()函数. 在类的成员函数中,设置裁剪平面的有下面几个函数: void setClipPlane(const Plane &plane) void setClipPlane(double a, double b, double c, double d) void setClipP…
在很多时候,直接指定纹理坐标是非常不方便的,如曲面纹理坐标,只有少数的曲面(如圆锥.圆柱等)可以在不产生扭曲的情况下映射到平面上,其他的曲面在映射到表面时都会产生一定程度的扭曲.一般而言,曲面表面的曲率越大,纹理所需要的扭曲度就越大.这时,直接指定纹理坐标可能是一件非常困难的事情了. 下面的示例,通过一个纹理坐标生成器(继承自osg::NodeVisitor访问器)遍历模型的所有顶点及法线,然后根据顶点.法线及一定的比例来确定纹理坐标. #include <osgViewer/Viewer>…