当前位置: 首页 > news >正文

舟山建设网站公司文创产品设计大全

舟山建设网站公司,文创产品设计大全,seo优化推广工程师,国家军事新闻头条我们已经涵盖了所有要说的内容! 我们现在准备编写第一个光线追踪器。 你现在应该能够猜测光线追踪算法是如何工作的。 首先,请花点时间注意一下,光在自然界中的传播只是从光源发出的无数光线,它们四处反弹,直到到达我…

我们已经涵盖了所有要说的内容! 我们现在准备编写第一个光线追踪器。 你现在应该能够猜测光线追踪算法是如何工作的。

首先,请花点时间注意一下,光在自然界中的传播只是从光源发出的无数光线,它们四处反弹,直到到达我们眼睛的表面。 因此,光线追踪非常优雅,因为它直接基于我们周围发生的事情。 除了它以相反的顺序遵循光路这一事实之外,它不亚于一个完美的自然模拟器。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎

光线追踪算法获取由像素组成的图像。 对于图片中的每个像素,它都会向场景中发射主光线。 该主光线的方向是通过追踪从眼睛到该像素中心的线来获得的。 一旦我们设置了主光线的方向,我们就会检查场景中的每个对象,看看它是否与其中任何一个对象相交。 在某些情况下,主光线将与多个对象相交。 当发生这种情况时,我们选择交点最接近眼睛的对象。 然后,我们从交点向光源发射阴影光线(图 1):

图 1:我们通过像素中心发射主光线来检查可能的物体相交。 当我们找到一个点时,我们会投射阴影射线来确定该点是被照亮还是在阴影中

如果该光线在到达光源的途中未与物体相交,则命中点将被照亮。 如果它与另一个对象相交,该对象就会在其上投射阴影(图 2):

图 2:小球体在大球体上投射阴影。 阴影光线在到达光源之前与小球体相交

如果我们对每个像素重复此操作,就会获得三维场景的二维表示(图 3):

图 3:为了渲染帧,我们为帧缓冲区的每个像素发射主光线这是该算法的伪代码实现:

这是该算法的伪代码实现:

for (int j = 0; j < imageHeight; ++j) { for (int i = 0; i < imageWidth; ++i) { // compute primary ray directionRay primRay; computePrimRay(i, j, &primRay); // shoot prim ray in the scene and search for the intersectionPoint pHit; Normal nHit; float minDist = INFINITY; Object object = NULL; for (int k = 0; k < objects.size(); ++k) { if (Intersect(objects[k], primRay, &pHit, &nHit)) { float distance = Distance(eyePosition, pHit); if (distance < minDistance) { object = objects[k]; minDistance = distance;  //update min distance } } } if (object != NULL) { // compute illuminationRay shadowRay; shadowRay.direction = lightPosition - pHit; bool isShadow = false; for (int k = 0; k < objects.size(); ++k) { if (Intersect(objects[k], shadowRay)) { isInShadow = true; break; } } } if (!isInShadow) pixels[i][j] = object->color * light.brightness; else pixels[i][j] = 0; } 
} 

正如我们所看到的,光线追踪的美妙之处在于它只需要几行代码即可; 一个人可以用 200 行写出一个基本的光线追踪器。 与其他算法(例如扫描线渲染器)不同,光线追踪只需很少的努力即可实现。

Arthur Appel 于 1969 年在一篇题为“实体着色机器渲染的一些技术”的论文中首次描述了这项技术。 那么,如果这个算法如此美妙,为什么它没有取代所有其他渲染算法呢? 当时(甚至在某种程度上,今天)主要原因是速度。 正如阿佩尔在他的论文中提到的:

这种方法非常耗时,通常需要比线框图多数千倍的计算时间才能获得有益的结果。 大约一半的时间用于确定投影和场景的点对点对应关系。

换句话说,它很慢(正如 Kajiya - 所有计算机图形学历史上最有影响力的研究人员之一 - 曾经说过:“光线追踪并不慢 - 计算机才是”)。 找到光线和几何体之间的交点非常耗时。 几十年来,算法的速度一直是光线追踪的主要缺点。 然而,随着计算机变得越来越快,这不再是一个问题。 尽管仍然必须说一件事:与其他技术(例如 z 缓冲区算法)相比,光线追踪仍然要慢得多。 然而,如今有了快速的计算机,我们可以在几分钟或更短的时间内计算出过去需要一小时的帧。 实时和交互式光线追踪器是一个热门话题。

总而言之,必须记住渲染例程可以被视为两个独立的进程。 第一个步骤确定对象表面的某个点从特定像素(可见性部分)是否可见,第二个步骤对该点进行着色(着色部分)。 不幸的是,这两个步骤都需要昂贵且耗时的射线几何相交测试。 该算法优雅而强大,但迫使我们以渲染时间换取准确性,反之亦然。 自从阿佩尔发表他的论文以来,人们已经进行了大量研究来加速射线与物体的相交例程。 随着计算机变得更加强大并与这些加速技术相结合,光线追踪变得可以在日常生产环境中使用,并且按照当今的标准,它是大多数(如果不是全部)渲染离线软件所使用的事实上的方法。 视频游戏引擎仍在使用光栅化算法。 然而,随着最近 GPU 加速光线追踪(2017-2018)和 RTX 技术的出现,实时光线追踪也已成为可能。 虽然一些视频游戏已经提供了可以打开光线追踪的模式,但它仅限于简单的效果,例如清晰的反射和阴影。


原文链接:光线追踪算法实现 - BimAnt

http://www.yayakq.cn/news/68950/

相关文章:

  • 设计素材网站千图网大作业做网站
  • 想做一个网站怎么做的wordpress添加单页模板
  • 重庆网站制作合作商广州市建筑信息平台
  • 做个公司网站大概多少钱论坛网站开发平台
  • 网站建设与运行的盈利收入wordpress 视频播放器插件
  • 设计教程网站有哪些这么开网站
  • 佛山外贸建站戴尔公司网站建设特点
  • 如何建设一个完整的网站做网站一定要实名认证吗
  • 网站建站报价温州cms模板建站
  • 北京鑫旺路桥建设有限公司网站佣金高的试玩app平台
  • 网站平台都有哪些沙市做网站weisword
  • 做百度推广去些网站加客户吉利的网络营销方式
  • 800元做网站网站后台文章字体
  • 无网站可以做cpc吗茂名企业网站建设开发
  • 安徽制作网站祥云平台 网站建设
  • 商丘网站建设商丘室内装修设计自学教材
  • 专业的营销型网站制作网站后期维护都有什么
  • 注册公司的网站万网网站建设万网网站建设
  • 网站建设 psd免费手机端网站模板
  • 外贸在哪个网站做今天体育新闻
  • 地产网站互动设计网站开发有哪些职位
  • 兖州建设局网站如何进行seo
  • 北京网站设计公司排行山东省建设项目备案证明网站
  • 安塞网站建设静态网站源码下载
  • 个人网站备案做论坛wordpress 用户介绍
  • wordpress游戏代练主题佛山公司推广优化
  • 行业信息网站有哪些怎么弄网页
  • 无锡百度网站推广各网站特点
  • 怎么做简单网站首页外国人做汉字网站
  • 不记得在哪里做的网站备案校园文化建设