对一个三维场景中的物体实现描边特效,可以参考osg范例osgoutline

这个描边特效使用了模板缓存Stencil来实现,参见源代码osgFX/Outline.cpp

使用了两个Pass

第一个Pass绘制第一遍模型,将模型覆盖的模版区域写入值1

第二个Pass绘制第二遍模型,并且用线框模式(PolygonMode::LINE)绘制,设置线宽(例如10),可以绘制的条件是在模版值不等于1的地方

这样由于线宽的缘故,最外侧的线框就保留了一半,看起来就是模型的轮廓

以上的实现的描边效果是可以被遮挡的,就是说如果描边物体前面有个物体,描边效果将被遮挡

如果想实现描边效果不被遮挡(类似于描边关闭深度检测),需要修改源代码

osgFX/Outline.cpp中的119行附近

stencil->setOperation(osg::Stencil::KEEP,osg::Stencil::KEEP,osg::Stencil::REPLACE);

修改为

stencil->setOperation(osg::Stencil::KEEP,osg::Stencil::REPLACE,osg::Stencil::REPLACE);

也就是在深度测试失败的时候,深度缓存写入1

osgFX/Outline.cpp中的146行附近,关闭深度测试(源代码中注释掉的那一行)

//state->setMode(GL_DEPTH_TEST,Override_Off);

修改为

state->setMode(GL_DEPTH_TEST,Override_Off);

为了应对有些模型的描边颜色是黑色的问题,需要将setColor中的_material全部设置成需要的描边色

第二个pass中,cullFace->setMode(BACK)比较靠谱

polyMode->setMode(FRONT,LINE)比较靠谱

有些模型用到了两个纹理单元,会引起描边颜色变暗的问题

可以在state->setTextureMode(0,GL_TEXTURE_2D,OFF)之后添加

state->setTextureMode(1,GL_TEXTURE_2D,OFF)

OSG描边特效osgFX::Outline的修改的更多相关文章

  1. osg轮廓特效 【转】

    // -*-c++-*- /* * OpenSceneGraph - Copyright (C) 1998-2003 Robert Osfield * * This library is open s ...

  2. osg复制多个相同物体修改材质属性问题

    转自http://www.cnblogs.com/ylwn817/articles/2153982.html 当通过osg复制多个相同物体时候,修改复制过来的某个物体材质属性时候,假设我们物体透明度, ...

  3. OSG报警特效学习总结

    方法一:粒子系统         OSG的粒子系统有自己定义好的模块,如osgParticle::ExplosionEffect(爆炸模拟):osgParticle::SmokeEffect(烟雾模拟 ...

  4. android系统特效详解和修改方法

    安卓系统特效相关文件:  存在于:framework-res.apk   反编译后的\framework-res\res\anim文件夹内!anim文件夹下所有的文件都是特效文件原理  反编译fram ...

  5. [原][osg][粒子特效]spark粒子特效生成流程

  6. OSG选中效果展示

    <OpenSceneGraph三维渲染引擎编程指南>书中选中高亮效果示例.osgFX特效 2.得到鼠标的位置 osgFX特效1.高亮,在开头的时候写了: 2.线框: #include< ...

  7. [OSG]OSG例子程序简介

    1.example_osganimate一)演示了路径动画的使用(AnimationPath.AnimationPathCallback),路径动画回调可以作用在Camera.CameraView.M ...

  8. osg实例介绍

    osg实例介绍 转自:http://blog.csdn.net/yungis/article/list/1 [原]osgmotionblur例子 该例子演示了运动模糊的效果.一下内容是转自网上的:原理 ...

  9. OSG中的示例程序简介

    OSG中的示例程序简介 转自:http://www.cnblogs.com/indif/archive/2011/05/13/2045136.html 1.example_osganimate一)演示 ...

随机推荐

  1. Chrome上网问题解决记录

    浏览器打开网站缓慢,甚至等待很久后直接烂页面 注意观察浏览器左下角会显示: 正在建立安全连接... 环境: 操作系统:Win10 Chrome版本: 69.x 解决办法:http://bbs.360. ...

  2. 2016年Godaddy最新域名转出教程

    2016年Godaddy最新域名转出教程 http://godaddy.idcspy.com/godaddy-newest-domain-zhuanchu HostEase注册的域名转入和转出 htt ...

  3. UnityEditor研究学习之EditorWindow

    在unity使用过程中,其实我们都是在各个不同功能的Window下工作. 比如在Scene窗口中操作物体,在Inspector中操作物体属性,在Game视窗中观察游戏状态. 所以窗口是Unity的灵魂 ...

  4. 加密入门(三):TrueCrypt(转)

    http://terrychen.info/encryption-truecrypt/ TrueCrypt 是一款功能强大的开源加密工具,利用 TrueCrypt 可以创建一个加密文件作为虚拟加密卷, ...

  5. pytorch中检测分割模型中图像预处理探究

    Object Detection and Classification using R-CNNs 目标检测:数据增强(Numpy+Pytorch) - 主要探究检测分割模型数据增强操作有哪些? - 检 ...

  6. Shiro基础知识03----shiro授权(编程式授权),Permission详解,授权流程(zz)

    授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等).  在权限认证中,最核心的是:主体/用户(Subject).权限(Permission).角色(Role).资源 ...

  7. ANY 和 IN 查询价格大于或等于"超级本"价格的商品,并且按价格降序排列

    -- 查询价格大于或等于"超级本"价格的商品,并且按价格降序排列 //ANY用法 //与比较操作符联合使用,表示与子查询返回的任何值比较为 TRUE ,则返回 TRUE //简单案 ...

  8. VBScript.RegExp 正则表达式excel vba 学习经验

    1) 手动引用(前期绑定)   点击VBE编辑器菜单:工具 - 引用,选取: Microsoft VBScript Regular Expressions 5.5   Dim regex As New ...

  9. 解决ScrollView嵌套RecyclerView出现item显示不全的问题

      问题:ScrollView嵌套RecyclerView时,RecyclerView的item显示不全 出现问题不要慌,耐心解决才是王道,哈哈.首先说下出现这个问题的情景吧,首先声明这个问题在23版 ...

  10. Ubuntu 13.10 安装Terminalx 后更改默认终端设置

    1.安装 terminalx, sudo apt-get install terminator 2.Ctrl+ Alt + t 试一下打开什么终端,我的默认启动的是Terminator;如果想换换默认 ...