- 博客(126)
- 资源 (2)
- 收藏
- 关注
原创 OGRE 3D----6. OGRE中使用自定义GLSL代码渲染
OGRE(Object-Oriented Graphics Rendering Engine)是一个灵活且高效的3D渲染引擎,广泛应用于游戏开发和其他图形应用中。为了充分利用现代GPU的强大功能,开发者可以使用GLSL(OpenGL Shading Language)编写自定义着色器,从而实现复杂的视觉效果。在这篇文章中,我将详细介绍如何在OGRE中使用自定义的GLSL代码进行渲染。
2024-11-28 08:44:32
325
原创 OGRE 3D----5. OGRE和QML事件交互
在现代图形应用程序开发中,OGRE(Object-Oriented Graphics Rendering Engine)作为一个高性能的3D渲染引擎,广泛应用于游戏开发、虚拟现实和仿真等领域。而QML(Qt Modeling Language)则是Qt框架中的一种声明式语言,专注于设计用户界面。将OGRE与QML结合,可以充分利用OGRE的强大渲染能力和QML的灵活界面设计,实现复杂的3D图形应用。通过本文的讲解,读者将能够掌握OGRE和QML的集成技术,提升3D图形应用的开发效率和用户体验。
2024-11-28 08:43:23
571
原创 OGRE 3D----4. OGRE和QML共享opengl上下文
在现代图形应用开发中,OGRE(Object-Oriented Graphics Rendering Engine)和QML(Qt Modeling Language)都是非常流行的工具。OGRE提供了强大的3D渲染能力,而QML则用于构建灵活的用户界面。在某些应用场景中,我们需要在同一个应用程序中同时使用OGRE和QML,并且共享OpenGL上下文,以便在同一个窗口中渲染3D内容和用户界面。本文将介绍如何在OGRE和QML之间共享OpenGL上下文,并提供详细的实现步骤。
2024-11-28 08:43:02
631
原创 OGRE 3D----3. OGRE绘制自定义模型
在使用OGRE进行开发时,绘制自定义模型是一个常见的需求。本文将介绍如何使用OGRE的ManualObject类来创建和绘制自定义模型。通过ManualObject,开发者可以直接定义顶点、法线、纹理坐标等,从而灵活地构建各种复杂的几何体。
2024-11-28 08:42:26
552
原创 OGRE 3D----2. QGRE + QQuickView
将 OGRE(面向对象图形渲染引擎)集成到使用 QQuickView 的 Qt Quick 应用程序中,可以在现代灵活的 UI 框架中提供强大的 3D 渲染功能。本文将指导您如何在 QQuickView 环境中设置 OGRE。
2024-11-28 08:42:10
620
原创 OGRE 3D----1. 创建第一个OGRE 3D示例
OGRE (Object-Oriented Graphics Rendering Engine) 是一个开源的、高级的 3D 图形渲染引擎,它提供了一个抽象层,使得开发者可以专注于创建内容和逻辑,而不必深入底层的图形硬件接口。OGRE 由 C++ 编写,但它支持多种语言绑定,包括 Python 和 .NET 语言。它是跨平台的,支持 Windows、Linux、macOS 等操作系统。主要特性场景管理:OGRE 提供了多种场景管理策略,包括八叉树、BSP(二叉空间分割)等,以高效地管理和渲染3D场景。
2024-09-06 16:45:09
1237
原创 QML----QML+VTK+CMake示例
这个类是VTK和Qt Quick之间的桥梁,使得在现代的Qt应用程序中可以方便地使用VTK的强大3D图形和可视化功能。这样做的好处是简化了资源的部署和访问,因为所有的资源都被包含在单个可执行文件中,而不是分散在文件系统的不同位置。从上面的代码可以看到创建VTK交互的方式与标准VTK示例的方式是一样的,这一点能很方便,因为我们只需要完成QML界面和VTK的集成,后续所有3D的操作,都可以按VTK的方式来处理。这个示例提供了一个基本的框架,展示了如何在使用QML的应用程序中集成VTK渲染。
2024-08-22 08:40:22
365
3
原创 OpenGL----深入理解OpenGL上下文
OpenGL 上下文是一个包含所有 OpenGL 状态的对象。它管理和维护 OpenGL 的各种状态和资源,包括视口、着色器程序、纹理、缓冲区对象等。创建和管理 OpenGL 上下文是使用 OpenGL 进行图形渲染的基础。另外,多个上下文可以共享资源(如纹理和缓冲区对象),这对于多窗口或多线程应用程序非常有用。
2024-08-19 12:27:43
1138
2
原创 VTK----3D picking的原理、类型及实现
3D picking 是一种在三维场景中确定用户点击或指向的对象的技术。这在3D应用程序和游戏中非常常见,允许用户通过点击、拖拽或选择等操作与3D对象进行交互。3D picking 的过程涉及将2D屏幕坐标转换回3D场景空间,以找出该位置下的对象。射线投射(Ray Casting):最常见的技术,通过从相机位置发射一条经过鼠标点击位置的射线进入3D场景,并检测这条射线与场景中对象的交点。颜色拾取(Color Picking)
2024-07-17 08:13:49
1099
原创 VTK----深入理解3D坐标系统和相机
对于有3D开发经验的工作者来说,3D坐标系统和相机是再熟悉不过的内容了,所以这篇文字并不是对它们基本概念的的介绍,而是结合自身对于3D坐标系统和相机中一些似懂非懂问题(如下面的列表)的解答以及详细说明VTK是如何实现3D坐标系统和相机的。
2024-06-24 13:30:48
346
原创 VTK----修复vtkCubeAxesActor刻度线和网格线分离问题
vtkCubeAxesActor在和模式下,即vtkCubeAxesActor对象设置以下两个变量的值:此条件下,根据输入数据集的包围框绘制坐标轴,原vtkCubeAxesActor代码会出的情况,后通过修改vtkCubeAxesActor的源代码,已修复了该问题。
2024-06-12 09:07:25
339
1
原创 VTK----VTK数据结构详解3(代码篇)
上篇文章()从计算机数据结构(数组、链表等)的角度对的实现原理进行了说明,下面从代码的层面详细说明它们的使用及相关实现逻辑。
2024-04-26 14:09:13
1305
原创 VTK----VTK数据结构详解2(计算机篇)
这四个单元列表还将单元分为0维、1维和2维类型。这很有用,因为可视化算法通常会以不同的方式处理不同拓扑顺序的数据。
2024-04-26 13:59:37
977
原创 VTK----VTK数据结构详解1(几何篇)
在讲VTK的数据结构之前,我们先了解可视化数据的两个特征:离散性、有规则或无规则。下面我们就来看看,这些特征是如何塑造VTK的可视化数据模型的。
2024-04-20 14:15:48
1241
原创 VTK ---- 在VTK中实现printf调试着色器代码
该库证实可以直接从着色器使用printf打印输出,它的作用是简化复杂着色器程序的调试,这点非常宝贵,例如这种情况:必须查看循环中变量值的演变并且输出最终值,否则无法提供有关程序是如何工作的足够信息。目前该库是一个头文件,shaderprintf.h。该文件包含一个名为glShaderSourcePrint的函数,它在着色器需要打印功能时替代标准函数glShaderSource。该文件还包含一个名为getPrintBufferString的函数,它用于将所有打印内容以std::string的形式返回。
2024-04-18 09:20:37
184
原创 并发 ---- 多线程原理及底层实现
并发现象遍布日常生活,我们时常接触:我们可以边走路边说话;或者,左右手同时做出不一样的动作;我们每个人也都可以独立行事——当我游泳时,你可以观看足球比赛;诸如此类。
2024-04-07 09:24:51
1162
原创 VTK----VTK的事件机制
事件的发送和接收对于一个应用或系统来说是一个基本的功能,所以一些通用的库对应地也建立了自己的一套管理事件的机制,例如QT、VTK都有自己的事件管理机制。VTK库中定义了很多的事件,这些事件是如何进行管理的,下面从三个方面来详细的说明。
2024-03-18 08:29:23
798
原创 VTK----VTK库中OpenGL的工作流程
VTK库中有很多封装好的几何模型,例如:vtkArrowSource、vtkConeSource、vtkCubeSource等等。了解这些模型在VTK中是如何以OpenGL的工作流程绘制出来的,就能轻松的实现VTK代码到OpenGL代码的转换,同时也是掌握VTK底层工作机制的一个比较好的方法。另外,对于VTK实现的一些特殊功能(例如以球的方式绘制点)也能知道它内部的实现原理。注:VTK创建这些对象的顺序会稍有差异。
2024-03-08 08:43:48
592
1
原创 VTK----VTK库中OpenGL状态控制
vtkOpenGLState::SetEnumState用于设置OpenGL的状态,但代码中通过switch进行了类型判断,不在case中的类型,会直接return,导致OpenGL状态设置不进去。每次渲染时,都会检查OpenGL的状态,如果被外部修改了状态,在这个函数里会被重置。但对于不在VTK控制范围内的OpenGL状态,外部是可以修改的,下面是在。这样的OpenGL状态有很多(在glew.h中),VTK中能够对哪些OpenGL的状态进行控制,控制的方式是什么样的呢?可以看到两者是有区别的,启用。
2024-03-08 08:35:15
1210
1
原创 一些常用到的git命令
git checkout -b dev origin/dev //切换到dev分支上,接着跟远程的origin地址上的dev分支关联起来。//以下两个命令需要在git bash下执行,因为window下找不到grep\xargs命令。git stash -a //缓存所有文件。//git从指定的commit创建分支。//Git中获取当前分支名git。//列出包含某个提交的所有标签。//推送本地分支到远程仓库。//克隆某个Tag的代码。
2024-03-01 09:53:17
436
原创 VTK----VTK中的渲染原理
下面三张图均是用VTK实现的,从中很容易看出它们渲染的效果是有区别的:第一张图:过于明亮,看不到阴影,颜色过渡也不平缓;第二张图:阴影过于明显,图整体不够明亮;第三张图:明亮适中同时保留了阴影。VTK是如何实现不同效果的渲染的?我们又能通过什么方式去控制渲染效果?
2024-02-24 01:51:50
1894
1
原创 OpenGL----OpenGL实现光源位置指示(附带VTK实现)
OpenGL实现光源位置指示,用于模拟类似三维超声中光源和人体模型的位置关系。
2024-02-06 08:32:45
698
1
原创 VTK----Swig实现C++的VTK对象到Python的传递
本文详细描述了如何通过脚本编译生成带Python包的VTK库,如何用Swig实现将C++的VTK对象通过接口打包给Python使用,以及说明了每一步遇到的错误是如何解决的。
2023-12-21 17:37:39
1129
原创 敏捷教练----敏捷项目管理-史诗、故事、主题
https://www.atlassian.com/agile5.4 史诗、故事、主题 假设你和你的团队想做一些雄心勃勃的事情,比如发射一枚火箭进入太空。要做到这一点,你需要组织你的工作:从最大的目标到最细微的细节。你会希望能够对变化做出反应,汇报你的进展,并坚持一个计划。史诗、故事、主题和计划正是您需要的工具。 通过了解这些流行的敏捷方法如何帮助组织工作,您的团队可以在结构、灵活性和向太空发射火箭之间取得健康的平衡。什么是故事,史诗,方案和主题?故事,也称为“用户故...
2020-06-23 08:30:24
5876
原创 敏捷教练----敏捷项目管理-工作流
https://www.atlassian.com/agile 每个软件团队都有一个用来完成工作的流程。对该流程进行规范化(即,将其建立为工作流程)使其结构清晰且可复用,从而使它具有可伸缩性。5.3.1 从简单的开始,从现在开始 当为团队实现工作流时,总是从简单的开始。抵制花几周时间(过度)设计它的诱惑。过于复杂的工作流很难理解和采用,更不用说适应了。对于软件团队,我们推荐这些基本的工作流程状态:待做: 尚未开始的工作 进行中:团队正在积极关注的工作 代码审查:工作...
2020-06-23 08:18:20
589
原创 敏捷教练----敏捷项目管理-程序
https://www.atlassian.com/agile5.2 程序 敏捷开发的早期采用者是小型的、独立的团队,他们从事小型的、自包含的项目。他们证明了敏捷模式是可行的,这让世界各地的软件制造商感到高兴并得到了改进。最近,更大的组织正在将敏捷扩展到单个团队或项目之外,并寻找将其应用到整个项目的方法。 这并非没有挑战。但这并不意味着这是不可能的!5.2.1 瀑布和敏捷 让我们从基础开始——比如敏捷的不同之处。 瀑布之类的传统项目管理风格是...
2020-06-23 08:12:57
559
原创 敏捷教练----敏捷项目管理-总览
https://www.atlassian.com/agile 5.1 总览5.1.1 什么是敏捷项目管理? 软件团队已经采用敏捷项目管理方法近十年了,提高了他们的速度、协作和响应市场趋势的能力。 但是它是什么,它能帮助您的软件团队吗?下面是开始或改进敏捷项目管理实践所需的所有知识。5.1.2 敏捷项目管理的历史 敏捷项目管理是一种迭代的方法,用于管理软件开发项目,该项目关注于连续的发布,并在每次迭代中结合客户反馈。 源自20世纪40年...
2020-06-23 08:04:36
722
原创 敏捷教练----Scrum-看板
https://www.atlassian.com/agile 4 看板4.1 总览4.1.1 什么是看板? 看板是一种流行的框架,用于实现敏捷软件开发。它要求实时沟通的能力和完全透明的工作。工作项在看板板上可视化地表示,允许团队成员在任何时候看到每个工作的状态。 在当今的敏捷软件团队中,看板是非常重要的,但是看板的工作方法可以追溯到50年前。在1940年代后期,丰田汽车开始根据超市所使用的相同模型来优化其工程流程。超市只储备足以满足消费者需求的产品,这种...
2020-06-03 21:09:57
1359
原创 敏捷教练----Scrum-每日站会和敏捷回顾
https://www.atlassian.com/agile 站会是敏捷开发的基本组成部分之一,通常是最容易被误解的部分。让我们现实点:单靠站会不会使您的团队敏捷。它不是用来夸大自我或证明工作描述合理。它也不是不是计划时间,而冲刺计划是用于计划。 它也不是故意来阻碍工作的。 它是在如果您遇到困难,寻求帮助的时候!3.7.1 什么是Scrum的站会? 在许多运动中,例如(美式)橄榄球和橄榄球,球队在每次比赛前都会挤成一团。碰头会是战略性的::在整个比赛过程中,...
2020-06-03 21:03:32
1917
原创 敏捷教练----Scrum-冲刺评审
https://www.atlassian.com/agile Sprint评审不是回顾。sprint评审是关于展示整个团队的辛勤工作的:设计师、开发人员和产品负责人。在Atlassian,我们喜欢让我们的sprint评论保持随意。团队成员聚集在一张桌子旁进行非正式的演示,并描述他们为该迭代所做的工作。这是一个提问、尝试新功能并给出反馈的时间。分享成功是构建敏捷团队的重要部分。 让我们首先回顾一下为什么团队对“完成”的定义对敏捷仪式如此重要。3.6.1 第一步...
2020-06-03 20:56:12
1076
1
原创 敏捷教练----Scrum-待办事项列表(backlog)
https://www.atlassian.com/agile 一个良好优先级的敏捷backlog不仅使发布和迭代计划更容易,它还传播了你的团队打算花时间做的所有事情——包括客户永远不会注意到的内部工作。这有助于为涉众和其他团队设定期望,特别是当他们为您带来额外的工作时,并使工程时间成为固定资产。3.5.1 什么是产品待办事项列表? 产品待办事项列表是根据路线图及其需求为开发团队列出的工作的优先级列表。最重要的项目显示在产品待办事项列表的顶部,这样团队就知道首先要...
2020-06-03 20:50:07
5773
原创 敏捷教练----Scrum-仪式
https://www.atlassian.com/agile3.4 仪式 会议或“仪式”是敏捷开发的重要组成部分。但它们是许多重要元素之一,不应该在真空中进行。(在瀑布项目中加入一些仪式并称之为“敏捷”,这听起来很诱人,但这不会给你带来任何好处。) 让我们看一看每一个敏捷仪式,并了解它们是如何授权团队和驱动敏捷开发的。注意:这些仪式中的许多仪式都来自Scrum的实践,这是一种迭代的,有时间限制的实现敏捷的方法。 这些仪式背后的概念可以应用于其他形式的敏捷,例如看板或lea...
2020-05-25 08:17:51
533
原创 敏捷教练----Scrum-冲刺计划
https://www.atlassian.com/agile3.3.1 什么是冲刺计划? Sprint计划是scrum中开始Sprint的事件。sprint计划的目的是定义在sprint中可以交付什么,以及如何实现该工作。Sprint计划是与整个scrum团队协作完成的。 与体育界不同的是,scrum鼓励你总是全速前进,这样你就可以在不断学习和改进的同时交付可用的软件。 在Scrum中,冲刺是完成所有工作的固定时间段。 但是,在您采取行动之前,您必须设置冲...
2020-05-25 08:10:34
1498
1
原创 敏捷教练----Scrum-冲刺
https://www.atlassian.com/agile3.2.1 什么是冲刺? “冲刺”是指scrum团队在短时间内完成一定数量的工作。sprint是scrum和敏捷方法的核心,正确的sprint将帮助敏捷团队开发出更好的软件,减少令人头痛的问题。 Atlassian公司的Jira软件团队产品经理梅根·库克(Megan Cook)说:“使用Scrum,一个产品是在一系列被称为冲刺的迭代中构建的,这些迭代将大型、复杂的项目分解成小块。” “sprint使...
2020-05-25 08:05:09
1697
原创 敏捷教练----Scrum-概述
https://www.atlassian.com/agile3.1 总览 Scrum是一个框架,可以帮助团队一起工作。就像橄榄球队(以此为名)为大型比赛训练一样,Scrum鼓励团队学习经验,在解决问题时自我组织,并反思自己的得失,以不断提高。 虽然我所谈论的Scrum最常被软件开发团队使用,但是它的原理和课程可以应用于各种团队合作。这是Scrum如此受欢迎的原因之一。人们通常认为Scrum是一种敏捷的项目管理框架,它描述了一组会议,工具和角色,它们可以协同工作,以帮助团队构...
2020-05-22 08:29:59
617
原创 敏捷教练----敏捷宣言
敏捷软件开发宣言 我们一直在实践中探寻更好的软件开发方法, 身体力行的同时也帮助他人。由此我们建立了如下价值观: ...
2020-05-22 08:12:50
279
原创 敏捷教练----什么是敏捷
1 什么是敏捷? 敏捷是一种用于项目管理和软件开发的迭代方法,可帮助团队更快地为客户提供价值,并减少麻烦。敏捷团队没有将一切都押注在“大爆炸”发布上,而是以较小但可消耗的增量交付工作。需求,计划和结果会得到持续评估,因此团队拥有自然的机制可以快速响应变化。 传统的“瀑布式”方法有一个规程贡献给项目,然后把它“扔到墙外”给下一个贡献者,而敏捷方法需要跨功能的协作团队。团队成员之间的开放沟通、协作、适应和信任是敏捷的核心。尽管项目负责人或产品负责人通常对交付的工作进行优先级排序,但团...
2020-05-22 08:01:20
458
原创 持续集成、持续交付、微服务----微服务
https://www.atlassian.com/continuous-delivery/microservices什么是微服务? 术语“微服务”是一个现代术语,用于描述分布式、网络化项目中的传统“关注点分离”模式。微服务是一种遵循古老的unix基本哲学的思想,即“小而锋利的工具”。这两个概念都建立在另一个基本的计算机科学“组合”模式的基础上,这意味着复杂系统是较低层次的可组合实体的总和。 组合贯穿于软件项目的所有层。在最底层,即“单元级”,各个独立的代码函数通过共享接口相...
2020-05-21 21:32:45
1013
原创 持续集成、持续交付、微服务----CI/CD
背景 从最初的?瀑布模型,到后来的?敏捷开发,再到今的?DevOps, 这是现代开发人员构建出色产品的技术路线。 随着 DevOps的兴起,出现了持续集成,持续交付(CI/CD)和持续部署的新方法, 而传统的软件开发和交付方式在迅速变得过时。过去的敏捷时代里, 大多数公司的软件发布周期是每月、每季度甚至每年(还记得那些日子吗?),而在现在 DevOps 时代,每周、每天甚...
2020-05-21 21:05:51
560
解析cps3数据之后转换为的二进制文件
2024-02-20
从零开始学习VTK.pdf
2019-07-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人