CN1344994A - 处理在主机中产生的在人机交互装置中回放的力反馈效果的方法和系统 - Google Patents
处理在主机中产生的在人机交互装置中回放的力反馈效果的方法和系统 Download PDFInfo
- Publication number
- CN1344994A CN1344994A CN01123267A CN01123267A CN1344994A CN 1344994 A CN1344994 A CN 1344994A CN 01123267 A CN01123267 A CN 01123267A CN 01123267 A CN01123267 A CN 01123267A CN 1344994 A CN1344994 A CN 1344994A
- Authority
- CN
- China
- Prior art keywords
- effect
- force feedback
- main frame
- application program
- human
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/016—Input arrangements with force or tactile feedback as computer generated output to the user
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Position Input By Displaying (AREA)
- User Interface Of Digital Computer (AREA)
- Stored Programmes (AREA)
Abstract
一种低成本的方法和系统,通过将多数力反馈效果的处理从装置上移回到主机上,用于处理主机上产生的力反馈效果,而在人机交互装置上回放,并以这样的方式执行,即不逆影响主机处理器上的等待时间效果或负载。通过软件与硬件技术新的结合来实现。特别地,装置硬件使用具有限制处理性能的低成本微处理器、最小的存储器和低速USB接口。小存储器还减缓了对缓存分配和存储器管理的需要。另一方面,驻留在主机上的装置驱动软件,依靠主机的强大处理器,来执行大多数效果管理和计算,同样将所有复杂的高层效果命令转换成唯一的、小的和简化的低层命令组,其中低层命令组被周期性地更新,并传输到装置上用于回放。
Description
本发明通常涉及用户与计算机之间的接口装置,更具体地涉及将力反馈效果提供给用户的方法和系统。
计算机系统广泛地用于不同的工业中,来实现应用程序,这些应用程序包括:需要专门操作技术的计算机控制的模拟、办公室工作任务和交互游戏。这些交互游戏已经在使用个人计算机的家庭消费者的庞大市场中迅速流行。运行应用程序或交互游戏的计算机系统,典型地在监视器或其它可视显示装置上为用户显示可视环境。用户通过使用各种典型的输入装置,如键盘、书写笔与书写板、轨迹球、鼠标、游戏杆、游戏板、方向盘、脚或手踏板等,与这个计算机产生的环境交互,来玩游戏、体验模拟或其它虚拟现实环境,其中这些输入装置连接到提供显示环境的计算机系统上。主机响应于用户对输入装置的操作,来更新应用程序,并且通过显示装置,将相应的反馈提供给用户。这样的虚拟现实环境已经被扩展而包括音频扬声器,来将声音与视觉显示一起提供给用户,进一步丰富用户的交互体验。
虚拟现实环境的另一项扩展已经指向为用户提供触觉反馈,这更通常地称为力反馈。因为除了将输入提供给主机,而且将身体感觉提供给用户,因而输入装置中的力反馈包括将这些装置从输入装置转变为接口或人机交互装置。响应于从主机接收的力反馈效果命令,执行力反馈允许应用程序,在物理接口装置中产生这些身体感觉。电机或其它物理动作装置典型地连接到接口对象上,其中接口对象连接到主机上,来产生这些身体感觉。这样的身体感觉包括,当用户在虚拟环境中碰撞她的车时装置发出隆隆声;当用户驾驶经过限速路障时的机械摇晃;模拟飞行表面空气动力学拉动的拉力,和模拟枪支开火的游戏杆的“后坐力(kickback)”,及相似效果。
力反馈允许装置的初始引入,集中在为相当昂贵和高端产品提供高保真效果。更加流行的趋势是将力反馈允许装置的使用扩展到更大量的消费者市场。典型的现有技术力反馈允许装置的生产商,将他们的力量集中在将力反馈效果的控制方面移动到装置自己上,通过为装置提供相当需要专门操作技术的内部微处理器和充足的存储器,来允许装置内部地存储、管理和计算所有的力反馈效果。装置内置(on device)大容量存储器的一个原因是,允许装置能够回放应用程序具有的所有可能的效果类型。在装置的初始化中,这种方式是应用程序将它所有可能的效果类型,下载到装置中,用于装置内置的存储。包括需要专门操作技术的装置内置微控制器的设置原因是,必须避免从装置到主机及其返回的时间循环产生的等待时间。这样的时间延迟尽管很小,当回放力反馈效果时,在装置中表现为感到多变性和相当的延迟性。由此在装置初始化中,这些现有技术方法将所有可能的力反馈效果类型下载到装置中,并且将它们存储在存储器中,用于后序的回放。这样的现有技术方法,由根据加拿大圣何塞的Immersion Corporation的技术生产装置来说明,并如美国专利6,028,593所代表的相关各种专利中描述;并且由根据华盛顿州Redmond的微软公司的技术生产的装置来说明,并如美国专利6,036,495所代表的相关各种专利中描述。这里的专利受让人本身根据Immersion方法提供力反馈允许装置,如WingMan(R)力反馈游戏杆装置。这些现有技术方法的局限性将在下面讨论。
微软公司的DirectX中的DirectInput应用程序接口(即application program interface,API),已经变为实际标准API,用于在基于Windows(视窗)的平台上控制这些装置,基于Windows的平台是到目前为止用于家用计算机上的最流行的操作系统,并且代表这样装置的最大的潜在庞大市场。DirectX的目标在于游戏开发者,允许他们直接地并且以最少的整体可能性,与存在的硬件对话,而不必明显地考虑硬件的特定参数。这可以看作硬件最小的抽象。在游戏(应用程序)与硬件之间有装置驱动程序,装置驱动程序对它们的特定硬件实现抽象。DirectInput将连接的游戏装置以一致的方式表现给游戏;游戏可以通过DirectInput向装置查询数据、它的性能,并由此调整它的控制。
硬件装置销售商必须提供后面的元件,来使它们的装置运行,并作为标准DirectX兼容的力反馈装置接受:
*“驱动程序”(driver),是一段插入DirectInput中的软件,作用于游戏的请求,来表现/停止/改变力,并在保真的最可能的对话下,将这些请求转换成装置理解的东西;
*力的列表,寄存在称为“注册表”(registry)的系统范围的数据库中,描述什么效果是可能的,并且什么效果的限制是以定时分辨率、附加复杂性、高级性能的方式;
*力反馈允许装置,通过驱动程序执行发送给它的命令
在这个结构中,DirectInput的角色在图1中显示。DirectInput的角色是在驱动程序114和装置116与应用110之间建立简单的联系并连接。在初始设置后,游戏的请求几乎不改变地传输到驱动程序114。在这个结构中,驱动程序的角色只是再包装的操作,来将应用程序的请求剥除到该装置所具有的。例如,以μsec将它们的时间参数写入游戏效果,可能需要转换成msec。DirectInput112做最小量的纠错和参数正常化,并且在非常薄层的处理后,游戏的命令110在驱动程序114停止,因为只具有小量的处理,应用的命令以尽可能小量的等待时间到达装置,并且在主机上为其它任务留下了更多的处理时间,这使这种处理方法在性能非常具有吸引力。
在装置中具有可能性后,DirectInput的力反馈结构被建模,并且装置以考虑中的DirectInput模型建立。在它们的内部工作中,多数装置或多或少具有与DirectInput所表现给游戏的一一对应。多数装置支持一组效果和每个效果的一组参数。图2显示了游戏效果(由主机应用程序产生的那些效果)与装置效果(下载到装置的那些效果)之间的这种相当的一一对应。现有技术装置提供足够的内部存储器,来允许使用它们对装置的整个描述,下载所有可能的游戏效果,用于存储并后续处理和回放。典型地,游戏无论如何具有少至二到三个效果,多至数十个效果。在初始化时,游戏(未画出)向装置210查询所有可能的效果222,并且下载并存储这些效果,作为装置内置的效果212,这样导致游戏与装置内置效果之间的几乎一一对应。一旦装置内的存储器的容量被占满,那么装置将典型地以“装置已满”命令来回答。
在游戏的执行中,驱动程序224向装置210询问效果,并且向它传输任何附加参数。然后,本机的装置处理器将执行游戏的请求,并且当地处理游戏效果,并回放它们。如上所讨论的,因为典型的时间循环引入了不需要的等待时间加长,这个装置内置的方法已经被应用,其中时间循环包括在从本机装置向主机发送程序用于计算,和它后续返回到装置中,而当回放效果时,表明不需要的等待时间加长在装置中以不稳定或“波动”的方式运行。
大多数现有技术的力反馈装置本质上使用相似的方法。这些方法试图以硬件和固件的需要专门操作技术的结合,对DirectInput结构建模。对于这个实现路径,实质有两个子分类。一个是微软的Sidewinder(响尾蛇)路径,而另一个是基于Immersion/I-Force芯片的方法。它们都需要共享复杂硬件与智能固件的必要性,这导致了高成本的实现。如表1中所概括的,下面的讨论提供这些结构如何执行的简要综述。(接下页表1)
表1-力反馈实现的现有技术方法
微软的Sidewinder | Immersion/I-Force | |
效果管理 | 由固件处理 | 由固件处理 |
存储器管理 | 由固件处理 | 由驱动程序处理 |
力计算和回放 | 由固件处理 | 由固件处理 |
驻留主机的装置驱动程序 | *使参数适应装置性能*参数检查*请求效果识别ID,且*将系列效果结构发送给装置 | *使参数适应装置性能*参数检查*请求效果识别ID,且*将系列效果结构发送给装置*存储器管理 |
Sidewinder系列的力反馈装置,将大多数处理推到装置上。装置负责处理任何东西。效果管理;存储器管理;力的计算及其回放,只由固件处理。除了使参数适应装置性能外,如将时刻延长到固件可以处理的值,或对量级或其它任何领域纠正溢出范围的值,驱动程序不必做得太多。此后,驱动程序向装置询问效果操作柄,并将所需的大小传送给它;装置反应或者以“装置充满”响应,或者返回操作柄。然后,驱动程序将序列效果结构(即以存储器块代表的从DirectInput的转换,其中存储器块由字节流的指针连接)发送到装置,从那儿起,指引装置以给定的操作柄开始/停止效果,或完整地处理它。
Immersion方法是相似的,然而差异是装置不必做所有的工作。主机上的驱动程序跟踪存储器的使用,并且根据需要从存储器分配/收回块,来符合效果结构。还对可计算性检测所有的参数,使效果结构序列化,并且将它们发送给装置,告诉它在哪里存储数据。由于主机的紧密控制,这种方法对可能发生的传输错误更耐用。如果传输错误发生并且被检测到,主机可以再传输装置上想要的信息。在第一种方法中,在传述误差的情况下,主机对装置存储器的观察和装置对自己存储器的观察,可以开始产生分歧。
然而,装置仍然必须做所有的效果管理、力计算和力输出。然而,存储器管理在基于主机的驱动程序中进行。
典型的已有技术输入装置或者通过串行端口或者通过游戏端口与主机接口,这需要销售商的特定驱动程序来实现接口。通过将这样的通用串行总线(“USB”)标准引入到计算机硬件平台,主机理想地适应装置,而不需要销售商的特定驱动程序。
USB定义“装置类”的数量,这定义了属于这类的装置行为。先前只有一类处理输入装置,即“HID”(Human Input Device,即手动输入装置)装置。例如,HID装置是鼠标、键盘和游戏控制器。HID定义相当了丰富的一组描述,其中装置可以用于描述它的性能和对主机的限制。理想地,主机将适应装置,而不需要销售商的特定驱动程序。
尽管当涉及力反馈时,HID具有一个缺点。如它的名称所指出的,它被设计为“输入装置”,而不包括力反馈的概念。最近,以PID(PhysicalInteraction Devices,即人机交互装置)的形式定义HID类扩展的工作已经进行。属于PID类的装置是具有描述信息的装置,不仅显示输入使用(如单纯的HID装置),而且显示输出使用。“使用”是从HID特性而来的概念,并且指示信息位,来描述装置的部分方面。通过输出功能,PID的使用以输出功能扩展了HID的使用,使装置可以让主机知道它可以表现例如恒定力、正弦力和弹簧。在HID的概念后,通过只将它插入,PID装置应该理想地工作,其中装置告诉操作系统它可以做什么,并且操作系统适应装置的性能和限制,而不需要特定的驱动程序。
典型的现有技术PID装置需要具有强大的处理性能。如果不超过装置中上千字节的昂贵存储器空间的话,只是存储一个典型装置所需的PID描述信息,就可以占据几百字节。而且,由于PID使用在相当高层定义了力,为了从高层得到电机或致动器的合理层,包括了很多处理(相对地讲)—与通常较便宜的微控制器所能做的相比。由此,为了使PID装置适当地接口,由于PID使用不允许定义每个限制和装置可能具有的特定情况,如包络的有限斜率或其它相似的限制,所以销售商的特定驱动程序几乎是必须的。如果装置应该适当地处理所有可能的效果情况,那么它甚至需要更多的处理能力。
由此,如上所述,现有技术的PID装置依赖强大的内部微处理器、大的所需存储器和硬件的特定装置驱动程序,而能够适当地接口并回放力反馈效果。装置的这个限制而具有强大的内置微处理器和大的存储器,这个限制被需要驱使,(i)具有能够回放所有游戏效果的装置,和(ii)避免不需要的等待时间加长,其中等待时间加长可以由延迟所引入,而延迟由从装置到主机及返回的通讯循环导致。强大的内部处理器与大的所需存储器一起增加了复杂性,并且增加了这样的力反馈装置的成本。在PID装置的庞大市场中,商业成功的关键是减少元件的成本,并且特别是这样装置的电子元件。较便宜的元件产生较便宜的装置。由此,对较便宜的力反馈装置有确定的需要,而对它们用户提供现实层的力反馈效果。
本发明提供一种低成本的方法和系统,通过将多数力反馈效果的处理从装置移回到主机,并且以不显著影响等待时间加长或主机处理器载荷的方式执行,处理主机产生的力反馈效果,用于在人机交互装置(“PID”)上回放。这通过软件与硬件技术新的结合来实现。特别地,装置的硬件设计,结合了具有有限处理功能的低成本微控制器、最少的存储器和低速USB接口。小的存储器也减轻了对缓存分配与存储器管理的需要。另一方面,驻留在主机上的装置驱动元件,依赖于主机的强大处理器,来执行多数效果管理和计算,同样将所有复杂的应用程序效果命令转换成唯一的、小的和简化的一组装置内置命令,用于在装置上处理和回放。这通过去除这样的限制来实现,即装置必须总是处理应用程序具有的完全范围的效果,并通过去除这样的限制实现,即装置必须存储整个效果块。
在本发明的一个实施例的一方面,装置驱动软件程序将所有的应用程序效果,存储在基于主机的虚拟装置(Virtual Device)中,这样将无限能力的装置描绘到应用程序中。
在本发明的一个实施例的另一方面,装置驱动软件程序将应用程序效果分类成模拟效果(simulated effects)和自然效果(nativeeffects)类目,其中模拟效果是独立于装置的响应的效果(如恒定力),而自然效果依靠装置的输入和响应的力效果(如弹簧力)。自然效果被装置指定用于内部处理,而模拟效果由驱动程序使用主机的指定而被驱动。由于需要从装置输入的效果是“自然效果”,它们的内部处理将不引入任何等待时间加长。而且,由于模拟效果不依靠装置的位置,与主机之间的通讯延迟引入的任何等待时间加长,将不促使任何不稳定发生,并且不被用户察觉到。
在本发明的一个实施例的另一方面,装置驱动软件程序将所有的应用程序效果转换成相应的模拟效果组。这些模拟效果实质需要较少的空间用于存储,这样允许减少装置的内置存储器,这导致相当大的成本节约。简化的效果包括模拟和自然效果。
在本发明的一个实施例的另一方面,装置驱动软件程序通过将装置内置存储器的简化效果子集传输给它,而周期性地更新装置,这包括至少一个模拟效果,并且也可以包括可达到(n-1)个的自然效果。相对于应用程序效果的整个组,传输的子集代表减少的效果组,这样需要更少的装置内置存储容量,而这样提供额外的成本节约。从驱动程序传输到装置的效果数量,由可得到的装置内置存储器决定。最重要的(即用户可感觉到的)效果典型地是存储在装置上的那些。当需要新的和更强的效果时,装置上的一个较少被感觉到的效果被覆盖掉。
当同时提供多个模拟效果时,它们在驱动程序中相加,而进一步简化并减小需要传输到装置上的数据。发送到装置中的至少一个传输的模拟效果,是装置驱动软件程序确定的所有应用程序模拟效果的向量和。其余的装置内置存储器用于存储多个自然效果,这代表装置驱动软件程序确定的最多(n-1)个最优的自然效果。顶端的(n-1)个优先的自然效果的周期性装入,有效地实现了涉及最高的(n-1)个顶端级别(toprated)的自然力的交换操作。
联系下面的文字和附图,将更具体地描述本发明的这些和其它实施例。
图1是概念性方块图,说明了应用程序与力反馈允许物理装置之间的通讯。
图2是概念性方块图,显示了游戏效果与装置内置效果之间的现有技术的对应。
图3是根据本发明实施例的系统方块图,用于控制力反馈允许装置。
图4A-4C说明了“包络”的概念,如在DirectInput中所实现的。
图5是概念性方块图,显示了根据本发明实施例的应用程序与力反馈允许装置之间的接口。
图6是装置驱动软件程序的初始化操作实施例的流程图。
图7是装置驱动软件程序的运行操作实施例的流程图。
图8是概念性方块图,显示了根据本发明实施例的游戏效果与装置内置效果之间的对应。
图9是在典型的赛车游戏中,本发明实施例的动态行为的图。
图10是装置驱动软件程序的关闭操作实施例的流程图。
本发明的一个实施例包括硬件和软件部分,这将在下面分别描述。
I.系统硬件的描述
图3是方块图,显示了本发明实施例的一个总控制系统310,用于主机系统控制的人机交互装置(“PID”)中。控制系统310包括PID312和主机系统314。
主机系统314最好是个人计算机,它在WINDOWS(视窗)操作系统下操作。可选地,主机系统可以是各种智能主机之一,如家用视频游戏、一组机顶盒或为用户提供交互信息的其它智能主机,它可以连接到电视机上。
在一个实施例中,主机系统314存储并执行应用程序,其中用户318通过显示装置340、扬声器342和PID312与之交互。例如,应用程序可以是使用力反馈装置的操作系统、视频游戏或其它应用程序。典型地,主机应用程序除了通过力反馈装置312从用户318接收输入,并向用户318提供触觉感觉外,还通过显示装置340提供视频显示,同时通过扬声器342提供音频输出。显示的信息可以被称作实体,这不是真实的物理对象,而是数据或程序集合产生的软件,它可以通过计算机系统314,在显示装置340上作为图像显示,这对本技术领域的技术人员是已知的。例如,简单的光标或赛道上汽车的视图,或飞行中的飞机,可以被认为是用户可控的计算机实体。
扬声器342连接到主机314上,这对本技术领域的技术人员是已知的。当实现应用程序时,主机314可以为用户318输出音频效果,来增强用户与主机实现的应用程序之间的交互效果。
主机系统314最好包括处理器332、存储器334、存储器336、系统总线338、扬声器342和显示装置340。主机处理器332可以包括各种市售的和已知的处理器,如英特尔(Intel)、摩托罗拉(Motorola)或其它相应生产商的处理器。存储器334可以包括只读存储器(ROM)和随机访问存储器(RAM)。主机从存储器336检索应用程序,将它调入存储器334,当执行应用程序时,检索、存储并处理指令和数据,这对本技术领域的技术人员是已知的。主机系统从PID312的传感器322,通过总线316接收传感器数据。主机系统314也可以将力反馈命令通过总线316传输到PID312,来促使PID312回放力反馈效果。
PID312通过总线316连接到主机系统314上。总线316最好是低速通用串行总线(USB)。可选地,PID312可以通过串行端口、游戏端口或并行端口、或其它适当的输入/输出端口,与主机系统接口。本发明优选实施例的一个重要特性是使用了低速USB接口,这样允许较低成本的连接器、电缆和其它附属硬件,同样也允许使用USB外围装置的一般情况。
PID312是用于主机314的外围装置,包括用户可操作的对象320、传感器322、内部控制器324、内部存储器326、其它输入设备如按键和致动器330及它们的附属力传输系统(未画出)。本发明实施例的一个重要特性是,使用了限制在8位计算容量的低成本控制器,同样使用了需要小于256字节的最少量存储器。图3显示的实施例提供了控制器324、致动器330、返回到控制器324的对象322之间的控制循环,这样允许适当的力效果对PID本身内部地整体处理。除此之外,主机314也包括在外部控制循环中,来驱动PID312。典型的致动器包括电机、气动/液压致动器、磁性装置或其它传输力的致动器。在一个实施例中,用户操作对象320是游戏杆。在可选实施例中,用户操作对象320包括方向盘和手脚踏板。在另一个实施例中,用户操作对象包括游戏板及它的外盒。而且,用户操作对象可以包括计算机鼠标。致动器典型地通过力传输设备,连接到用户操作对象上,这些对本技术领域的技术人员是已知的。传感器322沿一个或多个自由度,感应PID312的用户操作对象330的位置、移动和其它特性。这样,用户318可以沿一个或多个自由度,操作PID312的对象320,而与主机应用程序接口,其中用户在显示装置340上观察到主机应用程序。其它输入设备如按键328,也可以由用户318使用,来将其它输入信号提供给主机应用程序。这样的输入信号可以包括参数,来改变游戏的外观,或促使其它各种事件在虚拟环境中发生,这对本技术领域的技术人员是已知的。
在优选实施例中,驻留主机的并且由主机驱动的装置驱动程序,从应用程序接收高层的力反馈命令,通过内部控制循环,将它们管理、计算并转换成简化的命令组,用于回放。装置驱动程序的细节将在下面描述。
II.装置驱动程序软件描述
(A)总体概述
装置驱动软件程序的结构,受上述硬件设计特性强烈影响。硬件设计特性与低成本的微控制器低速USB接口结合,其中低成本的微控制器具有有限的处理能力(与现有技术的高速USB连接上的高速处理器比较)。这些设计决定在几个方面冲击了主机与装置之间的交互:
*低速USB接口只允许每8毫秒的传输。在传输之间,主机不以任何方式影响装置。同样,低速USB连接只允许短的包(直到8字节,但实际上由操作系统“特性”限制到7字节)。与高速USB连接的现有技术装置,理论上可以每1毫秒更新。然而,由于更高的装置内置处理性能和这些装置的自主控制,更新速率通常设置到4毫秒。
*低成本的微控制器具有有限的处理性能。它不像传统技术的力反馈控制器那样快地运行。它只具有8位能够用于数值计算,并且它具有大量减小的可用存储器,即256字节。这意味着,它不能像更昂贵的现有技术装置那样存储整个效果块,而且即使能够的话,它也不能以PID的稳定操作所需的速度来处理它们。例如,典型的现有技术力反馈装置需要具有16位计算性能的处理器,和至少1024字节的存储器,来存储典型的游戏效果。
固件确定可以表现的效果类型的数量,这些效果看起来与DirectInput中的那些相似,但相当简化。根据本发明方法的装置当前实现的一个实施例,限制到最多四个简化的效果。在包括游戏杆实施例中,其中游戏杆总共使用了两个电机,这些效果被分成杆每个轴的两个效果。在包括方向盘的可选实施例中,其中方向盘使用一个电机,装置可以对连接到方向盘轴上的单个电机,实际同时处理四个简化的效果。装置不具有任何时间的概念。它不跟踪按键的分配。它不具有包络概念的知识,如DirectInput中所定义的。甚至基本效果也限制在它们的范围内。在一个实施例中,有一个“梯形力”,它可以用于模拟周期的效果,并且它的参数可以设置在相当粗糙的增量上。
当装置对4个效果位置的每个具有固定的分配时,由于装置中效果可用的24字节最小量存储器,存储器管理是不必要的。装置驱动软件程序驻留在主机中,并且依靠主机的强大处理器来执行多数效果管理和计算,同样还将这些复杂的高层效果命令转换成单一的、小的和简化的低层命令组,用于在装置上回放。
作为对装置驱动程序软件描述的辅助,这里提供了DirectInput的结构和性能的简要总体概念。对于更具体的描述,可以参考其它来源,如微软公司的适当文件。
(B)DirectInput用于力反馈装置的结构和性能
如上所述,DirectX中的DirectInput API已经变成实际上的标准API,用于在基于Windows的平台上控制PID。DirectInput定义了一组效果,其中每个具有它的特定参数。硬件向量可以加和到当前定义的12个标准DirectX效果中,允许游戏开发者在力反馈的领域内,占据更特定的装置性能优势。这种方法非常灵活,然而由于游戏开发者不想将他们的游戏只限制在特定装置上工作,因而较少使用,但是会尽可能多地使用。由DirectInput定义的标准效果,强大到足以满足多数需要,所以几乎不使用任何销售商定义的效果。当前定义的“标准DirectInput力”及它们的参数如下所述,并且可以分成两组:只输出的效果,和力反馈循环内的效果。只输出的效果是独立于那时的装置对象位置的那些力效果,如与枪支开火相联系的“后坐力”效果,而力反馈循环效果是那时的装置对象位置功能的那些力效果,如应用在方向盘上的回正力。标准DirectInput力如下:
*恒定力:这是最简单类型的力。它代表具有方向和量级的力向量,可选地具有包络,在时间上对力调制。包络效果在下面描述。恒定力效果是只输出的效果。
*斜面力:斜面力(ramp force)是第二个最简单的力类型。斜面力定义为可变常数的力。除了具有恒定的量级外,它具有起始和结束量级,并在效果回放时间的周期中,执行这两端之间的线性摆动。如与恒定力一样,它具有方向和可选的包络。斜面力效果是只输出的效果。
*周期力,DirectInput定义了几个非常相似的效果,所有的都属于周期效果类型的组。这些力代表不同的周期波形。它们都具有相同的参数:频率、相位、方向、量级和可选的包络。这些可得到的波形是:方波、正弦波、三角波、上锯齿波和下锯齿波。周期力效果是只输出的效果。
*定制力,与周期力相似,定制力是周期波形。与规则的周期相反,定制力不具有预定的波形;通过特定曲线上所有的相关点,应用更定义了波形的样子,更像是声音取样。定制力具有与周期相同的参数。定制力效果是只输出的效果。
*弹簧,弹簧力应用了线性改变的力,力响应于从定义的中心点的偏移。用户将游戏装置从定义的中心推得越远,力变得越强。DirectInput允许定义弹簧的中心、弹簧系数(在从中心的给定偏移中,弹簧力以多快来改变)、和允许应用的力的最大水平(弹簧的极限)。同样,可以对于中心的每侧不同地定义弹簧,并且它们可以具有负的系数,促使弹簧不抵抗,而支持从中心偏移—结果效果与试图将球在翻扣的碗中保持平衡相似。本质上,代表效果的后面的公式:f=clip(k*x,max_force),其中k是系数(可以对于弹簧的每侧而不同),x是从中心点的偏移,而clip是限制最大的力水平的函数。弹簧力效果以反馈循环来使用。
*阻尼:阻尼更像弹簧;差异是,它不作用在从中心的偏离(位移)上,但作用在从参考点的速度差异上。所有的参数是相同的:代表效果的公式f=clip(k*v,max_force),其中k是阻尼系数,v是速度(dx/dt,经过距离的一次导数),而clip是限制最大的力水平的函数。阻尼力效果以反馈循环来使用。
*惯性:惯性也与阻尼和弹簧相似,只是它作用在控制器的加速度上。同样,所有的参数是相同的:代表效果的公式f=clip(k*a,max_force),其中k是惯性系数,a是加速度(dv/dt,速度的一次导数,或经过距离的二次导数),而clip是限制最大的力水平的函数。惯性力效果以反馈循环来使用。
*摩擦力:摩擦力是效果,其中游戏杆一移动,力就被表现出来。即使它与阻尼力在物理上不同,效果却相当地相似,主要因为有限的移动范围。经常地,摩擦力效果在阻尼力上显示。摩擦力效果以反馈循环来使用。
所有的效果共享一些共有的属性。它们可以限制到按键上,意味着当按下按键时,它们开始表现出来。它们具有周期(可以是有限的,或指定为无限的,在这种情况下直到明显地停止时,它们才开始表现出来)。只输出的效果支持包络。包络指定冲击时间、衰落时间、冲击水平和衰减水平。包络调整效果的量级,在冲击时间中,使量级从“冲击水平”a改变到“规则量级”m,然后在持续周期中表现出来,并在衰落时间中,从“规则量级”m移动到“衰减水平”f。包络的效果可以通过参考图4A-C,而最佳地观察到。包络效果本质上是应用在任何只输出效果上的时间改变系数。例如,当乘以图4B的周期系数时,图4A的包络将导致建立图4C显示的效果。
(C)装置驱动软件的具体描述
如上所述,本发明实施例的一个首要目的是,将尽可能多的处理移到装置以外,而移到主机上,那里可以得到更多的处理(CPU)能力。由于装置与主机之间通讯连接的限制,不是所有的功能都能移动。一部分计算必须发生在装置上,否则结果是次优的。次优结果或者延迟效果,或者是不稳定的效果,作为从装置到主机及其返回之间通讯循环的过长等待时间结果,而在装置上被处理。
将处理移到装置以外,而移到主机上,这建立了脱离观察的需要,其中游戏从装置上得到观察,因为多数游戏不准备适应容纳有限的装置性能。多数游戏假设表现了适当的最小容量,即力的数量(传统地总是有10个或更多)。如果游戏看到只表现出两个或四个效果的装置,那么游戏不试图调整,而只是对那个特定的控制器禁止力反馈效果。通过主机上的模拟来虚拟装置的性能,游戏将以更多的特性看到装置,多于它能够支持只具有它的子系统。这通过建立被称作虚拟装置对象的软件对象来实现。如上所述,本发明实施例的一个特性是下列事实的结合:(a)装置需要从主机更新,来执行它的操作,和(b)通常不能给与足够的更新,来完全覆盖它所有的功能。而且,低速USB端口的使用,将导致从装置到主机传输位置数据,并从主机到装置更新力输出,这个过程花费至少16毫秒,这对任何效果都太长了,其中这些效果具有位置参数与结果力之间的纠正。由于低速USB端口导致的带宽限制,装置驱动软件程序将驱动程序中的效果分类成两个类目。
这两个类目由装置驱动程序软件不同地处理。一个类目由主机整个处理,而另一个由固件和主机软件混合处理。
称作“自然效果”的一个类目,保持闭环特性的所有效果。这些力效果依靠用户操作对象的位置。操作系统API(DirectInput)效果的当前例子是弹簧力(与位置成比例的力)、阻尼力(与速度成比例的力)、惯性力(与加速度成比例的力)和摩擦力(当发生移动时应用的力)。由于循环中的全程等待时间,促使结果力中严格的不稳定性,这些闭环力不适于在主机上计算。它们的计算发生在装置上,但在驱动程序的恒定的更新控制下。
称作“模拟效果”的另一个类目包括其余的效果。这些是“只回放”特性的,即它们是只输出的,并且不依靠用户操作对象的位置。这样力的例子是各种波形(正弦波、三角波、方波等),和它们具有变化的恒定力,如斜面力。通讯机制引入等待时间(在低速USB上典型地为8毫秒),尽管非常易于测量,但不被用户觉察到。
在装置的存储器中,用于效果的可用空间被驱动程序保持的两个效果区共享。在包括游戏杆的实施例中,为每个电机轴存储两个效果。在包括方向盘的可选实施例中,存储四个效果。对于包括游戏杆的实施例,对于给定的轴,一个效果用作“自然效果”,另一个用作“模拟效果”。对于包括方向盘的实施例,三个装置内置效果用作“自然效果”,而一个用作“模拟效果”。对于使用游戏板的实施例,在装置的存储器中,用于效果的所有可用空间都用于模拟效果。
对于自然效果,通过应用程序向下传送的理想参数,被装置驱动程序软件转换成组的简化效果,并且表现为固件所能处理。典型地,这导致参数分辨率的显著减小。部分参数不全部被转换,但为装置驱动程序自己的使用而保留。由于固件不跟踪时间,这通常包括任何类型的时刻信息。
模拟效果保持其理想参数。根据规则的基础,它们被询问它们的输出贡献是什么,作为它们更新它们的内部状态的结果,并且优先于下一个脉冲。由于它们被驱动程序处理,其中驱动程序运行在相对非常强大的处理器上,它们保持他们完全的“理想性”,除了将物理硬件的力向量范围按比例缩小。
图5显示了应用程序(游戏)与力反馈允许装置之间接口的概念图。如可以从图中看到的,驱动程序540需要既与它的上层,即DirectInput接口,又与它的装置560接口。到DirectInput的接口只以唯一允许的方式进行,并且被DirectInput接受,也就是,通过暴露IDirectInputEffectDriver(IDirectInput效果驱动程序)对象530。当应用程序(游戏)510想要使用装置上的力反馈时,这个对象被DirectInput520请求,并通过这个对象,所有的命令被传送到装置560。
另一方面,驱动程序540通过使用HID装置的标准方法,与装置560接口。HID集在系统中作为“装置文件”出现,并且软件(像驱动程序)可以调用那些装置文件上的“CreatFile(建立文件)”函数,并发布后续的“ReadFile(读文件)”和“WriteFile(写文件)”函数,来各自从装置读数据和向装置发送数据。在驱动程序540确定所发送什么之后,WriteFile()函数调用550的方法用于将命令发送到装置560。
装置驱动程序软件内核540存在这两个接口520与560之间,它是组成装置驱动程序软件的处理和决定。为了根据相同方法支持整个家族的装置,选择了基于对象的设计。软件程序的实施例包括基本对象,这对所有装置和派生的对象是通用的,其中派生的对象被指定给特别的装置,如游戏杆、方向盘、游戏板或计算机鼠标。这些对象根据需要建立或毁去,作为应用程序和这样的驱动程序命令的动态操作。这些对象在下面描述。下面提供的描述限制为包括游戏杆和方向盘的装置。这个限制不针对将本发明应用于其它可能的力反馈允许装置的范围,而只说明将应用的方法用于超过一种装置,这样灵活性的广度。
(i)装置驱动软件程序部分
装置驱动软件程序的第一部分是CFFServerClassFactory(CFF服务类工厂)对象。DirectInput与驱动程序之间的接口是基于COM(Component Object Model,即元件对象模型)的。部分COM需要COM提供者像驱动程序一样,必须具有“类工厂”,这可以产生给定类型的COM对象。驱动程序具有基本的服务工厂对象,从中派生用于游戏杆和方向盘装置的特定类工厂。当前,有支持的第三个类工厂,它将增值软件(轮廓和控制面板)访问给与一些高级特性,这是标准DirectInput接口不能得到的。这些特性包括像设定力的层,打开/关闭并调整用于非力游戏的回正弹簧,及相似。
DirectInput得到类工厂对象,而在它的初始化中产生力反馈驱动程序事件。这个对象事件用于与从应用到驱动程序的所有请求通讯。对于增值软件,使用了相同的机制,来得到对扩展参数的访问。
驱动程序的第二部分是CFFDrv对象,由类工厂产生的对象是这类的派生。CFFDrv实现接口,包括DirectInput需要的命令,这包括DeviceID(装置ID,来建立/毁去力反馈装置的事例)、GetVersion(获得版本,来查询关于硬件和驱动程序的版本信息)、Escape(脱离,来允许销售商的特定命令发送到驱动程序)、SetGain(设置增益,来设置装置的整个“容量”)、SendForceFeedackCommand(发送力反馈命令,来允许游戏执行几个游戏操作,像打开或关闭致动器)、GetForceFeedackState(得到力反馈状态,来允许游戏查询力反馈是否打开/关闭及相似)、DownloadEffect(下载效果,来将效果下载或更新到装置上)、DestroyEffect(毁去效果,来从装置上去除效果)、StartEffect(开始效果,来开始先前下载的效果)、StopEffect(停止效果,来停止表现装置上的效果)和GetEffectStatus(得到效果状态,来查询效果的状态,它是否在被表现)。这个接口在DirectInput DDK(device developers kit,即装置开发者工具包)中进一步具体描述,并且为装置所需,作为力反馈驱动程序而被接受。
CFFDrv具有两个派生的类:CFFDrvMWjoystick用于游戏杆装置,而CFFDrvMWwheel用于方向盘装置,它们继承了它们的基本类的所有功能,唯一的差异是它们用例子说明了不同的“虚拟装置”,如在下面的对象中所描述的。
CFFDrv的功能非常有限。它所做的一切是查找适当的虚拟装置,并且将请求推进给对象。
驱动程序的第三部分是CVDevice。这类实现了“虚拟装置”的概念。它是作为连接的装置所表现给DirectInput的模型,隐藏了下面硬件的细节。CVDevice处理从DirectInput来的所有请求。在这层上,多数操作非常微不足道,唯一需要专门操作技术的一个是DownloadEffect。它包含操作柄,使对象互斥(mutex,即mutual exclusion),而使干涉操作同步。它保留了关于装置的所有相关信息,最重要的是允许ReadFile()和WriteFile()操作的操作柄。它还保留了效果的集合。每次应用请求下载或更新下载的效果时,CVDevice都做所有信息的副本。开始和停止操作促使对可应用的效果设置标志;SendForceFeedackCommand在CVDevice中设置状态。近似地,GetStatus和GetEffectState可以在任何时间立即返回装置的状态,或返回任何给定效果的状态。在任何给定的时间,CVDevice知道任何和所有的效果、它们的参数和它们的状态,并且知道装置的整个状态。
在这一点上,不包括硬件。CVDevice模拟一个优秀的、无限功能的装置。即使不需要连接任何硬件,应用也看到力反馈装置不拒绝任何命令或参数范围。在优选实施例中,它允许下载最多64个效果,但简单地改变常数可以改变这个状况。其它实施例通过动态地扩大CVDevice保留的效果“包(bag)”的数量,而去除固定数量效果的限制。
在一个实施例中,CVDevice具有各种派生的类。例如,一个用于游戏杆并用于方向盘装置。这些派生包含装置的特定码。它们继承了所有的基本对象属性、效果和装置管理、通过严格路径的互斥排除等。它们所加入的是两个东西—DownloadEffect的特定处理,因为这个函数需要一些以效果类型(下面描述)方式作出的决定,和“模拟线程”操作柄。还有一些附加的功能,多数属于每个各自装置的附加特性,包括高级参数的处理、回正弹簧事件的处理、存储/检索配置和离散情况的处理,如关闭或初始化对象。
CVDevice派生类,作为它们初始化的部分,建立了“模拟线程”对象,如下所述。这个线程作为分离的处理单元衍生出来,以尽可能“实时”的方式处理模拟的所有方面。这个线程是使装置活跃并动态、优化地使用有限资源的部分。
驱动程序的第四部分是CEffect对象。CEffect是所有效果的基础。以其最基本形式,它可以保持并更新从DirectInput得到的关于它的属性的信息。它可以处理简单的操作,如开始和停止,并且它可以更新它的内部状态,作为经过时间的结果,如果当它被告知这样做的话。开始和停止只改变内部标志;通过看总的周期,CEffect对象知道当表现足够长的时间后,它需要停止。它执行这个操作,完全不需要其它控制事件的任何介入。
CEffect对象具有几个派生的类,这几乎压缩了不同效果的行为。例如,对于游戏杆实施例,有两个第一层的派生类,CNativejoystickEffect和CsimulatedjoystickEffect,代表“自然效果”和“模拟效果”。可选地,方向盘实施例具有相同的区别。这些第一层的派生类的每个,具有几个它们自己的派生类。“自然效果”具有它们各自的CxSpringEffect和CxDamperEffect,在例子中,“x”或者是游戏杆或者是方向盘。一些“模拟效果”具有多于一层的派生—有CxperiodicEffect,其中派生了CxSineEffect、CxSquareEffect、CxTriangleEffect、CxsawUpEffect、CxSawDownEffect。进一步,有CxConstantEffect、CxRampEffect和CxCustomEffect,从CSimulatedxEffect中派生出来。
对象继承中所有保留,具有关于它们所支持而代表的特定知识。例如,CxSawDownEffect准确地知道,如何转换原始DirectInput效果结构的CEffect副本中的参数,而以所有给定的参数,如时间、频率、偏移量、包络等,来产生“下锯齿(sawtooth down)”效果的感觉,并且可以让另一个查询对象知道当前的力应该是什么。
从CNativeXEffect派生的对象,知道产生什么字节顺序,而发送到装置,使它能表现力,这最近于所请求的。同样,CNativeXEffect对象可以给出关于它们多“重要”的信息。这个“重要”信息对于使这些效果优先成为顶端“n”个最重要的效果子集,其中最重要的效果下载到装置中。
驱动程序的第五部分是CSimThread对象。这类实现了使分离的线程执行所有必要的通讯和计算的功能。它是CVDevice派生对象代表的“虚拟装置”与真实的物理硬件装置之间的联系线索。“模拟线程”包含了连续执行的循环,这对时间经过所促使的效果执行所有的调整;在多个竞争的效果之间做出仲裁;模拟能够被模拟的任何东西,并且与装置交互。这个循环在初始开始,并且继续,直到不再需要任何力反馈装置为止。为了具有最可能的实时行为,设置这个线程,来使用比规则应用的线程更高的优先权。这保证了多任务操作系统上的时间规划。需要非常注意不允许任何紧密的循环,因为如果高优先权的线程不适当地交出控制的话,系统看起来会进入完全停止。在所有的模拟和仲裁被执行后,这个线程的一个内核任务将结果发送到装置。像这里使用的模拟,是所有模拟力的向量和的计算,而到达一个复合的模拟力;而像这里使用的仲裁,是自然效果类型的,来确定下载到装置中的顶端(n)个最重要的效果。调用WriteFile()促使线程停止,直到数据确实被发送为止。在这个停止的状态下,操作系统将线程挂起,并且其它系统活动可以不受干扰地发生。如果由于任何原因,线程不能够或不想写入装置,它将执行8毫秒的自发休眠,在这个过程中,系统将继续通常的速度。
CSimThread具有至少两个派生类,同样,CjoystickSimThread和CwheelSimThread。这两个类实现了装置的特定行为,并且包含装置相关性,如传输大小和它们代表的硬件的格式。
CjoystickSimThread和CwheelSimThread也准确地知道装置的性能和限制,并且执行排序和效果的仲裁。在这两种情况下,它们浏览它们的虚拟装置效果列表,以当前时间更新它们,然后作用在结果上。
对于CxSimulatedEffect对象,线程加和所有的力反馈向量,这产生了所有模拟效果的最终的和。如果这个值已经从最后的更新改变,则装置通过将这个值发送给它而被更新。对于CxNativeEffect对象,线程对所有的效果查询它们的重要性,并通过最重要优先的原则对它们排序。在进行了这个排序后,以效果的当前状态更新装置。由效果来判断它们自己的重要性,但各种典型的实施例包括使用系数、剪辑层(clppinglevel)和周期的结合,来帮助判断每个效果的重要性。
模拟线程对象还检查按下按键,如果对于适当的按键登记了力,将促使它们开始表现,正像如果应用程序或游戏命令它们开始表现一样。当释放触发时(如果效果周期是无限的),或让它们自己停止时(如果周期是有限的),它将处理所有必要的步骤,来停止它们。
除了上述驱动程序部分,还有一些帮助类,这对经常使用的功能提供支持。除了这些,有其它涉及力反馈装置配置高级特性的各式各样的类。所有帮助类通过官方DirectInput接口旁路,提供对参数的访问。
最重要的帮助类是CTiming。CTiming提供精确的计时服务。这是非常重要的方面,由于整个模拟依靠精确的定时信息,将实时数据输出到装置。通常,应用可以得到1毫秒分辨率的时间,然而这样的分辨率不意味着精确到1毫秒。通过从Windows得到时间的典型接口(GetTickCount()),时间每几毫秒被更新。在时间上,这可以小至两到三毫秒,但大到30毫秒。Windows的多媒体API有幸提供了时间XXX函数,这允许达到1毫秒的精确时刻。尽管不困难,但处理这个API需要一些附加的步骤。这些附加的步骤都隐藏在CTiming中,这提供了附加的功能,如计算两个不同CTiming对象之间的差。
尽管上面提供的装置驱动软件程序部分的描述,暗示了它的执行,它动态操作的更深入描述将在下面提供。
(ii)装置驱动软件程序的动态行为
如上所述,装置驱动软件程序可以以各种力反馈允许装置实现。为了避免装置驱动软件程序动态行为的整个普通描述,选择了包括方向盘装置的实施例,来用例子说明过程。下面的描述不趋于限制在这样的装置上,因为这个描述与其它实施例等效相关,如游戏杆、游戏板、其它周边装置及相似。动态行为包括后面的三个阶段:初始化、运行操作和关闭。当应用指示DirectInput它想要使用这个力反馈装置时,第一阶段首先发生。在所有的初始化进行后,所有的片断被连接并在运行条件下,而进入第二阶段。这个第二阶段是花费多数时间的阶段,并且是执行多数操作的阶段。一旦应用退出,则进入最后的阶段,其中所有的处理都关闭并释放。运行操作的每个不同阶段在下面,并在相应的图6、7和10中更具体地描述。
(a)初始化
当应用指示DirectInput它想要以力反馈模式使用装置时,DirectInput使用几步来保证装置可被得到,并且可以与之对话。在实现驱动程序方面,留给硬件制造商在0环驱动程序(内核模式)或3环DLL(用户模式)之间选择。内核模式方法只在Windows9x(95、98或Millennium(即千禧版))结构下被支持,所以为了与Windows2000及以后兼容,需要使用用户模式DLL模型。由于力反馈装置驱动程序作为COM提供者(Windows9x下的两种支持方式之一,并且是Windows2000下的唯一合法方式)实现,这些初始步骤本质上由COM对象的行为控制。
图6是流程图,显示了驱动程序运行操作的初始阶段。在第一步(步骤610),通过开始调用DirectInput中与力反馈相关的函数,应用声明它对力反馈有兴趣,结果,DirectInput查找哪个CLSID GUID(CLaSsID/Globally Unique Identifier,即类ID/全球唯一识别码)登记来处理装置。然后,它查找哪个DLL与CLSID相关,加载DLL(步骤612),并得到它的类对象—类工厂。这是标准COM过程的所有部分,用于载入COM提供者DLL。下面,已经得到了类工厂后,程序请求类工厂来产生从IDirectInputEffectDriver派生的对象,作为接受力反馈驱动程序对象的结果(步骤614)。用于DirectInput执行的下面的步骤,是对驱动程序宣布新装置(步骤616)。本质上,DirectInput告诉驱动程序:“从现在起,你应该处理IDx上的装置”。这促使力反馈驱动程序对象建立适当类型的虚拟装置的新事件(步骤618)。新建立的虚拟装置Initialize()函数被调用,来让它初始化它所需要的任何东西(步骤620)。这个初始化函数执行所有必要的建立步骤:它计算出到装置的路径,对后面将力命令发送到装置打开那条路径,查找预先使用的高级参数,建立并开始模拟线程(步骤622)。模拟线程依次建立其内部状态,并且开始运行(步骤624)。由于在这一点上,不处理任何东西,线程本质上不循环做任何事,而在其间暂停。
在这一点上,所有的对象和资源以这样的方式适当建立,即应用可以开始下载/表现/修改/停止力。模拟线程是功能性的,并且运行;虚拟装置是空的,并且被初始化。在装置驱动程序软件的动态操作中,下面的阶段是运行阶段。运行阶段在下面并在图7中描述。
(b)运行操作
图7显示了装置驱动软件程序运行操作阶段的流程图。运行操作被进一步分成两部分。第一部分包括虚拟装置对象,与DirectInput接口。第二部分包括模拟线程对象,当从应用中脱离时,在它自己的线程中执行各种处理。
(b)-1虚拟装置对象操作
如上所述,虚拟装置在初始化中建立(步骤618),并且它代表理想的或优异的装置,其中装置被表现给应用程序,并且能够无限地执行所有请求的反馈效果。初始地,虚拟装置对象只保持它的状态(步骤726),直到从应用程序接收到用于力反馈改变的请求为止(步骤728)。可以有任何顺序的支持函数(下载(或改变)效果、毁去效果、开始效果、停止效果、获得效果状态、发送FF命令、得到装置状态、设置整个增益),其中DirectInput从应用程序接收,并且继续传送给驱动程序。力反馈驱动程序依次将这些请求转发给虚拟装置,其中虚拟装置担负请求指定的装置ID(步骤730),并且允许它对任何装置的特定参数寻址,如果需要,返回虚拟装置的错误码。虚拟装置是请求被处理的地方(步骤732)。这些请求中不需要任何大量的处理时间,并且在它们显示它们的效果后立即返回。一旦虚拟装置已经处理了这些请求,则将它们推进到模拟线程(步骤734),用于转换成低层命令和与物理装置的后续通讯。可以在这层执行的一些单一操作(步骤732)的例子,及它们的相应结果在下面显示:
*下载效果:这个函数可以在两种环境下调用:或者应用想要第一次下载力,或者它想要更新预先下载的力。虚拟装置根据从应用传来的操作柄确定采用哪条路径,如果建立新效果的话是0,如果效果被修改的话是一些其它数。
如果新效果将被建立,那么虚拟装置从已知效果对象的集合中提取适当的一个,例如用于方向盘装置的正弦函数力。虚拟装置将它作为处理特定效果的一个来登记,并由此来处理效果而使它初始化。这典型地包括调用效果的Update()更新函数一次,来让它知道应该携带什么参数,并让它初始化自己。对于一些效果,需要附加的初始化,并在这点上来执行。
如果存在的效果将被修改,那么虚拟装置选择特定的效果,并调用它的Update()函数,作为效果更新它的DirectInput参数副本的结果。
*毁去效果:当应用不再想使用效果时,它调用DestroyEffect来毁去它,并从它处理的装置中去除它。在装置驱动程序中,虚拟装置简单地调用效果对象的毁去函数。效果确定需要做什么;所有的效果释放它们使用的存储器,并且一些效果做附加的工作,即如果它们是活动的自然效果,则在装置上停止它们自己。
*开始/停止效果:这两个调用立即向前推进到适当的效果对象。讨论的效果对象将它的内部状态更新为表现/不表现,并执行任何必要的附加初始化。
*得到效果状态:虚拟装置将这些调用直接推进到讨论的效果对象中。效果对象作为结果进行的唯一事情是,返回它的内部IsPlaying标志副本。
*发送FF命令:这个函数被指引向装置,而不是特定的效果。由此,它被虚拟装置对象自己处理。一些可能的命令具有更显著的冲击(像RESET,这促使虚拟装置对象停止,并且毁去所有的效果对象;或STOPAALL,这促使它复接所有的效果对象,并调用它们的停止函数),它们中的一些具有较不显著的冲击(像ACTUATOR_ON或ACTUATOR_OFF)。对于所有的命令,虚拟装置对象的内部状态被更新,并且在一些情况下有一些操作被执行。例如,打开或关闭致动器可以促使虚拟装置对象发送出命令,来禁止/再次允许回正弹簧,如果用户通过高级选项选择这样做的话。
*得到装置状态:再次,这个命令被指引向装置自己,由此被虚拟装置对象处理。在这种情况下,执行的唯一操作是返回内部状态(致动器开或关,装置空白或充满,装置停止)。
*设置整个增益:除了存储请求的整个增益,最后的装置整个函数不做任何事。这个值被连接到模拟线程执行的计算上。
(b)-2模拟线程对象操作
如上所述,虚拟装置对象与它所有相联系的对象一起,像效果,显示了到应用行为的闭环。这通过设计,由于应用程序应与装置一起表现,其中装置在效果上尽可能地接近理想,来支持与游戏的最大兼容性,同样支持最大的保真度,和将来对新的或修改的硬件脚本的适应性。
另一方面,真实装置需要以关于做什么的信息和指令来更新。通过对象本身的巨大帮助,模拟线程对象处理所有涉及从理想装置转换为真实世界装置的细节。
在装置上结束表现的内核权限,存在于效果对象中,因为效果对象最知道在任何给定的时间应该表现什么,并且如何从理想代表中得到装置的性能。
线程引进动态行为和模拟,来允许超过硬件自己所能做的。例如,它命令时钟,其中时钟是对装置的恒定更新,来保持它适当地接口,并且它在竞争的效果对象之间仲裁。
根据应用必须告诉虚拟装置对象来做什么,并且如何做,而做出所有这些决定。虚拟装置接收并存储信息,模拟线程计算并使用相同的信息,来建立身体感觉。如此,线程不具有任何DirectInput的概念,或者与它对话的应用程序的概念。模拟线程所知道的一切是,它已经接收到几个效果(步骤736),它知道当前时间,并且它必须处理这个信息。
在每个循环中,这大概每8毫秒发生,并且被USB连接上的传输率命令。模拟线程对象确定它是否以内部或模拟效果工作(步骤740)。如果它在处理自然效果,那么模拟线程对所有的“自然效果”询问它们的重要性(步骤742)。每个自然效果可以判断它感到多强烈(多易于察觉)。模拟线程跟踪所有包含的自然效果和它们的重要性,并由最重要的一个对结果分类(步骤744)。在一个实施例中,根据效果的觉察强度实现分类;对于弹簧,它们的弹簧系数和它们的限制值以加权的方式加和,来表现整个“强度”;对于阻尼,发生相似的计算,其中阻尼系数得到更高的权数。其它标准也可以是等式中的因数,像弹簧中心从游戏杆物理中心的距离,或弹簧左右手侧之间的非灵敏区。然后这些线程确定,来看这些顶端的N个力是否与最近的更新不同(步骤746)。如果这些顶端的N个力与最近的时间循环不同,那么装置由此被通知(步骤748),效果被询问它们对装置的命令,然后,模拟线程确定力的适当转换和减小(步骤750),并且装置以当前最重要的力被更新(步骤752)。这实现了装置总是充满N个最重要的力,有效地实现了交换机制,这丢掉了比较不重要的力。这对于游戏杆实施例是特别重要的特性,其中对每个致动器的自然效果,它只具有一个可得到的力。另一方面,例如如果不需要对装置更新,因为没有什么东西改变,那么模拟线程休眠8毫秒来补偿(步骤754),并让其它线程获得CPU的注意。
如果模拟线程处理模拟效果,那么它将对所有的“模拟效果”询问它们的力向量(步骤762)。通过加和这些向量(步骤764),一个结果向量作为复合力出现—这非常相似于在混音器中将多个声源加和到一起。下面模拟线程确定结果力向量是否与最近的更新不同(步骤766)。如果结果力向量不同,线程通知装置改变(步骤768),确定适当的转换(步骤770),并将转换的力发送到装置用于回放(步骤772)。这个结果向量可以作为一个装置内置的恒定力表现,正像混音器的输出可以在一个单一扬声器上表现一样。另一方面,例如如果不需要对装置更新,因为没有什么东西改变,那么线程将休眠8毫秒来补偿(步骤754),并让其它线程获得CPU的注意。
作为加和的优点,在从游戏到装置的路径上,驱动程序有能力修改适当的参数。这里最重要的参数是力的量级。由于机械结构,装置可以具有对力的非线性响应。典型地,较低量级的力可以被机构吞没,而较高量级的力(特别是弹簧)将抵偿其它表现的力。由于模拟力在主机的完全控制下,驱动程序实现机制来线性地削弱它们(如果需要它们较弱的话),或者对它们的值应用非线性变形(伽玛曲线)。这促使良好地修正机构的缺点。对于自然力,驱动程序简单地削弱/放大它们的参数;对于弹簧,它特别限制了最大强度,来允许一些空间用于其它效果,即使表现了强力弹簧也是如此。
图8是概念性方块图,显示了本发明实施例的初始化和运行操作中,游戏效果与装置内置效果之间的对应。在初始化中,游戏(未显示)向装置810查询所有可能的效果822。装置驱动软件程序824建立虚拟装置,来存储应用程序效果822,作为虚拟装置效果826,这样导致了游戏与虚拟装置内置效果之间的一一对应。装置驱动软件程序通过上面描述的各部分而作用,然后装置驱动软件程序确定哪个效果是模拟效果,而哪个是自然效果。如上所述,所有的模拟效果被加和,而得到它们的结果力向量。然后结果力向量转换成适当的简化效果,并表现为一个简化的效果,发送到装置。自然力被优先,并且顶端n-1个效果被转换成适当的简化效果,并且n(1个模拟并加上[n-1]个自然效果)个简化效果的最后的子集发送到装置,作为装置内置力812 。
图9显示了使用游戏杆的实施例中,装置驱动软件程序动态行为的例子。其中装置内置存储效果的子集只包括两个效果,由一个模拟效果和一个自然效果组成。这张图显示了游戏提供了总共六个效果,来由装置回放。这些包括发动机力910、低频带912、冲击效果914、减档效果916,这些都是模拟类型的力,和回正效果918与越野阻尼效果820,它们是内部类型的力。这些力是时间的函数,并且装置需要同时表现所有这些效果。装置驱动软件程序将加和所有的模拟力,来确定结果向量力,如“模拟力”轨迹922所代表的。由于装置不具有时间的概念,实际所下载到装置上的一个可得到的模拟力片断上的,是一系列离散的恒定力值,其中当加和时它们符合装置内置模拟轨迹922。在相应于从主机到装置的通讯传输率上,装置以这些离散的值更新,这由低速USB协议管理。
自然效果被装置驱动软件程序检查它们作为时间函数的重要性。这里,由于装置具有用于一个内部装置内置效果的一个片断,驱动程序在每个时段确定,代表回正弹簧力918和越野阻尼力920的两个游戏效果的哪个更重要,并且根据这个信息产生一个复合的自然力效果。这里,通过判断映象为自然效果的两个游戏力的重要性,驱动程序产生结果装置内置自然力效果轮廓924。这个自然力由简化的弹簧和阻尼代表效果的部分,其中对于每个时间增量适当地下载用于处理,并通过装置回放。装置驱动程序动态操作的最后阶段是关闭操作,这在下面描述。
(c)关闭操作
为了驱动程序和装置是系统友好的,需要应用结束它们开始的所有线程,并且释放如存储器、互斥等,在它们的初始化和/或运行时间中分配的所有资源,这样干净地结束。如图10所示,一旦应用程序停止使用力反馈装置(步骤1080),力反馈驱动程序对象通过在它的消去设备中,毁去它建立的所有虚拟装置对象,来维护终止(步骤1082)。虚拟装置对象依次在它们的消去设备中,让模拟线程对象来关闭(步骤1084)。这个毁去过程的另一部分通过重复所有的效果,并毁去它们来进行。
当让模拟线程对象关闭时,它对模拟线程发出信号来终止,这样毁去所有的效果(步骤1086),等待模拟线程结束当前步骤,然后释放所有相关的资源(步骤1088),并消失(步骤1090)。当被要求毁去自己时,效果依次释放所有与它们相关的资源(多数是存储器)并消失。
如本技术领域的技术人员将理解的,根据本发明的实施例,通过基于主机的装置驱动软件程序,处理力反馈效果,用于在力反馈允许装置上回放,这样的其它等同或可选方法,可以想象不必从本发明的本质特性中分离出来。例如,几个元件的结合可以用在PID中,如控制器、存储器、传感器和按键,来允许它与驻留主机的应用程序和装置驱动软件程序接口。而且,当保持它的处理结果本质相同时,也可以改变编程语言的选择和装置驱动软件程序的结构。随着明显的改变与修改一起,这些等效和选项包括在本发明的领域内。由此,前面的揭示趋于说明,并非限制本发明的领域,本发明的范围由后面的权利要求书中陈述。
Claims (28)
1.一种用于处理力反馈效果命令的系统,该力反馈效果命令由应用程序在主机上产生,所述系统包括:
(a)人机交互装置,用于回放所述效果,所述装置连接到所述主机上,并配置来接受信息和所述力反馈效果命令,且将信息和输入信号提供给所述主机,用于结合到所述主机应用程序中,所述装置包括:
控制器,配置来从所述主机接收命令信号,其中所述控制器包括可编程的数字存储器,
至少一个致动器,连接到所述控制器上,并配置来从所述控制器接收控制信号,并且响应于所述控制信号产生物理移动,
操作者操纵部件,可通过操作者以至少一个自由度移动,并且连接到所述至少一个致动器上,并可由所述至少一个致动器移动,和
输入装置,连接到所述控制器上,并配置来将输入信号提供给所述控制器,其中所述输入信号由所述控制器提供给所述主机,用于结合到所述主机应用程序中,和
(b)计算机程序产品,包括:
计算机可使用的介质,其中包含有计算机可读的代码,用于促成对所述力反馈效果命令的处理,用于在所述人机交互装置上进行回放,所述计算机程序产品包括:
计算机可读的程序码装置,配置来当所述主机呼叫声明希望使用所述装置时,促使主机实现所述计算机程序的初始化,其中所述初始化创建一虚拟装置对象,并且其中所述虚拟装置对象创建并初始化一模拟线程对象,其中所述主机应用程序只认识到所述虚拟装置的存在,
计算机可读的程序码装置,配置来促使主机实现所述计算机程序的运行操作,其中所述运行操作包括:
所述虚拟装置对象的运行操作,其中所述虚拟装置的所述运行操作与所述主机应用程序的行为和时刻紧密相关,并且所述虚拟装置对象从所述主机应用程序接收高层的力反馈效果命令,和
所述模拟线程对象的运行操作,其中所述模拟线程对象的所述运行操作被从所述主机的应用程序除去耦合,并且其中所述模拟线程对象从所述虚拟装置对象接收高层的力反馈效果命令,并且
将所述高层力反馈效果命令分类为模拟效果类和自然效果类,其中模拟效果是独立于所述装置的响应的效果,而自然效果是依赖于所述装置的输入和响应的力效果,且其中所述自然效果由所述装置本地地处理,并且其中所述模拟效果由所述主机处理,
将所述高层力反馈效果命令转换成一组简化的效果,其中所述简化的效果包括模拟和自然效果,并且
通过将所述简化效果的子集传输给所述人机交互装置来周期性地更新该装置,所述简化效果的子集包括(n)个简化效果,用于装置内置存储和回放,其包括至少一个模拟效果和可达到(n-1)个的自然效果,并且其中所述至少一个传输的模拟效果是所有应用程序模拟效果的向量和,所述应用程序模拟效果由所述装置驱动软件程序计算,并且其中所述(n-1)个传输的自然效果是由所述装置驱动软件程序选择的(n-1)个最优先的自然效果,并且其中所述周期更新实现了最高的(n-1)个顶端级别的自然力的交换操作。
2.根据权利要求1的系统的人机交互装置,进一步包括传感器,其连接到所述操作者操纵部件上,并配置来检测所述操作者操纵部件的位置,所述传感器产生要输入到所述控制器的位置信号,该位置信号指示所述操作者操纵部件的位置。
3.根据权利要求1的系统,其中所述人机交互装置通过低速USB接口连接到所述主机上,该接口允许以周期速率在所述主机与所述人机交互装置之间传输信息,并且在其间的所述传输中,所述人机交互装置是自主的,并且在其间的所述传输中,所述主机不影响所述人机交互装置。
4.根据权利要求1的系统,其中所有应用程序力反馈效果类型使用所述主机上的存储装置,而不是所述人机交互装置上的存储装置,存储在所述虚拟装置上。
5.根据权利要求1的系统,其中所述人机交互装置包括游戏杆。
6.根据权利要求1的系统,其中所述人机交互装置包括方向盘。
7.根据权利要求1的系统,其中所述人机交互装置包括游戏板。
8.根据权利要求1的系统,其中所述人机交互装置包括计算机鼠标。
9.一种人机交互装置(“PID”),用于回放力反馈效果命令,其中力反馈效果命令由应用程序在主机上产生,所述装置连接到所述主机上,且配置来接收信息和所述力反馈效果命令,并将信息和输入信号提供给所述主机,用于结合到所述主机应用程序中,所述装置包括:
控制器,配置来从所述主机接收命令信号,其中所述控制器包括可编程的数字存储器,
至少一个致动器,连接到所述控制器上,并且配置来从所述控制器接收控制信号,并响应于所述控制信号来产生物理移动,
操作者操纵部件,通过操作者可以至少一个自由度移动,其连接到所述至少一个致动器上,
输入装置,连接到所述控制器上,其配置来将输入信号提供给所述控制器,其中所述输入信号由所述控制器提供给所述主机,用于结合到所述主机应用程序中,和
所述人机交互装置,其配置来用简化的力反馈效果的子集周期性地被更新,其中简化的力反馈效果从由计算机程序产品的所述应用程序产生的高层力反馈效果转换而来,其中计算机程序产品驻留并运行在所述主机上,所述主机执行所有的力反馈效果存储、管理、转换成简化效果、及选择所述简化效果的子集。
10.根据权利要求9的PID,进一步包括连接到所述操作者操纵部件上的传感器,其配置来检测所述操作者操纵部件的位置,所述传感器产生要输入到所述控制器的位置信号,该位置信号指示所述操作者操纵部件的位置。
11.根据权利要求9的PID,其中所述人机交互装置通过低速USB接口连接到所述主机上,所述接口允许以周期速率在所述主机与所述人机交互装置之间传输信息,并且在其间的所述传输中,所述人机交互装置是自主的,并且在其间的所述传输中,所述主机不影响所述人机交互装置。
12.根据权利要求9的PID,其中所有应用程序力反馈效果类型均使用所述主机中的存储装置,而不是所述人机交互装置中的存储装置存储。
13.根据权利要求9的PID,其中所述人机交互装置包括游戏杆。
14.根据权利要求9的PID,其中所述人机交互装置包括方向盘。
15.根据权利要求9的PID,其中所述人机交互装置包括游戏板。
16.根据权利要求9的PID,其中所述人机交互装置包括计算机鼠标。
17.一种计算机程序产品,包括:
计算机可使用的介质,其中包含有计算机可读的代码,用于引起对力反馈效果命令的处理,其中力反馈效果命令由应用程序在主机上发布,用于在人机交互装置(“PID”)上回放,所述计算机程序产品包括:
计算机可读的程序码装置,配置来当所述主机呼叫声明期望使用所述装置时,促使主机实现所述计算机程序的初始化,其中所述初始化创建一虚拟装置对象,并且其中所述虚拟装置对象创建并初始化一模拟线程对象,其中所述主机应用程序只认识到所述虚拟装置的存在,
计算机可读的程序码装置,配置来促使主机实现所述计算机程序的运行操作,其中所述运行操作包括:
所述虚拟装置对象的运行操作,其中所述虚拟装置对象的所述运行操作与所述主机应用程序的行为和时刻紧密相关,并且所述虚拟装置对象从所述主机应用程序接收高层的力反馈效果命令,和
所述模拟线程对象的运行操作,其中所述模拟线程对象的所述运行操作被从所述主机的应用程序除去耦合,并且其中所述模拟线程对象从所述虚拟装置对象接收高层的力反馈效果命令,并且
将所述高层力反馈效果命令分类为模拟效果类和自然效果类,其中模拟效果是独立于所述装置的响应的效果,而自然效果是取决于所述装置的输入和响应的力效果,且其中所述自然效果由所述装置本地地处理,并且其中所述模拟效果由所述主机处理,
将所述高层力反馈效果命令转换成一组简化的效果,其中所述简化的效果既包括模拟效果又包括自然效果,并且
通过将所述多个简化效果的子集传输给所述人机交互装置而周期性地更新所述人机交互装置,所述多个简化效果的子集包括(n)个简化效果,用于装置内置存储和回放,这(n)个简化效果包括至少一个模拟效果和可达到(n-1)个的自然效果,并且其中所述至少一个传输的模拟效果是所有应用程序模拟效果的向量和,应用程序模拟效果由所述装置驱动软件程序计算,并且其中所述(n-1)个传输的自然效果是由所述装置驱动软件程序选择的(n-1)个最优的自然效果,并且其中所述周期更新实现了最高的(n-1)个顶端级别自然力的交换操作。
18.根据权利要求17的计算机程序产品,还能存储所有的应用程序力反馈效果类型,该效果类型可由所述主机上的所述应用程序发布。
19.一种力反馈设备,包括:
具有力反馈致动器和用于存储力反馈效果的存储器的装置;
软件驱动程序,用于安装在主机设备计算机上,来与在所述主机设备上运行的应用程序相互作用;且
包含代码的所述软件驱动程序用于选择力反馈效果的子集,该力反馈效果对应于由所述应用程序使用的效果,用于在给定的时间存储在所述装置中,并且基于对所述力反馈效果的使用,周期性地改变存储在所述装置上的该力反馈效果的子集。
20.一种力反馈设备,包括:
具有力反馈致动器的装置;
软件驱动程序,用于安装在主机设备计算机上,来与在所述主机设备上运行的应用程序相互作用;且
包含代码的所述软件驱动程序,用于加和力反馈效果的子集,该力反馈效果对应于由所述应用程序使用的效果,并且用于将求和所得的力反馈效果提供给所述装置。
21.一种力反馈设备,包括:
具有力反馈致动器的装置;
软件驱动程序,用于安装在主机设备计算机上,来与所述主机设备上运行的应用程序相互作用;和
包含代码的所述软件驱动程序,用于将由所述应用程序使用的力反馈效果转换成一组简化的效果,并且将所述该组简化效果提供给所述装置。
22.根据权利要求21的力反馈设备,其中所述驱动程序包含码,用于将所述整组简化效果一次发送给所述装置,用于要求从所述装置反馈的自然力反馈效果。
23.根据权利要求21的力反馈设备,其中所述驱动程序包含码,用于将所述简化效果组在一时段内发送给所述装置,用于不要求从所述装置反馈的模拟力反馈效果。
24.一种用于处理力反馈效果命令的方法,其中该力反馈效果命令由应用程序在主机上产生,所述方法包括:
将一装置连接到所述主机上,其中该装置具有一力反馈致动器和用于存储所述力反馈效果的存储器;
在所述主机上安装软件驱动程序,来与所述主机上运行的所述应用程序相互作用;并且
使用所述软件驱动程序,将所述力反馈效果命令分类为模拟效果类和自然效果类,其中模拟效果是独立于所述装置的响应的效果,而自然效果是依赖于所述装置的输入和响应的力效果;
在所述装置上本地地处理所述自然效果;并且
在所述主机上处理所述模拟效果。
25.一种用于处理力反馈效果命令的方法,所述力反馈效果命令由应用程序在主机上产生,所述方法包括:
将一装置连接到所述主机上,其中该装置具有力反馈致动器和用于存储所述力反馈效果的存储器;
在所述主机上安装一软件驱动程序,来与所述主机上运行的所述应用程序相互作用;
使用所述软件驱动程序,将所述力反馈效果命令转换成一组简化的效果;并且
将所述简化效果组提供给所述装置。
26.一种用于处理力反馈效果命令的方法,所述力反馈效果命令由应用程序在主机上产生,所述方法包括:
将一装置连接到所述主机上,其中该装置具有力反馈致动器和用于存储所述力反馈效果的存储器;
在所述主机上安装软件驱动程序,来与所述主机上运行的所述应用程序相互作用;
使用所述软件驱动程序加和所述力反馈效果的子集,该力反馈效果对应于由所述应用程序使用的效果;并且
将所述求和所得的力反馈效果提供给所述装置。
27.一种用于处理力反馈效果命令的方法,其中力反馈效果命令由应用程序在主机上产生,所述方法包括:
将一装置连接到所述主机上,其中该装置具有力反馈致动器和用于存储所述力反馈效果的存储器;
在所述主机上安装软件驱动程序,来与在所述主机上运行的所述应用程序相互作用;并且
使用所述软件驱动程序选择力反馈效果的子集,该力反馈效果对应于由所述应用程序使用的效果,用于在任何给定的时间存储在所述装置中,并且
基于对所述力反馈效果的使用,周期性地改变存储在所述装置上的该力反馈效果的子集。
28.一种用于处理力反馈效果命令的方法,所述力反馈效果命令由应用程序在主机上产生,所述方法包括:
将一装置连接到所述主机上,其中该装置具有力反馈致动器和用于存储所述力反馈效果的存储器;
在所述主机上安装软件驱动程序,来与在所述主机上运行的所述应用程序相互作用;并且
使用所述软件驱动程序,通过将多个简化效果的子集传输给所述装置,来周期性地更新该装置,其中所述简化效果的子集包括(n)个简化的效果,用于装置内置存储和回放,该(n)个简化的效果包括至少一个不要求从所述装置反馈的模拟效果,和可达到(n-1)个的要求从所述装置反馈的自然效果;
使用所述软件驱动程序计算所有应用程序模拟效果的向量和,来确定所述至少一个模拟效果;
使用所述软件驱动程序选择自然效果的优先组,以确定所述(n-1)个自然效果,且
通过交换最高的(n-1)个顶端级别的自然力,周期性地更新所述自然效果的优先组。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/568,092 | 2000-05-09 | ||
US09/568,092 US6710764B1 (en) | 2000-05-09 | 2000-05-09 | Method and system for processing force feedback effects generated at a host for playback at a physical interaction device |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1344994A true CN1344994A (zh) | 2002-04-17 |
Family
ID=24269894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN01123267A Pending CN1344994A (zh) | 2000-05-09 | 2001-05-09 | 处理在主机中产生的在人机交互装置中回放的力反馈效果的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6710764B1 (zh) |
CN (1) | CN1344994A (zh) |
DE (1) | DE10122385B4 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111522608A (zh) * | 2019-02-03 | 2020-08-11 | 北京数聚鑫云信息技术有限公司 | 一种提高模拟操作的执行速率的方法及装置 |
CN117170982A (zh) * | 2023-11-02 | 2023-12-05 | 建信金融科技有限责任公司 | 人机检测方法、装置、电子设备和计算机可读介质 |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7181693B1 (en) * | 2000-03-17 | 2007-02-20 | Gateway Inc. | Affective control of information systems |
US20020116078A1 (en) * | 2001-02-20 | 2002-08-22 | Best System Inc. | Control method of open type motion simulation system |
US7280095B2 (en) * | 2003-04-30 | 2007-10-09 | Immersion Corporation | Hierarchical methods for generating force feedback effects |
US7765333B2 (en) | 2004-07-15 | 2010-07-27 | Immersion Corporation | System and method for ordering haptic effects |
US8232969B2 (en) * | 2004-10-08 | 2012-07-31 | Immersion Corporation | Haptic feedback for button and scrolling action simulation in touch input devices |
JP4805633B2 (ja) | 2005-08-22 | 2011-11-02 | 任天堂株式会社 | ゲーム用操作装置 |
US8545323B2 (en) * | 2006-06-30 | 2013-10-01 | Logitech Europe S.A. | Video game controller with compact and efficient force feedback mechanism |
US9019087B2 (en) | 2007-10-16 | 2015-04-28 | Immersion Corporation | Synchronization of haptic effect data in a media stream |
US8117364B2 (en) * | 2007-11-13 | 2012-02-14 | Microsoft Corporation | Enhanced protocol and architecture for low bandwidth force feedback game controller |
US9005026B2 (en) | 2011-12-20 | 2015-04-14 | Wikipad, Inc. | Game controller for tablet computer |
US8812987B2 (en) | 2011-12-20 | 2014-08-19 | Wikipad, Inc. | Virtual multiple sided virtual rotatable user interface icon queue |
US9839842B2 (en) | 2011-12-20 | 2017-12-12 | Wikipad, Inc. | Computing device and game controller with flexible bridge supporting a keyboard module |
US9841786B2 (en) | 2011-12-20 | 2017-12-12 | Wikipad, Inc. | Combination computing device and game controller with flexible bridge and supporting a transaction apparatus |
US9126119B2 (en) | 2012-06-12 | 2015-09-08 | Wikipad, Inc. | Combination computing device and game controller with flexible bridge section |
US8944913B2 (en) | 2011-12-20 | 2015-02-03 | Wikipad, Inc. | Tablet computer with grip rail and game controller |
US8788348B2 (en) | 2011-12-20 | 2014-07-22 | Wikipad, Inc. | Combination game controller and point of sale input device |
US8944912B2 (en) | 2011-12-20 | 2015-02-03 | Wikipad, Inc. | Combination game controller and information input device for a tablet computer |
US9592453B2 (en) | 2011-12-20 | 2017-03-14 | Wikipad, Inc. | Combination computing device and game controller with flexible bridge section |
US8529357B2 (en) | 2011-12-20 | 2013-09-10 | Wikipad, Inc. | Combination tablet computer and game controller with flexible bridge section |
US9757649B2 (en) | 2011-12-20 | 2017-09-12 | Wikipad, Inc. | Game controller with flexible bridge supporting touch screen |
US10092830B2 (en) | 2011-12-20 | 2018-10-09 | Wikipad, Inc. | Game controller with flexible bridge supporting point of sale input device |
US9592452B2 (en) | 2011-12-20 | 2017-03-14 | Wikipad, Inc. | Combination computing device and game controller with flexible bridge section |
US9764231B2 (en) | 2011-12-20 | 2017-09-19 | Wikipad, Inc. | Combination computing device and game controller with touch screen input |
US9841824B2 (en) | 2011-12-20 | 2017-12-12 | Wikipad, Inc. | Combination computing device and game controller with flexible bridge and supporting a keyboard module |
US9114319B2 (en) | 2012-06-12 | 2015-08-25 | Wikipad, Inc. | Game controller |
US9619029B2 (en) | 2013-11-14 | 2017-04-11 | Immersion Corporation | Haptic trigger control system |
US9164587B2 (en) | 2013-11-14 | 2015-10-20 | Immersion Corporation | Haptic spatialization system |
US9174134B1 (en) | 2014-11-12 | 2015-11-03 | Immersion Corporation | Peripheral device with haptic diminishment prevention component |
US10185396B2 (en) | 2014-11-12 | 2019-01-22 | Immersion Corporation | Haptic trigger modification system |
US10768704B2 (en) | 2015-03-17 | 2020-09-08 | Whirlwind VR, Inc. | System and method for modulating a peripheral device based on an unscripted feed using computer vision |
CN106354535A (zh) * | 2016-08-31 | 2017-01-25 | 福建联迪商用设备有限公司 | 一种提高支付终端启动速度的方法及装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5889670A (en) | 1991-10-24 | 1999-03-30 | Immersion Corporation | Method and apparatus for tactilely responsive user interface |
US5734373A (en) | 1993-07-16 | 1998-03-31 | Immersion Human Interface Corporation | Method and apparatus for controlling force feedback interface systems utilizing a host computer |
US6057828A (en) * | 1993-07-16 | 2000-05-02 | Immersion Corporation | Method and apparatus for providing force sensations in virtual environments in accordance with host software |
WO1995020787A1 (en) * | 1994-01-27 | 1995-08-03 | Exos, Inc. | Multimode feedback display technology |
US6004134A (en) | 1994-05-19 | 1999-12-21 | Exos, Inc. | Interactive simulation including force feedback |
US5691898A (en) | 1995-09-27 | 1997-11-25 | Immersion Human Interface Corp. | Safe and low cost computer peripherals with force feedback for consumer applications |
US6028593A (en) | 1995-12-01 | 2000-02-22 | Immersion Corporation | Method and apparatus for providing simulated physical interactions within computer generated environments |
US6300936B1 (en) * | 1997-11-14 | 2001-10-09 | Immersion Corporation | Force feedback system including multi-tasking graphical host environment and interface device |
US6020876A (en) | 1997-04-14 | 2000-02-01 | Immersion Corporation | Force feedback interface with selective disturbance filter |
US6005551A (en) | 1997-04-25 | 1999-12-21 | Microsoft Corporation | Offline force effect rendering |
US6252579B1 (en) * | 1997-08-23 | 2001-06-26 | Immersion Corporation | Interface device and method for providing enhanced cursor control with force feedback |
US6252583B1 (en) * | 1997-11-14 | 2001-06-26 | Immersion Corporation | Memory and force output management for a force feedback system |
US6424356B2 (en) * | 1999-05-05 | 2002-07-23 | Immersion Corporation | Command of force sensations in a forceback system using force effect suites |
-
2000
- 2000-05-09 US US09/568,092 patent/US6710764B1/en not_active Expired - Fee Related
-
2001
- 2001-05-09 CN CN01123267A patent/CN1344994A/zh active Pending
- 2001-05-09 DE DE10122385A patent/DE10122385B4/de not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111522608A (zh) * | 2019-02-03 | 2020-08-11 | 北京数聚鑫云信息技术有限公司 | 一种提高模拟操作的执行速率的方法及装置 |
CN111522608B (zh) * | 2019-02-03 | 2023-09-22 | 北京数聚鑫云信息技术有限公司 | 一种提高模拟操作的执行速率的方法及装置 |
CN117170982A (zh) * | 2023-11-02 | 2023-12-05 | 建信金融科技有限责任公司 | 人机检测方法、装置、电子设备和计算机可读介质 |
CN117170982B (zh) * | 2023-11-02 | 2024-02-13 | 建信金融科技有限责任公司 | 人机检测方法、装置、电子设备和计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
DE10122385A1 (de) | 2001-12-20 |
US6710764B1 (en) | 2004-03-23 |
DE10122385B4 (de) | 2007-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1344994A (zh) | 处理在主机中产生的在人机交互装置中回放的力反馈效果的方法和系统 | |
US5742278A (en) | Force feedback joystick with digital signal processor controlled by host processor | |
US6715045B2 (en) | Host cache for haptic feedback effects | |
US6727884B1 (en) | System and method for mapping input device controls to software actions | |
US9656163B2 (en) | Haptic enhancements for emulated video game not originally designed with haptic capabilities | |
US6933920B2 (en) | Data filter for haptic feedback devices having low-bandwidth communication links | |
US8095496B2 (en) | Generic AI architecture for a multi-agent system | |
CN1839365A (zh) | 多平面的三维用户界面 | |
CN1914583A (zh) | 用于在移动终端设备中实现振动输出命令的方法和设备 | |
US20140004941A1 (en) | Conversion of haptic events into screen events | |
RU2557522C2 (ru) | Устройство и способ для улучшения представления объектов в распределенном интерактивном имитационном моделировании | |
CN1797345A (zh) | 用于虚拟化图形子系统的系统和方法 | |
CN112492094A (zh) | 远程驾驶移动终端、远程驾驶系统及远程驾驶方法 | |
DE20080263U1 (de) | Hybridsteuerung der haptischen Rückkopplung für einen Host-Computer und ein Schnittstellengerät | |
EP1939726A1 (en) | A method for realizing multitask in media playing device | |
CN1397061A (zh) | 用于触觉反馈接口设备的有方向触觉反馈 | |
US20070294337A1 (en) | Client-side information processing system, apparatus and methods | |
CN103282883A (zh) | 在webtop应用托盘中显示安卓应用启动器的系统和方法 | |
CN114372356A (zh) | 基于数字孪生的人工增强方法、装置及介质 | |
EP3927443A1 (en) | Method for facilitating user interactions in gaming environment | |
US20190054373A1 (en) | Method, computing device, and system for generating a mixed haptic track for a mixed haptic effect | |
JP2001344615A (ja) | 最適状態フィードバックにより協調化された群集アニメーション生成方法及び装置並びにそれを用いたエンターティメント装置 | |
CN101179587B (zh) | 在游戏中使用机器人的方法、客户端、服务器及系统 | |
WO2007149615A2 (en) | Client-side information processing system and methods | |
CN1115627C (zh) | 用于实现分布式应用程序的计算化方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |