art*_*ter 8 plot rendering time-series cad
互联网上有一个 gif,其中有人使用某种 CAD 并在其中绘制了多个矢量图片。在第一帧中,他们放大了一个小点,显示出一个全新的不同比例的矢量图片,然后他们继续放大另一个小点,显示另一张详细的图片,重复几次。这是 gif 的链接
或另一个类似的示例:假设您有一个时间序列,每个样本的粒度为 1 毫秒,然后缩小以显示数年的数据。
我的问题是:当大量数据最终混叠成单个像素时,如此精细的数据最终如何呈现。
您是否必须通过整个数据集来渲染该像素(即在时间序列的情况下:通过数百万条记录将它们平均为 1 行,或者在 CAD 渲染整个矢量图片并将其模糊成小点的情况下) ,或者可以应用某些详细级别的优化,这样您就不必这样做了?
如果是这样,它们是如何工作的?在哪里可以了解它?
这是游戏开发中一个众所周知的问题。在下文中,我假设您使用场景图,即基于节点的对象树。
典型的解决方案涉及以下技术的组合:
在最低级别,您甚至可以只使用对象的边界框。检查边界框是否在视图中只需大约 1-7 个点检查,具体取决于检查方式。您可以利用对象父子关系作为传递边界框。
裁剪:如果多边形根本没有在视口中渲染,则无需渲染它。在您发布的 GIF 中,当相机放大新场景时,较大模型留下的只是背景中的单个多边形。
世界坐标的重新缩放:当您放大时,顶点坐标变为低于零的浮点数。考虑到您希望所有坐标尽可能精确,并且现代 CPU 只能处理 64 位精度的浮点数(并且通常仅使用 32 位以获得更好的性能),因此最好重置可见对象的缩放比例。我的意思是,当你的相机放大到前一个视图的 1/1000 时,你可以将较大的物体放大 1000 倍,同时调整相机位置和焦距。任何新连接的小模型都将使用其原始比例,从而保持其精度。这种过渡对于观看者来说是不可见的,但允许您保持在明确定义的 3D 坐标内,同时能够无限放大。
在更高的层面上:当您放大某个物体并且相机越来越接近某个物体时,看起来世界相对于视图变得更大。虽然通常情况下相机空间会移动并且世界会乘以相机的矩阵,但通过更改世界坐标而不是相机也可以实现相同的效果。