什么是opengl®拾取?(opengl® picking?)

计算机编程中的OpenGL®拾取是在渲染场景后确定三维(3D)场景中的哪个对象位于屏幕上的给定点的过程。它还可以指在一个点或一个框内定位多个对象。通常,OpenGL®拾取用于确定用户试图用鼠标光标选择屏幕上的3D对象。虽然此操作看起来很简单,但OpenGL®渲染场景的方式有几个微妙之处,这会使场景变得相当复杂。此外,某些图形卡和驱动程序中存在固有故障,可能导致OpenGL®拾取功能失败并返回错误结...

计算机编程中的OpenGL®拾取是在渲染场景后确定三维(3D)场景中的哪个对象位于屏幕上的给定点的过程。它还可以指在一个点或一个框内定位多个对象。通常,OpenGL®拾取用于确定用户试图用鼠标光标选择屏幕上的3D对象。虽然此操作看起来很简单,但OpenGL®渲染场景的方式有几个微妙之处,这会使场景变得相当复杂。此外,某些图形卡和驱动程序中存在固有故障,可能导致OpenGL®拾取功能失败并返回错误结果。

OpenGL picking is the process of determining what object within a three-dimensional (3D) scene is located at a given point on the screen once the scene is rendered.

当用户在计算机监视器上观看3D场景时,生成的图像称为场景的渲染。场景实际上作为基本形状或多边形的集合存储在内存中,这些基本形状或多边形本身只是场景空间内的三维点的集合。计算机使用世界坐标(有时称为绝对坐标)来执行操纵场景中对象的最基本功能。在大多数应用程序中,用户能够将场景视图调整到不同的角度,以便可以从不同的角度看到对象。用户在场景中的虚拟位置称为摄影机角度或摄影机位置。

OpenGL®拾取的复杂性来自于从场景中的任意位置和角度(相机位置)确定鼠标在二维(2D)屏幕上的位置。此外,由于从人类查看器的角度进行的渲染实际上是二维的,因此用户无法提供场景中鼠标单击的深度。OpenGL®拾取功能通过两种方式解决了这一复杂问题。

第一个是,该函数不是执行一系列单独的计算来转换观察者抽象的位置,然后在渲染窗口中查找对象,而是实际渲染场景,与正常工作时一样,只是没有显示用于选择的渲染,它仅用于计算对象的正确位置。不同之处在于,它只渲染鼠标所在的区域,而不是渲染用户可见的整个区域。这意味着从技术上讲,渲染的任何对象都位于鼠标指针所在的点。

第二个问题,即无法指示选定区域的深度,可以通过返回场景中鼠标坐标下的所有对象来解决。OpenGL®拾取函数返回数组中的所有对象以及它们与查看器位置的距离。这允许程序在需要时快速找到最近的对象。

可视化OpenGL®拾取的一种方法是,想象一条线(在3D编程中有时称为射线)从鼠标指针的位置移动到场景中,并远离观看者的位置。此光线接触的每个对象都将添加到对象数组中,以及它与查看器的距离。这是一个非常简单的解释,说明了一种形式的OpenGL®拾取是如何工作的。

OpenGL®中的另一种对象拾取方法涉及到按颜色定位对象,而且速度会快得多。此方法渲染场景,但不是将照明和纹理应用于对象,而是使用单一的简单颜色进行渲染。每个对象或对象组都有自己独特的颜色。场景仅在内存中渲染而不显示,因此这不会影响用户看到的内容。不再查找对象之间的三维碰撞,而是返回鼠标光标位置的颜色,该颜色将与特定对象关联。

  • 发表于 2021-12-14 12:35
  • 阅读 ( 64 )
  • 分类:互联网

你可能感兴趣的文章

opengl(opengl)和开放计算语言(opencl)的区别

...编写程序。它们都是用C语言编写的。 覆盖的关键领域 1.什么是OpenGL–定义,功能2.什么是OpenCL–定义,功能3.OpenGL和OpenCL的区别是什么–主要区别的比较 关键术语 OpenGL,OpenCL 什么是opengl(opengl)? OpenGL是一个用于绘制二维和三...

  • 发布于 2021-07-01 12:42
  • 阅读 ( 435 )

什么是opengl®3d模型?(opengl® 3d models?)

OpenGL®3D模型在最一般的意义上是三维(3D)空间中连接点的集合,称为顶点,它们组合形成一系列多边形,可以渲染以表示虚拟空间中的对象。几乎所有不是形状基本体的...

  • 发布于 2021-12-08 11:36
  • 阅读 ( 143 )

什么是opengl®线条?(opengl® lines?)

在OpenGraphics Library®(OpenGL®)中,线是OpenGL®能够绘制的基本基本形状之一,它们构成了有时用于渲染三角形的构建块之一。OpenGL®线条只是两个顶点之间的直线连接图形。...

  • 发布于 2021-12-08 11:39
  • 阅读 ( 91 )

什么是opengl®和directx®之间的区别?(the differences between opengl® and directx®?)

Open Graphics Library®(OpenGL®)和DirectX®都是图形渲染程序,但两者之间存在重大差异。游戏程序员通常选择DirectX®,因为它有许多专门用于游戏渲染的功能,而OpenGL®则用于...

  • 发布于 2021-12-08 14:35
  • 阅读 ( 155 )

什么是不同类型的opengl®驱动程序?(the different types of opengl® drivers?)

OpenGL®(开放图形语言)是一种开源标准和抽象编程接口(API),用于在计算机程序中编程三维(3D)图形。要使API在编译和运行时工作,执行程序的计算机必须安装正确的O...

  • 发布于 2021-12-08 22:37
  • 阅读 ( 149 )

什么是不同类型的opengl®库?(the different types of opengl® libraries?)

有几种类型的OpenGraphics Library®(OpenGL®)库可以安装并在计算机系统上使用,其中大多数库满足图形程序员的特定需求。第一种类型包括基本的核心OpenGL®库,其中包含大约...

  • 发布于 2021-12-08 22:38
  • 阅读 ( 148 )

什么是2d opengl®?(2d opengl®?)

OpenGraphics Library®(OpenGL®)主要是一个编程接口,允许软件应用程序与图形硬件交互,并快速高效地创建三维(3D)场景。使用二维(2D)OpenGL®编程技术,库提供的硬件加...

  • 发布于 2021-12-09 12:26
  • 阅读 ( 141 )

什么是加速opengl®模式?(accelerated opengl® mode?)

计算机图形中的加速开放图形库®(OpenGL®)模式是一种可在计算机图形卡中激活的状态,以使用图形卡的硬件功能执行部分或全部OpenGL®命令和渲染,而不是默认为纯基于...

  • 发布于 2021-12-09 15:02
  • 阅读 ( 147 )

什么是opengl®ati™ 驾驶员(an opengl® ati™ driver?)

开放图形库®(OpenGL®)ATI™ 驱动程序是由ATI开发的软件接口™ 这些技术将成为图形卡硬件和OpenGL®库抽象编程接口(API)之间的桥梁。每个操作系统都有不同的驱动程序,...

  • 发布于 2021-12-11 17:31
  • 阅读 ( 149 )

什么是opengl®相机?(an opengl® camera?)

“OpenGL®照相机”是指开放图形库®(OpenGL®)场景中的查看器虚拟位置的名称。它由查看器在场景中的位置定义,然后由查看器查看的位置或方向定义。摄影机在OpenGL®场景...

  • 发布于 2021-12-11 17:33
  • 阅读 ( 108 )
谜一样的萝莉酱
谜一样的萝莉酱

0 篇文章