Graphics 三维模型下的轮廓

Graphics 三维模型下的轮廓,graphics,3d,computational-geometry,mesh,silhouette,Graphics,3d,Computational Geometry,Mesh,Silhouette,有些3D应用程序可以在3D模型下投射阴影或轮廓。它们渲染得很快很平滑。我想知道获得3D模型阴影/轮廓的标准程序是什么样的技术 例如,有没有像C++库一样,或者得到阴影/剪影相当快?或者可能使用GLSL着色?任何关于标准技术栈的提示都将受到欢迎 对于渲染来说,它很简单。只需将顶点投影到曲面(对于XY平面,这只需要将Z坐标设置为0)并渲染三角形。会有很多重叠,但由于您只是渲染,这并不重要 如果您试图构建一组表示轮廓形状的多边形,则需要使用类似的方法合并投影三角形。计算阴影是一个庞大而不易解决的话题。

有些3D应用程序可以在3D模型下投射阴影或轮廓。它们渲染得很快很平滑。我想知道获得3D模型阴影/轮廓的标准程序是什么样的技术

例如,有没有像C++库一样,或者得到阴影/剪影相当快?或者可能使用GLSL着色?任何关于标准技术栈的提示都将受到欢迎


对于渲染来说,它很简单。只需将顶点投影到曲面(对于XY平面,这只需要将Z坐标设置为0)并渲染三角形。会有很多重叠,但由于您只是渲染,这并不重要


如果您试图构建一组表示轮廓形状的多边形,则需要使用类似的方法合并投影三角形。

计算阴影是一个庞大而不易解决的话题。在现实世界中,光源被延伸,阴影边缘不尖锐(存在半影)。然后是投射阴影,甚至是自我阴影

如果您将自己限制为准时光源(因此阴影锐利),有一个简单的原则:如果您将观察者放置在光源处,他将看到的面将由该光源照亮。相反,隐藏曲面位于阴影中

为了正确渲染,阴影区域应反向投影到场景并绘制为黑色



从本质上讲,光线跟踪技术使这一过程易于实现。

我将看一看Vatti剪裁算法=)IMO“这很简单”是言过其实,除了“光源在z方向无限远的特殊情况下,阴影投射在平面上”。