继第一篇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沙盒(sandbox)

    iOS沙盒 每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,默认下iOS应用只能访问自己的沙盒 extenaion是iOS8新开放的一种对几个固定系统区域的扩展机制,它可以在一定程度上弥补 ...

  2. thinkjs中自定义sql语句

    一直以为在使用thinkjs时,只能是它自带的sql语句查询,当遇到类似于这样的sql语句时,却不知道这该怎样来写程序,殊不知原来thinkjs可以执行自定义sql语句 SELECT * from a ...

  3. 通过JS检测360浏览器

    如何通过JS检测360浏览器? 尝试了一大堆方法,网上大多数办法都是通过navigator.userAgent来判断,这可能在几年前是行得通的,现在360userAgent输出来跟谷歌除了版本号其余一 ...

  4. Windows下配置nginx+php(wnmp)

      第一部分:准备工作.(系统:Windows 8.1) 1.首先是下载软件. NGINX-1.3.8官网下载:http://nginx.org/en/download.html PHP5.4.8版本 ...

  5. 转:solr6.0配置中文分词器IK Analyzer

    solr6.0中进行中文分词器IK Analyzer的配置和solr低版本中最大不同点在于IK Analyzer中jar包的引用.一般的IK分词jar包都是不能用的,因为IK分词中传统的jar不支持s ...

  6. 第五次Java作业

    作业一: 文件显示列表框. 增加了下拉式组合框,text区域设置颜色为红色. import javax.swing.*; import java.awt.*; import java.io.File; ...

  7. c# 反射应用之工厂

    反射是.net的核心功能,十分的强大.但是好像微软封装的太过了,作为程序员,在实际项目中我很少用到反射(估计是参加的大型项目太少了,需要交互第三方的项目太少了). 工厂模式是软件设计模式中重要的一种, ...

  8. CVPR历年Best Papers

    作者:我爱机器学习原文链接:CVPR历年Best Papers CVPR (Computer Vision)(2000-2016) 年份 标题 一作 一作单位 2016 Deep Residual L ...

  9. Java冒泡随笔

    package homework; import java.util.Scanner; public class ArraySort { /** * @param args */ public sta ...

  10. nginx 高并发配置参数(转载)

    声明:原文章来自http://blog.csdn.net/oonets334/article/details/7528558.如需知道更详细内容请访问. 一.一般来说nginx 配置文件中对优化比较有 ...