一种面向三维建模的人机交互框架的制作方法

文档序号:6631697阅读:270来源:国知局
专利名称:一种面向三维建模的人机交互框架的制作方法
技术领域
本发明涉及一种三维建模工具,特别是一种面向三维建模的人机交互框架。
背景技术
面向三维建模工具主要作用是三维场景显示及通讯三维模型与用户的交互。目前,三维建模工具主要是美国Computer Associates(CA)公司的三维建模工具MultiGen Creator,它是针对虚拟实时系统而产生的软件,具有很多专用于建立面向实时渲染的模型的功能,其中,LOD可以使模型远离视点是使用低精度显示,Switch可以交互环境中产生变形、毁伤效果等等。另外,MultiGenCreator中还有关于模型三角形数目、纹理数目、占用内存及渲染速度等的统计与报告功能,这些功能也为在实时系统中应用模型提供了不少的方便。但是,MultiGen Creator在提供强大的交互式建模功能的同时,缺少方便、完整的编程接口,以使用户自己的程序可以插入到其中的任意位置,从而实现建模过程的自动化;同时,MultiGen Creator具有高昂的价格,使一般用户对其望而却步。

发明内容
本发明的技术解决问题是克服现有技术的不足,提供一种用于实时、高效率编辑三维模型,且价格低廉的面向三维建模的人机交互框架,它支持业界标准OpenFlight格式模型数据库文件,提供浏览、模型建造、模型修改、添加纹理等各种功能整个系统具有用户友好的、可视化的图形界面,以替代MultiGen Creator。
本发明的技术解决方案面向三维建模的人机交互框架,其特点在于它分为五层自底向上的层级关系为硬件层、2D事件层、3D事件层、交互层、显示层,其中交互层和3D事件层构成应用层,层与层之间联系紧密,分工明确,每一层都会制定自身的交互需求,对交互内容进行定义而不干涉其它各层,这样既能体现出交互过程中的多样性又可以保持其一般的共性,保证了建模工具的兼容性和稳定性。
硬件层由交互设备组成,用户可以通过交互设备产生交互动作,以达到交互的目的。在建模工具中,用户主要是通过鼠标和键盘设备,产生不同的交互动作。
2D事件层用来捕捉操作者发出的交互动作,并转化为2D交互信息。
3D事件层把与3D交互信息有关联的2D交互信息转化为3D交互信息,其中的纯2D交互信息,则直接传给2D交互层。2D交互信息到3D交互信息地转化方法是首先把二维坐标转化为三维坐标,然后再通过映射方法将三维坐标转化为符合需要的三维目的坐标。二维坐标转化为三维坐标首先是2D屏幕鼠标位置信息转化为三维坐标信息(中间过渡),最后将三维坐标信息转化为符合需要的三维目的坐标信息,主要采用四种映射方法基于Baseplane(Baseplane是建模过程中的辅助面)映射法、基于模型被选择面映射法、基于过被选择面中心点且垂直于被选择面的直线映射法、或基于视平面映射法。
交互层主要分为2D交互层和3D交互层,2D交互层接收2D交互信息,分析生成相应的2D交户任务。2D交互任务包括模型树显示面板、颜色面板、纹理面板、各种对话框以及各种按钮,模型树显示面板是把系统处理的三维模型节点信息以树的结构显示,纹理面板给用户创造从纹理库选择纹理的环境,颜色面板提供一个供用户选择的颜色库。
3D交互层接收3D交互信息,分析生成相应的3D交互任务。3D交互层分为场景浏览交互层和模型编辑交互层。场景浏览交互层由Baseplane对象和camera对象构成,场景浏览交互层并不创建模型或者修改模型,仅仅改变场景对象中的Baseplane对象和camera对象。BasePlane对象是一个二维平面,二维平面的大小可以改变。在这个二维平面里,相互垂直的u轴和v轴组成一个二维坐标系,中心点为o点,在交互环境里起到辅助面的作用。电脑屏幕是一个二维平面,构建三维图形时,需要在二维平面中加一个辅助面,形成三维效果,给用户一种直观真实的立体感。不仅如此,这个辅助面在创建复杂图形的时候还有其他作用。比如在交互过程中使用Fac命令,目的是把BasePlane移动到指定的面上,此时操作者选取物体上的一个面,把三个点的坐标信息传递给交互模块,交互模块根据这三个点的信息,分析得到Baseplane中心点坐标、x轴方向以及Baseplane的法线方向(可理解为空间中z轴的方向),这样就可以把Baseplane移动到指定位置上。Camera对象的建立引入ArcBall技术,使其可以在空间xy平面,yz平面,zx平面三个自由度方向上任意旋转,使用户可以从任意角度观察创建的模型,另外Camera对象不仅支持旋转功能,还支持zoom功能,通过键盘的z键和a键,可以把视点推近或者拉远,这样既可以很仔细的观察模型某一局部特征,也可以浏览整个模型。
模型编辑交互层主要由模型创建和编辑、模型选取、模型释放和添加纹理和颜色构成,模型编辑交互层根据交互信息创建和编辑模型、选取模型,产生模型对象。模型对象种类繁多,分为三类基本模型对象、辅助模型对象和其他模型对象。基本模型对象主要包括点、直线、多面体、矩形、圆和球。辅助模型对象主要包括辅助线、辅助点和辅助面,在创建其他模型对象的过程中,用户会借助这些辅助对象。比如在一面墙的中心点打一个孔,这个中心点就可以通过辅助点得到,其他模型对象都可以由这两类模型对象接受不同的3D交互任务组合生成。其他模型对象的涵盖面很广,大到日常生活中所见到的诸如飞机、汽车、房子、树木甚至是人,小到一个螺丝钉,一块砖头在建模过程中都属于其他模型对象,而建模工具主要的目的就是创建其他模型对象。比如说如何创建一个圆柱体,首先创建一个圆,然后执行wall操作,会在圆面的法线方向上升起相应的高度,形成需要的圆柱体。因此,尽管其他模型对象的种类繁多复杂,但是只要清楚如何使用基本模型对象和辅助模型对象就可以创建出不同类型的其他模型对象。
显示层根据2D交互层和3D交互层分别生成的2D交互任务和3D交互任务,完成交互操作,把交互操作后的效果反馈给用户。
本发明的五个主要部分,围绕着人机交互中的基本原则,既联系紧密又内容独立,实现系统的主要功能。
本发明与现有的技术相比的有益效果是(1)本发明针对三维模型构造过程中交互操作的复杂性,采用自底向上的分层设计将交互框架分成5层硬件层、2D事件层、3D事件层、交互层、应用层。对于不同的交互层部署相应的交互任务,处理交互对象,层与层之间的通信采用消息机制,交互框架的分层结构使得交互处理过程条理清晰,有利于交互的管理。
(2)本发明中的四种交互映射的给出,可以满足用户完成不同的三维交互操作所需要的坐标变换。
(3)本发明交互框架中采取的交互消息-任务机制,有效地提高了交互过程中前台界面操作和后台功能处理的配合效率。


图1为本发明的结构示意图;图2为本发明的2D事件层的结构示意图;图3为本发明的2D事件层的实现流程图;图4为本发明的3D事件层的结构示意图;图5为本发明的3D事件层的实现流程图;图6为本发明的交互层的结构示意图;图7为本发明的交互层的实现流程图;图8为本发明的显示层的结构示意图;图9为本发明的显示层的实现流程图;图10为本发明实施例1创建一个圆形、三角形、矩形和圆的模型示意图;图11为本发明实施例2创建复杂模型示意图。
具体实施例方式
如图1所示,本发明自底向上分为五层,它们是硬件层、2D事件层、3D事件层、交互层、显示层。硬件层由交互设备组成,用户通过交互设备产生交互动作送至2D事件层;2D事件层用来捕捉操作者发出的交互动作,并转化为2D交互信息;3D事件层把与三维交互相关的2D交互信息转化为3D交互信息,2D信息到3D信息的转化主要是鼠标点取二维坐标到三维目的坐标的转化,首先把二维坐标转化为三维坐标(通过Opengl或者DirectX自带的方法),然后再通过四种不同的映射方式将三维坐标转化为符合需要的三维目的坐标。在处理过程中采取了四种映射方式是基于Baseplane(即基准面)映射、基于模型被选择面映射、基于过被选择面中心点且垂直于被选择面的直线映射、或基于视平面映射。基于Baseplane映射法为首先获得视点到转化后三维坐标的直线,然后检查该直线与之前确定的Baseplane是否有交点,如果有则该交点即是三维坐标在Baseplane上的映射点,例如,用户如果想要创建一个圆,首先选择circle命令,然后把鼠标在二维屏幕上选择的两个二维点坐标转化为三维点坐标,通过该种映射模式将该三维点坐标转化为需要的目标点坐标——在Baseplane的圆心点坐标和圆周上的一点的坐标;基于模型被选择面映射法为首先获得视点到转化后三维坐标的直线,然后检查该直线与之前确定的模型被选择面是否有交点,如果有则该交点即是三维坐标在模型被选择面上的映射点,例如,用户如果想要使Baseplane的位置移动到被选择面的位置上,则首先选择fac命令,把鼠标在二维屏幕上点取在被选择面上的二维点坐标转化为三维点坐标,通过该种映射模式将该三维点坐标转化为需要的目标点坐标——在模型被选择面上的点,然后把Baseplane的原点以及坐标轴的位置替换维被选择面上的点位置,最后完成Baseplane的移动;基于过被选择面中心点且垂直于被选择面的直线映射,首先获得视点到转化后三维坐标点的直线,然后检查该直线与之前确定的被选择面中心点且垂直于被选择面的直线是否有交点,如果有则该交点即是三维坐标在过被选择面中心点且垂直于被选择面的直线映射点,例如,如果用户希望在刚才创建圆的基础上,创建一个正圆锥,首先选择这个圆面,然后选择peak操作(此时选择normallize模式可得到正圆锥),接着通过鼠标在2D屏幕上选择一个二维坐标点转化为三维坐标点,然后通过该种映射模式将该三维点坐标转化为需要的目标点坐标——在过被选择面中心点且垂直于被选择面的直线上的圆锥顶点坐标,最后绘制出正圆锥;基于视平面映射,首先获得视点到转化后的三维点坐标的直线,然后检查该直线与之前确定的视平面是否有交点,如果有则该交点即是三维坐标在视平面上的映射点,例如,如果用户希望在刚才创建圆的基础上,创建一个斜圆锥,首先选择这个圆面,然后选择peak操作(此时选择free模式可得到斜圆锥),接着通过鼠标在2D屏幕上选择一个二维坐标点转化为三维坐标点,然后通过该种映射模式将该三维点坐标转化为需要的目标点坐标—在视平面上的圆锥顶点坐标,最后绘制出斜圆锥。其中的纯2D交互信息,如按一下按钮、打开面板或在面板上选择功能键等2D交互信息,则直接传给2D交互层;交互层主要分为2D交互层和3D交互层,2D交互层接收2D交互信息,生成相应的2D交户任务,3D交互层接收3D交互信息,生成相应的3D交户任务;显示层根据2D交互层和3D交互层生成的2D交互任务和3D交互任务,完成交互操作,把交互操作后的效果反馈给用户。
如图2所示,本发明中的2D事件层根据用户的二维操作生成2D交互消息,2D交互消息包括模型树显示面板消息、纹理面板消息、颜色面板消息、各种对话框消息及各种按钮消息等。
如图3所示,2D事件层中的作用就是将2D交互动作转变为2D交互消息,其过程是首先判读2D交互操作的类型,对不同的2D交互对象产生的交互动作称为2D交互操作,2D交互操作包括浏览树型结构、在纹理面板打开纹理数据库上选择纹理、在颜色面板上选择颜色、使用各种对话框、使用各种按钮等等,被操作的2D交互对象,产生了不同的交互消息响应2D交互操作,并把所产生的交互消息传送给下一层。比如说打开一个颜色面板,则当鼠标触发颜色面板,则面板产生一个响应消息,传递给后台模块,则完成了一次2D交互动作到2D交互消息地转化。
如图4所示,3D事件层根据2D交互层传来的2D交互消息转化成3D交互消息,3D交互消息主要分为三维浏览消息和模型操作消息两部分,其中三维浏览包括Baseplane消息和Camera消息,模型操作包括模型创建编辑消息、模型选取消息、模型释放消息及添加纹理和颜色消息等等。
如图5所示,3D交事件层将与三维相关的2D交互消息转化为3D交互消息。首先判断三维相关的2D交互消息表达的三维意思是什么,如果是场景浏览,则判断是场景浏览的哪种方式,根据判断结果将2D交互消息转化为改变Baseplane位置和角度的3D交互消息或者改变Camera位置和角度的3D交互消息。如果是模型操作,则判断是哪种方式的模型操作,根据判断结果将2D交互消息转化为通过circle、polygon、rectangle、sphere、peak、wall、tansform等操作创建和编辑模型或者通过将模型放入选择列表选择模型或者通过从选择列表中提出模型释放功能或者通过纹理库和颜色库中选择的纹理和颜色数据添加纹理和颜色等。
如图6所示,交户层根据2D事件层和3D事件层传来的2D和3D交互消息生成2D交互任务和3D交互任务。2D交互任务包括模型树显示面板任务、纹理面板任务、颜色面板任务、各种对话框任务及各种按钮任务等等;3D交户任务包括三维浏览任务和模型操作任务两部分,其中三维浏览任务包括Baseplane任务和Camera任务,模型操作任务包括模型创建编辑任务、模型选取任务、模型释放任务及添加纹理和颜色任务等等。
如图7所示,交互层流程具体是首先判断接收到的交互消息是什么类型的,如果是二维交互消息,则判断二维交互消息的类型,根据判断结果形成不同的二维交互任务模型树显示面板任务、纹理面板任务、颜色面板任务、各种对话框任务及各种按钮任务等。如果是三维交互消息,则判断三维交互消息的类型,并根据结果如果是场景浏览消息,则判断具体是场景浏览中的哪种类型消息,根据结果形成Baseplane任务和Camera任务。如果结果是模型操作消息,则判断具体是模型操作中的哪种类型消息,并根据结果形成模型创建编辑任务、模型选取任务、模型释放任务及添加纹理和颜色任务等。
如图8所示,显示层主要处理显示任务,主要包括二维显示和三维显示。二维显示内容包括绘制模型树显示面板、纹理面板、颜色面板、各种对话框及各种按钮等。三维显示内容包括绘制模型,添加纹理,模型着色,调节光照等。
如图9所示,显示层流程具体是首先判断接收到的交互任务是什么类型的,如果是二维交互任务,则根据二维交互任务中的具体内容,创建相应的二维控件(模型树显示面板、纹理面板、颜色面板、各种对话框及各种按钮等),提供给用户。如果是三维交互任务,则根据三维交互任务的具体内容,设置Camera和Baseplane的位置,并且设置需要用到得各种矩阵(世界矩阵、映射矩阵、视矩阵等等),然后设置灯光的参数,比如灯源数目、光照强度等等,接着根据输入的模型坐标点集和绘制模型,再下来根据输入的纹理和颜色信息,给已绘制的模型进行纹理贴图和着色,最后创建的完整模型将展示给用户。
如图10所示为本发明的一个具体实施例创建示意图,用户需最终创建出一个圆、一个三角、一个矩形和一个球。首先用户画圆通过鼠标进行二维操作,在屏幕上输入两个二维坐标点(圆心和圆周上一点),在2D事件层形成二维交互消息传递给3D事件层,3D事件层首先调用OPENGL自带的函数将二维坐标点转化成三维坐标点,并通过映射方式,将三维坐标点转化为三维目标坐标点,并形成3D交互消息传递给交互层。交互层根据得到3D交互消息,分析交互消息,判断其对应的3D交互任务种类,通过输入的交互信息,根据圆的构造公式,计算出圆其他点坐标集合以及纹理颜色数值形成3D交互任务,最终3D交互任务传递给显示层,显示层根据交互任务中的内容,进行三维显示,绘制出圆反馈给用户。三角形、矩形和球的绘制过程同圆类似。
如图11所示为本发明的另一个实施例的创建示意图,用户需最终创建出一个复杂的几何体。首先用户画圆通过鼠标进行二维操作,在屏幕上输入两个二维坐标点(圆心和圆周上一点),在2D事件层形成二维交互消息传递给3D事件层,3D事件层首先调用OPENGL自带的函数将二维坐标点转化成三维坐标点,并通过映射方式,将三维坐标点转化为三维目标坐标点,并形成3D交互消息传递给交互层。交互层根据得到3D交互消息,分析交互消息,判断其对应的3D交互任务种类,通过输入的交互信息,根据圆的构造公式,计算出圆其他点坐标集合以及纹理颜色数值形成3D交互任务。最终3D交互任务传递给显示层,显示层根据交互任务中的内容,进行三维显示,绘制出圆。然后用户在现有圆面的基础上,进行PEAK操作,大体的过程和圆相似,只不过PEAK操作用户需要输入的是圆锥的顶点,而且如图11所示,该圆锥是正圆锥,然后再对现有的圆锥进行WALL操作,使圆锥的每一个面沿着面的法线方向凸起一定的高度,形成一个几合体。其次绘制一个球,大体流程与圆相似,区别是球输入的是球心和球面上的一点,绘制完成的球根据TRANSFORM操作移动到如图所示几合体中间的位置,形成最终的复杂集合体。
下面对上述本发明的两个实施例进一步说明。
实施例1,创建一个圆形、三角形、矩形和圆的模型。
(1)首先,下面是需要用到的命令Commands

(2)其次,下面是创建模型的流程首先new一个新的场景,然后创建一个圆,然后创建一个三角形,接着创建一个矩形,最后创建一个球,最后把创建出来的模型保存到d盘。Detailed Commands


实施例2,创建复杂模型。
(1)首先,下面是需要用到的命令Commands

(2)其次,下面是创建模型的流程首先new一个新的场景,然后创建一个有13条边组成的圆,对该圆进行peak操作,获得一个圆锥,然后在对新生成的圆锥进行wall操作,生成一个复杂的几何模型,接着,在场景中创建一个球,通过鼠标左键选取球面上的一点,通过move操作,把该点移动到指定点(刚才生成复杂几何体上的一点),同时,整个球模型随着这个点的移动而移动到新的位置,至此模型创建完成,保存到d盘。
Detailed Commands

权利要求
1.一种面向三维建模的人机交互框架,其特征在于它分为五层自底向上的层级关系为硬件层、2D事件层、3D事件层、交互层、显示层,硬件层由交互设备组成,用户通过交互设备产生交互动作送至2D事件层;2D事件层用来捕捉操作者发出的交互动作,并转化为2D交互信息;3D事件层把与3D交互信息有关联的2D交互信息转化为3D交互信息,其中的纯2D交互信息,则直接传给2D交互层;交互层主要分为2D交互层和3D交互层,2D交互层接收2D交互信息,生成相应的2D交户任务,3D交互层接收3D交互信息,生成相应的3D交户任务;显示层根据2D交互层和3D交互层生成的2D交互任务和3D交互任务,完成交互操作,把交互操作后的效果反馈给用户。
2.根据权利要求1所述的面向三维建模的人机交互框架,其特征在于所述的与3D交互信息有关联的2D交互信息转化为3D交互信息的转化方法是首先把二维坐标转化为三维坐标,然后再通过映射方法将三维坐标转化为符合需要的三维目的坐标。
3.根据权利要求2所述的面向三维建模的人机交互框架,其特征在于所述的将三维坐标转化为符合需要的三维目的坐标,即映射到三维场景中的方法有四种基于Baseplane映射法、或基于模型被选择面映射法、或基于过被选择面中心点且垂直于被选择面的直线映射法、或基于视平面映射法。
4.根据权利要求3所述的面向三维建模的人机交互框架,其特征在于所述的基于Baseplane映射法为首先获得视点到转化后三维坐标的直线,然后检查该直线与之前确定的Baseplane是否有交点,如果有则该交点即是三维坐标在Baseplane上的映射点。
5.根据权利要求3所述的面向三维建模的人机交互框架,其特征在于所述的基于模型被选择面映射法为首先获得视点到转化后三维坐标的直线,然后检查该直线与之前确定的模型被选择面是否有交点,如果有则该交点即是三维坐标在模型被选择面上的映射点。
6.根据权利要求3所述的面向三维建模的人机交互框架,其特征在于所述的基于过被选择面中心点且垂直于被选择面的直线映射法为首先获得视点到转化后三维坐标点的直线,然后检查该直线与之前确定的被选择面中心点且垂直于被选择面的直线是否有交点,如果有则该交点即是三维坐标在过被选择面中心点且垂直于被选择面的直线映射点。
7.根据权利要求3所述的面向三维建模的人机交互框架,其特征在于所述的基于视平面映射法,首先获得视点到转化后的三维点坐标的直线,然后检查该直线与之前确定的视平面是否有交点,如果有则该交点即是三维坐标在视平面上的映射点。
8.根据权利要求1所述的面向三维建模的人机交互框架,其特征在于所述的3D交互层分为场景浏览交互层和模型编辑交互层,场景浏览交互层由Baseplane对象和camera对象构成,场景浏览交互层并不创建模型或者修改模型,仅仅改变场景对象中的Baseplane对象和camera对象;模型编辑交互层主要由模型创建和编辑、模型选取、模型释放和添加纹理和颜色构成,它根据交互信息创建和编辑模型,产生模型对象。
全文摘要
一种面向三维建模的人机交互框架,自底向上的层级关系为硬件层、2D事件层、3D事件层、交互层、显示层;硬件层由交互设备组成;2D事件层用来捕捉操作者发出的交互动作,并转化为2D交互信息;3D事件层把2D交互信息有选择的转化为3D交互信息;交互层分为2D交互层和3D交互层,2D交互层接收2D交互信息,生成相应的2D交户任务,3D交互层接收3D交互信息,生成相应的3D交户任务;显示层根据2D交互层和3D交互层生成的2D交互任务和3D交互任务,完成交互操作,把交互操作后的效果反馈给用户。本发明支持业界标准Open Flight格式模型数据库文件,提供浏览、模型建造、模型修改、添加纹理等各种功能整个系统具有用户友好的、可视化的图形界面,可高效率编辑三维模型,且价格低廉。
文档编号G06T11/80GK1753030SQ20051008666
公开日2006年3月29日 申请日期2005年10月20日 优先权日2005年10月20日
发明者郝爱民, 关鹏, 刘贤梅 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1