继第一篇Voreen的文章介绍主流程以后,第二篇介绍Raycast的第一个绘制Pass,根据代理几何体绘制出入点出点。如上次所说,OptimizedProxyGeometry负责生成表示体数据的代理几何体,其输出是三角面片,而MeshEntryExitPoints以三角面片为输入,分别绘制出光线的起点图和终点图。体绘制的一些加速方法和剪切功能可通过生成不同形式的代理几何体实现。

最基本的方式是以体数据的长方体包围盒作为绘制的代理几何体,如下面左图所示,这样光线需要从包围盒的起点遍历到终点,很多经过传递函数映射以后alpha为0,对最终结果图没有贡献的大片区域,例如空气,都进行了光线遍历,效率比较低。很直观的一个加速做法是,将体数据进行一次预处理,分成一个一个的小盒子,并计算出每个小盒子的最大值最小值等统计信息,保存下来。绘制时,比较当前光线所经过的小盒子的最大值经传递函数映射是否已经alpha为0,如果是,则这个小盒子顶点信息将不加入最终MeshEntryExitPoints计算。右下图Voreen的参数Mode为Visible Bricks即这种空域跳转的加速算法,参数Resolution 32指的是小盒子的大小,面板中还加入了传递函数属性调节,根据算法原理,调节传递函数,进行出点入点计算的三角面片也会发生变化。此外,这个环节还可以加入六个正方位的Clipping功能,使能Enable Clipping,调整包围盒六个面即可。

在三角面片生成环节,还可以实现平面裁剪功能。如下图所示,拖动Plane Widget,使用最新的平面,截掉平面的另一侧。这是是通过Geometry Clipping这个Processor实现的,这个Processor的输入是三角面片,Processor内提供的是平面三角面片中三角形逐个裁剪的方法,它的输出也是三角面片。因此,输出的三角面片可以再次被其他平面进行裁剪,从而实现多个裁剪框,流程图如下所示。

大致分析完三角面片生成环节,我们再接着看MeshEntryExitPoints这一绘制环节。这一环节除了基本的三角形绘制外,增加了一个jittering过程,即对入点位置做一个微小的扰动,滤除采样伪影,如下图环状伪影。但是微小的扰动一般会带来额外的噪声。

没有jittering,额头处有明显环状伪影

Jittering后

Voreen (二) 入点出点计算的更多相关文章

  1. 学习如何看懂SQL Server执行计划(二)——函数计算篇

    二.函数计算部分 --------------------标量聚合--------------------/* 标量聚合-主要在聚合函数操作中产生 计算标量:根据行中的现有值计算出一个新值 流聚合:在 ...

  2. 二十一世纪计算 | John Hopcroft:AI革命

    编者按:信息革命的浪潮浩浩汤汤,越来越多的人将注意力转向人工智能,想探索它对人类生产生活所产生的可能影响.人工智能的下一步发展将主要来自深度学习,在这个领域中,更多令人兴奋的话题在等待我们探讨:神经网 ...

  3. 隐马尔可夫模型HMM(二)概率计算问题

    摘自 1.李航的<统计学习方法> 2.http://www.cnblogs.com/pinard/p/6955871.html 一.概率计算问题 上一篇介绍了概率计算问题是给定了λ(A,B ...

  4. yolov3源码分析keras(二)损失函数计算

    一.前言 损失函数计算主要分析两部分一部分是yolo_head函数的分析另一部分为ignore_mask的生成的分析. 二.重要细节分析 2.1损失函数计算具体代码及部分分析 def yolo_los ...

  5. Spark(二)—— 标签计算、用户画像应用

    一.标签计算 数据 86913510 {"reviewPics":[],"extInfoList":null,"expenseList":n ...

  6. SSAS:菜鸟笔记(二)定义计算(DMX脚本)

    基本概念 Calculation可以定义计算成员.名称集以及执行其他脚本命令来扩展分析服务立方(Analysis Service Cube)的功能. Calculation包含MDX以及脚本两个部分: ...

  7. Sql优化(二) 快速计算Distinct Count

    原创文章,始发自本人个人博客站点,转载请务必注明出自http://www.jasongj.com 个人博客上本文链接http://www.jasongj.com/2015/03/15/count_di ...

  8. 自学php找工作【二】 PHP计算时间加一天

    最近几天在做一个项目,主要是将SQLserver数据到MySQL数据库,一个url跑一次 同步一次昨天的数据,由于很多数据需要同步,所以做了一个操作界面的,一个单纯跑url的 在其中涉及到了对于时间的 ...

  9. Vue学习计划基础笔记(二) - 模板语法,计算属性,侦听器

    模板语法.计算属性和侦听器 目标: 1.熟练使用vue的模板语法 2.理解计算属性与侦听器的用法以及应用场景 1. 模板语法 <div id="app"> <!- ...

随机推荐

  1. ios基础篇(二十九)—— 多线程(Thread、Cocoa operations和GCD)

    一.进程与线程 1.进程 进程是指在系统中正在运行的一个应用程序,每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内: 如果我们把CPU比作一个工厂,那么进程就好比工厂的车间,一个工厂有 ...

  2. 需要不断学习的编程知识库list

    1.重构思想: 2.回调思想: 3.封装思想: 4.模块化思想: 5.复用思想: 6.C++的面向对象思想:  -----后续

  3. php 数组的常用函数

    在php教程中数组是种强大的数据类型,他可以做的事情很多,可以存储不同的数据类型在一个数组中,下面我们列出了数组常用的操作,排序,键名对数组排序等做法. /* 数组的常用函数  *  * 数组的排序函 ...

  4. 如何快速掌握一款新的MCU? (转)

      发布时间:2013-12-15 10:27:51 技术类别:单片机     个人分类:话题思考       任何一款MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的配置及数量.指 ...

  5. input框只允许输入数字 --------20160705

    //jquery方法 var num = $(this).val(); num = parseInt(num); if(!num){ $(this).html(''); } $(this).val(n ...

  6. 【转】MySQL中varchar最大长度是多少?

    一. varchar存储规则: 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,无 ...

  7. 一个简单的游戏开发框架(七.动作Motion)

    发现还没谈到最基本也是最重要的问题,怎么画图,画动画? 在原版cocos2d-x里画动画比较麻烦,见cocos2d-x学习笔记04:简单动画 cocostudio扩展出CCArmature类,就比较简 ...

  8. 在QtCreator 2.1.0 下使用opencv231库加载图片并显示

    在.pro中库连接如上图,具体规则正在学习,注意debug下连接*d.lib.release下链接.lib.没有d的. 如果出现imread不可以加载图片,cvloadImage却可以,则是上面说的连 ...

  9. powershell开源新闻及简介

    作者:PowerShll传教士 问:微软的PowerShell脚本语言已经开源了 ? 答:绝对真的!已经! 问:源码在哪? 答:微软.net源码网站.   http://referencesource ...

  10. android 在使用studio 编写百度地图中遇到APP Scode码校验失败 问题

    直接用打包出来的apk查看签名,具体如下: 1) 将apk修改后缀为 .zip文件后解压: 2) 进入解压后的META-INF目录,该目录下会存在文件CERT.RSA 3) 在该目录下打开cmd,输入 ...