CN104408766A - 一种面向电力***仿真培训的设备拆解过程显示控制方法 - Google Patents
一种面向电力***仿真培训的设备拆解过程显示控制方法 Download PDFInfo
- Publication number
- CN104408766A CN104408766A CN201410660034.3A CN201410660034A CN104408766A CN 104408766 A CN104408766 A CN 104408766A CN 201410660034 A CN201410660034 A CN 201410660034A CN 104408766 A CN104408766 A CN 104408766A
- Authority
- CN
- China
- Prior art keywords
- equipment
- handle
- joystick
- model
- dimensional
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 230000008569 process Effects 0.000 title claims abstract description 30
- 238000012549 training Methods 0.000 title claims abstract description 22
- 238000004088 simulation Methods 0.000 title claims abstract description 11
- 230000000007 visual effect Effects 0.000 claims abstract description 8
- 230000033001 locomotion Effects 0.000 claims description 21
- 230000008859 change Effects 0.000 claims description 14
- 238000010586 diagram Methods 0.000 description 18
- 239000000463 material Substances 0.000 description 10
- 238000012423 maintenance Methods 0.000 description 7
- 230000003068 static effect Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 239000007787 solid Substances 0.000 description 6
- 239000011800 void material Substances 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000037452 priming Effects 0.000 description 4
- 238000004146 energy storage Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000008439 repair process Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 229910052573 porcelain Inorganic materials 0.000 description 2
- 101100162915 Mus musculus Apex1 gene Proteins 0.000 description 1
- 101100155204 Mus musculus Ubl5 gene Proteins 0.000 description 1
- 240000007594 Oryza sativa Species 0.000 description 1
- 235000007164 Oryza sativa Nutrition 0.000 description 1
- 229910000831 Steel Inorganic materials 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 230000009514 concussion Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000012067 mathematical method Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 235000009566 rice Nutrition 0.000 description 1
- 239000010959 steel Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
- G06Q50/20—Education
- G06Q50/205—Education administration or guidance
- G06Q50/2057—Career enhancement or continuing education service
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Educational Technology (AREA)
- Educational Administration (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- General Physics & Mathematics (AREA)
- Tourism & Hospitality (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Economics (AREA)
- General Health & Medical Sciences (AREA)
- Marketing (AREA)
- Primary Health Care (AREA)
- General Business, Economics & Management (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提供了一种面向电力***仿真培训的设备拆解过程显示控制方法,包括:步骤1:建立需要仿真对象的三维模型,包括变电设备三维模型和控制手柄三维模型;步骤2:通过实例化方式读入所述变电设备三维模型和所述控制手柄三维模型;步骤3:当所述控制手柄选中某个设备时,突出显示所选定的设备;步骤4:对所选定的设备进行拆解,通过所述控制手柄顶点生成射线的方式来检索所选定设备的手柄,当所选定设备的手柄存在时则进行选中;拖动所述控制手柄沿着所选定设备的手柄的指定方向移动,同时实时显示拆解结果。本发明利用控制手柄选中零部件,同时视点摄像机视角以一定的速度移动至选中物体上,突出显示被拆解零部件,操作过程清晰、明确。
Description
技术领域
本发明涉及一种面向电力***仿真培训的设备拆解过程显示控制方法,属于电力***仿真培训技术领域。
背景技术
随着国家电网公司“三集五大”改革,大检修体系全面建设,各个省公司加强了检修专业的培训与考核力度。变电检修是大检修体系中的重要一环,由于变电一次设备种类繁多,结构复杂,变电设备的检修培训成为检修人员培训的重点和难点。由于部分设备内部结构紧凑且复杂,甚至有些关键零部件被封装在一个密闭室内(如断路器、变压器等),只有将设备拆解开来,详细讲解设备的实际内部结构与机械运动逻辑,才能获得良好的培训效果,为设备检修奠定坚实的理论基础。然而,拆解真实设备所带来的问题诸多,如:设备昂贵、人工费用高、存在人员安全,因此,基于虚拟现实技术,开发具有变电设备拆解过程三维虚拟仿真功能的仿真培训***,对检修人员的培训具有重要意义。
变电检修仿真培训***是针对变电设备检修专业而研发的培训工具,采用虚拟现实仿真技术,以全三维图形的形式呈现出检修设备的外观和内部构造,使得设备表现更加直观。设备拆解过程三维虚拟仿真是该仿真***的重要功能,通过该功能,受训人员可以自主拆解虚拟设备,学习设备内部构造,全面掌握设备的内部结构、功能和工作原理,使得设备结构培训更加简单方便。通过“控制手柄”来控制拆解过程,使用方便简单。
在公开号为CN103065513A的中国专利申请中,公开了一种变电设备三维虚拟培训***,包括中央处理装置,中央处理装置通过数据总线连接PC终端,并且中央处理器通过网络模块连接远程接收终端。最终实现了变电设备及部件三维立体空间虚拟培训,使检修、运行和试验人员快速掌握变电设备的构造和性能,并将状态信息准确定位到实际变电设备部件,将发现的状态信息准确定位到实际变电设备部件,提高变电设备状态评价的真实性和准确性。但是,所要拆解的物体选择过程也不方便,并且选中对比不明显。
发明内容
针对现有技术的不足,本发明所要解决的技术问题在于提供一种面向电力***仿真培训的设备拆解过程显示控制方法,使得变电设备拆解仿真更加灵活、操作简单、控制自如。
为实现上述发明目的,本发明采用下述的技术方案:
一种面向电力***仿真培训的设备拆解过程显示控制方法,包括以下步骤:
步骤1:建立需要仿真对象的三维模型,包括变电设备三维模型和控制手柄三维模型;
步骤2:通过实例化方式读入所述变电设备三维模型和所述控制手柄三维模型;
步骤3:当所述控制手柄选中某个设备时,突出显示所选定的设备;
步骤4:对所选定的设备进行拆解,通过所述控制手柄顶点生成射线的方式来检索所选定设备的手柄,当所选定设备的手柄存在时则进行选中;拖动所述控制手柄沿着所选定设备的手柄的指定方向移动,同时实时显示拆解结果。
其中较优地,所述步骤1中,所述控制手柄三维模型建立方法进一步包括以下步骤:
a)在世界坐标系下,建立X、Y、Z轴方向的三维控制手柄模型;
b)在3d max世界坐标系下,建立XY、XZ、YZ平面三维控制手柄模型;
c)存储模型文件并生成父节点物体。
其中较优地,所述步骤2中,每个所述变电设备包括多个零部件模型,每个所述零部件模型都具备同样的控制属性;视频视点摄像机将所述控制手柄定位到所述零部件上面,并控制所述零部件移动。
其中较优地,在***初始化时,先将建立好的所述变电设备三维模型通过实例化的方式读入***中,并给所属的零部件添加控制属性和碰撞属性。
其中较优地,每个所述子物体手柄都定义自身的颜色类型变量,包括选中颜色变量和未选中颜色变量,方便确定所述手柄是否被所述控制手柄所选中。
其中较优地,所述步骤3中,利用所述控制手柄选中三维物体时,
所述三维物体的颜色呈现渐变闪烁的形式,表示所述三维物体被选中,同时将视点摄像机的视角移动到所述三维物体上面。
其中较优地,当一个三维物体被选中时,所述视点摄像机以一定速度移动到所述三维物体的目标点坐标,此时通过鼠标和键盘控制所述视点摄像机移动被禁止;当到达指定的目标点坐标位置时,由所述鼠标和键盘控制所述视点摄像机进行移动,达到将所述视点摄像机的视角强制定位到所述三维物体上。
其中较优地,所选中的三维物体从a点移动至b点的原理如下:在三维空间中,点a的向量为Ia,点b的向量为Ib,物体欲从点a移动至点b,需得到点a到b点的向量Ic,将向量Ia和向量Ib作减法运算,得到向量Ic:
Ic=Ib-Ia,
其中,向量Ic的方向就是物体运动的方向,模就是物体运动的距离。
其中较优地,每次只能选中一个物体,当选取下一个三维物体时,所选取的上一个物体被清除。
其中较优地,所述步骤4中,所选中设备的坐标实时等于所述控制手柄的坐标。
与现有技术相比,本发明通过控制手柄选中三维物体,移动所选中的三维物体;当三维物体被选中时,会呈现渐变闪烁,视点摄像机以一定的速度移动到所选中的三维物体,使所选中的三维物体更加明确;利用鼠标进行选择拖动,简单实用。
附图说明
图1是本发明所提供的设备拆解过程显示控制方法的流程图
图2是断路器的外观示意图;
图3是断路器灭弧室的结构示意图;
图4是断路器操作机构内部结构的示意图;
图5是控制手柄三维模型的示意图;
图6是X、Y、Z轴方向的三维控制手柄模型示意图;
图7是图6中X Handle三维模型的示意图;
图8是仿真培训***中,世界坐标系的示意图;
图9是XY、XZ、YZ平面三维控制手柄模型的示意图;
图10是正方形实体面的三维模型示意图;
图11是控制手柄父子关系的示意图;
图12是零部件属性类ObjectCTL示意图;
图13是HandleCTL属性示意图;
图14是CameraCTL属性示意图;
图15是本发明的一个实施例中,零部件三维模型的示意图;
图16是零部件颜色变化的流程图;
图17是控制视点快速移动到选中物***置的流程图;
图18是三维空间物体运动原理的示意图;
图19是实时控制被选三维物体对象移动的示意图;
图20是手柄定位到物体中心坐标位置的示意图;
图21是移动三维物体的流程示意图;
图22是通过三维空间的射线查找手柄的示意图。
具体实施方式
下面结合附图和具体实施例对本发明的技术内容作进一步的详细说明。
如图1所示,本发明首先将要拆解的变电设备和“控制手柄”三维建模,待***初始化时读入建立好的设备三维模型和“控制手柄”三维模型。进入***后通过鼠标事件来选取模型并做突出显示处理,然后进行拆解处理并实时显示拆解结果。
其中,变电设备三维模型是通过三维建模工具(如3d max)建立的可视化三维模型;“控制手柄”也是通过三维建模工具建立的可视化“控制手柄”三维模型,包括X、Y、Z直线控制手柄和XY、XZ、YZ平面控制手柄。其中X、Y、Z直线控制手柄的正方向与世界坐标系下的XYZ坐标轴正方向一致。“控制手柄”是用于控制变电设备三维模型某个零部件按照“控制手柄”的某个坐标轴方向移动的工具,且在拆解设备场景中只有一个“控制手柄”。
为此,本发明提供了一种面向电力***仿真培训的设备拆解过程显示控制方法,包括以下步骤:
步骤1:建立需要仿真对象的三维模型,包括变电设备三维模型和控制手柄三维模型;
步骤2:通过实例化方式读入所述变电设备三维模型和所述控制手柄三维模型;
步骤3:当所述控制手柄选中某个设备时,突出显示所选定的设备;
步骤4:对所选定的设备进行拆解,通过所述控制手柄顶点生成射线的方式来检索所选定设备的手柄,当所选定设备的手柄存在时则进行选中;拖动所述控制手柄沿着所选定设备的手柄的指定方向移动,同时实时显示拆解结果。
下面对上述各步骤作进一步的详细描述。
步骤1:建立包括变电设备三维模型和控制手柄三维模型的仿真对象三维模型。
1)建立变电设备三维模型
根据实体设备的照片和图纸资料等,利用3d max三维建模工具建立设备的三维模型,包括以下特征:
a)在3d max中,将长度单位设置成“米”,然后以1:1的比例建立变电设备的所有零部件三维模型。
b)以(0,0,0)点为中心,在Z轴的正方向上建立所有的零部件三维模型。每个转动的零部件模型的中心点坐标在其转动的轴心位置处,每个不转动零部件模型的中心点坐标在其模型内部的中心位置。
c)建立一个变电设备模型,要建立设备的外观模型,还要建立设备内部零部件模型。
以建立一个LW16-40.5型的断路器三维模型为例,参见图2~图4,外观模型包括外壳、瓷瓶、支撑底座、操作机构外壳、传动外壳等。内部零部件模型包括灭弧室内部动静触头、操作箱内部的储能机构、分合闸弹簧、分合闸电磁铁、闭锁机构、传动机构等。参见图3,瓷瓶内部还包括塞子21、静触头22、动触头23、热膨胀室24、单向阀25、活塞26和气缸27。参见图4,断路器内部包括辅助形状1、储能电机2、半轴3、驱动棘爪4、按钮5、定位件6、接线端子7、保持棘爪8、合闸弹簧9、储能轴10、合闸联锁板11、合闸四联杆12、分合指示牌13、输出轴14、角钢15、合闸电磁铁16、过电流热脱扣电磁铁及分闸电磁铁17、储能指示18和行程天翔19。
d)将建立好的整个设备三维模型按照设备类型的拼音缩写命名,存储为一个.FBX模型文件。一个.FBX模型文件中包含一个父节点物体和多个子物体模型,且父节点物体坐标在世界坐标系下的(0,0,0)位置上。
一个典型开关类型设备的模型文件为:DLQ.FBX。DLQ.FBX文件包括父节点物体DLQ,和所有子物体即零部件三维模型。其中父节点物体DLQ的坐标在世界坐标系下的(0,0,0)位置上。
2)建立“控制手柄”三维模型
参见图5,利用3d max三维建模工具建立一个标准“控制手柄”三维模型,包括X轴正方向手柄、Y轴正方向手柄、Z轴正方向手柄、XY平面手柄、XZ平面手柄、YZ平面手柄,其中X、Y、Z轴正方向手柄分别与3d max世界坐标系下的X、Z、Y轴正方向相同,所有控制手柄的中心点坐标都在世界坐标系下的(0,0,0)点上,且所有的控制手柄都归属于同一个父节点物体,父节点物体的中心点坐标同样在世界坐标系下的(0,0,0)点上。
以下是控制手柄三维模型的建立方法:
a)在3d max世界坐标系下,建立X、Y、Z轴方向的三维控制手柄模型。
参见图6和图7,以建立X轴控制手柄X_Handle三维模型为例:以世界坐标系(0,0,0)点为起点,以X轴正方向为方向,建立一个带有指针形状的圆柱实体三维模型,圆柱半径为0.005m,长度为0.4m,赋予红颜色材质,将其中心点设置在(0,0,0)点位置上。
参见图8,用同样的方法在Z轴正方向上建立“绿色”控制手柄Y_Handle三维模型,在Y轴正方向上建立“蓝色”控制手柄Z_Handle三维模型。
检修仿真***环境的世界坐标系与3d max环境世界坐标系的不同:仿真***下世界坐标系中Y轴朝上;3d max环境下世界坐标系中Z轴朝上。手柄建模应以仿真***的世界坐标系为准。
b)在3d max世界坐标系下,建立XY、XZ、YZ平面三维控制手柄模型。
参见图9,以建立XY平面控制手柄XY_Handle三维模型为例:以世界坐标系(0,0,0)点、(0,0,0.2)点、(0.2,0,0.2)点、(0.2,0,0)点为顶点,建立一个边长为0.2m的正方形实体面三维模型,赋予深绿色材质,将其中心点设置在(0,0,0)点位置上
用同样的方法,参见图10,以3d max环境下世界坐标系下点(0,0,0)、(0.2,0,0)、(0.2,0.2,0)、(0,0.2,0)为顶点,建立边长为0.2m的正方形实体面三维模型,作为XZ平面控制手柄XZ_Handle,赋予“紫色”材质;以(0,0,0)、(0,0.2,0)、(0,0.2,0.2)、(0,0,0.2)为顶点,建立边长为0.2m的正方形实体面三维模型,作为YZ平面控制手柄YZ_Handle,赋予“黄色”材质。两个控制手柄的中心点坐标都在(0,0,0)位置上。
c)存储模型文件并生成父节点物体。
将建立好的控制手柄模型存储为XYZ_Handle.FBX模型文件,该模型文件中包含所有控制手柄模型和父节点物体,其中父节点物体为XYZ_Handle,坐标在世界坐标系下的(0,0,0)位置上。控制手柄父子关系如图11所示,父节点物体XYZ_Handle包括:X轴手柄X_Handle、Y轴手柄Y_Handle、Z轴手柄Z_Handle、XY面手柄XY_Handle、XZ面手柄XZ_Handle和YZ面手柄YZ_Handle.
步骤2:读入变电设备三维模型和控制手柄三维模型,并进行***初始化。
按照仿真对象划分可划分为三种:零部件、控制手柄、视点摄像机。通过“视点摄像机”控制“控制手柄”定位到“零部件”上并控制“零部件”移动。因此,针对每个仿真对象定义以下属性类来进行控制处理:
1)零部件属性类ObjectCTL。
参见图12,一个变电设备包括多个零部件模型,每个零部件模型都具备同样的控制属性。定义布尔类型变量BeSelected表示该物体是否被选中;定义Camera类型的SceneCamera变量,用来在该零部件模型被选中时将该模型对象信息传递给场景中的视点摄像机。
在***初始化时,先将建立好的变电设备三维模型通过实例化的方式读入***中并实例化为GameObject对象,将零部件属性类ObjectCTL添加给所有的零部件GameObject对象,即控制属性,同时添加碰撞属性,用于鼠标选取该零部件。调用Object接口的staticObject Instantiate(Object original)方法,其中original为要实例化的对象(GameObject类是由Object类派生而来)。调用GameObject接口的AddComponent(string className)方法,给所有子物体添加属性。如下所示:
//以实例化的方式读入设备模型,所有子物体模型同样被读入且实例化为GameObject对象
GameObject myDLQ=(GameObject)Instantiate(DLQObject);
//建立for循环遍及所有子物体
for(int i=0;i<myDLQ.transform.childCount;i++){
//给每个三维物体添加“ObjectCTL”属性
myDLQ.transform.GetChild(i).gameObject.AddComponent(“ObjectCTL”);
//给每个三维物体添加“MeshCollider”碰撞属性
myDLQ.transform.GetChild(i).gameObject.AddComponent(“MeshCollider”);
}
2)控制手柄属性类HandleCTL。
每个子物体手柄都定义各自的颜色(Color)类型变量,包括选中颜色变量OnColor和未选中颜色变量OffColor以方便观察手柄是否被鼠标选中,且每个手柄都赋予透视渲染着色器,就算手柄在物体内部时也可看到,方便鼠标选取。
参见图13,在***初始化时,将建立好的控制手柄三维模型通过实例化的方式读入***中,并实例化为GameObject对象。给父节点物体XYZ_Handle添加HandleCTL属性,同时给每个子物体控制手柄添加碰撞属性,如下所示:
//以实例化的方式读入控制手柄父物体模型
GameObject XYZ_Handles=(GameObject)Instantiate(handlesObject);
//将HandleCTL属性添加给控制手柄父节点对象
XYZ_Handles.AddComponent(“HandleCTL”);
//建立for循环遍及所有子物体
for(int i=0;i<XYZ_Handles.transform.childCount;i++){
//给每个子物体手柄添加“BoxCollider”碰撞属性
XYZ_Handles.transform.GetChild(i).gameObject.AddComponent(“BoxCollider”);
3)视点摄像机属性类CameraCTL。
定义GameObject类型的SelectedObject变量用来接收被选中物体;定义GameObject类型的SelectedHandle变量来接收被选中手柄;定义float类型速度变量DragSpeed来控制鼠标拖拽速度;定义GameObject类型对象Handles变量来获取手柄的参数信息;定义布尔变量ActiveHandles来开启或关闭“控制手柄”;定义布尔变量Move来控制视点摄像机是否开始移动;定义Vector3(三维坐标)类型变量ToPostion表示视点摄像机要移至的空间位置。
参见图14,在***初始化时,用实例化的方式创建一台Camera类型的视点摄像机myCamera,其中Camera类也是由Object类派生而来,同时将CameraCTL属性添加给视点摄像机。
//创建视点摄像机
Camera myCamera=(Camera)Instantiate(camera);
//将CameraCTL属性添加给视点摄像机对象
myCamera.transform.gameObject.AddComponent(“CameraCTL”);
4)初始化属性类ObjectCTL和CameraCTL中的变量。
(1)在零部件属性类ObjectCTL中:
//起始物体不被选中
BeSelected=false;
//将场景视点摄像机赋值给SceneCamera变量
SceneCamera=myCamera;
(2)在视点摄像机属性类CameraCTL中:
//清空选中物体
SelectedObject=null;
//清空选中手柄
SelectedHandle=null;
//控制手柄赋值
Handles=XYZ_Handles;
//初始视点摄像机不移动
Move=false;
步骤3:当鼠标选中某个设备三维模型时,突出显示所选定的设备三维模型。
参见图15,首先通过鼠标点击的方式选中待拆解的零部件三维物体,被选中的三维物体的颜色呈现渐变闪烁的形式,此时表示三维物体被选中。同时控制视点摄像机视角移动至三维物体上。每次只能选中一个物体,当选取下一个三维物体时,上一个被选物体会被清除选择。
下面以选取某一个零部件三维模型为例:
在虚拟场景中,所有的零部件三维物体都具有相同的数学模型和方法,通过这些方法来控制参数的传递。
1)通过鼠标选中三维物体。
在鼠标单击事件中检索该物体是否被选中。将零部件属性类ObjectCTL中的BeSelected属性放置在鼠标单击事件OnMouseDown()中进行“选中”与“取消选中”的切换,BeSelected参数为true表示该物体被选中,参数为false表示该物体不被选中。
void OnMouseDown(){
BeSelected=!BeSelected;
}
2)自身颜色向目标颜色(红色)渐变并震荡闪烁
参见图16,在零部件属性类ObjectCTL中定义控制颜色变化的方法,放置在Update()方法中逐帧刷新(void Update(){}方法是在每一帧渲染中都执行一次的方法,放置在该方法内的任意逻辑代码都会在每一帧渲染中执行一次)。当三维物体被选中时,颜色成渐变闪烁式变化,否则颜色变为初始颜色。
以选中某一个三维物体为例:
首先定义Color类型的DefaultColor变量来记录三维物体初始颜色:
Color DefaultColor=This.gameObject.renderer.material.color;
采用将Sin正弦波返回值作为颜色插值的差值计算方式实现颜色渐变震荡闪烁效果。调用接口Color的static Color Lerp(Color a,Color b,float t)方法,在颜色a和b之间通过t插值,t被钳制在0到1之间。当t为0时返回a;当t为1是返回b。因此,将DefaultColor作为a值,Color.Red(红色)作为b值,0.5+0.5*Mathf.Sin(Time.time)函数返回值当做t值,即可实现从初始颜色向目标颜色(红色)渐变震荡闪烁效果。如下所示:
This.gameObject.renderer.material.color=Color.Lerp(DefaultColor,Color.red,(float)(0.5+0.5*Mathf.Sin(Time.time)));
//当物体被取消选中时
If(BeSelected==false){
//自身颜色变为初始颜色
this.gameObject.renderer.material.color=DefaultColor;
//清空视点摄像机中的选中物体
SceneCamera.GetComponent<CameraCTL>().SelectedObject=null;
}
3)视点快速移动到选中物***置。
参见图17,在视点摄像机属性类CameraCTL中定义一种控制视点快速移动到选中物***置的方法,放置在Update()事件中来实时控制。当某三维物体被选中时,视点摄像机会以一定速度移动至目标点坐标,此时通过鼠标和键盘控制视点摄像机移动的方法被禁止。当到达指定的坐标位置时,执行通过鼠标和键盘控制视点摄像机移动的方法,从而达到将视角强制定位到操作物体上的目的。
控制视点摄像机移动至某个被选中三维物***置。
当某个物体被鼠标击中时,通过零部件属性类ObjectCTL中的SceneCamera变量来设置视点摄像机属性类CameraCTL中的Move参数为true:
SceneCamera.GetComponent<CameraCTL>().Move=true;
将被击中物体对象和坐标值分别传递给视点摄像机属性类CameraCTL的SelectedObject和ToPosition:
SceneCamera.GetComponent<CameraCTL>().SelectedObject=this.gameObject;
SceneCamera.GetComponent<CameraCTL>().ToPosition=this.gameObject.transform.position;
当视点摄像机检测到Move=true时,则从当前坐标位置以一定速度直线运动至ToPosition位置。
参见图18,在三维空间中,物体从a点移动至b点的原理如下:在三维空间中,点a的向量为Ia,点b的向量为Ib,物体欲从a点移动至b点,需得到a点到b点的向量Ic。向量Ia和向量Ib通过减法运算就可以得到向量Ic:
Ic=Ib-Ia。
向量Ic的方向就是物体运动的方向,其模就是物体运动的距离。
视点摄像机从自身当前位置移动至ToPosition位置(被选物***置)
根据上述原理,用目标物***置ToPostion减去视点摄像机自身位置所得到的向量,就是视点摄像机移动所需要的向量。调用接口Transform中的void Translate(Vector3 translation,SpacerelativeTo)方法实现移动,其中translation是Vector3类型的方向和速度的向量,relativeTo是移动的坐标系。如下所示:
myCamera.transform.Translate((ToPosition-myCamera.transform.position)*moveSpeed*Time.deltaTime,Space.World);
其中,ToPosition-myCamera.transform.position为方向向量,moveSpeed是定义的fload类型的速度变量,Time.deltaTime是速率,Space.World是世界坐标系。
视点摄像机到达ToPostion位置后停止运动
通过计算ToPosition-myCamera.transform.position的模长来控制视点摄像机停止运动。调用Vector3向量接口的magnitude属性(模长),当模长小于0.005时,停止运动:
If((aimPoint-CameraRoot1.transform.position).magnitude<=0.005)
Move=false;
通过鼠标和键盘控制视点摄像机自由移动,当Move=false时,调用“通过鼠标和键盘控制视点摄像机自由移动”的方法。该方法放置在update()事件中可实时控制。键盘W、A、S、D、Q、E按键控制视点前、后、左、右、上、下移动,按下鼠标右键并拖动鼠标控制视点旋转。
a)通过调用Input接口中的static bool GetKey(string name)方法获取键盘按键,调用Transform接口中的void Translate(Vector3translation,Space relativeTo)方法控制视点摄像机运动。
例如:当按下W按键时,控制视点在自身坐标系下沿Z轴正方向(前方)以一定速度运动。
if(Input.GetKey(KeyCode.W)){
myCamera.transform.Translate(Vector3.forward*MoveSpeed,Space.Self);
}
其中Vector3.forward是单位方向,MoveSpeed是速度,Space.Self是自身坐标系。
b)调用static bool GetMouseButton(int button)方法获取鼠标按键;调用static float GetAxis(string axisName)方法获取鼠标x、y返回值的变化。通过调用四元数Quaternion接口的staticQuaternion Euler(float x,float y,float z)方法控制视点旋转。
例如:当按下鼠标右键并左右拖动鼠标时,视点绕Y轴左右观察
float rotateX=0;
if(Input.GetMouseButton(1)){
rotateX=rotateX+Input.GetAxis("Mouse X")*RotateSpeed;
}
myCamera.transform.rotation=Quaternion.Euler(0,rotateX,0);
其中,Input.GetAxis("Mouse X")返回值是鼠标横向拖动的返回值,RotateSpeed是控制旋转的速度,rotateX是视角绕Y轴旋转的角度。
步骤4:对所选定的设备三维模型进行拆解,并且实时显示拆解结果。
参见图19,当某三维物体被选中时,将“控制手柄”定位到物体中心坐标位置,同时显示手柄。
此时通过鼠标顶点生成射线的方式来检索手柄,检索到后按下鼠标左键选中手柄,此时拖动鼠标控制手柄沿手柄指定方向移动,同时被选三维物体的坐标实时等于“控制手柄”坐标,即实现了通过鼠标控制“控制手柄”从而控制被选物体沿着手柄轴向移动。
在视点摄像机CameraCTL属性类中的Update()事件中定义一种方法,来实时控制被选三维物体对象移动。
以移动某个零部件三维物体为例:
当零部件被选中时,将该三维物体对象传递给视点摄像机属性类CameraCTL中的SelectedObject变量。当零部件被取消选中时,清空SelectedObject变量。当SelectedObject!=null时,进行拆解处理。
1)将手柄定位到物体中心坐标位置
参见图20,通过视点摄像机属性类CameraCTL中的Handles和SelectedObject参数来控制手柄定位操作。调用GameObject接口中的void SetActive(bool value)方法来实现手柄显示或隐藏(“控制手柄”在初始化时就赋值给了Handles参数):
Handles.transform.position=SelectedObject.transform.position;
Handles.SetActive(true);
2)移动三维物体。
参见图21,在视图中,从鼠标顶点处向三维场景中建立一条有向射线,射线会返回其穿过物体对象的一个数组,从该数组中检索是否含有某个子物体控制手柄,若检索到手柄,则控制手柄的颜色变为其预先定义的OnColor颜色。此时若按下鼠标左键并保持,同时拖动鼠标,则可以控制手柄父节点物体沿着子物体手柄定义的方向移动,同时被选物体跟随手柄父节点移动;若未检索到手柄,所有手柄颜色为各自预先定义的OffColor颜色。
参见图22,在三维几何空间中的射线与在几何光学中的射线特点相同,即只有一个端点,另一边可无限延长。在三维空间中,射线可以穿过无数三维物体,因此,就可以通过射线碰撞来得到其所穿过的所有物体。如图所示,从顶点a所生成的射线Ray(a)穿过了“物体B”和“物体C”。
由于三维物体的中心点坐标往往在物体的内部,导致当手柄定位至三维物体中心点时被物体遮挡,因此必须通过射线来检索手柄信息才可找到手柄(每个手柄都附有透视效果着色器,因此就算在物体内部也可被看到)。
从鼠标顶点处生成射线并检索手柄。首先以视图中的鼠标顶点为起点,建立一条垂直于视点平面并指向三维场景的射线。调用Camera接口中的Ray ScreenPointToRay(Vector3 position)方法来创建射线,该方法的返回值是一个Ray类型(射线类型),所创建射线的方向就是垂直于视图且指向三维场景的方向,其中position就是射线起点。同时调用Input接口的mousePosition属性得到鼠标的坐标位置:
//从鼠标顶点坐标处建立mouseRay射线
Ray mouseRay=myCamera.ScreenPointToRay(newVector3(Input.mousePosition.x,Input.mousePosition.y,0));。
然后建立一个数组,用来接收mouseRay射线所碰撞到的物体。调用物理引擎Physics接口中的static RaycastHit[]RaycastAll(Rayray)方法,其返回值是一个RaycastHit类型的数组:
RaycastHit[]hits=Physics.RaycastAll(mouseRay);
最后在碰撞结果的hits数组中检索是否含有手柄,若检测到手柄,则设置手柄颜色为OnColor颜色,否则设置手柄为OffColor颜色。在检测到手柄后,按下鼠标左键则将选中的手柄赋值给SelectedHandle参数。抬起鼠标左键则清空SelectedHandle。建立while循环来检索手柄信息,以检索X轴控制手柄为例,如下所示:
//通过Handles得到X_Handle手柄
GameObject x_h=Handles.transform.Find(“X_Handle”).gameObject;
//开始检索
if(hits.Length!=0){
int i=0;
while(i<hits.Length){
if(hits[i].collider.gameObject==x_h){
//颜色赋值为被选中颜色
x_h.renderer.material.color=Handles.GetComponent<HandleCTL>().X_OnColor;
//按下鼠标左键则选取手柄
if(Input.GetMouseButtonDown(0))
SelectedHandle=x_h;
}
else
//颜色赋值为未被选中颜色
x_h.renderer.material.color=Handles.GetComponent<HandleCTL>().X_OffColor;
i++;
}}
//抬起鼠标左键释放手柄
if(Input.GetMouseButtonUp(0))
SelectedHandle=null;
通过鼠标控制被选三维物体在手柄指定的轴向上移动,当SelectedHandle变量得到手柄后,此时鼠标左键保持“按下”状态,然后横向拖动鼠标则控制手柄父节点沿着X_Handle所指向的X轴左右移动,此时被选中的三维物体坐标实时等于手柄父节点坐标,则实现了三维物体跟随手柄移动。调用Transform接口的voidTranslate(Vector3 translation)方法来控制手柄移动,通过Input.GetAxis("Mouse X")的返回值来判定移动的方向(鼠标向左拖动,其返回值为-1~0之间,鼠标向右拖动,其返回值为0~1之间)。如下所示:
//判断手柄是否选中
if(SelectedHandle!=null){
//手柄左键是否一直保持按下
if(Input.GetMouseButton(0)){
//判断选中手柄名字是否为X_Handle
if(SelectedHandle.name==“X_Handle”){
//控制手柄父节点在X轴上以dragSpeed的速度移动
Handles.transform.Translate(Vector3.right*Input.GetAxis("Mouse X")*dragSpeed*Time.deltaTime);
}
//控制被选中物体跟随手柄父节点移动
SelectedObject.transform.position=Handles.transform.position;}
由于“拆解处理”方法是在Update()事件中执行,即每渲染一帧则执行一次,所以每渲染一帧则显示一次拆解结果,因此在显示方面实时显示拆解结果。
与现有技术相比较,本发明具有如下的技术特点:
1.带有拖拽控制手柄,控制简单方便:当一个物体被选中拆解时,物体对象的本体上会显示一个控制手柄,通过鼠标选中某个轴向的手柄并拖动鼠标,***作物体即在被选轴向上移动,移动方向由鼠标的拖动方向决定。
2.被拆解零部件突出显示,操作对象更清晰:当虚拟设备上的某个零部件被选中时,该零部件在材质上会呈现渐变闪烁的效果,同时视点摄像机视角以一定的速度移动至选物体上,使得***作物体更加明确。
3.实用性高:在虚拟仿真的环境下控制虚拟物体移动的方式很多,本发明即用鼠标拖动“控制手柄”从而控制虚拟物体移动的方式更为便捷,能够让一些对计算机仿真操作生疏的人也可操作自如,具有较高的实用价值。
对于本发明中所提到的鼠标只是用来移动控制手柄的一个优选方式,在实际使用中,也可以采用笔记本触摸板或者其他类似方式进行控制。
为使实际使用效果更好,本发明也可以将设备三给模型采用彩色方式,这样培训时方便用户更加明确所要拆解三维设备的立体图。当然,也可以不用彩色,当物体选中时,定义为亮色,未选中部分为暗色,通过利用明暗对比的方式突出显示所要拆解的三维设备,这样的效果会差一些,但是不影响使用。
以上对本发明所提供的一种面向电力***仿真培训的设备拆解过程显示控制方法进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。
Claims (10)
1.一种面向电力***仿真培训的设备拆解过程显示控制方法,其特征在于包括以下步骤:
步骤1:建立需要仿真对象的三维模型,包括变电设备三维模型和控制手柄三维模型;
步骤2:通过实例化方式读入所述变电设备三维模型和所述控制手柄三维模型;
步骤3:当所述控制手柄选中某个设备时,突出显示所选定的设备;
步骤4:对所选定的设备进行拆解,通过所述控制手柄顶点生成射线的方式来检索所选定设备的手柄,当所选定设备的手柄存在时则进行选中;拖动所述控制手柄沿着所选定设备的手柄的指定方向移动,同时实时显示拆解结果。
2.如权利要求1所述的设备拆解过程显示控制方法,其特征在于,
所述步骤1中,所述控制手柄三维模型建立方法进一步包括以下步骤:
a)在世界坐标系下,建立X、Y、Z轴方向的三维控制手柄模型;
b)在3d max世界坐标系下,建立XY、XZ、YZ平面三维控制手柄模型;
c)存储模型文件并生成父节点物体。
3.如权利要求1所述的设备拆解过程显示控制方法,其特征在于,
所述步骤2中,每个所述变电设备包括多个零部件模型,每个所述零部件模型都具备同样的控制属性;视频视点摄像机将所述控制手柄定位到所述零部件上面,并控制所述零部件移动。
4.如权利要求3所述的设备拆解过程显示控制方法,其特征在于,
在***初始化时,先将建立好的所述变电设备三维模型通过实例化的方式读入***中,并给所属的零部件添加控制属性和碰撞属性。
5.如权利要求4所述的设备拆解过程显示控制方法,其特征在于,
每个所述子物体手柄都定义自身的颜色类型变量,包括选中颜色变量和未选中颜色变量,方便确定所述手柄是否被所述控制手柄所选中。
6.如权利要求1所述的设备拆解过程显示控制方法,其特征在于,
所述步骤3中,利用所述控制手柄选中三维物体时,
所述三维物体的颜色呈现渐变闪烁的形式,表示所述三维物体被选中,同时将视点摄像机的视角移动到所述三维物体上面。
7.如权利要求6所述的设备拆解过程显示控制方法,其特征在于,
当一个三维物体被选中时,所述视点摄像机以一定速度移动到所述三维物体的目标点坐标,此时通过鼠标和键盘控制所述视点摄像机移动被禁止;当到达指定的目标点坐标位置时,由所述鼠标和键盘控制所述视点摄像机进行移动,达到将所述视点摄像机的视角强制定位到所述三维物体上。
8.如权利要求7所述的设备拆解过程显示控制方法,其特征在于,
所选中的三维物体从a点移动至b点的原理如下:在三维空间中,点a的向量为Ia,点b的向量为Ib,物体欲从点a移动至点b,需得到点a到b点的向量Ic,将向量Ia和向量Ib作减法运算,得到向量Ic:
Ic=Ib-Ia,
其中,向量Ic的方向就是物体运动的方向,模就是物体运动的距离。
9.如权利要求7所述的设备拆解过程显示控制方法,其特征在于,
每次只能选中一个物体,当选取下一个三维物体时,所选取的上一个物体被清除。
10.如权利要求1所述的设备拆解过程显示控制方法,其特征在于,
所述步骤4中,所选中设备的坐标实时等于所述控制手柄的坐标。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410660034.3A CN104408766A (zh) | 2014-11-18 | 2014-11-18 | 一种面向电力***仿真培训的设备拆解过程显示控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410660034.3A CN104408766A (zh) | 2014-11-18 | 2014-11-18 | 一种面向电力***仿真培训的设备拆解过程显示控制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104408766A true CN104408766A (zh) | 2015-03-11 |
Family
ID=52646394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410660034.3A Pending CN104408766A (zh) | 2014-11-18 | 2014-11-18 | 一种面向电力***仿真培训的设备拆解过程显示控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104408766A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107331220A (zh) * | 2017-09-01 | 2017-11-07 | 国网辽宁省电力有限公司锦州供电公司 | 基于增强现实的变电设备运维仿真培训***和方法 |
CN107340889A (zh) * | 2017-06-30 | 2017-11-10 | 华勤通讯技术有限公司 | 一种定位初始化方法及装置 |
CN107591038A (zh) * | 2017-10-13 | 2018-01-16 | 国网上海市电力公司 | 一种杆上变压器停复役的模拟操作交互*** |
CN108604256A (zh) * | 2016-02-18 | 2018-09-28 | 三菱日立电力***株式会社 | 零件信息检索装置、零件信息检索方法以及程序 |
CN109102730A (zh) * | 2018-08-08 | 2018-12-28 | 泰豪科技股份有限公司 | 军用电站仿真训练方法及装置 |
CN109313505A (zh) * | 2016-06-13 | 2019-02-05 | 微软技术许可有限责任公司 | 经由控制点改变渲染对象的属性 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102360535A (zh) * | 2011-10-26 | 2012-02-22 | 河海大学常州校区 | 三维可视化仿真培训***及其方法 |
CN102610142A (zh) * | 2012-02-10 | 2012-07-25 | 天津市电力公司 | 交互式智能变电站三维漫游和知识点学习展示方法 |
CN102663916A (zh) * | 2012-04-24 | 2012-09-12 | 河海大学常州校区 | 虚拟漫游场景下机电设备模型拆装培训***及其开发方法 |
CN102930600A (zh) * | 2012-11-16 | 2013-02-13 | 福建省电力勘测设计院 | 基于云计算的变电设备三维模型计算机生成方法 |
CN103065513A (zh) * | 2013-01-31 | 2013-04-24 | 山东电力集团公司淄博供电公司 | 变电设备三维虚拟培训*** |
US20130173226A1 (en) * | 2012-01-03 | 2013-07-04 | Waymon B. Reed | Garment modeling simulation system and process |
-
2014
- 2014-11-18 CN CN201410660034.3A patent/CN104408766A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102360535A (zh) * | 2011-10-26 | 2012-02-22 | 河海大学常州校区 | 三维可视化仿真培训***及其方法 |
US20130173226A1 (en) * | 2012-01-03 | 2013-07-04 | Waymon B. Reed | Garment modeling simulation system and process |
CN102610142A (zh) * | 2012-02-10 | 2012-07-25 | 天津市电力公司 | 交互式智能变电站三维漫游和知识点学习展示方法 |
CN102663916A (zh) * | 2012-04-24 | 2012-09-12 | 河海大学常州校区 | 虚拟漫游场景下机电设备模型拆装培训***及其开发方法 |
CN102930600A (zh) * | 2012-11-16 | 2013-02-13 | 福建省电力勘测设计院 | 基于云计算的变电设备三维模型计算机生成方法 |
CN103065513A (zh) * | 2013-01-31 | 2013-04-24 | 山东电力集团公司淄博供电公司 | 变电设备三维虚拟培训*** |
Non-Patent Citations (2)
Title |
---|
王瑞华: ""核电站虚拟拆装***的研究与实现"", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
赵培军等: "《3ds Max三维动画设计》", 31 August 2009, 中国铁道出版社 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108604256A (zh) * | 2016-02-18 | 2018-09-28 | 三菱日立电力***株式会社 | 零件信息检索装置、零件信息检索方法以及程序 |
CN109313505A (zh) * | 2016-06-13 | 2019-02-05 | 微软技术许可有限责任公司 | 经由控制点改变渲染对象的属性 |
CN109313505B (zh) * | 2016-06-13 | 2022-03-29 | 微软技术许可有限责任公司 | 用于呈现渲染对象的设备以及相关联的计算机实现的方法 |
CN107340889A (zh) * | 2017-06-30 | 2017-11-10 | 华勤通讯技术有限公司 | 一种定位初始化方法及装置 |
CN107340889B (zh) * | 2017-06-30 | 2020-05-12 | 华勤通讯技术有限公司 | 一种定位初始化方法及装置 |
CN107331220A (zh) * | 2017-09-01 | 2017-11-07 | 国网辽宁省电力有限公司锦州供电公司 | 基于增强现实的变电设备运维仿真培训***和方法 |
CN107591038A (zh) * | 2017-10-13 | 2018-01-16 | 国网上海市电力公司 | 一种杆上变压器停复役的模拟操作交互*** |
CN109102730A (zh) * | 2018-08-08 | 2018-12-28 | 泰豪科技股份有限公司 | 军用电站仿真训练方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104408766A (zh) | 一种面向电力***仿真培训的设备拆解过程显示控制方法 | |
CN110340890A (zh) | 一种空间机械臂全局无碰轨迹规划*** | |
CN109697002A (zh) | 一种在虚拟现实中对象编辑的方法、相关设备及*** | |
Fan et al. | An octree-based proxy for collision detection in large-scale particle systems | |
Teng et al. | Augmented-reality-based 3D Modeling system using tangible interface | |
Hong-ge | The realization of flight simulation system based on openGL | |
Alemany | Design of high quality, efficient simulation environments for USARSim | |
Jurayev | USE AND DESIGN OF PALITE TOOLS IN AUTOCAD | |
Wei et al. | Design and implementation of virtual simulation teaching system of solar system | |
Shultz | Integrating 3d graphics into early CS courses | |
Han et al. | Research on Digital Application of the Bronze Carriage in Emperor Qinshihuang's Mausoleum Site Museum: Development of an Immersive Virtual Assembly System | |
Dan | Study on interior decoration system design based on 3D scene modeling technology | |
Kageyama et al. | Immersive VR visualizations by VFIVE part 2: applications | |
Ye et al. | Design of a ship safety training software based on leap motion and unity3D | |
Nie et al. | Construction and Application of Virtual Roaming System Based on Virtools | |
Shen et al. | Machinery Parts Library Exhibition Room Based VIRTOOLS | |
Keaveny | Experimental Evaluation of Affordance Detection Applied to 6-DoF Pose Estimation for Intelligent Robotic Grasping of Household Objects | |
Souphamith et al. | The application of virtual reality technology in smart hom | |
Feng et al. | Implementation of the Building Decoration Design Demonstration System Based on Virtual Reality | |
Borkakoty et al. | 6 Application of Augmented and Virtual Reality for data visualization and analysis from a 3D drone | |
Zou et al. | Design of Unmanned System Integrated Navigation Algorithm Simulation Demonstration System | |
Yang et al. | Interactive control for viewing 3D objects based on MFC and OpenGL | |
Yu-kun et al. | Research on Dynamic Simulation of Indoor Scenes | |
Zhen et al. | Research and implementation of modeling in virtual environment based on OpenGL | |
Jingtang et al. | Real-time virtual hand controlling using openscenegraph |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150311 |
|
RJ01 | Rejection of invention patent application after publication |