问题标签 [rasterizing]
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.
c# - 确定 PDF 页面上的最大分辨率 (DPI)
在将页面图像发送到打印机之前,我正在使用 GhostScript.Net 将 PDF 光栅化为页面图像。我这样做是为了始终可以光栅化到 300dpi。这使我可以在合理的时间内打印 PDF,而不管 PDF 中任何图像的大小(主要是扫描的 PDF)。
然而,令我震惊的是,在某些情况下不需要光栅化高达 300dpi。根据页面的内容,可能会光栅化到 200dpi 甚至 100dpi。
是否有人尝试确定 PDF 页面内容的最大 DPI?也许使用 iTextSharp?
我目前的代码是这样的:
raytracing - 在光栅化或光线追踪时如何最好地使用场景图?
所以这是我的计算机图形学决赛中的一个问题,我仍然不知道答案。
什么是场景图?在分别对图像进行光栅化或光线追踪时,如何最好地使用它?
场景图是一种管理分层转换的方法。但是,我不知道如果您通过光栅化或通过光线跟踪生成图像是否会有所不同。
希望有人能启发我。
math - 判断一个三角形是否朝左
如果在 (x1, y1)、(x2, y2) 和 (x3, y3) 处有一组三个顶点,如何确定由这三个顶点定义的三角形是朝左还是朝右?
目前,我正在使用叉积来确定顶点是否是顺时针方向,并且有了这些知识,我可以在对它们的 y 坐标进行排序时确定三角形是朝左还是朝右。
这很好用,但叉积需要五次减法和两次乘法。
是否有一些更简单、更快的方法来确定我缺少的三角形是否朝左?
opengl - 如何在半整数像素中心栅格化 OpenGL 三角形
OpenGL 像素/片段在概念上是以半整数像素为中心的 1x1 正方形。OpenGL 4.5 规范指出:
片段位于其左下角,位于整数网格坐标上。光栅化操作还涉及片段的中心,该中心从其左下角偏移 (1/2,1/2)(因此位于半整数坐标上)。
光栅化器通常假定像素中心位于整数网格上。由于我正在尝试实现正确的 OpenGL 三角形填充,因此我想知道以下过程是否合理。
让我们以剪裁坐标为(-1,-1),(+1,-1),(0,+1)的三角形为例,如下图左侧所示(假设正交投影,z=0 )。假设我们有一个(小的 5x5 帧缓冲区),我们将我们的三角形映射到通过glViewport(0,0,5,5)
如右图所示产生具有顶点 (0,0)、(5,0)、(2.5,5) 的设备坐标中的三角形。
如您所见,中心在三角形内的 13 个片段(图像中的阴影像素)应由光栅化器生成。请注意,片段中心位于半整数坐标上。要实现 OpenGL 规范,这就是结果所需要的。
扫描线多边形填充将确定扫描线与三角形相交的 x 跨度,但扫描线处于半整数 y 值,如下图所示:
硬件/固件光栅器将假定像素中心位于整数网格上,因为这是执行填充的最有效方式。在下图中,我将三角形的设备坐标移动了 (-0.5, -0.5) 以将中心放置在整数网格上:
请注意,像素中心现在确实在整数网格上。这个光栅化器会简单地将 (0.5,0.5) 添加到每个片段中心,然后再传递给片段着色器。至少这是我的计划。
处理纹理坐标似乎很简单。想象一下我分配的纹理坐标 (0,0), (1,0), (0.5,1) 如下图所示。左边的图像使用半整数像素中心(OpenGL 方式),右边的图像使用整数像素中心(硬件方式)。无论哪种方式,纹理坐标(任何附加的片段属性)最终都具有相同的值——即,不需要做任何特别的事情。
那么我的方法似乎正确吗?
- 将 (-0.5,-0.5) 添加到每个片段坐标,
- 使用硬件高效填充,
- 在生成片段中心时添加 (0.5, 0.5) ,并且
- 不要为其他片段属性出汗(它们只是解决问题)。
3d - 渲染复杂对象的复杂性
考虑一个 3D 盒子。以随机方式重新镶嵌此框的顶点会创建许多大的相交面。渲染这样的对象更加复杂。为什么?这如何影响渲染复杂性?
pdf - Phantomjs zoomFactor - 将光栅化缩放到特定大小
我正在栅格化以下简单的 html+svg+foreignObject html
使用这个简单的光栅化脚本:
如您所见,单个可见元素的大小为 1050px x 750px。我想将其精确地光栅化到 10.5 英寸 x 7.5 英寸的纸张尺寸上,尺寸为 100%。
我的光栅化脚本是:
结果是这样的pdf:
所以这不能扩展到全尺寸。我可以通过调整缩放系数来调整到全尺寸。实验上我发现这行得通
现在元素可以正确缩放,但字体放大太多了。
如何在保持原始字体大小的同时将页面的左侧/最上方 1050 像素/750 像素缩放到纸张上的 10.5 英寸 x7.5 英寸?
python - 在python中栅格化三角形的快速方法
在 python 中,我想尽快从 3D 三角形中光栅化 2D 三角形,并裁剪超出 z 边界的像素。我可以将 3D 坐标转换为 2D,但我似乎无法让光栅化工作。我正在使用一种设置像素方法,它采用 (x,y,color) 并且 (0,0) 位于左上角。
谢谢你的帮助。这是我使用的三角码。
raytracing - 光线追踪:Bresenham 与 Siddon 算法
我正在开发一种基于铅笔束方法的放射治疗逆向规划工具。这些方法中的一个重要步骤(特别是在剂量计算中)是来自许多来源的光线追踪,最常用的算法之一是 Siddon 的算法(这里有一个很好的简短描述http://on-demand.gputechconf.com/ gtc/2014/poster/pdf/P4218_CT_reconstruction_iterative_algebraic.pdf)。现在,我将尝试简化我的问题:
输入数据是 CT 图像(带有值的 3D 矩阵)和图像周围的一些源位置。你可以想象一个立方体和周围的许多点,它们都在相同的距离但不同的方向角,辐射线来自哪里。每条射线都将穿过体积,并根据与源的距离为每个体素分配一个值。Siddon 算法的优点是在光线追踪的迭代过程中按时计算长度。但是,我知道 Bresenham 的算法是评估矩阵中从一个点到另一个点的路径的有效方法。因此,即使在 Bresenham 的迭代过程中,从源到特定体素的长度也可以很容易地计算为欧几里德距离两个点。
那么,既然知道这两种方法都已经很老了,而且很有效,那么使用 Siddon 代替 Bresenham 有明确的优势吗?也许我在这里遗漏了一个重要的细节,但对我来说很奇怪的是,在这些剂量计算程序中,布雷森汉姆并不是一个真正的选择,而西登总是作为黄金标准出现。
感谢您的任何评论或回复!
再会。
opengl - 在什么情况下可以省略透视除法?
我想在执行透视除法后恢复同质变换。更具体地说,我正在使用保守光栅化实现基于 GPU 的体素化算法。概述一下,这些是我迄今为止实施的步骤(VS=顶点着色器,GS=几何着色器):
- 将模型变换应用于顶点 (VS)。
- 对每个顶点 (GS) 的副本应用正交投影变换。
- 将视图变换应用于副本 (GS)。
- 对副本 (GS) 执行透视分割。
- 根据屏幕坐标 (GS) 平移复制的顶点。
接下来,我想从 (3) 恢复视图变换,并使用不同的视图矩阵变换顶点。现在,我的问题是它是否像应用逆视图矩阵一样简单?当我只使用正交投影和仿射(旋转、平移、缩放)变换时,我是否需要担心齐次坐标?在我看来,只有正常的变换我才需要担心它,因为转置的逆不是仿射变换。我既找不到关于这个主题的网络资源也找不到反例,所以我在这里问。
c++ - 光栅化算法:在二维四边形和逆投影中找到点的“ST”坐标
我的目标是使用光栅化算法渲染四边形的图像。我一直到:
- 在 3D 中创建四边形
- 使用透视分割将四边形的顶点投影到屏幕上
- 将生成的坐标从屏幕空间转换为栅格空间,并在栅格空间中计算四边形的边界框
- 循环遍历此边界框内的所有像素,并找出当前像素 P 是否包含在四边形中。为此,我使用了一个简单的测试,其中包括在四边形的边 AB 和顶点 A 和点 P 之间定义的向量之间取点。我对所有 4 条边重复这个过程,如果符号相同,那么该点在四边形内。
我已经成功地实现了这个(见下面的代码)。但是我被我想玩的剩余位所困扰,这些位基本上是找到我的四边形的 st 或纹理坐标。
- 我不知道是否可以在光栅空间的四边形中找到当前像素 P 的 st 坐标,然后将其转换回世界空间?有人能指出我正确的方向,告诉我该怎么做吗?
- 或者,我如何计算四边形中包含的像素的 z 或深度值。我想这与在四边形中找到点的st坐标,然后对顶点的z值进行插值有关?
PS:这不是作业。我这样做是为了理解光栅化算法,而正是我现在卡在哪里,是我不明白的一点,我相信 GPU 渲染管道涉及某种逆投影,但我现在迷失了。谢谢你的帮助。