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

婚庆设计图网站中小微企业查询官网

婚庆设计图网站,中小微企业查询官网,wordpress通过编辑器修改页面宽度,wordpress导航跟随我们已经涵盖了所有要说的内容! 我们现在准备编写第一个光线追踪器。 你现在应该能够猜测光线追踪算法是如何工作的。 首先,请花点时间注意一下,光在自然界中的传播只是从光源发出的无数光线,它们四处反弹,直到到达我…

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

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

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/413391/

相关文章:

  • 庆阳市建设局海绵城市网站汕头网站建设和运营
  • 网站开发 合同乐清英文网站建设
  • 云南建设厅网站首页怎么样做团购网站
  • 网站html标签如何优化wordpress对应的id
  • 北京住房城乡建设部网站首页商城建站模板
  • wordpress 建站简单吗赣州建设企业网站
  • 网盘搜索网站怎么做国外网站如何做seo
  • vs2013做的网站网站开发需要哪些技术人员
  • wordpress添加wow镇江公交优化
  • 建设网站遇到的问题为什么资讯网站荣誉被收录
  • 简洁企业网站模板制作wordpress页面模板下载地址
  • 注册网站名字软文营销写作技巧
  • 网站建设行业细分零基础网站建设教学
  • 作风建设年网站和京东一样做电子产品的网站
  • 苏州建设交易中心网站深圳网站开发公司h5
  • 东莞网站建设制作软件wordpress紫色大气淘宝客主题
  • 做网站及小程序需要会哪些技能网站服务器不稳定怎么办
  • 京东客网站怎么建设网站建设要哪些人?
  • wordpress拷站彩页设计图片模板
  • 网站备案快吗深圳企业网站建设制作
  • 网站运营怎么学长沙网站优化联系方式
  • 做机械的网站有哪些情侣手表网站
  • 酒店网站建设考虑哪些因素整合营销活动策划方案
  • 中山精品网站建设市场wordpress 调用页面
  • 南昌城乡住房建设厅网站网页链接下载
  • 怎么制作网站?做网站表格单边框标记
  • 宁波建网站价格微信小程序开发代码
  • 做网站需学什么条件毕业设计网站方向
  • 0元建站平台中国企业资讯网
  • 自助外贸网站制作蓝一互动网站建设