gpt4 book ai didi

opengl - GLSL 中的圆柱体冒名顶替者

转载 作者:行者123 更新时间:2023-12-04 11:12:52 25 4
gpt4 key购买 nike

我正在开发一个用于分子 3D 可视化的小工具。
对于我的项目,我选择以“Brad Larson”先生用他的 Apple 软件“分子”所做的方式来制作。一个链接,您可以在其中找到所用技术的简要介绍:Brad Larsson software presentation

为了完成我的工作,我必须计算 球体冒名顶替者 汽缸冒名顶替者 .

目前我已经在另一个教程的帮助下成功完成了“Sphere Impostor”Lies and Impostors

总结球体冒名顶替者的计算:首先我们将“球体位置”和“球体半径”发送到“顶点着色器”,它将在相机空间中创建一个始终面向相机的正方形,然后我们发送我们的square 到片段着色器,我们使用简单的光线跟踪来查找球体中包含正方形的哪个片段,最后我们计算法线和片段的位置以计算照明。 (另一件事,我们还编写了 gl_fragdepth 来为我们的冒名顶替球体提供良好的深度!)

但是现在我在圆柱体冒名顶替者的计算中受阻,我尝试在球体冒名顶替者和圆柱体冒名顶替者之间进行平行,但我什么也没找到,我的问题是对于球体来说这很容易,因为球体是不管我们怎么看,总是一样的,我们总是会看到同样的东西:“一个圆”,另一件事是球体是由数学完美定义的,然后我们可以很容易地找到计算光照的位置和法线,并创建我们的骗子。

对于圆柱体来说,这不是一回事,我没有找到对可以用作“圆柱体冒名顶替者”的形式进行建模的提示,因为圆柱体根据我们看到的角度显示出许多不同的形式!

所以我的请求是向您询问有关“圆柱体冒名顶替者”问题的解决方案或指示。

最佳答案

我知道这个问题已经超过一年了,但我仍然想给我 2 美分。

我能够用另一种技术制作圆柱体冒名顶替者,我从 pymol 的代码中获得灵感。这是基本策略:

1) 您想为圆柱体绘制一个边界框 (a cuboid )。要做到这一点,您需要 6 个面,即转换为 18 个三角形,转换为 36 个三角形顶点。假设您无权访问几何着色器,则将圆柱体起点的 36 倍,圆柱方向的 36 倍传递给顶点着色器,并且对于这些顶点中的每一个,您传递边界框的对应点.例如,与点 (0, 0, 0) 关联的顶点表示它将在边界框的左下角进行变换,(1,1,1) 表示对角线相对的点等。

2)在顶点着色器中,您可以通过根据您传入的相应点位移每个顶点(您通过36个相等的顶点)来构造圆柱体的点。
在这一步结束时,您应该有一个圆柱体的边界框。

3)在这里,您必须重建边界框可见表面上的点。从您获得的点开始,您必须执行光线柱面相交。

4)从交点可以重建深度和法线。您还必须丢弃在边界框外找到的交点(当您沿其轴查看圆柱时可能会发生这种情况,交点将无限远)。

顺便说一句,这是一项非常艰巨的任务,如果有人感兴趣,这里是源代码:

https://github.com/chemlab/chemlab/blob/master/chemlab/graphics/renderers/shaders/cylinderimp.frag

https://github.com/chemlab/chemlab/blob/master/chemlab/graphics/renderers/shaders/cylinderimp.vert

关于opengl - GLSL 中的圆柱体冒名顶替者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9595300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com