Boids群集动画中Mesh碰撞检测的研究与实现
- 格式:pdf
- 大小:218.18 KB
- 文档页数:2
《三维场景中碰撞检测技术的研究》篇一一、引言随着三维技术的飞速发展,三维场景在众多领域如游戏开发、虚拟现实、机器人技术等中扮演着至关重要的角色。
在三维场景中,碰撞检测技术是一项核心且基础的技术,其直接影响到虚拟世界中物体运动的真实性和交互性。
本文将重点探讨三维场景中碰撞检测技术的研究,从其基本原理到最新的发展动态进行深入分析。
二、碰撞检测技术的基本原理碰撞检测技术是指在三维场景中,通过算法对物体之间的空间位置关系进行计算,判断物体之间是否发生碰撞的过程。
其基本原理主要包括以下几步:1. 空间划分:将三维空间划分为多个子空间,每个子空间内的物体互不干扰。
这样可以大大减少碰撞检测的复杂度。
2. 物体建模:对场景中的物体进行建模,包括几何形状、物理属性等。
这是进行碰撞检测的基础。
3. 空间位置计算:通过算法计算物体在三维空间中的位置和运动轨迹。
4. 碰撞判断:根据空间位置计算的结果,判断物体之间是否发生碰撞。
三、常见的碰撞检测技术根据不同的应用场景和需求,常见的碰撞检测技术包括以下几种:1. 边界框法:通过计算物体的边界框,判断两个物体的边界框是否相交,从而判断是否发生碰撞。
该方法简单快速,但精度较低。
2. 特征形状法:根据物体的特征形状进行碰撞检测,如使用点、线、面等特征进行判断。
该方法精度较高,但计算复杂度较大。
3. 空间网格法:将三维空间划分为网格,将物体置于网格中,通过判断网格的交集来判断物体是否发生碰撞。
该方法在精度和计算复杂度之间取得较好的平衡。
四、最新的发展动态近年来,随着深度学习和机器视觉等技术的发展,碰撞检测技术在三维场景中的应用也取得了重要进展。
其中包括基于深度学习的物体识别和姿态估计技术,以及基于机器视觉的三维重建和运动跟踪技术等。
这些技术可以提高碰撞检测的精度和效率,使虚拟世界中的物体运动更加真实和自然。
五、未来展望未来,随着三维技术的进一步发展,碰撞检测技术将面临更多的挑战和机遇。
多机器人并行动态包围体层次树碰撞检测算法1.简介介绍多机器人并行动态包围体层次树碰撞检测算法的研究背景和意义,以及目前碰撞检测算法的研究现状。
2.多机器人并行动态包围体层次树的设计与优化介绍多机器人并行动态包围体层次树的设计思路,分析不同设计方案的优劣,并介绍相应的优化方法与技术。
3.并行动态包围体层次树的自适应更新机制介绍并行动态包围体层次树的自适应更新机制,探讨其原理与实现,以及在实际应用中的作用。
4.基于多机器人并行动态包围体层次树的碰撞检测算法采用多机器人并行动态包围体层次树,设计并实现高效的碰撞检测算法,并对比与其他常用算法的性能差异。
5.实验与应用对设计的算法进行实验验证,探究其性能和可行性,并在实际机器人控制系统中进行应用,对算法的有效性进行验证。
6.总结与展望总结本文研究内容,归纳和总结本文的主要贡献,以及未来的研究方向和挑战。
第1章节:简介多机器人并行动态包围体层次树碰撞检测算法是一种新型的机器人技术,它可以自动检测和避免机器人之间的碰撞。
随着机器人应用场景不断扩展和多机器人协作越来越普遍,机器人与机器人之间的碰撞问题也日益突出,因此,研究并实现一种高效的机器人碰撞检测算法具有重要的现实意义和应用价值。
目前,机器人碰撞检测算法主要分为基于精度和基于速度的两种类型。
精度型算法通过分析机器人的精确几何模型来预测碰撞,其识别精度较高,但计算密集度大,速度较慢。
而速度型算法则通过简化模型和快速检测来提高碰撞检测的效率和速度,但精度较低。
另外,随着机器人和环境的动态变化,实时性也成为了机器人碰撞检测算法的重要性能指标。
为解决机器人碰撞检测算法的实时性、精度和速度等问题,研究者提出了基于并行计算和自适应更新的动态包围体层次树碰撞检测算法。
该算法通过将机器人的多边形表面划分为凸包形式,并将凸包构建成动态的层次树结构,实现机器人运动轨迹的实时更新,极大提高了计算效率。
同时,基于自适应更新的动态包围体层次树可以根据机器人和环境的运动情况进行快速的动态更新,保证了碰撞检测的准确性。
虚拟场景中的碰撞检测算法
马登武;孙隆和;佟明安
【期刊名称】《火力与指挥控制》
【年(卷),期】2004(029)004
【摘要】综述了当前出现的虚拟场景中的各种碰撞检测算法.重点对包围盒层次法中的轴向包围盒法(AABB)、方向包围盒法(OBB)、离散方向多面体法(K-DOPs)的检测原理和检测效率进行了分析比较.得出的主要结论是:包围盒层次法应用极为广泛,检测效率取决于对包围盒的选取.K-DOPs是介于AABBs和凸包之间的包围盒,只要合理地选取平行平面对的个数和方向,就可以在碰撞检测的简单性和包裹物体的紧密性之间取得较好的折衷.
【总页数】4页(P45-48)
【作者】马登武;孙隆和;佟明安
【作者单位】西北工业大学,陕西,西安,710072;西北工业大学,陕西,西安,710072;西北工业大学,陕西,西安,710072
【正文语种】中文
【中图分类】TP391.9
【相关文献】
1.基于可拓学的实现虚拟场景漫游中的碰撞检测 [J], 曹礼园
2.虚拟场景中基于空间域的碰撞检测算法研究 [J], 张振华;周文理;全富军;孟凡宇
3.虚拟场景中基于空间域的碰撞检测算法研究 [J], 张振华;周文理;全富军;孟凡宇;
4.虚拟场景中动态碰撞检测算法研究 [J], 李佳;董屹
5.虚拟场景中动态碰撞检测算法研究 [J], 李佳;董屹;;
因版权原因,仅展示原文概要,查看原文内容请购买。
Blender中的物理模拟技巧:创造动态的碰撞效果Blender是一款强大的3D建模和动画软件,它不仅仅可以用于静态场景的渲染,还可以通过物理模拟技巧,实现动态的碰撞效果。
本文将介绍几种常用的方法和技巧。
首先,我们需要了解一些基本概念。
在Blender中,物理模拟主要基于刚体和碰撞对象。
刚体是指在物理模拟中不会产生形状变化的对象,如球体、立方体等。
而碰撞对象则是会相互之间发生碰撞和碰撞效果的物体。
创建一个动态的碰撞效果的第一步是创建刚体对象。
在Blender中,可以通过添加一个刚体集合(Rigid Body Collection)来实现。
选择所需的物体,然后将其分配到一个刚体集合中。
在物理选项卡中,选择刚体集合,将模式设置为Active,这样物体就会成为一个刚体对象。
接下来,我们需要设置碰撞对象。
在Blender中,可以使用刚体网格(Rigid Body Mesh)作为碰撞对象。
选择一个需要作为碰撞对象的物体,在物理选项卡中,将模式设置为Passive,这样物体就成为了一个碰撞对象。
现在,我们可以开始模拟了。
选择刚体集合,在刚体选项卡中,可以调整各种参数来控制模拟效果,如质量、摩擦力、弹性等。
对于碰撞对象,也可以在碰撞选项卡中调整参数,如形状、摩擦力等。
进行模拟前,最好先在场景中设置一个地板或平面,作为碰撞的依赖面。
在添加平面后,选择它并将其设置为碰撞对象,然后在碰撞选项卡中设置形状为Mesh。
现在,点击模拟按钮,Blender将开始模拟物理效果。
你可以看到刚体对象会受到重力的作用,相互之间会发生碰撞效果,与地板也会产生交互。
通过调整参数和添加更多的刚体对象和碰撞对象,你可以创造出各种不同的动态碰撞效果。
除了基本的物理模拟,Blender还提供了一些高级的物理模拟技巧。
例如,你可以使用刚体属性来模拟柔软的物体,如布料或皮肤。
通过调整刚体的柔软度、弹性和碎裂程度等参数,可以实现逼真的效果。
此外,Blender还支持流体模拟和烟雾模拟。
战斗场景特效制作技巧:利用Blender的粒子系统和碰撞检测Blender是一款功能强大的开源3D建模与动画制作软件,它拥有丰富的工具和功能,可以帮助我们制作出逼真的战斗场景特效。
其中,粒子系统和碰撞检测是非常重要的技术,下面我们将重点介绍如何利用它们来制作令人惊叹的战斗场景特效。
首先,让我们从粒子系统开始。
粒子系统是一种可以模拟大量粒子行为的工具,它可以用来制作火花、烟雾、爆炸等特效。
在Blender中,我们可以通过创建一个粒子发射器对象来开始制作特效。
选择一个合适的物体作为粒子发射器,比如一个枪口或者爆炸的中心点,然后进入粒子系统设置面板。
首先,确定粒子的基本属性,如数量、寿命、大小等。
接下来,在“物理”选项卡中选择适当的粒子行为,比如设置重力、速度、摩擦力等参数,以便模拟出真实的效果。
在战斗场景中,我们可能需要制作射击的火花特效,可以通过调整粒子的颜色、形状和透明度等来实现。
另外,利用变异功能,可以使火花以不同的速度和方向喷射出来,增加特效的真实感。
除了粒子系统,碰撞检测是实现真实效果的关键。
在战斗场景中,碰撞检测可以模拟出物体之间的相互作用,比如子弹击中物体时的爆炸效果。
在Blender中,我们可以利用刚体系统来实现碰撞检测。
首先,选择需要进行碰撞检测的物体,并为其添加刚体属性。
在物体的“物理”选项卡中,将类型设置为“活动”或“动态”,这取决于物体的特性。
然后,为粒子发射器对象添加碰撞检测属性。
在粒子系统设置面板的“物理”选项卡中,将碰撞设置为“对象”或“网格”,选择需要进行碰撞检测的物体或网格。
通过调整碰撞形状和摩擦力等参数,可以使粒子在与物体碰撞时产生适当的反弹和摩擦效果。
当粒子发射器对象与碰撞物体相交时,粒子将根据碰撞属性进行反应,比如爆炸、散开或弹开等。
通过调整粒子的生命周期和初始速度等参数,可以使特效产生更加逼真的效果。
此外,可以进一步优化特效效果,比如添加纹理、调整光照和阴影等,以使特效更具真实感和冲击力。
使用Blender进行物理模拟和碰撞检测:模拟真实世界Blender是一款功能强大的开源3D建模和动画软件,不仅可以创建令人惊叹的视觉效果,还可以用于物理模拟和碰撞检测,以模拟真实世界的物理现象。
本教程将为您介绍如何在Blender中利用其内置的物理引擎来完成物理模拟和碰撞检测。
1. 创建场景首先,打开Blender并创建一个新的项目。
在场景中,您可以添加各种3D物体,如立方体、球体等。
选择适当的物体并放置在场景中,以模拟真实世界中的物体。
2. 设置物理属性在Blender中,每个对象都有一组属性,其中包括物理属性。
通过设置这些属性,我们可以为每个物体指定其质量、密度、摩擦系数等。
在场景中选择一个物体,然后在属性面板中切换到物理选项卡。
在这里,您可以更改物体的质量、弹性、摩擦力等属性。
可以根据具体需求调整这些属性,以实现不同材质和形状的物体之间的真实物理交互。
3. 添加物理约束物理约束用于模拟物体之间的各种链接和限制。
在现实世界中,物体之间通常通过关节、弹簧等连接在一起。
在Blender中,我们可以使用各种物理约束来实现这些连接。
选择两个物体,并在物体属性面板的物理选项卡中选择约束。
在这里,您可以选择不同类型的约束,如链接约束、铰链约束、弹簧约束等。
根据实际需求选择适当的约束类型,并设置约束的参数。
4. 运行物理模拟经过前面的准备步骤,现在您可以开始运行物理模拟了。
点击Blender界面底部的“播放”按钮,Blender将模拟对象之间的物理交互,并在动画窗口中显示物体的行为。
您可以根据需要调整物理模拟的参数,如重力、阻力等。
通过不断调试和尝试,您可以模拟出更加真实的物理效果。
5. 碰撞检测与反应物理模拟不仅包括物体之间的物理交互,还包括碰撞检测和反应。
在Blender中,碰撞检测是通过为物体添加碰撞器来实现的。
选择一个物体,并在物理属性面板的碰撞选项卡中选择适当的碰撞器类型。
可以选择包围盒碰撞器、网格碰撞器等。
基于改进OBB包围盒的碰撞检测算法作者:史旭升乔立红朱作为来源:《湖南大学学报·自然科学版》2014年第05期文章编号:1674 2974(2014)05 0026 06收稿日期:20130925基金项目:国家科技重大专项项目(2011ZX04016-021);北京市教育委员会共建资助项目作者简介:史旭升(1983-),男,陕西蒲城人,北京航空航天大学博士研究生通讯联系人,E-mail: lhqiao@摘要:针对车铣复合数控加工仿真碰撞检测精确度低的问题,提出了一种基于改进OBB 包围盒的快速碰撞检测算法.该算法基于改进的OBB包围盒算法,利用车铣复合加工仿真碰撞检测的结果,创建碰撞单元组的包围盒及层次包围盒树;通过粗检阶段计算出包围盒树的相交节点集合,计算得到发生碰撞的三角形面片集合;应用回退技术,解得初始碰撞时间及位置.实例验证结果表明,该算法有效提高了车铣复合数控加工碰撞检测的精确度.关键词:车铣复合;碰撞检测;OBB(Oriented Bounding Box)包围盒;分离轴定理;三角面片中图分类号:TP391 文献标识码:AAlgorithm of Collision Detection Basedon Improved Oriented Bounding BoxSHI Xu sheng,QIAO Li hong ,ZHU Zuo wei(Advanced Manufacturing Technology and Systems Research Center, School of ManufacturingEngineering and Automation,Beihang University, Beijing 100191, China)Abstract:To solve the problem of the low precision of collision detection in the turn mill combined machining simulation, a rapid collision detection algorithm based on the improved theory ofOriented Bounding Box was proposed. This algorithm, based on the improved oriented bounding box, and using the collision detection result as the input, creates the oriented bounding box and hierarchical bounding box tree of the collision unit group. During the rough detection phase, the intersecting nodes are detected. In the following precise detection phase, the triangular patches of the objects in collision are detected. With the application of feedback technology, the initial time and position of the collision are calculated. A case study shows that this algorithm increases the efficiency and precision of the collision detection in numerical control simulation.Key words: turn milling; collision detection; OBB(Oriented Bounding Box); SAT(Separating Axis Theorem);triangular patches车铣复合加工作为一种先进的加工技术,在加工复杂的高精密零件和异形零件等领域都有不可替代的地位.车铣复合加工机床包含多主轴多刀架结构,在精密微小零件的高速加工过程中,多把刀架在狭小的空间中同时加工零件,刀架之间极易发生干涉碰撞现象 \[1\] .随着计算机技术的发展,虚拟仿真技术在降低成本、提高效率方面都有显著优势.碰撞检测算法主要有空间分解法和层次包围盒法两种算法,其核心思想都是尽可能减少相交测试对象的数目来提高检测速度.空间分解法适用于在稀疏的环境中分布比较均匀的几何对象间的检测,层次包围盒法则应用更为广泛,适应复杂环境中的碰撞检测 \[ 2 \] .车铣复合加工环境复杂,运动对象多,因此,在本研究中选用了基于层次包围盒的方法.传统检测方法是进行一次或多次试切、不断调试,直到确认能够完成预定的加工要求,该方法效率低、周期长、成本高.为了提高检测效率,基于虚拟仿真技术的碰撞检测算法 \[ 3 - 7 \] ,为数控加工方案的修正提供了依据,但是在修正过程中需要工艺人员根据经验预估修正方式,由预估引起的不确定性和偶然性,给生产计划带来一定风险,如果不能及时解决可能影响生产进度.为了避免盲目预估,减少反复修正的次数,提高准确率,保证精度,本文提出了基于改进OBB包围盒的快速碰撞检测算法.1 问题描述现有研究倾向于通过碰撞检测确定发生碰撞的对象,没有考虑具体的交点信息.数控加工仿真软件给出的碰撞检测结果是加工过程中发生碰撞的对象,这些碰撞检测数据可以基本满足数控加工仿真的需求 \[1\] .但是由于碰撞结果比较笼统,需要反复调整或校正加工速度、切削量或刀具伸长量等方式来修正.为了避免盲目的参数预估,减少反复修正的次数,提高准确率保证精度,准确计算出三角面的初始碰撞时间和碰撞位置显得尤其重要\[ 8 \] .针对车铣复合数控加工仿真碰撞检测精确度低的问题,本文提出了一种基于改进OBB包围盒的碰撞检测算法.2 碰撞检测算法碰撞检测算法分为3个部分:预处理阶段、粗检阶段和精检阶段.该算法以车铣复合加工仿真碰撞检测信息作为输入,计算出碰撞单元组之间发生的初始碰撞时间和位置.2.1 创建OBB包围盒及层次包围盒树车铣复合加工碰撞检测预处理阶段的主要内容是创建碰撞单元组对象的包围盒及层次包围盒树.具体步骤如下:步骤1 创建车铣复合加工仿真环境.主要是车铣复合加工机床组件的创建,如刀具、刀架、主轴等,根据机床的运动学关系,建立机床运动学模型.步骤2 车铣复合加工仿真碰撞检测.通过创建加工方法和加工操作,利用数控仿真软件进行车铣复合加工仿真,并进行碰撞检测.步骤3 获取车铣复合加工仿真过程中发生碰撞的碰撞组信息.设碰撞单元组信息表示为:M k=T k ab ,A k,∑A k i,ν k a,B k,∑B k j,ν k b (1)T k ab 为第 k 对碰撞单元组发生碰撞的时间; A k 为碰撞单元组的对象1, ν k a 为 A k 的运动速度, ∑A k i 表示 A k 所包含的三角面片集合 ∑A k ip i,q i,r i ; B k 为碰撞单元组的对象2, ν k b 为 B k 的运动速度, ∑B k i 为 B k 包含的三角面片集合 ∑B k jp j,q j,r j .则车铣复合加工仿真碰撞组信息集合可表示为:M=M 1,M 2,…,M k (2)步骤4 创建OBB包围盒.根据碰撞单元组对象所包含的三角面片信息,创建相应的OBB 包围盒,分别标记为包围盒 A 和包围盒 B .步骤5 创建OBB层次包围盒树.以八叉树的形式进行空间划分,按照“自上而下”的方法创建层次包围盒树,分别标记为 OBB_A 和 OBB_B .层次包围盒树子节点主要分为3种类型,即实节点、空节点和灰节点.当叶子节点与几何对象实体完全重合时用实节点表示,当叶子节点与几何对象实体部分重合时用灰节点表示,当叶子节点与几何对象实体分离时用空节点表示.这样叶子节点中就储存了离散表面所包含的三角面片数据,用于精确碰撞检测.其中空节点不包含几何实体,在计算中被剔除,减少运算节点数目;实节点与几何对象完全重合,认为该节点是最末端子节点,不需要再分割,可直接用于下一步进行精确碰撞检测计算;灰节点包含几何对象以外的空间,直接用于精确碰撞检测可能引起伪碰撞现象,所以如果灰节点存在碰撞现象,需要进一步分割,直到满足设定的层次包围盒深度或者所有叶子节点都是空节点或实节点为止,如果灰节点不存在碰撞现象,则不需要进一步分割,减少不必要的节点数目和存储数据.在建立层次结构时,层次结构树深度的确定需要遵循两个原则:划分深度不宜太大,从而在遍历时,只需很少的步数,就能完成从根节点到叶子节点的搜索;划分深度不宜太小,否则每个子节点内包含的三角面片数量太多, 加重了精确检测的计算压力.层次包围盒树子节点的深度与几何模型及其精度相关 \[ 9 \] ,本文结合检测对象的几何模型及精度,设层次包围盒树子节点最大深度为6.2.2 基于分离轴定理的初始碰撞检测碰撞检测的粗检阶段是基于分离轴定理,通过广度优先搜索的策略遍历层次包围盒树子节点,快速剔除不发生碰撞的子节点,当发生碰撞的节点不可分割时,则记为:W kOBB_A n i,OBB_B m j (3)其中 OBB_A n i 是指层次包围盒 A 的第 i 层第 n 个子节点,OBB_B m j 是指层次包围盒 B 的第 j 层第 m 个子节点, W k 表示第k 对发生相交的子节点组.层次包围盒 OBB_A 和 OBB_B 所有相交子节点组集合可表示为:W = W 1,W 2,…,W k (4)对于一对OBB,需测试15条可能的分离轴(每个OBB的3个面方向,每个OBB的3条边方向的两两组合),只要找到一条这样的分离轴,就可以判定这两个OBB是不相交的.如图1所示为分离轴定理示意图,其中 L 表示两个包围盒的某一分离轴, O a 和 O b 分别表示两个包围盒的中心位置, S 是包围盒中心位置在分离轴上投影的距离, r a 和r b 是包围盒在分离轴上投影的距离,当存在分离轴使 S>r a+r b 时,则OBB处于分离状态,反之则视为相交.在某些情况下,该算法会将分离的盒体报告为相交,但不会遗漏相应的碰撞结果,在初始碰撞检测阶段该算法计算简单,能够快速剔除不发生碰撞的包 围盒.图1 分离轴定理示意图Fig.1 Separating axis theorem diagram2.3 基于三角面片的精确碰撞检测碰撞检测的精检阶段是应用分离轴定理,判断碰撞节点所包含的三角面片之间的相交情况,然后应用回退技术,计算出三角面片发生碰撞的初始碰撞时间和碰撞位置.已知在粗检阶段计算得到相交包围盒节点集合: W = W 1,W 2,…,W k .设W k1 是包围盒节点集合 W 的第 k 个元素中层次包围盒 OBB_A 的节点, W k2 是包围盒节点集合 W 的第 k 个元素中层次包围盒 OBB_B 的节点.应用分离轴定理考查11个分离轴(平行于两个三角形面法线的两个轴,两个三角形之间的9种边边组合).若两个三角形在任一分离轴上的投影区间不相交,则两个三角形分离;若投影区间在所有分离轴上都相交,则两个三角形必定相交.把发生相交的三角形组记为:Q nS k i,S k j (5)其中 S k i 是指相交包围盒节点集合中的第 k 个元素对中层次包围盒 OBB_A 的节点包含的第 i 个三角面片信息; S k j 是指相交包围盒节点集合中的第 k 个元素对中层次包围盒 OBB_B 的节点包含的第 j 个三角面片信息. Q n 表示第 n 对发生相交的三角面片.层次包围盒 OBB_A 和 OBB_B 所有相交三角面片对集合表示为:QQ 1,Q 2,…,Q n (6)关于初始时间及位置的计算和改进方法将在第4节进行详细阐述.3 改进的OBB包围盒算法3.1 传统OBB包围盒算法创建OBB包围盒时,确定包围盒的中心位置和最佳方向是关键.传统算法是根据几何模型的三角面片信息,利用均值和单位化协方差矩阵的统计量来计算包围盒的位置和方向.已知组成几何对象的基本几何元素为三角形,设包含的三角面片数为 n ,且第 i 个三角形的顶点坐标为 (p i,q i,r i) ,则包围盒的中心位置为:m=13n∑n i=1 (p i+q i+r i) (7)由于该算法是各三角形顶点的简单平均,如果几何体结构不均匀,在体积相等的区域,有的部分三角面片数量多,有的部分三角面片数量少,这样计算出来的包围盒就会向三角面片数量多的部分偏移(如图2(a)所示).显然这将导致一部分包围盒在几何体外面,使碰撞检测出现误检的现象.3.2 改进的OBB包围盒算法为了解决传统包围盒算法计算结果不准确的问题,本文提出区域加权的改进算法,该算法的核心思想是把几何对象划分为表面积相近的 i 个区域,分别计算每个区域的中心坐标m i ,再求这几个区域中心坐标的平均值:m=∑i1m ii (8)其中 m i=13∑j i=1 (p j+q j+r j) ,协方差矩阵元素为:C jk =13n∑n i=1 ( p i jp i k+ q i jq i k + r i jr i k ) (9)其中 1≤j,k≤3 , p i = p i - m , q i = q i - m 和 r i = r i - m 都是 3×1 阶向量,例如q i = ( q i 1 , q i 2 , q i 3 ) T .其次,计算协方差矩阵C[C jk ] 的特征向量并单位化,作为包围盒的方向轴,几何体顶点在各方向轴上的投影区间长度就是相应的包围盒尺寸.碰撞单元组对象的结构存在很大不确定性,无法采用统一的表面积划分方法.本文采用人机交互的方式,借助CAD软件的“分析-测量面”获取几何形面表面积的功能,把产品划分为几个相近的区域,根据产品结构可划分为3~5个区域.本文把万向节零件划分为3个表面积相近的区域(如图2(b)所示),通过采用改进的OBB包围盒算法,使矫正之后的包围盒紧紧地包围物体(如图2(c)所示).(a)改进前(b)区域划分(c)改进后图2 OBB包围盒改进效果对比图Fig.2 Comparison chartof improved OBB4 初始碰撞时间及位置的计算4.1 初始碰撞时间的计算设在 t=T k 时刻车铣复合加工发生碰撞现象,由于仿真精度和系统反应时间的问题无法保证 T k 就是物体之间的初始碰撞时间.本文应用回退技术计算初始碰撞时间.设两个三角面片在某个临近时间 t=T 0 时未发生相交,则第一次发生碰撞的时间为 t=TT 0T 0 是三角面片相交之前的某个时间,如何选择 T 0 直接影响初始时间的计算效率.假设在 T k 时刻两个三角面片相交,则回退的最大时间差表示为 Δ t ,则Δ t=N/v a-v b•L ,其中 N 表示两个三角形中最长的边, v a 和 v b 分别表示两个三角面片的运动速度, L 是三角形的分离轴,则 T 0=T- Δ t .在区间 t∈T 0,T 内做回退处理,回退次数是可控的,可以通过增大三角形剖分的精度来减少回退次数.设时间 t 的步长为0.02 s,在测试中发现,回退次数一般不大于5.在应用回退技术的过程中,需要推导出时间区间 t∈T 0,T 内每个回退点的位置信息.这里应用洛伦兹变换理论,根据三角面片的顶点坐标和运动状态 v ,可以计算出任意时刻的三角面片位置 信息.通过遍历集合 QQ 1,Q 2,…,Q n 包含的所有元素,并应用回退技术计算出每对相交三角面片的初始相交时间,得出集合:TT 1,T 2,…,T n (10)比较集合 T 中的元素,则最小时间为检测对象初始碰撞时间记为 T min.4.2 初始碰撞位置的计算两个三角形初次相交时,必交于一点或者一条线段.若 T min 对应的三角面片对数目大于1,则三角形相交于一条线段.设 △ ABC 和 △ DEF 是 T min 时相交的一对三角形.设E 1=B-A,E 2=C-A 和 E 3=E 2-E 1 为 △ ABC 的三条边,N 1=E 1×E 2 为法线, {A + x 1E 1 +x 2E 2 } 表示△ ABC 包含的点,其中 (0≤x 1≤1 , 0≤x 2≤1 , x 1 + x 2≤1).L 1=E-D,L 2=F-D 和 L 3=L 2-L 1 为 △ DEF 三条边, N 2=L 1×L 2 为法线, △ DEF 包含的点记为: {D + y 1L 1 +y 2L 2 } ,其中(0≤y 1≤1, 0≤y 2≤1 , y 1 + y 2≤1) .则初始碰撞位置就转换为计算 T min 时两个三角形交点 P 的问题,即求解:A+x 1E 1 + x 2E 2-Tv a =D + y 1L 1 + y 2L 2-Tv b (11)其中 T=T k-T min , v a 是碰撞检测对象 A 的运动速度,v b 是碰撞检测对象 B 的运动速度.设初始相交位置在 △ DEF 的任意一条边上,则有 y 1=0,y 2=0;y 1=1,y 2=0和y 1=0,y 2=1 三种情况.筛选出满足条件 (0≤x 1≤1,0≤x 2≤1) 的 x 1 和 x 2 .如果 x 1 或 x 2 不在\[0,1\]范围内,则假设不成立.重新假设初始相交点的位置在△ABC 的任意一条边上,同理,根据 x 1=0,x 2=0;x 1=1,x 2=0和x 1=0,x 2=1 三种情况,筛选出满足条件 (0≤y 1≤1,0≤y 2≤1) 的 y 1 和 y 2 .因为三角形相交,所以一定能计算出满足条件的系数 x 1 , x 2 或系数 y 1 , y 2 .若计算出满足条件的 (0≤x 1≤1,0≤x 2≤1) 的 x 1 和 x 2 .则把相应的y 1 和 y 2 代入 D + y 1L 1 + y 2L 2-Tv b 得交点 P 的坐标.反之,则把 x 1 和 x 2 代入 A+x 1E 1 + x 2E 2-Tv a 得交点 P 的坐标.如果以每种假设为计算单元,本文提出的假设算法总共需要计算3+3=6次.常用基于分离轴的测试方案 \[ 1 0 \] ,分别计算11个分离轴情况下,每一类分离轴有不同的3种情况(详细内容见文献[10]),计算出相应的 x 1 和x 2 的系数,满足条件时,则根据系数计算出 P 点的坐标.计算 11×3 次.区间相交算法是一种类似于分离轴测试的改进方案 \[ 6 \] .该算法先计算出两个三角形所在平面的交线,然后比较分离轴中与交线 L 最接近平行的一条分离轴,测试在3种假设情况下满足条件的系数,再计算出 P 点的坐标.计算11+3次.综上所述,本文关于三角面片相交位置的计算次数比分离轴算法的计算次数少了80%,比区间相交算法的计算次数少了50%,明显提升了计算效率.5 实例验证5.1 OBB包围盒的创建本文以某型号万向节零件的车铣复合加工为例,进行碰撞检测算法实例验证.以CAD软件为仿真平台,创建了用于车铣复合加工仿真的机床、刀具、工件和夹紧装置等三维模型,配置机床的运动学关系,选择数控系统为simens840D.仿真碰撞检测结果显示共发生碰撞次数为15次.本文以数控加工3分12秒时刀架1与刀架2发生的碰撞为例.由发生碰撞的时间和工艺过程推算得出,刀架1车削万向节外圆和刀架2钻削万向节轴向孔时刀架1的刀具和刀架2的刀座发生了碰撞.相应的碰撞信息描述为:M 1={0:45 min ,刀架1,∑A 1 i,2 mm/s ,刀架2,∑B 1 j,0.8 mm/s }其中“0:45 min”是指某工步在45 s时发生碰撞现象,“刀架1”是碰撞对象1,∑A k i 表示刀架1的几何信息,“2 mm/s”刀架1沿碰撞方向的加工参数;“刀架2”是碰撞对象2, ∑B k j 表示刀架2的几何信息,“0.8 mm/s”是刀架2沿碰撞方向的加工参数;应用CAD软件导出stl文件的功能,选择公差为0.08 mm,则导出发生碰撞的两个对象的三角面片数量分别为864个和13 632个.应用改进的OBB包围盒算法得出:刀架1上车刀的包围盒中心坐标O a(91.5,151.5,0) ,半轴长分别为 (71,67.5,50) ,方向轴坐标为(保留小数点后两位) (-0.48,-0.72,-0.50;0.68,-0.67, 0.31; -0.56,-0.19,0.81) ;刀架2上钻刀刀座的包围盒中心坐标 O b(217.5,0,0) ,半轴长分别为 (55,170,170),(1,0,0;0,1,0;0,0,1) 为方向轴坐标.根据八叉树空间分割法,可以计算出OBB层次包围盒树的每一个节点和子节点的包围盒中心坐标及半长轴尺寸.5.2 计算结果通过粗检阶段得出,发生相交的子节点集合:W = W 1,W 2,W 3,W 4,W 5其中:W 1OBB_A 13 5,OBB_B 11 6W 2OBB_A 15 5,OBB_B 8 6W 3OBB_A 23 5,OBB_B 14 6W 4OBB_A 13 5,OBB_B 15 6W 5OBB_A 7 6,OBB_B 14 6 .通过精检阶段得出,发生相交的三角面片有93对.初始碰撞时间为工步2加工运行到17.83 s,初始碰撞位置为 P132.5,36.4,0 .图3为数控加工仿真碰撞示意图.其中碰撞对象A 为车刀,运动速度为 v a ,碰撞对象B 为钻刀刀座, 运动速度为 v b ,加工对象 W 为工件, A 沿着工件径向竖直向下做直线运动, B 沿着工件轴线方法向左做直线运动.在局部放大示意图中,相交区域用C 表示,点 P 为发生初始碰撞的位置.在车削外圆与钻削轴向孔时,刀架1的车刀与刀架2的钻刀刀座发生碰撞.有以下4种修正方案:方案1.增加钻刀的伸长量.把钻刀的伸长量由50 mm调整到56.2 mm以上,使钻刀刀座与车刀距离增加,有可能避免碰撞现象;方案2.增加车削加工车削速度.把车刀的切削速度增加到2.5 mm/s以上,使钻刀与车刀在碰撞区域的运动轨迹产生时间差;图3 数控加工仿真碰撞示意图Fig.3 The graph of collision in NC simulation方案3.减小钻削速度.钻刀的切削速度减小到0.7 mm/s以下,使钻刀与车刀在碰撞区域的运动轨迹产生时间差;方案4.调整工艺方案.将车削加工与钻削加工分开加工.以上4种方案中,方案1最方便快捷,且能保证切削效率和精度.方案2和方案3分别通过增加和减小加工参数避免干涉碰撞发生.如果参数修改幅度太大,会影响到加工效率和精度.方案4如果只是将车削加工与钻削加工分为两个工步进行加工,将影响加工效率.由于碰撞现象发生的情况各异,暂时还无法用统一的标准规定修正方案,详细修正计算过程这里不展开论述.本文采用方案1修正碰撞现象.经验证有效避免了碰撞现象.如图4所示为车铣复合加工碰撞检测流程示意图.图4 碰撞检测计算流程图Fig.4Flow chart of collision detection algorithm6 结论本文创建的车铣复合加工仿真环境比CAM软件通过刀位文件仿真更真实,更接近实际加工情况,提供了可靠的碰撞检测信息.在预处理阶段,建立了改进的OBB包围盒及其层次包围盒树;在粗检阶段和精检阶段,基于分离轴定理和回退技术,计算出了初始碰撞时间及位置.实例验证结果表明,计算结果准确,为操作人员进行加工修正提供了可靠的依据,避免了盲目的参数预估,减少反复修正的次数,提高了效率,对车铣复合加工和制造也具有很重要的 意义.参考文献[1]吴宝海,严亚楠,罗明,等.车铣复合加工的关键技术与应用前景\[J\].航空制造技术,2010(19):42-45.WU Bao hai, YAN Ya nan, LUO Ming, et al . Key technology and application prospect of turning/milling machining \[J\]. Aeronautical Manufacturing Technology, 2010(19):42-45. (In Chinese)[2] KOCKARA S, HALIC T, IQBAL K, et al . Collision detection: a survey\[C\]//IEEE International Conference on Systems, Man and Cybernetics. Montreal Canada:IEEE, 2007:4046-4051.[3]郑锦铜,江铭鸿.刚性基础上摇晃桥柱系统地震反应研究\[J\].湖南大学学报:自然科学版, 2013,40(4):32-41.ZHENG Jin tong,JIANG Ming hong. Seismic response of rocking pier system on rigid foundation\[J\].Jounral of Hunan University: Natural Sciences,2013,40(4):32-41.(In Chinese)[4]孟志强,何涛,尹望吾,等.六角弹簧管汽车碰撞吸能装置的效能研究\[J\].湖南大学学报:自然科学版, 2011,38 (11):43-46.MENG Zhi qiang,HE Tao,YIN Wang wu, et al . Research on the performances of hexagonal spring tube energy absorbing device for car crash\[J\].Jounral of Hunan University: Natural Sciences,2011,38(11):43-46. (In Chinese)[5] PAZOUKI A, MAZHAR H, NEGRUT D. Parallel collision detection of ellipsoids with applications in large scale multi body dynamics\[J\].Mathematics and Computers inSimulation,2012,82:879-894.[6] JIA Xiao hong, CHOI Yi king, BERNARD Mourrain, et al . An algebraic approach to continuous collision detection for ellipsoids\[J\]. Computer Aided GeometricDesign,2011,28: 164-176.[7] CHANG Jung woo,WANG Wen ping, KIM Myung soo. Efficient collision detection using a dual OBB sphere bounding volume hierarchy\[J\]. Computer Aided Design, 2010,42(1): 50-57.[8]黄通浪, 唐敏, 董金祥.一种快速精确的连续碰撞检测算法\[J\].浙江大学学报:工学版,2006, 40(6):1051-1055.HUANG Tong lang, TANG Min, DONG Jin xiang. Fast and accurate continuous collision detection between rigid bodies\[J\].Journal of Zhejiang University: EngineeringScience,2006,40(6):1051-1055. (In Chinese)[9]康勇,熊岳山,费先宏,等.基于空间分解和包围盒层次的混合碰撞检测算法\[J\].计算机仿真,2010(6):191-193.KANG Yong, XIONG Yue shan, FEI Xian hong, et al. A hybrid collision detection algorithm based on spatial partitioning and bounding volume hierarchy\[J\]. Computer Simulation, 2010(6):191-193. (In Chinese)[10]David eberly geometric tool LLC. Dynamic collision detection using oriented bounding boxes\[EB/OL\].\[2013 09 21\]. /.。
obb碰撞测试实现原理obb碰撞测试是计算机图形学中非常重要的一项技术,它可以用来检测两个物体之间是否发生了碰撞,为计算机游戏、动画和建筑模拟等应用提供了重要的支持。
这篇文章将从原理、实现方法和应用方面全面介绍obb碰撞测试。
1.obb碰撞测试原理obb(Oriented Bounding Box)指的是朝向包围盒,它是一种常用的包围盒形状。
obb碰撞测试的原理就是根据每个物体的obb,检测两个obb之间是否相交,如果相交则说明两个物体发生了碰撞。
obb包围盒会根据物体的形态和朝向自动变化,因此obb碰撞测试不仅可以精确检测物体间的碰撞,还能够适用于各种形态的物体。
obb包围盒的形状通常为长方体,既可以是正交长方体也可以是任意朝向的长方体。
2.obb碰撞测试实现方法obb碰撞测试的实现方法基本可以分为以下四步。
第一步,建立obb包围盒。
对于每个物体,都需要建立其obb包围盒,使其既能完全包含物体,同时又能尽量地减小其尺寸。
第二步,obb包围盒的系数计算。
需要计算出obb包围盒的中心点、长宽高和其他相关系数,以便后续的计算。
第三步,obb碰撞测试算法。
obb碰撞测试通常使用分离轴算法(Separating Axis Theorem,SAT)实现。
这个算法根据obb包围盒的外表面积来计算两个obb包围盒之间是否存在相交。
第四步,碰撞检测结果处理。
如果obb碰撞测试发现两个obb包围盒之间存在相交,就说明物体之间产生了碰撞,需要处理相应的碰撞结果。
3.obb碰撞测试的应用obb碰撞测试广泛应用于计算机游戏、动画和建筑模拟等领域,为这些应用提供了重要的支持。
obb碰撞测试可以用来检测游戏中的角色之间是否发生碰撞,帮助实现更加真实的游戏体验。
在3D建筑模拟领域,obb碰撞测试可以用来检测建筑物之间的碰撞,判断建筑物是否符合规范。
此外,obb碰撞测试还可以用于机器人导航、汽车碰撞检测和对象抓取等领域,为这些应用提供了更加可靠的检测方法,帮助人们更好地实现自己的目标。
利用物理模拟制作布料碰撞效果Blender是一款功能强大的开源3D建模和动画软件,它不仅能够创建惊人的视觉效果,还可以进行物理模拟。
在本文中,我们将探讨如何利用物理模拟功能制作布料碰撞效果。
首先,我们需要创建一个布料模型。
在Blender中,可以使用平面或者带有顶点的网格来创建布料。
选择一个合适的模型,然后将其转换为布料类型。
在“物理属性”选项卡中,将布料类型设置为“布料”,并调整一些基本参数,例如质量、弹性和摩擦力等。
接下来,我们需要添加碰撞对象。
在场景中添加一个具有碰撞属性的物体,例如一个立方体或者另一个布料模型。
选择碰撞对象,然后在“物理属性”选项卡中将其类型设置为“碰撞”。
调整碰撞对象的参数,确保与实际物体的真实性相匹配。
然后,在布料模型上选择“模拟”选项卡,在“动力学”下激活“布料”选项。
设置一些初始参数,例如重力和风力等。
通过调整这些参数,可以达到不同的布料效果。
现在,我们需要设置碰撞检测。
选择布料模型,在“物理属性”选项卡下找到“碰撞”选项。
通过点击“添加碰撞”按钮,将碰撞对象添加到布料模型中。
调整碰撞参数,例如摩擦系数和弹性系数等,以实现更真实的效果。
在准备工作完成后,点击“模拟”选项卡下的“开始模拟”按钮,即可开始模拟布料碰撞效果。
Blender将根据物理规律模拟布料的运动,考虑到碰撞对象的影响。
可以通过调整模拟时长和精度等参数来控制模拟的准确性和效果。
在模拟的过程中,可以通过观察预览窗口中的布料效果,不断调整参数以获得理想的碰撞效果。
可以尝试改变碰撞对象的位置和形状,调整布料的质量和弹性等属性,以及尝试不同的模拟算法等。
当得到满意的布料碰撞效果后,可以将动画渲染为图像序列或视频文件,以供进一步后期处理或导出。
总结起来,利用物理模拟功能制作布料碰撞效果是Blender的一项强大功能。
通过合理设置布料和碰撞对象的属性,调整模拟参数,并不断观察和调整效果,我们可以创造出逼真的布料动画,为我们的作品增添生动和真实感。