- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个用于分子 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/
Cylinder是Manim中用于创建圆柱体对象的类。 Cylinder类在制作数学、物理或工程领域的动画时,可用于以下的场景中: 演示几何概念:使用Cylinder类创建圆柱体,并通过改变
我正在对发生在自身包裹的方形网格上的事物进行建模(即,如果您向上走过最高点,您最终会到达最低点,就像一个圆柱体;如果您向右走,您只是击中边界)。我需要跟踪各种代理的位置,不同点的资源量,并根据一定的规
我正在尝试显示具有 3 个圆柱体和 3 种不同颜色的轴。这是我的代码; glDisable(GL_LIGHTING); glClear(GL_COLOR_BUFFER_BIT); glColor3f(
我正在 Matlab 中做一个数学实验,结果应该是 x,y 平面上的一个圆。但有时,圆圈开始螺旋上升。我现在正在尝试将 x,y 平面弯曲成圆柱体(如下图所示)。目前我只有点的 x 和 y 坐标。 我试
我正在尝试在 3D 空间中创建一个圆柱体。我在 3D 中获得起点和终点并放置顶点,我需要为圆柱体的底部和顶部创建 2 个圆。我考虑制作一个坐标为 (1,0,0) 的 vector u 并计算方向 ve
我有以下代码可以在 View 中显示 3D 圆柱体。在设备上查看时,手势会在 x 轴(上下滑动手势)和 y 轴(左右滑动)上旋转圆柱体,但 z 轴被锁定。我相信这是 allowsCameraContr
我需要对我的圆柱体进行纹理处理,我有texture.png并且我已经做了一个多边形网格(带有三角形)。 如果您需要的话,这是代码 pastebin import pyglet import pygle
我是新的 opengl 学习者。我知道有内置函数可以在过剩的情况下绘制圆柱体,比如 GLUquadricObj *quadratic; quadratic=gluNewQuadric(); gluCy
我试图在我的 React 组件中添加圆柱体 3D 图表。但是,我遇到了这个错误。 Error: Highcharts error #17: www.highcharts.com/errors/17/?
我的第一篇文章在这里。 :)我目前正在用 C 语言为我的学校项目编写光线追踪器。我已经可以显示带有一些灯光效果的球体、三角形和平面。现在我想显示圆柱体(然后是圆锥体,但首先是圆柱体!)。我选择有一个平
我正在开发一个小项目,其中我必须从图像中检测 aruco 标记,然后制作覆盖所有白色框的 3d 圆柱体或立方体。 在下面的代码中,它们是一个 detector_marker() 函数,其中我必须返回
我已经计算了索贝尔梯度的大小和方向。但我一直不知道如何进一步使用它来进行形状检测。 图像>灰度>索贝尔过滤>索贝尔梯度和方向计算>下一步? 使用的 Sobel 内核是: Kx = ([[1, 0, -
我想将 Canvas 呈现为圆柱形锥体,您可以像轮子一样在两个方向上旋转。这在 JS/CSS3 中完全可行吗? 最佳答案 您应该看看这个新的 CSS3 功能:自定义过滤器/CSS 着色器。 这里有一些
我是一名优秀的程序员,十分优秀!