什么是最快的阴影算法(仅CPU)? [英] What is the fastest shadowing algorithm (CPU only)?

查看:488
本文介绍了什么是最快的阴影算法(仅CPU)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有一个三维模型:

Suppose I have a 3D model:

该模型给出在顶点的形式,面(所有三角形)和法向矢量。该模型可以具有孔和/或透明的部件。

The model is given in the form of vertices, faces (all triangles) and normal vectors. The model may have holes and/or transparent parts.

有关在无穷远的任意放置光源,我必须确定:

For an arbitrarily placed light source at infinity, I have to determine:

  • [要求]该三角形(部分)遮蔽其他的三角形
  • [required] which triangles are (partially) shadowed by other triangles

然后,对于部分遮蔽三角形:

Then, for the partially shadowed triangles:

  • [奖金]哪一部分三角形的面积被遮挡
  • [ superbonus ]想出了一个新的网格描述阴影的形状的完全
  • [bonus] what fraction of the area of the triangle is shadowed
  • [superbonus] come up with a new mesh that describe the shape of the shadows exactly

我最后的应用程序上的无头的机器上运行的,就是他们没有GPU 。因此,从OpenGL的,OpenCL的,等所有标准的东西未必是最好的选择。

My final application has to run on headless machines, that is, they have no GPU. Therefore, all the standard things from OpenGL, OpenCL, etc. might not be the best choice.

什么是最有效的算法来确定这些事情,考虑到这种限制?

What is the most efficient algorithm to determine these things, considering this limitation?

推荐答案

你有单目以上的网格?

  • 这意味着如果影子投射在单一的地面
  • 或更喜欢房间的墙壁,甚至近物
  • 根据这个信息的解决方案有很大的不同

1.适用于平坦地面/墙面

1.for flat ground/wall surfaces

  • 通常是最好的方式投射渲染这种表面

  • 在摄像头的方向是相反的,以轻正常
  • 画面渲染表面
  • 在表面通常不是垂直于光,所以你需要使用投影来弥补......
  • 您需要1渲染过程对每个目标的表面
  • ,所以它不是合适的,如果阴影投射到邻近目(只是对于接地/壁)

2.对于更复杂的场景

2.for more complicated scenes

  • 您需要使用更先进的方法
  • 也有不少人,每个人都有其优点和缺点
  • 我会用体素的地图,但如果你是空间的限制比一些模板/向量方法会更好
  • 当然,所有的这些技术是相当昂贵的
  • ,没有GPU,我不会去尝试实现它们
  • 这是怎么了体素地图上看起来像

  • 如果你只想自我阴影然后像素大小的地图可以在你的网只有一些boundig箱
  • 在这种情况下,你不将整个网容积
  • 在每个像素转化为光的方向,而不是只投射(忽略第一像素...)
  • 要避免点燃表面的阴影

这篇关于什么是最快的阴影算法(仅CPU)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆