问题标签 [raytracing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
math - 射线与三角形相交的射线变换
在 openGL 中,我有一个 3D 模型,我正在使用论文“快速、最小存储射线/三角形交点”(http://jgt.akpeters.com/papers/MollerTrumbore97 )中解释的代码执行射线-三角形交点/)。
使用以下代码,我的光标位置未投影到世界空间中:
之后,我通过执行以下操作形成一条射线:
现在,最后我试图通过三角形代码(上面链接)运行这条射线,但我似乎无法正确转换它。我目前的尝试如下:
出于某种原因,这不起作用。我的光线形成错误了吗?还是改错了?
c# - 使用 C# 和 WPF 进行任意光线测试
我想知道来自任意点的光线是否会撞击多边形。知道发生交叉的空间点以及对该多边形的引用会很有用。我正在使用 System.Windows.Media.Media3D 库并进行了光线跟踪测试,但还没有从 VisualTreeHelper.HitTest 返回的 HitTestResult 对象中破解我想要的任何信息。
我找错地方了吗?
是否有不同的方法来测试任意交叉点?
代码:
data-structures - 如何在 kd-tree 中最好地存储行
我知道 kd-trees 传统上用于存储点,但我想存储线。用kd-tree的分割在每个交叉点分割线会更好吗?还是仅将端点存储到 kd 中就可以找到最近的邻居?
raytracing - 如何混合颜色
我目前正在编写光线追踪器。我想知道如何将原始颜色与浅色混合。我见过很多组合。
有些只是添加两种颜色。这给了我非常奇怪的结果。
有些乘以每个组件。它看起来不错,但在图元中是蓝色 ({0, 0, 1}) 并且光是红色 ({1, 0, 0}),它只是黑色。这是正常行为吗?
我还看到了屏幕混合模式 (screen(C1, C2) = C1 + C2 - C1 * C2)),这对我来说更合乎逻辑,因为在上述情况下,颜色实际上会混合。
反射光线颜色的相同问题:如何将它们与局部颜色混合?
额外的问题:图元上没有被照亮的点应该是黑色的吗?我见过像“一半颜色”这样的东西。
antialiasing - 在光线追踪器中强制进行激进的超级采样
有谁知道如何在 Blender 或 POV-Ray 中强制进行大量超级采样,例如每个像素至少 100 个样本?这是针对严重依赖亚像素伪影的研究项目。渲染大图像并缩小它是行不通的,因为一些关键像素会非常亮,并且输出值会被剪裁。在剪辑之前需要对它们进行平均。
Blender 似乎只支持 5、8、11或 16 个样本,因为它使用预定义的采样模式。
POV-Ray不支持非自适应超级采样方法,这是必要的,因为像素内有很大的变化,从像素之间的变化可能看不出。
simulation - 2D 光学光线追踪
我正在开发演示各种镜头如何工作的程序,为此我需要一个 2D光线追踪库或算法。
我搜索了光线追踪,大部分都找到了用于创建 3D 场景的东西,而我的要求是简单的交互式镜头模拟。
因此,欢迎任何关于 2D 光线追踪算法或库的观点。我正在使用 Python。
c# - 简单的光线追踪教程?
几年前在 uni 我用 C++ 编写了一个光线追踪器,但现在我几乎记不起它了。只是为了好玩,我决定再次尝试编写光线追踪器,这次是用 C#。但遗憾的是,我正在努力开始从相机坐标到世界坐标的转换。
谁能推荐我一套关于从头开始编写光线追踪器的好教程?我的数学知识非常基础,所以我需要重新学习矩阵乘法,以计算屏幕上的点在 3D 空间中的位置,以便通过它投射光线。
我想我可以解决形状和阴影部分的交集,但我需要回到相机翻译的基础。
谢谢!
graphics - 哪种类型的几何定义文件格式最适合与光线追踪一起使用以包含材质类型
我想使用.obj
格式,但我注意到它没有材料类型的表示,即不透明、透明、反射。是否存在包含该信息的通用文件格式,或者我应该采用已知.obj
格式并更改它以使其包含该信息?
graphics - 使用置换贴图对球体进行光线追踪
我有兴趣构建一个简单的“谷歌地球”类型的应用程序(用于覆盖我自己的信息,而不是谷歌拥有的大量数据)。我希望它只是一个简单的 X11 应用程序,可以用位移(地形)信息对球体进行光线追踪。射线-球体相交非常简单,但是当将显示映射放入其中时,它开始在我的脑海中变得混乱。
我想知道是否有一种简单的技术可以扩展基本的射线-球体相交以包含位移数据......
graphics - 光线追踪中的正确着色模型
我想知道计算从几个不同光源和环境光产生的阴影的最准确方法。环境光是存在于整个“世界”中的具有相同强度且没有特定方向的光,而漫射光是由于来自点光源的直接照明而发生的光。
给定Ka
是表面环境反射率的系数,Ia
是环境光的强度,Kd
是表面漫反射率,Ip1
是第一个(相应的)点光源的强度,N
是表面法线,L1
是光(的相应的第一个来源)方向。
根据我的参考资料,现场颜色的强度应该是:
I=Ka.Ia+Kd(Ip1(N.L1)+Ip2(N.L2))
其中' .
'是点积。
但根据我的理解,真正的光强度应该在光源之间做某种平均,而不是简单地将它们相加,所以如果只有两个光源,方程应该如下所示:
I=Ka.Ia+Kd(Ip1(N.L1)+Ip2(N.L2))/2
如果有 3 个光源,但第三个被挡住并且不直接照亮表面,则:
I=Ka.Ia+Kd(Ip1(N.L1)+Ip2(N.L2))/3
(这样如果有一个地方所有 3 盏灯都有贡献,它会变亮。
我的假设是对的吗?