Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在OpenGL中绘制多个相关对象

在OpenGL中绘制多个相关对象
EN

Stack Overflow用户
提问于 2011-10-14 19:51:44
回答 3查看 1.3K关注 0票数 0

我希望使用OpenGL绘制一个基本的机械臂,使用原始形状,如圆柱体,立方体等。

在这一点上,我设法通过应用必要的变换来静态地绘制手臂。平移、旋转、缩放等。

我现在需要让它具有交互性。也就是说,当用户选择某个对象并四处移动时,附加到该对象的较小对象必须移动。

示例:-如果用户正在移动手臂,则手腕、手掌和手指必须移动,但不能移动肩膀。同样,如果选择手掌并围绕手腕旋转,则只有连接到该手掌的手指可以随手掌一起移动,而不是手臂或手腕。

我必须在代码中遵循哪种设计模式才能干净利落地实现这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-15 10:08:41

您在这里所做的被称为转换层次结构,实际上在OpenGL-1.1编程指南中关于转换的章节中已经涵盖了( OpenGL的最新版本,即v3和后来的更大版本)中包含了矩阵操作的东西,所以您需要自己实现这一点,但原理保持不变。

看看这一章的末尾(我建议你读完整篇文章):

http://fly.cc.fer.hr/~unreal/theredbook/chapter03.html

票数 1
EN

Stack Overflow用户

发布于 2011-10-14 20:11:58

我不是专家,但我认为您应该考虑在OpenGL之上使用工具包。也许是像OpenSceneGraph ( http://www.openscenegraph.org/projects/osg/wiki/About/Introduction )这样的东西

请看这里对它的介绍:http://www.artoolworks.com/support/library/An_Introduction_to_OpenSceneGraph_and_osgART

它解释说,您可以构建将被链接的“对象树”。

票数 1
EN

Stack Overflow用户

发布于 2011-10-14 20:31:13

我自己没有使用过它们,但我知道OpenGL会跟踪堆栈上的转换矩阵。

这似乎允许您推动一个变换矩阵来绘制父对象(例如,上臂),然后使用其组件的层次关系,顺序地推动和弹出手臂的每个子对象的变换矩阵。变换按顺序应用于当前堆栈上的每个矩阵,因此只需对每个父对象应用一次变换,然后相对于其位置绘制所有子对象。

请查看此页面以了解更多详细信息(我自己还没有读过!):

http://fly.cc.fer.hr/~unreal/theredbook/chapter03.html

这有帮助吗?它似乎适用于您所描述的简单情况。对于更复杂的应用程序,Pascal T.是正确的,您可能想要查看OpenGL之上的层。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7772839

复制
相关文章
【OpenGL】十一、OpenGL 绘制多个点 ( 绘制单个点 | 绘制多个点 )
在上一篇博客 【OpenGL】十、OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | 清除缓冲区 | 设置当前颜色值 | 设置点大小 | 绘制点 ) 中 , 讲解了绘制单个点的操作 , 本篇博客简单介绍下绘制多个点 ;
韩曙亮
2023/03/28
1.3K0
【OpenGL】十一、OpenGL 绘制多个点  ( 绘制单个点 | 绘制多个点 )
【OpenGL】十九、OpenGL 绘制模式 ( 绘制线框模式 | 绘制点模式 )
使用 glPolygonMode(GL_FRONT, GL_LINE) 设置当前的绘制模式是线框模式 , 设置了该模式后 , 之后的所有图形都会变成线 ;
韩曙亮
2023/03/28
2K0
【OpenGL】十九、OpenGL 绘制模式  ( 绘制线框模式 | 绘制点模式 )
OpenGL基本框架与三维对象绘制
上次我们介绍了OpenGL的环境构建和二维对象的绘制,这次我们来讲讲三维对象的绘制:  绘制代码如下: // opengltest2.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <GL/glut.h> #include <stdio.h> #include <stdlib.h> #include <math.h> #define PI 3.1415926 //金字塔初始
Zoctopus
2018/06/04
7570
OpenGL ES 绘制纹理
在OpenGL ES中绘制一张图片需要使用到纹理(texture),绘制纹理步骤如下:
老孟Flutter
2020/09/11
1.1K0
用OpenGL绘制地球
本想用自动纹理坐标生成做的,可是红宝书上说得一点都不明白。网上有个人的课程设计是自己画的球,就是一个个四边形的拼个球,然后再给四边形贴图。这样太麻烦了!逛啊逛,让我找到了另一种方法,仅仅几行代码: // 画地球 void OpenGL::DrawEarth(void) ...{     GLUquadricObj *quadObj = gluNewQuadric();//创建一个二次曲面物体     gluQuadricTexture(quadObj,GL_TRUE);        //启用
逍遥剑客
2018/05/21
2.9K0
【OpenGL】九、OpenGL 绘制基础 ( OpenGL 状态机概念 | OpenGL 矩阵概念 )
上一篇博客 【OpenGL】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为 OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★ 进行了 OpenGL 渲染环境初始化 ;
韩曙亮
2023/03/28
4.2K0
opengl-球体的绘制
将y轴切分成64等分,x-z平面切分成64等分的扇形 y轴从上到下取值为[0, 180],即[0, π],x-z平面扫描取值[0, 360]即[0, 2π] 详细计算,参考如下代码,把一个球体拆分成65 * 65 个点 注意: y = cos(ySegment * PI); x = sin(ySegment * PI) * cos(xSegment * 2 * PI); x = sin(ySegment * PI) * sin (xSegment * 2 * PI); 按照上面这个顺序来理解比较容易
公号sumsmile
2020/08/26
4K1
opengl-球体的绘制
OpenGL 系列---基础绘制流程
OpenGL 是一种应用程序编程接口,它是一种可以对图形硬件设备特性进行访问的软件库。
音视频开发进阶
2019/07/26
1.9K0
OpenGL ES 对象
VBO(Vertex Buffer Object)是指顶点缓冲区对象,而 EBO(Element Buffer Object)是指图元索引缓冲区对象,VAO
ruochen
2021/11/24
1.7K0
OpenGL 的 glDrawElements 绘制方法
在之前的绘制中,我们都是通过 glDrawArrays 方法来实现的,它会按照我们传入的顶点顺序和指定的绘制方式进行绘制。
音视频开发进阶
2019/07/25
2.4K0
OpenGL ES for Android 绘制线
line_vs.glsl和line_fs.glsl分别表示顶点shader和片段shader的文件,存放于assets/glsl目录下,readAssetsTxt为读取assets目录下文件的公用方法。
老孟Flutter
2020/09/11
9701
[答疑]多个对象(红圈)在EA中怎么画出来的
lihongwei(62***407) 14:39:02 多个对象(红圈)在EA中怎么画出来的?
用户6288414
2021/07/14
1K0
【OpenGL】十八、OpenGL 绘制多边形 ( 绘制 GL_POLYGON 模式多边形 )
使用 glBegin(GL_POLYGON) 设置绘制多边形 , 不管有几个点 , 都按照指定的顺序连接起来 ;
韩曙亮
2023/03/28
3.1K0
【OpenGL】十八、OpenGL 绘制多边形  ( 绘制 GL_POLYGON 模式多边形 )
【OpenGL】十三、OpenGL 绘制三角形 ( 绘制单个三角形 | 三角形绘制顺序 | 绘制多个三角形 )
三角形绘制即绘制一个面 , 三个点可以唯一确定一个面 , 四个点及多个点组成的多边形 , 不一定是一个面 ;
韩曙亮
2023/03/28
2.8K0
【OpenGL】十三、OpenGL 绘制三角形  ( 绘制单个三角形 | 三角形绘制顺序 | 绘制多个三角形 )
IOS – OpenGL ES 绘制线条 GPUImageLineGenerator
GPUImageLineGenerator 属于 GPUImage 图像处理相关,用来处理图片线条效果,shader 源码如下:
猿说编程[Python和C]
2023/03/25
5240
Shader 优化 | OpenGL 绘制网格效果
除了介绍 KodeLife 的使用之外,还附带了一个 Shader 绘制网格效果的代码。Shader 讲解
音视频开发进阶
2020/05/26
1.8K0
【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )
线的绘制宽度是 OpenGL 状态机中的一个值 , 通过 glLineWidth 方法设置 ; 下面的代码将线的宽度设置为 2 像素 ;
韩曙亮
2023/03/28
4.7K0
【OpenGL】十二、OpenGL 绘制线段  ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )
Flash在DirectX中的绘制
这里使用的是之前我说过的OLE控件在Direct3D中的渲染方法, 自己不进行swf的解析, 这不现实. 前提条件: COM编程, OLE编程, DirectX编程, ActionScript/Flash(可选). 创建一个ShockwaveFlashObjects::IShockwaveFlash的对象 实现一个IOleClientSite来做为IShockwaveFlash的容器 绘制 通过OleDraw来把GDI的像素数据绘制到DC上(IShockwaveFlash是一个IViewObjec
逍遥剑客
2018/05/23
1.8K0
OpenGL 学习系列---基本形状的绘制
在之前的一篇博客中,讲述了 OpenGL 基础绘制流程 及相关的代码,其中关于 OpenGL 程序编译部分都是可以在其他项目中接着复用的,接下来会讲到如何去绘制其他的基本图元。
音视频开发进阶
2019/07/25
1.9K0
OpenGL ES for Android 绘制旋转的地球
No 图 No Code,上面旋转的地球是不是很酷炫,下面就让我们开始说说如何绘制旋转地球吧?绘制旋转地球需要3个步骤:
老孟Flutter
2020/09/11
1.7K0

相似问题

在OpenGL中绘制多个对象

12

在OpenGL 4中绘制多个对象

12

无法在opengl中绘制多个对象

10

OpenGL绘制多个对象

118

OpenGL绘制多个对象

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文