继第一篇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 (二) 入点出点计算的更多相关文章
-
学习如何看懂SQL Server执行计划(二)——函数计算篇
二.函数计算部分 --------------------标量聚合--------------------/* 标量聚合-主要在聚合函数操作中产生 计算标量:根据行中的现有值计算出一个新值 流聚合:在 ...
-
二十一世纪计算 | John Hopcroft:AI革命
编者按:信息革命的浪潮浩浩汤汤,越来越多的人将注意力转向人工智能,想探索它对人类生产生活所产生的可能影响.人工智能的下一步发展将主要来自深度学习,在这个领域中,更多令人兴奋的话题在等待我们探讨:神经网 ...
-
隐马尔可夫模型HMM(二)概率计算问题
摘自 1.李航的<统计学习方法> 2.http://www.cnblogs.com/pinard/p/6955871.html 一.概率计算问题 上一篇介绍了概率计算问题是给定了λ(A,B ...
-
yolov3源码分析keras(二)损失函数计算
一.前言 损失函数计算主要分析两部分一部分是yolo_head函数的分析另一部分为ignore_mask的生成的分析. 二.重要细节分析 2.1损失函数计算具体代码及部分分析 def yolo_los ...
-
Spark(二)—— 标签计算、用户画像应用
一.标签计算 数据 86913510 {"reviewPics":[],"extInfoList":null,"expenseList":n ...
-
SSAS:菜鸟笔记(二)定义计算(DMX脚本)
基本概念 Calculation可以定义计算成员.名称集以及执行其他脚本命令来扩展分析服务立方(Analysis Service Cube)的功能. Calculation包含MDX以及脚本两个部分: ...
-
Sql优化(二) 快速计算Distinct Count
原创文章,始发自本人个人博客站点,转载请务必注明出自http://www.jasongj.com 个人博客上本文链接http://www.jasongj.com/2015/03/15/count_di ...
-
自学php找工作【二】 PHP计算时间加一天
最近几天在做一个项目,主要是将SQLserver数据到MySQL数据库,一个url跑一次 同步一次昨天的数据,由于很多数据需要同步,所以做了一个操作界面的,一个单纯跑url的 在其中涉及到了对于时间的 ...
-
Vue学习计划基础笔记(二) - 模板语法,计算属性,侦听器
模板语法.计算属性和侦听器 目标: 1.熟练使用vue的模板语法 2.理解计算属性与侦听器的用法以及应用场景 1. 模板语法 <div id="app"> <!- ...
随机推荐
-
Intellij Idea中定制getter setter的模板
Alt + Ins, 调出快捷菜单后选择 Getter and Setter, 在对话框里, 选择对应的template, 右侧点开后, 可以新建自己的模板并编辑 将getter和setter都生成到 ...
-
nyoj 142, poj 1039 ,hdu 1454 管道问题
http://acm.nyist.net/JudgeOnline/problem.php?pid=142 第一道解析几何问题,比较纠结,主要是几个解析几何的基本操作,包括求两线段的叉积,判断左右方向, ...
-
Runtime 动态加载方法
动态加载 #import"ViewController.h" #import"Person.h" @interfaceViewController() @end ...
-
友情提醒:欲开发android5.0以上应用,请全部更新开发工具至最新
周末帮人完成一个项目,android5.0以上版本,谁知道被开发工具折腾的死去活来.我的开发环境是adt-bundle-windows-x86-20140702.zip版本,也是目前能找到的adt-b ...
-
IOS文件操作的两种方式:NSFileManager操作和流操作
1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...
-
hdu 4627 水数学题
最小公倍数最大,也就是尽量让2个数互质,所以把n除以2 从中间向两边找就够了,自己写几组数据就能发现规律. 注意longlong存 #include<cstdio> #include< ...
-
线程-run和start
import java.lang.Thread; class Machine extends Thread{ public void run() { int a ; for( a = 0 ; a &l ...
-
Scrum与高效能人士
Scrum与高效能人士的执行4原则 分享了高效能人士的执行4原则,发现它和Scrum非常相近,可以形成互补. Scrum框架: 高效能人士的执行4原则框架: Scrum与4原则 Sprint Ba ...
-
给定一个实数数组,按序排列(从小到大),从数组从找出若干个数,使得这若干个数的和与M最为接近,描述一个算法,并给出算法的复杂度。
有N个正实数(注意是实数,大小升序排列) x1 , x2 ... xN,另有一个实数M. 需要选出若干个x,使这几个x的和与 M 最接近. 请描述实现算法,并指出算法复杂度. #define M 8 ...
-
vim常用快捷键整理
搜索快捷键 / 关键字n 向下匹配N 向上匹配 移动光标快捷键 gg 命令将光标移动到文档开头,等同于 1GG 命令将光标移动到文档末尾0 或功能键[Home] 这是数字『 0 』:移动到这一行的最 ...