首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有可能在python-opengl中得到像gloo,glumpy这样的‘不可见’顶点的索引?

有没有可能在python-opengl中得到像gloo,glumpy这样的‘不可见’顶点的索引?
EN

Stack Overflow用户
提问于 2020-05-25 19:30:11
回答 1查看 41关注 0票数 1

有没有可能在python-opengl中得到像gloo,glumpy这样的‘不可见’顶点的索引?例如,当我在scenegraph中绘制一个3D球体并使用转台相机旋转对象时,一半的顶点是不可见的,但每当我旋转时,索引都会改变。

如果我打开'cull_face‘选项,OpenGL将不会绘制它们,但有没有可能获得这些顶点的索引,’未绘制‘或由于被其他顶点阻塞而不可见?

EN

回答 1

Stack Overflow用户

发布于 2020-05-25 20:09:40

但是有没有可能得到这些顶点的索引,‘未绘制’或由于被其他顶点阻挡而不可见?

OpenGL不会以直接方式提供这样的功能。当然,它仍然可以实现。但是你需要自己去实现它。以下是一些想法:

  • 在绘制之后,通过将每个顶点渲染为单独查询的点来使用OpenGL occlusion queries -我不会重新注释它,但它是可以做到的。
  • 既然你基本上对面部剔除感兴趣,那就自己计算面部剔除吧。对于每个三角形,您只需要计算法向量,它只是两条边的叉积,然后只需检查观察方向向量和法线之间的角度是否大于或小于90度,因此它是一个简单的点积。这种方法可以很容易地移植到GPU计算着色器上,并且可以很容易地并行运行,因为每个三角形都可以独立测试-而且它也应该在GPU上实现,因为您可以使用它的功能来转换具有与以前完全相同的矩阵的顶点,并且由于这会导致观察方向在窗口空间中是恒定的(0,0,1),因此点积将只产生点积的z坐标,这只是窗口空间中顶点坐标的2D投影的有符号区域。
  • 您还可以通过检查从相机到每个顶点的光线来进行简单的光线投射。您可以很容易地在这里应用投影矩阵,因此每个视图光线都将成为正交的,然后您可以简单地针对z缓冲区进行测试。这种方法也可以在图形处理器上实现。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62001524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档