The present invention is directed to a method, computing device, and system for generating a mixed haptic track for a mixed haptic effect, such as a mixed haptic effect that is generated for a mobile device, user interface device, wearable device, handheld controller, or other consumer electronics.
As electronic user interface systems become more prevalent, the quality of the interfaces through which humans interact with these systems is becoming increasingly important. Haptic feedback, or more generally haptic effects, can improve the quality of the interfaces by providing cues to users, providing alerts of specific events, or providing realistic feedback to create greater sensory immersion within a virtual environment. Examples of haptic effects include kinesthetic haptic effects (such as active and resistive force feedback), vibrotactile haptic effects, and electrostatic friction haptic effects. In some cases, a haptic actuator may play a haptic track to generate a haptic effect.
The following detailed description is merely exemplary in nature and is not intended to limit the invention or the application and uses of the invention. Furthermore, there is no intention to be bound by any expressed or implied theory presented in the preceding technical field, background, brief summary or the following detailed description.
One aspect of the embodiments herein relates to a method executed by one or more processors of a computing device for generating a mixed haptic effect, the method comprising: executing an application; determining a controller type of a haptic-enabled controller that is providing user input to the application, wherein any haptic-enabled controller of the controller type (i.e., any haptic-enabled controller belonging to the controller type) has one or more haptic actuators; determining that a mixed haptic effect combining a first haptic effect and a second haptic effect is to be generated by a haptic actuator of the one or more haptic actuators; selecting, from among a first plurality of haptic tracks that are associated with the first haptic effect in a non-transitory computer-readable medium, a first haptic track that is associated with the first haptic effect and associated with a combination of the controller type and the haptic actuator that is to generate the mixed haptic effect; selecting, from among a second plurality of haptic tracks that are associated with the second haptic effect in the non-transitory computer-readable medium, a second haptic track that is associated with the second haptic effect and associated with the combination of the controller type and the haptic actuator; selecting, from among a plurality of parameter values for an operation parameter describing haptic actuator operation, a parameter value that is associated with the combination of the controller type and the haptic actuator; generating, based on the parameter value, a mixed haptic track that combines the first haptic track and the second haptic track; and controlling the haptic actuator to generate the mixed haptic effect by communicating the mixed haptic track to the haptic-enabled controller.
One aspect of embodiments herein relate to a non-transitory computer-readable medium having instructions stored thereon that, when executed by one or more processors, causes the one or more processors to execute an application, and to determine a controller type of a haptic-enabled controller that is providing user input to the application, wherein any haptic-enabled controller of the controller type has one or more haptic actuators. The instructions may further cause the processor to determine that a mixed haptic effect combining a first haptic effect and a second haptic effect is to be generated by a haptic actuator of the one or more haptic actuators, and to select, from among a first plurality of haptic tracks that are associated with the first haptic effect in the non-transitory computer-readable medium, a first haptic track that is associated with the first haptic effect and associated with a combination of the controller type and the haptic actuator that is to generate the mixed haptic effect. The instructions further cause the processor to select, from among a second plurality of haptic tracks that are associated with the second haptic effect in the non-transitory computer-readable medium, a second haptic track that is associated with the second haptic effect and associated with the combination of the controller type and the haptic actuator. The instructions further cause the processor to select, from among a plurality of parameter values for an operation parameter describing haptic actuator operation, a parameter value that is associated with the combination of the controller type and the haptic actuator, and to generate, based on the parameter value, a mixed haptic track that combines the first haptic track and the second haptic track. The instructions further cause the processor to control the haptic actuator to generate the mixed haptic effect by communicating the mixed haptic track to the haptic-enabled controller.
Features, objects, and advantages of embodiments hereof will become apparent to those skilled in the art by reading the following detailed description where references will be made to the appended figures.
The foregoing and other features and advantages of the invention will be apparent from the following description of embodiments hereof as illustrated in the accompanying drawings. The accompanying drawings, which are incorporated herein and form a part of the specification, further serve to explain the principles of the invention and to enable a person skilled in the pertinent art to make and use the invention. The drawings are not to scale.
The following detailed description is merely exemplary in nature and is not intended to limit the invention or the application and uses of the invention. Furthermore, there is no intention to be bound by any expressed or implied theory presented in the preceding technical field, background, brief summary or the following detailed description.
Embodiments herein relate to mixing (or, more generally, combining) haptic tracks to generate a mixed haptic track, and to a mixing functionality that supports different types of haptic-enabled controllers (e.g., different types of game controllers) and/or different haptic actuators that are included within those types of haptic-enabled controllers. Thus, the mixing functionality of various embodiments herein can take into account what type of haptic-enabled controller and which haptic actuator is a mixed haptic track being generated for. Such a mixing functionality may allow a greater variety of mixed haptic tracks to be generated, so that a mixed haptic track can be tailored to the haptic-enabled controller and haptic actuator for which the mixed haptic track is intended. In some cases, tailoring the mixed haptic track may facilitate the providing of a uniform haptic experience across different haptic-enabled controllers and different haptic actuators. For instance, the same haptic track may cause different haptic actuators to be driven differently, because of differences in, e.g., the mass, stiffness, external environment, resonant frequency (if any), and/or principle of operation among the different haptic actuators. Further, the same haptic track may cause different actuation or yield different user sensations among different types of haptic-enabled controllers because of differences in, e.g., the mass or mass distribution, grip position(s), size, shape, and/or housing configuration among the different types of haptic-enabled controllers, and thus lead to different sensations for the users of those types of haptic-enabled controllers.
In an embodiment, the mixing functionality may rely on a common mixing function (also referred to as a common mixing algorithm) that is common to different types of haptic-enabled controllers and to different haptic actuators. The common mixing function may simplify the implementation of a mixing functionality that supports different types of haptic-enabled controllers and different haptic actuators. However, the common mixing function may be controlled by one or more mixing parameters, wherein the parameter value of some or all of the one or more mixing parameters may be specific to a particular type of haptic-enabled controller and to a particular haptic actuator included within that type of haptic-enabled controller. The use of such a parameter value may allow the common mixing function to be performed in a manner that is specific to the particular type of the haptic-enabled controller in use and to the particular haptic actuator that is to play the mixed haptic track.
In an embodiment, the application may be a game application (also referred to as a game program or game), and the haptic-enabled controller may be a handheld game controller. Example types of a handheld game controller include an Oculus® Touch game controller, an HTC Vive® game controller, a Samsung Gear® VR controller, a Xbox® game controller, a Valve Knuckles® game controller, or an Immersion® TouchSense Force (TSF) Gamepad. In another example, the haptic-enabled controller may be any other type of handheld controller, such as a haptic-enabled computer mouse or a haptic-enabled stylus. In an embodiment, the haptic-enabled controller may be a type of wearable controller, such as a haptic-enabled glove. In an embodiment, the different types of haptic-enabled controllers (also referred to as controller types) may have different respective masses, mass distributions, grip positions, shapes, user input components (e.g., buttons, triggers), placements of haptic actuator(s), numbers of haptic actuators, and/or types of haptic actuators.
In an embodiment, the mixed haptic track may be used to generate a mixed haptic effect. The mixed haptic effect may be a composite effect that is synthesized from multiple haptic effects (e.g., a first haptic effect and a second haptic effect), and may be played or otherwise generated on a single haptic actuator. Thus, the mixed haptic effect may be a synthesis of multiple individual haptic effects for that haptic actuator. In an embodiment, the mixing may be prompted when two haptic effects need to be played concurrently in the form of the mixed haptic effect. Such a situation may occur when a first event that is a triggering condition a first haptic effect overlaps with a second event that is a triggering condition for a second haptic effect. For example, the first event may be an explosion in the game application, while the second event may be a user firing a weapon in the game application. The first event may be associated with the first haptic effect, while the second event may be associated with the second haptic effect. If both events occur concurrently (i.e., overlap in time), the first haptic effect and the second haptic effect associated with the respective events may be mixed (or, more generally, combined) to yield a mixed haptic effect that is to be played on a haptic actuator of the user's Oculus Touch® game controller, HTC Vive® game controller, or other handheld game controller. The mixed haptic effect may be generated with a mixed haptic track, which may be a composite track that is synthesized from a first haptic track that is associated with the first haptic effect, and from a second haptic track that is associated with the second haptic effect. The synthesis may involve a variety of operations, such as multiplication (e.g., dot multiplication) of the haptic tracks, addition of the haptic tracks, some other operation involving the multiple haptic tracks, or any combination thereof.
As stated above, the mixing functionality may support different types of haptic-enabled controllers, also referred to as controller types, such as a first controller type that includes all Oculus Touch® game controllers (and only Oculus Touch® game controllers) and a second controller type that includes all HTC Vive® game controllers (and only HTC Vive® game controllers). In some cases, a particular controller type may have multiple haptic actuators. That is, any haptic-enabled controller belonging to that controller type may have multiple haptic actuators. The multiple haptic actuators may be different types of haptic actuators, or may be the same type of haptic actuator. For instance, the haptic actuators may all be eccentric rotating mass (ERM) actuators. Alternatively, one of the haptic actuators may be an ERM actuator, while another one of the haptic actuators may be a linear resonant actuator (LRA). The haptic actuators may have different external environments. For instance, they may be placed at different locations on or within haptic-enabled controllers of a particular controller type. In some cases, the haptic actuators may have different sizes or masses. In some cases, the haptic actuators may have the same size or same mass. In some cases, the haptic actuators may have different actuator identifiers (e.g., actuatorleft, actuatorright, etc.), such that a mixed haptic track for a mixed haptic effect may be generated in a manner that is based on a particular controller type and actuator identifier associated with the mixed haptic effect. In an embodiment, if a haptic-enabled controller has multiple haptic actuators, each of those haptic actuators may generate its own respective mixed haptic effect. For instance, if there is a both an explosion event and a weapon firing event in a game application, the haptic actuator associated with actuatorleft may generate a first mixed haptic effect associated with the two events, and the haptic actuator associated with actuatorright may generate a second mixed haptic effect that is also associated with the two events. The two mixed haptic effects may involve different mixed haptic tracks. For instance, the first mixed haptic effect may be generated from a first mixed haptic track that mixes a first pair of haptic tracks, and the second mixed haptic effect may be generated form a second mixed haptic track that mixes a second pair of haptic tracks different than the first pair.
In an embodiment, the application may store, or more generally be configured to access, multiple haptic tracks for a particular haptic effect, wherein each of the multiple haptic tracks may be specific to a particular controller type, and may further be specific to a particular haptic actuator included within that controller type (i.e., further be specific to a particular haptic actuator included within any haptic-enabled controller belonging to that controller type). The application may further store, or more generally be configured to access, multiple parameter values of a mixing parameter used to perform the mixing. The mixing parameter may include an operation parameter, a sampling parameter, or any other mixing parameter. As described in more detail below, the operation parameter describes haptic actuator operation, while the sampling parameter indicates a quantity or rate at which haptic track values are mixed. For at least one of the mixing parameters, the multiple parameter values for that parameter may be specific to respective combinations of a controller type and a particular haptic actuator of that controller type. For instance, the multiple parameter values of an operation parameter may be specific to a particular controller type and to a particular haptic actuator within controllers belonging to that controller type.
In an embodiment, when an application is being executed, it may identify the type of haptic-enabled controller (also referred to as controller type) that is currently providing user input to the application. The haptic-enabled controller may have only one haptic actuator, or may have multiple haptic actuators. When a mixed haptic effect is to be generated, the application may determine which haptic actuator(s) of the controller type is to generate the mixed haptic effect. For instance, the application may determine an application identifier (e.g., actuator ID) of a haptic actuator that has been selected to generate the mixed haptic effect. The selection may be based on, e.g., placement of the haptic actuators and/or actuator type. In an embodiment, multiple haptic actuators may be selected to each generate a respective mixed haptic effect, wherein a respective mixed haptic track will be generated for each of the selected haptic actuators. In an embodiment, a selection step is omitted, and all haptic actuators of the haptic-enabled controller may generate a mixed haptic effect, wherein a respective mixed haptic track will be generated for each of the haptic actuators. The application may retrieve haptic tracks that are associated with not only the haptic effects to be mixed, but also associated with the identified controller type and haptic actuator. The application may further retrieve a parameter value of a mixing parameter, wherein the parameter value is specific to the controller type and haptic actuator, and wherein the mixing of the retrieved haptic tracks is performed based on the parameter value. The resulting mixed haptic track that is generated is thus specific to the controller type currently in use and specific to the haptic actuator that is to generate the mixed haptic effect.
In an embodiment, the application may represent, in memory or other non-transitory computer-readable medium, each combination of controller type and haptic actuator as an haptic effect endpoint (also referred to as endpoint), which may be a data structure, software object, variable, or piece of code in the memory. Thus, the application supports a plurality of different endpoints, and more specifically supports mixed haptic effects for a plurality of different endpoints. In an embodiment, an endpoint may include one or more parameter values that describe operation of a haptic actuator for a haptic-enabled controller belonging to a particular controller type. If the controller type involves a controller with multiple haptic actuators, each of those haptic actuators may be represented by a separate endpoint.
As stated above, the mixing parameter may include an operation parameter and a sampling parameter. The operation parameter may describe operation of the haptic actuator, such as what types of input or what range of input values the haptic actuator is designed for. For instance, the operation parameter may describe a data format that the haptic actuator is designed to accept, wherein the data format refers to a format of haptic track values being received by the haptic actuator. In some cases, the operation parameter may describe a minimum haptic track value and a maximum haptic track value that the haptic actuator is designed to receive (or otherwise operate with) as an input. In some cases, the operation parameter may indicate which haptic track value will cause the haptic actuator to generate a rated maximum force or rated maximum actuation, or indicate which haptic track value will cause the haptic actuator to not generate any force or actuation. In an embodiment, the sampling parameter may indicate how many haptic track samples are to be mixed, or a duration of each haptic track sample. In an embodiment, the mixing parameter may further specify a mixing implementation and/or scaling implementation to be used during the mixing of haptic tracks, as discussed below in more detail.
In an embodiment, the one or more processors 11 may be configured to communicate with a haptic-enabled controller 20, such as a handheld game controller that is used to provide user input to an application being executed by the one or more processors 11. As stated above, examples of the haptic-enabled controller 20 include an Oculus® Touch game controller, an HTC Vive® game controller, a Samsung Gear® VR controller, a Xbox® game controller, an Immersion® TouchSense Force (TSF) Gamepad, a haptic-enabled mouse, and a haptic-enabled stylus. The above examples may constitute different types of haptic-enabled controllers. The haptic-enabled controller 20 may include a sensor that is configured to sense user movement or an input gesture from the user. In some cases, the haptic-enabled controller 20 may include a wireless communication unit that is configured to communicate wirelessly with the computing device 10. In some cases, the haptic-enabled controller 20 may have a wired connection to the computing device 10, and may be configured to communicate with the computing device 10 via the wired connection. The communication may involve, e.g., the haptic-enabled controller 20 communicating user input to the computing device 10, and the computing device 10 providing a command to the haptic-enabled controller 20. The command may include a haptic command that instructs the haptic-enabled controller 20 to generate a haptic effect thereon. In some cases, the haptic command may include a haptic track that is to be played by the haptic-enabled controller 20. In some cases, the command may include an actuator identifier that identifies a haptic actuator of the haptic-enabled controller 20 on which the haptic effect is to be generated.
In an embodiment, the haptic-enabled controller 20 may include one or more haptic actuators 21. The one or more haptic actuators 21 may include an eccentric rotating mass (ERM) actuator, a linear resonant actuator (LRA), a solenoid resonant actuator (SRA), a piezoelectric actuator, or any other haptic actuator. The one or more haptic actuators 21 may be used as a rumble actuator that generates a vibrotactile haptic effect on a body of the haptic-enabled controller 20, or may be used as a kinesthetic actuator that generates a kinesthetic haptic effect. For instance, if the haptic-enabled controller 20 includes a trigger, the one or more haptic actuators 21 may include a motor actuator that is configured to alternate between pushing and pulling on the trigger to create a kinesthetic haptic effect at that component. In an embodiment, the haptic-enabled controller 20 and the computing device 10 are separate devices.
In an embodiment, the haptic effect generation component 12d may store haptic tracks for a haptic effect. In
In an embodiment, if the application 12b determines that a mixed haptic effect combining the first haptic effect and the second haptic effect is to be generated, the application 12b may make a function call to or otherwise request the haptic effect generation component 12d to generate a mixed haptic track for the mixed haptic effect. As part of the request, the application 12b may indicate that the mixed haptic track is being generated for a combination of a particular controller type (e.g., a type that includes HTC Vive® game controllers) and a particular haptic actuator included within that controller type. The haptic effect generation component 12d may be configured to select a first haptic track from among the first plurality 12e of haptic tracks, and select a second haptic track from among the second plurality 12f of haptic tracks, wherein each of the first haptic track and the second haptic track is associated with the combination of controller type and haptic actuator. The haptic effect generation component 12d may then generate a mixed haptic track from the first haptic track and the second haptic track, and return the mixed haptic track to the application 12b, which may communicate the mixed haptic track to the haptic-enabled controller.
In an embodiment, the application 12b may a set of parameter values 12c for at least one mixing parameter. The at least one mixing parameter may include a sampling parameter or an operation parameter. As discussed in more detail below, examples of an operation parameter include a max force parameter and a passive force parameter. Each parameter value of the set of parameter values 12c may be specific to a particular combination of controller type and haptic actuator. In some cases, the application 12b may be configured to select a parameter value that is specific to the particular combination of the controller type currently providing user input and of the haptic actuator that is to generate the mixed haptic effect, and provide the parameter value to the haptic effect generation component, which generates a mixed haptic track based on the parameter value.
In an embodiment, the game application 150 may be configured to support different controller types.
As depicted in
In an embodiment, the game application 150 may represent the various game controller types and haptic actuators thereof as respective endpoints. For instance, the game application 150 in
In an embodiment, the haptic generation component 152 may include multiple haptic effect containers, such as a first container for a first haptic effect and a second container for a second haptic effect. The first haptic effect container may be a data structure that stores multiple haptic tracks associated with a first haptic effect, while the second haptic effect container may be a data structure that stores multiple haptic tracks associated with a second haptic effect.
For instance,
In an embodiment, the haptic effect generation component 152 may further include a plurality of parameter values for at least one mixing parameter, such as an operation parameter. For instance, the haptic effect generation component 152 may include eight parameter values for a max force parameter (described below), wherein the eight parameter values correspond to endpoints 1 through 8, respectively. In other words, the plurality of parameter values may correspond with the respective combinations of a controller type and a haptic actuator.
In an embodiment, the haptic effect design plugin 140 may be configured to generate a user interface that allows the game designer to design a haptic track to be played on a particular haptic actuator of a particular game controller. The haptic track may be represented as a waveform that is a function of time, or more generally as set of track samples having respective track values. The track values may be in a defined range, such as a range of 0 to 1, or a range of −1 to 1. The track values may, e.g., by dimensionless quantities that are eventually converted to a voltage signal or a current signal. In an embodiment, the track values may be used by the game designer or haptic effect designer to denote a desired output of the haptic actuator over time. The desired output may be, e.g., a desired haptic effect intensity, such as a desired amount of force or desired amount of movement being output by the haptic actuator. In some instances, the game designer may define a haptic track by drawing a waveform via the user interface, wherein the waveform represents the set of track values of various track samples of the haptic track. After a haptic track has been defined by a designer, the plugin 140 may store the haptic track as part of the haptic generation component 152 of a game program 150. In an embodiment, the plugin 140 may also store various other instructions and data for generating a haptic effect. Such instructions and data may also be stored as part of the haptic generation component 152 of the game program 150.
In an embodiment, the plugin 140 (e.g., TSF Plugin) may be architected such that it could be released entirely as source code (to be compiled with the game application) or entirely as a binary (and only be compatible with the exact engine build used to compile it). In an embodiment, the TSF plugin may be released as a partial-source distribution such that only pieces that hook into a game engine of the game application are exposed as source code. All pieces that handle haptic effect generation may be decoupled from the game engine, compiled separately, and delivered in binary form. In an embodiment, the TSF plugin may support multiple endpoints beneath the API of the TSF plugin. In an embodiment, the game editor program 130 may cause the game application 150 to be compiled to generate a binary or other executable file. The binary or executable file may be transferred (e.g., over a network, or via a physical storage medium such as a CD) to an end user, who may use install the game application 150 on a computing device (e.g., game console 200) via the binary or executable file.
More specifically, in an embodiment, the scaling/offset function may use the one or more parameter values to generate scaled haptic tracks.
In an embodiment, the merging function of
One aspect of the embodiments herein relate to using a common mixer algorithm for different endpoints, such as for all of endpoints 1 through 8. That is, different combinations of a controller type and a haptic actuator may rely on the same mixer algorithm, such as the same scaling/offset function and the same merging function. The use a common mixer algorithm may provide a haptic generation component that is more extensible. When a new combination of controller type and haptic actuator needs to be supported, the haptic generation component 152 can use the same mixer algorithm. Thus, the haptic generation component 152 would not need to be re-programmed. However, the haptic effect generation component 152 may still be able to mix haptic effects in a way that is specific to the new combination by using one or more parameter values and using haptic tracks that are specific to the new combination of controller type and haptic actuator. In another embodiment, the haptic generation component 152 may have stored computer-readable instructions for at least two different mixing algorithms. In such an embodiment, the application 150 may be configured to use a Mix Implementation parameter and/or a Scale Implementation parameter, which are also mixing parameters, to specify which mixing algorithm is to be used for generating a mixed haptic track. In an embodiment, a value of the Mix Implementation parameter and/or a value of the Scale Implementation parameter may be used to override a default algorithm being used by the haptic generation component 152. For instance, the Mix Implementation parameter may have a value that selects between, e.g., a first merging function that averages two haptic tracks and a second merging function that multiplies two haptic tracks.
In an embodiment, the mixing may be performed in a loop that has multiple iterations. The multiple iterations may be driven by a clock, with each iteration being triggered by a clock tick (also referred to as a clock cycle), such as a rising edge or falling edge of a clock signal. The clock ticks may be periodic and have a period of, e.g., 100 msec or some other duration. Thus, in an embodiment, the mixing may be done periodically (e.g., every 100 msec).
As illustrated in
In an embodiment, the haptic generation component in step 602 may loop through track samples of the haptic tracks being mixed for a particular haptic actuator. For instance, each iteration of the loop may involve retrieving 20 track samples of Haptic Track A and retrieving 20 track samples of Haptic Track I. In an embodiment, step 602 may be controlled by a sampling parameter, which is a type of mixing parameter. For instance, the sampling parameter may be a Samples Per Update parameter whose value (e.g., 20) specifies how many track samples from each of the haptic tracks is to be retrieved and mixed on every iteration of the loop.
In step 604, the haptic generation component 152 may perform mixing of the haptic track samples, such as mixing the track samples of Haptic Track A with the track samples of Track I. For instance, step 604 may involve scaling the respective track values of the track samples of Haptic Track A, such as by multiplying the track values with a scaling factor, and similarly scaling the respective track values of the track samples of Haptic Track I. In this example, the haptic generation component 152 may then, for instance, take a sum or average of the scaled track values of Haptic Track A with corresponding scaled track values of Haptic Track I. The sum or average may be performed, e.g., on a sample-by-sample basis, like in the example illustrated in
In step 703, the processor 210 identifies or otherwise determines a controller type of a haptic-enabled controller that is providing user input to the application, wherein any haptic-enabled controller belonging to the controller type has one or more haptic actuators. For instance, the processor 210 may determine that game controller 310 is communicatively connected with (e.g., wirelessly paired with or plugged into) the computer 200, such that the game controller 310 (which belongs to controller type 1) in
In step 704, the processor 210 determines that a mixed haptic effect combining a first haptic effect and a second haptic effect is to be generated by a haptic actuator of the one or more haptic actuators. For instance, a first event or condition in the application may trigger the first haptic effect while a second event or condition in the application concurrently triggers the second haptic effect. In other words, the first event and the second event, which may be respective triggering events for the first haptic effect and the second haptic effect, may overlap in time. In some cases, the first event and the second event may be simultaneous events, which may be events that completely overlap in time. In one example, in a car racing game application, a first event or condition may be a virtual car being driven over a bumpy road, for which a first haptic effect may be generated to simulate driving over the bumpy road. A second event or condition may be the virtual car bumping against a guard rail, for which a second haptic effect may be generated to simulate the virtual car bumping against the guard rail. If, during execution of the game application, the virtual car is driving over the bumpy road and also bumps against the guard rail, a mixed haptic effect that combines the first haptic effect and the second haptic effect may be played in order to convey the virtual car concurrently driving over bumpy road and bumping against a guard rail. In an embodiment, the mixed haptic effect is generated on the haptic-enabled controller, such as controller 310 or controller 410L.
In some cases, step 704 may involve selecting which haptic actuator is to generate the mixed haptic effect. The selection may be made from among haptic actuators that are included in a haptic actuator belonging to the controller type. For instance, the selection may be made from among the first haptic actuator and the second haptic actuator of controller type 1 (to which controller 310 belongs), and may select only one of the haptic actuators (e.g., the first haptic actuator) to generate the mixed haptic effect. The selection may be based on, e.g., placement and/or actuator type of the haptic actuators. For instance, if the first haptic effect and the second haptic effect are both rumble haptic effects, the selection may select only haptic actuators that are rumble actuators, and may exclude any kinesthetic haptic actuator included in the controller type. In some cases, such a selection may be omitted, and all haptic actuators (e.g., the first haptic actuator and the second haptic actuator) of the controller type may be used to generate a different respective mixed haptic effect.
In step 708, the processor 210 selects, from among a first plurality of haptic tracks that are associated with the first haptic effect, a first haptic track that is associated with the first haptic effect and associated with a combination of the controller type and the haptic actuator that is to generate the mixed haptic effect. For instance, if the mixed haptic effect is being generated at the second haptic actuator of controller type 2, the processor 210 may select only Haptic Track B in
In step 710, the processor 210 selects, from among a second plurality of haptic tracks that are associated with the second haptic effect, a second haptic track that is associated with the second haptic effect and associated with the combination of the controller type and the haptic actuator. For instance, the controller 210 may select only Haptic Track I from among haptic tracks I through P. In some cases, the second haptic track may further be retrieved from memory. Like in step 708, the second haptic track may also be defined by a plurality of track samples that have respective track values. The track values of the second haptic track may also be in the first defined range (the same range as that for the first haptic track), or may be in a second defined range that is different than the first defined range.
In step 712, the processor 210 selects, from among a plurality of parameter values for an operation parameter that describes haptic actuator operation, a parameter value that is associated with the combination of the controller type and the haptic actuator. For instance, the processor may select only a max force parameter value and a passive force parameter value that are both associated with the combination of the controller type and the haptic actuator.
In an embodiment, the operation parameter may be a parameter that describes how a haptic actuator responds to one or more haptic track values. For instance, the operation parameter may be a max force parameter, wherein the parameter value of the max force parameter may be a haptic track value that would cause the haptic actuator to generate a rated maximum intensity, such as at least one of a defined rated maximum force or a defined rated maximum actuation. In some cases, the parameter value of the max force parameter may be a haptic track value that the haptic actuator will directly convert to a defined rated maximum voltage of the haptic actuator. For instance, a particular haptic actuator of controller type 1 may be designed to receive digital input values that are in a range of 0 to 255, and may have a defined rated maximum voltage of 5 V. In this example, the haptic actuator may be configured to convert digital values in the range of 0-255 (which are dimensionless values) to a voltage range of 0 V to 5 V, based on a linear relationship that multiplies the first range by a ratio of 5V/255. Thus, the parameter value of the max force parameter in this instance may be 255, which is a haptic track value that the haptic actuator will convert to the defined rated maximum voltage thereof.
In some cases, the operation parameter may include a passive force parameter, wherein the parameter value of the passive force parameter may be a haptic track value that causes the haptic actuator to generate zero force or zero actuation (i.e., zero force, zero actuation, or both zero force and zero actuation). In other words, if the haptic actuator receives, as an input, a haptic track value that is equal to the parameter value of the passive force parameter, the haptic actuator may output substantially no force or actuation. The passive force parameter is illustrated below in more detail.
In step 714, the processor 210 generates, based on the parameter value, a mixed haptic track that combines the first haptic track and the second haptic track. For instance, if the processor 210 generates a mixed haptic track for endpoint 1 (the first haptic actuator of controller type 1), the generating in step 714 may be based on a max force parameter value associated with the first haptic actuator of controller type 1, and based on a passive force parameter value associated with the first haptic actuator of controller type 1.
In step 716, the processor 210 may control the haptic actuator (e.g., haptic actuator 310) to generate the mixed haptic effect by communicating (e.g., transmitting) the mixed haptic track to the haptic-enabled controller (e.g., game controller 300). In some cases, the communication may include an identifier that indicates which haptic actuator of the game controller is to generate the mixed haptic effect.
In an embodiment, the generating of the mixed haptic track may involve scaling each of the first haptic track and the second haptic track based on the parameter value of the max force parameter to generate a scaled first haptic track and a scaled second haptic track, and by combining the scaled first haptic track and the scaled second haptic track. For instance, the
In an embodiment, a value of an operation parameter may at least partially identify the operational input range. For instance, the max force parameter may have a value that is equal to a maximum value of the operational input range of the haptic actuator. In some cases, the haptic actuator may interpret a haptic track value that is equal to the max force parameter value as corresponding to a defined rated maximum voltage of the haptic actuator. In the embodiment of
In an embodiment, as illustrated in
In some cases, the parameter value of the passive force parameter may be greater than zero in order to provide an offset from zero, which may be useful for driving a kinesthetic haptic actuator. For instance, the kinesthetic haptic actuator may be a trigger actuator that can be controlled to move in a first direction (e.g., pull a trigger component of a game controller) and in a second direction (e.g., push the trigger component). For such a haptic actuator, haptic track values that are less than the parameter value of the passive force parameter may indicate that the haptic actuator is to move or generate a force in a first direction, and haptic track values that are greater than the parameter value of the passive force parameter may indicate that the haptic actuator is to move or generate a force in a second, opposite direction.
In an embodiment,
In an embodiment, the operation parameters described above may be a subset of mixing parameters that are used to perform the mixing of two haptic tracks. The mixing may use other mixing parameters, such as parameter that indicates how many track samples to mix in one iteration of a loop, a parameter that indicates sample duration or sample frequency, a parameter that indicates mix implementation, and a parameter that indicates scaling implementation. The sample duration may indicate how long each track value is applied to the haptic actuator (e.g., 10 msec). The sample duration may be an inverse of sample frequency (e.g., 100 Hz). In an embodiment, the Mix Implementation may indicate whether the haptic actuator is a bidirectional kinesthetic haptic actuator or a rumble actuator. In an embodiment, the Mix Implementation and Scale Implementation may include code that override a default mixing or scaling algorithm being used to mix two scaled haptic tracks. For instance, they may include code that calculate a formula different from a default formula being used.
In an embodiment, the scaling of the first haptic track and the second haptic track to generate the scaled first haptic track and the scaled second haptic track are performed so that track values in the first defined range are calibrated or otherwise mapped to the operational input range of the haptic actuator. In an embodiment, the mapping illustrated in
As stated above, some embodiments herein may use a common mixing algorithm that is common to different controller types or to different haptic actuators thereof. In another embodiment, as illustrated in
In an embodiment, the game editor environment that may be executed on the game editing computer 100 of
In an embodiment, after a game has been designed with the editor environment, it may be compiled into an executable file and installed on another computer (e.g., a game console). When the executable file is executed, it may provide a runtime environment that is a game environment.
In an embodiment, after the game application has determined which endpoint is associated with the haptic actuator that is to output the mixed haptic effect, it may retrieve the haptic track associated with that endpoint for the first haptic effect, and the haptic track associated with that endpoint for the second haptic effect. The game environment may then request that a Common Haptic Playback functionality, which may provide a haptic generating API, to mix the haptic track for the first haptic effect with the haptic track for the second haptic effect. Like in
Embodiment 1 of the present disclosure includes a non-transitory computer-readable medium having instructions stored thereon that, when executed by one or more processors, causes the one or more processors to perform the following: execute an application; determine a controller type of a haptic-enabled controller that is providing user input to the application, wherein any haptic-enabled controller of the controller type (i.e., any haptic-enabled controller belonging to the controller type) has one or more haptic actuators; determine that a mixed haptic effect combining a first haptic effect and a second haptic effect is to be generated by a haptic actuator of the one or more haptic actuators; select, from among a first plurality of haptic tracks that are associated with the first haptic effect in the non-transitory computer-readable medium, a first haptic track that is associated with the first haptic effect and associated with a combination of the controller type and the haptic actuator that is to generate the mixed haptic effect; select, from among a second plurality of haptic tracks that are associated with the second haptic effect in the non-transitory computer-readable medium, a second haptic track that is associated with the second haptic effect and associated with the combination of the controller type and the haptic actuator; select, from among a plurality of parameter values for an operation parameter describing haptic actuator operation, a parameter value that is associated with the combination of the controller type and the haptic actuator; generate, based on the parameter value, a mixed haptic track that combines the first haptic track and the second haptic track; and control the haptic actuator to generate the mixed haptic effect by communicating the mixed haptic track to the haptic-enabled controller.
Embodiment 2 includes the non-transitory computer-readable medium of embodiment 1. Further, the application is a game application, and wherein the haptic-enabled controller is a handheld game controller.
Embodiment 3 includes the non-transitory computer-readable medium of embodiment 1 or 2, wherein the combination of the controller type and the haptic actuator is represented as a haptic effect endpoint in the non-transitory computer readable medium, wherein the haptic effect endpoint is one of a plurality of haptic effect endpoints supported by the application, each of the haptic effect endpoints being a different respective combination of actuator type and haptic actuator, wherein the plurality of parameter values of the operation parameter are associated with the plurality of haptic effect endpoints, respectively, in the non-transitory computer-readable medium, wherein the first plurality of haptic tracks are associated with the plurality of haptic effect endpoints, respectively, in the non-transitory computer-readable medium, wherein the second plurality of haptic tracks are also associated with the plurality of haptic effect endpoints, respectively, in the non-transitory computer-readable medium, and wherein the instructions cause the one or more processors to perform the generating of the mixed haptic track by using a common function that is used to combine haptic tracks for each of the plurality of haptic effect endpoints.
Embodiment 4 includes the non-transitory computer-readable medium of any one of embodiments 1-3, wherein the instructions cause the one or more processors to determine that the mixed haptic effect is to be generated in response to an overlapping occurrence of a first event that is associated with the first haptic effect in the non-transitory computer-readable medium and of a second event that is associated with the second haptic effect in the non-transitory computer-readable medium.
Embodiment 5 includes the non-transitory computer-readable medium of any one of embodiments 1-4, wherein the operation parameter describes how the haptic actuator responds to one or more haptic track values.
Embodiment 6 includes the non-transitory computer-readable medium of embodiment 5, wherein the operation parameter is a max force parameter, wherein the parameter value of the max force parameter is a haptic track value that causes the haptic actuator to generate at least one of a defined rated maximum force or a defined rated maximum actuation of the haptic actuator.
Embodiment 7 includes the non-transitory computer-readable medium of embodiment 6, wherein the instructions cause the one or more processors to perform the generating of the mixed haptic track by: scaling each of the first haptic track and the second haptic track based on the parameter value of the max force parameter to generate a scaled first haptic track and a scaled second haptic track, and by mixing the scaled first haptic track and the scaled second haptic track into the mixed haptic track.
Embodiment 8 includes the non-transitory computer-readable medium of embodiment 6 or 7, wherein the parameter value of the max force parameter is a maximum value of an operational input range of the haptic actuator, wherein the operational input range is a range of haptic track values that are valid input values to the haptic actuator, wherein the first haptic track has haptic track values that are in a first defined range that is different than the operational input range, and wherein the scaling of the first haptic track is performed by mapping a maximum value of the first defined range to the maximum value of the operational input range of the haptic actuator.
Embodiment 9 includes the non-transitory computer-readable medium of embodiment 8, wherein the operation parameter is one of a plurality of operation parameters on which the generating of the mixed haptic track is based, wherein the plurality of operation parameters further include a passive force parameter, wherein a parameter value of the passive force parameter is a haptic track value that causes the haptic actuator to generate at least one of zero force or zero actuation, and wherein the scaling of the first haptic track is performed by mapping a zero value of the first defined range to the parameter value of the passive force parameter.
Embodiment 10 includes the non-transitory computer-readable medium of embodiment 9, wherein the parameter value of the passive force parameter is substantially equal to half of the parameter value of the max force parameter.
Embodiment 11 includes the non-transitory computer-readable medium of embodiment 9 or 10, wherein a minimum value of the first defined range is less than zero, and wherein the scaling of the first haptic track is performed by mapping the minimum value of the first defined range to a zero value of the operational input range of the haptic actuator.
Embodiment 12 includes the non-transitory computer-readable medium of any one of embodiments 9-11, wherein the first haptic track comprise a plurality of track samples having a plurality of respective track values, wherein the scaling of the first haptic track comprises multiplying each of the plurality of respective track values by a ratio to generate a plurality of multiplied values, and adding the parameter value of the passive force parameter to each of the multiplied values, wherein the ratio is equal to a difference between the parameter value of the max force parameter and the parameter value of the passive force parameter, then divided by a size of the first defined range.
Embodiment 13 includes a method performing the functionality of any of the above embodiments.
Embodiment 14 includes a system comprising a computing device and a haptic-enabled controller as described above in any of the above embodiments, wherein the computing device comprises one or more processors that are configured to perform the functionality of any of the above embodiments.
While various embodiments have been described above, it should be understood that they have been presented only as illustrations and examples of the present invention, and not by way of limitation. Further, some examples herein recite mixing haptic tracks for a game controller and game application, the mixing of haptic tracks of the embodiments herein apply more generally to any software application and any type of user input device. It will be apparent to persons skilled in the relevant art that various changes in form and detail can be made therein without departing from the spirit and scope of the invention. Thus, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the appended claims and their equivalents. It will also be understood that each feature of each embodiment discussed herein, and of each reference cited herein, can be used in combination with the features of any other embodiment. All patents and publications discussed herein are incorporated by reference herein in their entirety.
The present application claims priority to U.S. Provisional Patent Application No. 62/547,856, filed Aug. 20, 2017, the entire content of which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
62547856 | Aug 2017 | US |