Opengl es 使用OpenGL ES,如何在三维空间中绘制末端始终与查看平面平行的扁平功能区(四边形)?

Opengl es 使用OpenGL ES,如何在三维空间中绘制末端始终与查看平面平行的扁平功能区(四边形)?,opengl-es,3d,geometry,opengl-es-2.0,trigonometry,Opengl Es,3d,Geometry,Opengl Es 2.0,Trigonometry,好吧,我肯定这个标题让人困惑,但我们要做的其实很简单。为了解释计算,考虑在三维空间中绘制的圆柱体,给出其中心线和直径的两个端点。现在,在屏幕平面上绘制其轮廓,但将两端对齐,使它们彼此平行,并与屏幕平面平行。这就是我们需要的“外观” 现在我们可以简单地做到这一点。。。绘制具有平面照明的圆柱体以获得此效果。但是,由于我们实际上并没有显示3D着色,因此计算构成圆柱体表面的所有三角形将是完全多余的 从技术上讲,我们所需要的只是一个四边形,或者最多两个三角形。如果概念圆柱体与屏幕平行,则结果将只是一个矩形

好吧,我肯定这个标题让人困惑,但我们要做的其实很简单。为了解释计算,考虑在三维空间中绘制的圆柱体,给出其中心线和直径的两个端点。现在,在屏幕平面上绘制其轮廓,但将两端对齐,使它们彼此平行,并与屏幕平面平行。这就是我们需要的“外观”

现在我们可以简单地做到这一点。。。绘制具有平面照明的圆柱体以获得此效果。但是,由于我们实际上并没有显示3D着色,因此计算构成圆柱体表面的所有三角形将是完全多余的

从技术上讲,我们所需要的只是一个四边形,或者最多两个三角形。如果概念圆柱体与屏幕平行,则结果将只是一个矩形。如果圆柱体朝向或远离屏幕,则生成的轮廓是一个简单的梯形。这里有一个例子

  • A.与屏幕平行,关闭
  • B.平行于屏幕,远
  • C.角度远离屏幕,从左上(近)到右下(远)
  • D.与屏幕成一定角度,从左下角(远)到右上角(近)

我们要做的就是在3D空间中指定中心线(红色)的端点以及功能区的“宽度”。但要做到这一切,您不仅需要考虑3D空间中的端点,还需要考虑相机的位置,以确定如何使端点平行于观察平面,从而不使其宽度倾斜,此时,您还可以返回到变换圆柱体的裁剪轮廓


有人能提出一个简单的好方法吗?

我会从一个矩形开始,上面有你想要的线条长度和宽度,然后执行一个

但那是我


或者你可以从你的飞机(相机)上取任何一条线。还有你的线段。这两个可以用来组成一个新的平面。然后计算这个新平面的法线。这将垂直于直线和平面。我想这就是你要找的。

我会从一个矩形开始,它有你想要的线条长度和宽度,然后执行一个

但那是我


或者你可以从你的飞机(相机)上取任何一条线。还有你的线段。这两个可以用来组成一个新的平面。然后计算这个新平面的法线。这将垂直于直线和平面。我想这就是你想要的。

我不确定我是否理解这个问题。在我看来,从标题来看,你想要的东西总是像示例A或B一样显示-C和D中的什么东西平行于观察平面?所有四种形状的端点(四个形状中较短的两个…例如红线接触的端点)平行于观察平面(即屏幕)。注意,它们也垂直于中心(红色)3D空间(世界)和2D空间(屏幕)中的线条,正如你在这里看到的。(注意,这些都是手绘的,所以它们可能不会完美地显示出来,但你应该明白。)你要找的是一种广告牌。我自己没有细节,但看起来可能包括答案(呼叫您正在寻找的圆柱形广告牌)。你可以自己尝试一些关于这些关键词的研究。事实上,这些脸并不朝向相机,所以并不完全相同,但我会查看该教程,看看是否有我可以使用的信息。我不确定我是否理解这个问题。从标题看,你似乎想要一些始终显示为示例A或示例的东西B-C和D中的什么与观察平面平行?所有四种形状的端点(四个中较短的两个…例如红线接触的端点)与观察平面(即屏幕)平行。注意,它们也与3D空间(世界)和2D空间(屏幕)中的中心(红色)线垂直,正如您在这里看到的。(请注意,这些是手绘的,因此它们可能无法完美地显示出来,但您应该了解这一点。)您正在寻找的是一种广告牌。我自己没有详细信息,但看起来可能包括答案(称为您正在寻找的圆柱形广告牌).你可以自己用这些关键词做一些研究。事实上,这些脸不朝向相机,所以不完全一样,但我会看看那个教程,看看是否有我可以使用的信息。