Program, computer device and method
The system dynamically generates vibration feedback based on virtual object interactions, addressing limitations in existing methods by calculating mobile vectors and using normal vectors to create immersive and realistic tactile sensations.
Patent Information
- Application Number
- JP2023115952
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-07-14
- Publication Date
- 2025-01-24
AI Technical Summary
Existing methods for generating vibration waveforms in virtual environments are limited in variability and require significant effort from game creators to tailor vibrations to each scene or object, restricting the depth of immersion.
A computer device and vibration mechanism system that calculates a mobile vector and generates vibration information based on the movement of a user or object on a virtual object's surface, using normal vectors and material properties to dynamically create suitable vibration waveforms.
Enables dynamic generation of vibration feedback that matches the scene and object, enhancing user immersion without excessive processing load, and allows for more realistic and varied tactile sensations.
Smart Images

Figure 2025012825000001_ABST
Abstract
Description
[Technical field]
[0001] The present disclosure relates to a program, a computer device, and a method. [Background technology]
[0002] In order to enhance the user's sense of realism and immersion when riding a vehicle in a virtual space or performing an operation such as tracing the surface of a virtual object, the controller held by the user may be vibrated. The vibration waveform for controlling such vibration is generally created in advance by the game creator by processing the sound effects in that scene or by specifying the frequency and amplitude of a basic waveform such as a sine wave or a square wave.
[0003] Also known is a technique for changing the amplitude ratio of a pre-created vibration waveform so as to be more suitable for the situation (eg, Patent Document 1). [Prior art documents] [Patent documents]
[0004] [Patent Document 1] JP 2020-130551 A Summary of the Invention [Problem to be solved by the invention]
[0005] However, when changing the amplitude ratio of a pre-created vibration waveform as in Patent Document 1, there is a limit to the range of variations in the vibration waveform that can be obtained. On the other hand, creating a unique vibration waveform for each scene or each virtual object in advance is a burden for the game creator.
[0006] An objective of at least one embodiment of the present disclosure is to generate vibration information for controlling vibrations applied to a user using a new method. [Means for solving the problem]
[0007] From a non-limiting perspective, a program according to one embodiment of the present disclosure is a program executed on a computer device having a vibration mechanism that generates vibrations, or a computer device that is connected wirelessly or via a wire to a vibration device having the vibration mechanism, and realizing in the computer device a calculation function that calculates a movement vector that indicates the direction of movement of a moving object or a user's operation point when the moving object or the user's operation point moves on the surface of a virtual object, and a generation function that generates vibration information for controlling the operation of the vibration mechanism when the moving object or the operation point moves along the movement path based on the normal vector of each face of the surface of the virtual object that is located on the movement path of the moving object or the operation point and the movement vector.
[0008] From a non-limiting perspective, a computer device according to one embodiment of the present disclosure is a computer device having a vibration mechanism that generates vibrations, or a computer device that is connected wirelessly or via a wire to a vibration device having the vibration mechanism, and includes a calculation means that calculates a movement vector that indicates the direction of movement of a moving object or a user's operation point when the moving object or the user's operation point moves on the surface of a virtual object, and a generation means that generates vibration information for controlling the operation of the vibration mechanism when the moving object or the operation point moves along the movement path based on the normal vectors of each face of the surface of the virtual object that is located on the movement path of the moving object or the operation point and the movement vector.
[0009] From a non-limiting perspective, a method according to one embodiment of the present disclosure includes causing a computer device having a vibration mechanism that generates vibrations, or a computer device that is wirelessly or wiredly connected to a vibration device having the vibration mechanism, to execute a calculation step of calculating a movement vector that indicates a movement direction of a moving object or a user's operation point when the moving object or the user's operation point moves on a surface of a virtual object, and a generation step of generating vibration information for controlling the operation of the vibration mechanism when the moving object or the operation point moves along the movement path, based on the normal vectors of each face of the surface of the virtual object that is located on the movement path of the moving object or the operation point and the movement vector. Effect of the Invention
[0010] Each embodiment of the present application addresses one or more of the deficiencies. [Brief description of the drawings]
[0011] [Figure 1] FIG. 2 is a diagram illustrating an example of a configuration of a computer device and a vibration device according to at least one embodiment of the present disclosure. [Diagram 2] FIG. 2 is a diagram illustrating an example of a functional configuration of a computer device corresponding to at least one of the embodiments of the present disclosure. [Diagram 3] 1 is a flowchart illustrating an example of a program execution process according to at least one of the embodiments of the present disclosure. [Figure 4] FIG. 2 is a diagram illustrating an example of a configuration of a computer device corresponding to at least one of the embodiments of the present disclosure. [Diagram 5] FIG. 2 is a diagram illustrating an example of a functional configuration of a computer device corresponding to at least one of the embodiments of the present disclosure. [Figure 6] 1 is a flowchart illustrating an example of a program execution process according to at least one of the embodiments of the present disclosure. [Figure 7] FIG. 2 illustrates an example of a normal map and a movement path according to at least one embodiment of the present disclosure. [Figure 8] FIG. 2 illustrates an example of a vibration waveform according to at least one of the embodiments of the present disclosure. [Figure 9] FIG. 13 illustrates another example of a normal map and a movement path according to at least one embodiment of the present disclosure. [Figure 10] FIG. 1 is a diagram illustrating an example of a virtual object and an operation point according to at least one of the embodiments of the present disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0012] Hereinafter, examples of the embodiments of the present disclosure will be described with reference to the drawings. Note that the various components in the examples of the embodiments described below can be appropriately combined to the extent that no inconsistencies or the like arise. In addition, the contents described as an example of a certain embodiment may be omitted in other embodiments. In addition, the contents of operations and processes that are not related to the characteristic parts of each embodiment may be omitted. Furthermore, the order of various processes constituting the various flows described below may be random and may be executed in parallel to the extent that no inconsistencies or the like arise in the processing contents.
[0013] [First embodiment] 1 is a diagram showing an example of a configuration of a computer device 10A and a vibration device 70A corresponding to at least one of the embodiments of the present disclosure. As shown in FIG. 1, the computer device 10A can be connected to a vibration device 70A having a vibration mechanism 74 by wireless or wired communication.
[0014] The mode of wireless communication is not particularly limited, and may be any conventionally known technology such as a wireless LAN (Local Area Network) connection such as Wi-Fi, Bluetooth (registered trademark) connection, or infrared connection. The mode of wired communication is not particularly limited, and may be any conventionally known technology such as a Universal Serial Bus (USB) connection. The communication may be short-distance communication or long-distance communication via a communication network such as the Internet. The communication network may be a so-called blockchain network.
[0015] The computer device 10A includes, for example, a processor 20, a memory 30, and a storage device 40. The processor 20, the memory 30, and the storage device 40 are connected to each other via, for example, a communication bus. The computer device 10A may include other components known in the art.
[0016] The processor 20 is, for example, a central processing unit such as a CPU (Central Processing Unit) that performs various calculations and control. The processor 20 may include a GPU (Graphics Processing Unit) or the like, and some of the various calculations and control may be performed by the GPU. The computer device 10A executes various information processing in the processor 20 using data appropriately read into the memory 30, for example, and stores the obtained processing results in the storage device 40 as necessary.
[0017] The storage device 40 has a function as a storage medium for storing various information, for example. The configuration of the storage device 40 is not particularly limited, and may include, for example, a ROM (Read Only Memory) in which a program for controlling the operation of the computer device 10A is stored. The ROM is an example of a non-transitory computer-readable medium that stores a program. The storage device 40 may also include, for example, a HDD (Hard Disk Drive) or an SSD (Solid State Drive). The storage device 40 may have a storage area accessible by the computer device 10A, and may have, for example, a dedicated storage area outside the computer device 10A.
[0018] The vibration device 70A includes, for example, a processor 71, a memory 72, a storage device 73, and a vibration mechanism 74. The processor 71, the memory 72, the storage device 73, and the vibration mechanism 74 are connected to each other, for example, via a communication bus. The vibration device 70A may include other components known in the art.
[0019] The processor 71 is, for example, a central processing unit such as a CPU that performs various calculations and control. The vibration device 70A executes various information processing in the processor 71 using, for example, data appropriately read into the memory 72. The storage device 73 may include, for example, a ROM (Read Only Memory) that stores a program for controlling the operation of the vibration device 70A.
[0020] The vibration mechanism 74 is a mechanism that vibrates the vibration device 70A. The configuration of the vibration mechanism 74 is not particularly limited, and a conventionally known configuration can be appropriately adopted, but it is preferable that the vibration mechanism 74 is capable of independently controlling the amplitude and frequency. The vibration mechanism 74 may be configured to include, for example, a DC (Direct Current) motor, a voice coil motor, or other technologies. Specifically, the vibration mechanism 74 may be configured to include an eccentric motor, a linear resonant actuator, a piezoelectric element, or the like. The processor 71 vibrates the vibration device 70A based on, for example, vibration information received from the computer device 10A. Note that the vibration information output to the vibration device 70A can be demodulated from a digital signal to an analog signal via a D / A (Digital to Analog) converter as necessary.
[0021] 2 is a diagram illustrating an example of a functional configuration of a computer device 10A corresponding to at least one of the embodiments of the present disclosure. The computer device 10A includes at least a calculation unit 21 and a generation unit 22. These units are realized, for example, by the processor 20 designating at least a part of a program stored in the storage device 40 and expanding the program on the memory 30, and the processor 20 operating in cooperation with the memory 30.
[0022] The calculation unit 21 has a function of calculating a movement vector indicating the direction of movement of a moving object or a user's operation point when the moving object or the user's operation point moves on the surface of a virtual object.
[0023] The generation unit 22 has a function of generating vibration information for controlling the operation of the vibration mechanism 74 when the moving object or the operation point moves along the movement path, based on the normal vector of each surface of the virtual object that is located on the movement path of the moving object or the operation point, and the movement vector.
[0024] Next, a program execution process according to the first embodiment will be described below. Fig. 3 is a flowchart showing an example of a program execution process according to at least one of the embodiments of the present disclosure.
[0025] In step S1, when a moving object or a user's operation point (hereinafter also referred to as a "moving object, etc.") moves on the surface of a virtual object, the computer device 10A calculates a movement vector indicating the movement direction of the movement.
[0026] In step S2, the computer device 10A generates vibration information for controlling the operation of the vibration mechanism 74 when the moving object or the operation point moves along the movement path, based on the normal vectors of each surface of the virtual object that is located on the movement path of the moving object or the operation point, and the movement vector.
[0027] As one aspect of the first embodiment, vibration information for controlling vibrations applied to a user can be generated by a new method.
[0028] In the first embodiment, the "computer device" is, for example, a device that can present a virtual object to a user via an arbitrary display device or the like. Specific examples of the computer device 10A include a mobile phone terminal, a smartphone, a PDA (Personal Digital Assistant), a personal computer, a tablet, a stationary game device, a portable game device, and the like. The "computer device" may be VR goggles, AR glasses, smart glasses, AR contacts, or other wearable devices that can be operated by a user. In addition, the "computer device" may have, for example, a predetermined vibration mechanism, and the "computer device" may also function as a vibration device.
[0029] The "vibration device" is, for example, a device having a predetermined vibration mechanism. The "vibration device" is, for example, a device that allows a user to experience vibration, and is a device that realizes so-called vibration feedback or haptic feedback. Specific examples of the "vibration device" include a controller held by a user, the above-mentioned wearable device attached to the user's body, and various devices that vibrate a chair on which a user sits.
[0030] A "virtual object" refers to, for example, an object that can be placed in a two-dimensional or three-dimensional virtual world, regardless of shape, size, texture, etc. A "virtual object" includes, for example, an object made up of polygons, and may also include the terrain that makes up the virtual world. A "moving object" is, for example, an object that can move within a two-dimensional or three-dimensional virtual world. A "moving object" includes, for example, a vehicle such as a car that moves based on a user's operation. A "moving object" may also be an object that moves within the virtual world without a user's operation.
[0031] A "user operation point" is, for example, a point that moves within the virtual world based on a user's operation. The "user operation point" can be, for example, any shape, size, etc. If the device that accepts operations from the user is a touch device, the "user operation point" can be, for example, the point of contact between the user's finger, stylus, etc. and the touch device.
[0032] The "movement vector indicating the moving direction" is, for example, a vector in the same direction as the moving direction. The "movement vector indicating the moving direction" may be, for example, a vector in the same direction as the velocity vector of a moving object or the like. The "movement vector indicating the moving direction" may also be, for example, a vector in the same direction as the direction from the position of a moving object or the like at an arbitrary time (for example, the current time) to the position of a moving object or the like after a predetermined unit time has elapsed from the arbitrary time. The "movement vector indicating the moving direction" may also be, for example, a unit vector having the above-mentioned direction. Here, the above-mentioned "predetermined unit time" may be, for example, an arbitrary time of 1 to 10 seconds, an arbitrary time of 1 to 60 frames, or another time. The "predetermined unit time" may be appropriately determined, for example, according to the purpose of a program executed by a computer device.
[0033] The "normal vector of each surface located on the movement path" is, for example, a normal vector indicated by a pixel located on the movement path among normal vectors indicated in a normal map corresponding to a virtual object. The "normal vector of each surface located on the movement path" may be calculated by a conventionally known method, for example, without using a normal map.
[0034] "Vibration information" is information for controlling the operation of the vibration mechanism. "Vibration information" may be, for example, information about a waveform indicating the amplitude and frequency of vibration in the vibration mechanism. Furthermore, "vibration information" may be, for example, information indicating the voltage applied to the vibration mechanism in chronological order. Furthermore, "vibration information" may be, for example, information indicating the amount of displacement of a motor included in the vibration mechanism in chronological order.
[0035] [Modification of the first embodiment] A modified example of the first embodiment described above will be described below with reference to Fig. 4. Fig. 4 is a diagram showing an example of the configuration of a computer device 10B corresponding to at least one of the embodiments of the present disclosure.
[0036] The computer device 10B includes a processor 20, a memory 30, a storage device 40, and a vibration mechanism 51. For the processor 20, the memory 30, and the storage device 40, the contents described in the first embodiment can be adopted to the extent that no contradiction occurs.
[0037] The vibration mechanism 51 is a mechanism for vibrating the computer device 10B. For the vibration mechanism 51, the details explained for the vibration mechanism 74 in the first embodiment can be adopted to the extent that no contradiction occurs.
[0038] In this modification, the computer device 10B itself has a vibration mechanism 51. The computer device 10B vibrates the vibration mechanism 51 based on vibration information generated by the computer device 10B. That is, in this modification, at least a part of the computer device 10B vibrates.
[0039] The functional configuration and program execution process of the computer device 10B in this modified example can adopt the contents explained in the first embodiment to the extent that no contradiction occurs.
[0040] As an aspect of the modified example of the first embodiment, vibration information for controlling vibrations to be applied to the user can be generated by a new method.
[0041] In addition, in this modified example, the contents described in the first embodiment can be adopted to the extent necessary for the "computer device," "vibration device," "virtual object," "moving object," "user's operation point," "movement vector indicating the movement direction," "predetermined unit time," "normal vector of each surface located on the movement path," and "vibration information."
[0042] As an aspect of the modified example of the first embodiment, vibration information for controlling vibrations to be applied to the user can be generated by a new method.
[0043] [Second embodiment] Next, a second embodiment of the present disclosure will be described. Fig. 5 is a diagram showing an example of the configuration of a computer device 10C and a vibration device 70C corresponding to at least one of the embodiments of the present disclosure. As shown in Fig. 5, the computer device 10C can be connected to the vibration device 70C having a vibration mechanism 74 wirelessly or by wire. Regarding wireless communication, the contents described in the first embodiment can be adopted to the extent that no contradiction occurs.
[0044] The computer device 10C includes, for example, a control unit 20C and a storage unit 40C. The storage unit 40C is configured with a storage device such as a ROM, HDD, or SDD. The storage unit 40C stores various programs and data for operating the computer device 10C. The storage unit 40C may be configured to be included in an external device accessible by the computer device 10C.
[0045] The storage unit 40C can store, for example, a program 41, normal map data 42, and material information 43. The program 41 is, for example, a computer program for causing the computer device 10C to realize various functions described below.
[0046] The normal map data 42 is data of a normal map corresponding to a virtual object. The normal map is, for example, a texture for adding undulations such as unevenness to the surface of a virtual object. The normal map is generally an image in which the X, Y, and Z components of a normal vector indicating the direction in which the face of a polygon constituting a virtual object faces correspond to RGB components, respectively. That is, the RGB components of each pixel included in the normal map indicate the X, Y, and Z components of the normal vector of the pixel. The normal map is preferably stored in advance in the normal map data 42 for each virtual object, for example, but may be created as necessary based on other data such as a height map. In addition, for example, in the case of expressing unevenness directly with polygons without providing normal map data, the normal vector may be obtained directly from the polygon.
[0047] The material information 43 is, for example, data representing the material of a virtual object or a moving object. The material information 43 preferably includes, for example, information regarding the texture and hardness of the virtual object or the moving object. The normal map data 42 may be stored in the storage unit 40C as a type of material information 43.
[0048] The control unit 20C is configured with, for example, a processor, a memory such as a RAM, etc. By executing the program 41, the control unit 20C of the computer device 10C functions as, for example, a calculation unit 21, a generation unit 22, a reference unit 23, a correction unit 24, a communication unit 25, a virtual space control unit 26, and a display control unit 27.
[0049] The virtual space control unit 26 generates a virtual space including virtual objects based on various data stored in the storage unit 40C, for example. The virtual space may include moving objects. The virtual space control unit 26 controls the actions of the virtual objects and the moving objects in the virtual space based on, for example, an operation input from a user or a preset rule.
[0050] The display control unit 27 performs various controls for displaying the virtual space generated by the virtual space control unit 26 on a predetermined display 80. For example, the display control unit 27 displays on the display 80 the movement of a moving object on a virtual object. The display 80 may be an external device of the computer device 10C, or may be built into the computer device 10C. The display 80 may be a touch panel.
[0051] The calculation unit 21 has a function of calculating a movement vector indicating the direction of movement of a moving object or a user's operation point when the moving object or the user's operation point moves on the surface of a virtual object. The movement vector calculated by the calculation unit 21 is preferably a unit vector having a predetermined magnitude. Furthermore, the calculation unit 21 may calculate the magnitude of the movement vector based on, for example, the speed or acceleration of the moving object.
[0052] For example, when the moving path of the moving object is determined in advance, the calculation unit 21 may calculate the direction of the moving vector based on the moving path. On the other hand, when the moving path of the moving object is not determined in advance but is determined in real time based on the user's operation input, the calculation unit 21 may determine the direction of the moving vector as the direction from the position of the moving object at the current time to the position of the moving object after a predetermined unit time has elapsed from the arbitrary time.
[0053] The generation unit 22 has a function of generating vibration information for controlling the operation of the vibration mechanism 74 when the moving object or the operation point moves along the movement path, based on the normal vector of each surface of the virtual object that is located on the movement path of the moving object or the operation point, and the movement vector.
[0054] The generating unit 22 preferably generates the vibration information based on, for example, the inner product of the normal vector and the movement vector. In this case, the vibration information preferably includes a vibration waveform created based on a waveform obtained by arranging the inner products of the normal vector and the movement vector in chronological order. Note that the generating unit 22 may generate the vibration information based on, for example, a value obtained by substituting the normal vector and the movement vector into a predetermined relational expression.
[0055] Also, it is preferable that the generation unit 22 dynamically generates vibration information while appropriately calculating a movement vector for each predetermined unit time while a moving object or the like is moving on the virtual object. On the other hand, when a subsequent movement path of the moving object is determined in advance before the moving object moves, the generation unit 22 may generate vibration information corresponding to the movement path in response to the movement path being determined, for example.
[0056] The reference unit 23 has a function of, for example, acquiring the normal vector of each of the above-mentioned faces by referring to a normal map corresponding to a virtual object. The reference unit 23 refers to the normal map of the virtual object stored in the normal map data 42, for example.
[0057] The correction unit 24 has a function of correcting vibration information based on at least one of, for example, material information 43 of a virtual object, material information 43 of a moving object, and speed information and acceleration information of a moving object or an operation point.
[0058] For example, when the material information 43 indicates that the virtual object or the moving object is made of a hard material, the correction unit 24 may correct the vibration information so that the vibration becomes larger, or may perform high-pass filtering to attenuate frequency components lower than a predetermined first frequency. On the other hand, when the material information 43 indicates that the virtual object or the moving object is made of a soft material, the correction unit 24 may correct the vibration information so that the vibration becomes smaller, or may perform low-pass filtering to attenuate frequency components higher than a predetermined second frequency. Note that the first frequency and the second frequency are not particularly limited, and may be set appropriately depending on the type of material of the virtual object or the moving object, the situation of the virtual space, and the like.
[0059] Furthermore, the correction unit 24 may correct the vibration information so that the vibration becomes larger when the speed or acceleration of the virtual object or the moving object is large, for example. On the other hand, the correction unit 24 may correct the vibration information so that the vibration becomes smaller when the speed or acceleration of the virtual object or the moving object is small, for example.
[0060] The communication unit 25 functions as an interface for the computer device 10C to communicate with an external device such as the vibration device 70C. The vibration information generated by the generation unit 22 is corrected by the correction unit 24 as necessary and then transmitted to the vibration device 70C via the communication unit 25.
[0061] The vibration device 70C includes, for example, a control unit 71C and a vibration mechanism 74. The control unit 71C is configured with, for example, a processor and a memory such as a RAM. When a program for operating the vibration device 70C is executed, the control unit 71C of the vibration device 70C functions as, for example, an operation receiving unit 75, a communication unit 76, and a vibration control unit 77.
[0062] The operation reception unit 75 receives, for example, an input operation by a user. The vibration device 70C may include various sensors such as a physical button, a touch panel, and a six-axis sensor, and can receive an operation input by a user via these input mechanisms.
[0063] The communication unit 76 functions as an interface for the vibration device 70C to communicate with an external device such as the computer device 10C. Information on the user's input operation received by the operation reception unit 75 is transmitted to the computer device 10C via the communication unit 76. Vibration information generated by the computer device 10C is received by the vibration device 70C via the communication unit 76.
[0064] The vibration control unit 77 controls the operation of the vibration mechanism 74 based on, for example, vibration information received from the computer device 10C. The vibration control unit 77 can control the operation of the vibration mechanism 74 based on the amplitude and frequency of vibration indicated in the vibration information. As another example, the vibration control unit 77 may control the vibration mechanism 74 so that a motor included in the vibration mechanism 74 is displaced based on the displacement amount in the Z-axis direction included in the vibration information. In addition, when the vibration information includes a vibration waveform and the vibration mechanism 74 can operate using the waveform, it is preferable that the vibration control unit 77 demodulates the vibration information from a digital signal to an analog signal via a D / A converter and outputs the demodulated signal to the vibration mechanism 74. Note that, with regard to the vibration mechanism 74, the contents described in the first embodiment can be adopted to the extent that no contradiction occurs.
[0065] Next, a program execution process according to the second embodiment will be described below. Fig. 6 is a flowchart showing an example of a program execution process corresponding to at least one of the embodiments of the present disclosure.
[0066] In step S11, the computer device 10C generates a virtual space including virtual objects and moving objects. In the following, a terrain object that forms the surface of the virtual space is taken as an example of the virtual object. Also, a car object that mainly operates based on a user's operation input is taken as an example of the moving object. Note that the virtual object and the moving object are not limited to these examples.
[0067] In step S12, the computer device 10C performs control for displaying the virtual space generated in step S11 on the display 80, etc. In step S13, the vibration device 70C accepts an operation input from the user. Information regarding the operation input from the user is transmitted to the computer device 10C.
[0068] Here, it is assumed that an operation to move the car object on the terrain object is received in step S13. In this case, in step S14, the computer device 10C refers to the normal map data 42 and acquires information on the normal vectors of each face constituting the surface of the terrain object. Note that in step S14, after the movement path of the car object is determined, only information on the normal vectors of pixels located on the movement path of the car object may be acquired.
[0069] Also, before step S14, it may be determined whether or not a terrain object or a car object is an object that is a target for vibration generation, and only when it is determined that at least one of them is a target for vibration generation, the processes after step S14 may be executed. In other words, it may be set in advance whether or not a virtual object or a moving object is a target for vibration generation.
[0070] In step S15, the computer device 10C calculates a movement vector indicating the moving direction of the car object. In step S16, the computer device 10C generates vibration information based on the normal vector acquired in step S14 and the movement vector calculated in step S15. In step S17, the computer device 10C corrects the vibration information generated in step S16 as necessary. That is, step S17 may not be performed.
[0071] Here, the process from step S15 to step S17 will be described in detail with reference to Fig. 7 and Fig. 8. Fig. 7 is a diagram showing an example of a normal map N1 and a movement path corresponding to at least one embodiment of the present disclosure. Fig. 8 is a diagram showing an example of a vibration waveform corresponding to at least one embodiment of the present disclosure.
[0072] In Fig. 7, the movement path of the car object when it moves on the terrain object is shown on the normal map N1 corresponding to the terrain object. When the car object moves from point P1 to point P2, the movement vector calculated in step S15 is, for example, a unit vector having a direction V1 from point P1 to point P2. When the car object moves from point P2 to point P3, the movement vector calculated in step S15 is, for example, a unit vector having a direction V2 from point P2 to point P3. When the car object moves from point P3 to point P4, the movement vector calculated in step S15 is, for example, a unit vector having a direction V3 from point P3 to point P4.
[0073] In this embodiment, it is assumed that the moving object etc. is in contact with the virtual object, that is, moving while being constrained by the polygon surface of the virtual object. In other words, it is assumed that the moving object etc. is moving in the UV coordinate system. Therefore, when a difference in height occurs in the movement vector, it means that the moving object is separated from the virtual object surface, so in that case, it is not necessary to generate vibration information.
[0074] However, the invention according to the present disclosure may be applied when there is a difference in elevation on the movement path. For example, when the height coordinates (e.g., y-axis coordinates) of points P1 and P2 are different, the direction of the movement vector may be calculated assuming that the height coordinates of points P1 and P2 are different, and the subsequent processing may be performed. Also, even when the height coordinates (e.g., y-axis coordinates) of points P1 and P2 are different, the direction of the movement vector may be calculated assuming that the height coordinates of points P1 and P2 are the same.
[0075] In step S16, for example, the dot product of the movement vector and the normal vector indicated by the pixel located on the movement path of the car object in the normal map N1 is calculated. As a specific example, when the car object moves from point P1 to point P2, the dot product of each normal vector indicated by the pixel located on the straight line from point P1 to point P2 and the unit vector having the direction V1 is calculated. The same is true when the car object moves from point P2 to point P3, and when it moves from point P3 to point P4.
[0076] Fig. 8 shows a vibration waveform in which the inner products of the normal vectors of each pixel located on each movement path from point P1 to point P2 to point P3 to point P4 and each movement vector are arranged in the order of the movement (i.e., in chronological order). The vibration waveform shown in Fig. 8 is an example of vibration information generated in step S16. The vertical axis in Fig. 8 indicates, for example, a value proportional to the speed of a moving object or the like in a predetermined direction (for example, the Z-axis direction).
[0077] One of the reasons why a value based on the speed in a specific direction can be used as a driving signal for a vibration mechanism is that the principle of the speaker and the vibration mechanism are the same. Here, an audio signal from a dynamic microphone in the case of sound will be described. In a dynamic microphone, when a plate and a coil attached to the plate are swung by sound, a voltage proportional to the moving speed of the coil is generated by electromagnetic induction, and this voltage is used as an audio signal. When this audio signal is input to a speaker, the sound is reproduced. The inventor of the present invention has noticed that the principle of a speaker that performs the above-mentioned processing is the same as that of a vibration mechanism including a voice coil motor, a linear resonant actuator, a piezoelectric element, etc., and has found that a signal (waveform) in which the speed of a moving object or the like in the vibration direction is arranged in chronological order can be used as a driving signal for these vibration mechanisms. Note that, for an object that is difficult to control with the above-mentioned waveform, such as an eccentric motor, it is preferable to analyze the waveform and convert it into information suitable for the vibration mechanism, for example, between step S17 and step S18 described later, or in step S20 described later.
[0078] Here, the range W in the normal map N1 in Fig. 7 is, for example, a portion corresponding to a groove in a terrain object. When performing a process such as step S16, when a car object passes through a portion with large indentations such as the range W, vibrations tend to be larger than those in portions with fewer indentations such as before and after the range W (see the range W and the portions before and after it in the vibration waveform in Fig. 8).
[0079] Furthermore, when the material constituting the terrain object is different between the path from step point P1 to point P2 and the path from step point P2 to point P3, in step S17, the vibration information shown in Fig. 8 may be corrected. For example, when the material constituting the path from point P1 to point P2 of the terrain object is set to be softer than the material constituting the path from point P2 to point P3, the vibration from point P1 to point P2 may be corrected to be smaller than that shown in Fig. 8, and the vibration from point P2 to point P3 may be corrected to be larger than that shown in Fig. 8. Furthermore, as described above, low-pass filter processing or high-pass filter processing may be performed.
[0080] When the moving path of the car object is determined in advance, it is preferable to generate vibration information corresponding to the moving path at an appropriate timing after the moving path is determined in step S16. For example, when it is determined that the car object will move from point P1 to point P2 to point P3 to point P4 before the car object starts moving, it is preferable to calculate the inner products of the normal vectors and the moving vectors on these paths, and generate vibration information as shown in Fig. 8, which is arranged in chronological order, before the car object starts moving.
[0081] Next, the processes of steps S15 and S16 will be described in more detail with reference to Fig. 9. Fig. 9 is a diagram showing an example of a normal map N2 and a movement path corresponding to at least one of the embodiments of the present disclosure. Fig. 9 illustrates an example of a case where the movement path of a car object is not determined in advance, such as a case where the movement path is changed based on a user's operation input, and where the car object has a predetermined size.
[0082] In Fig. 9, the path of a car object moving on a terrain object is shown on a normal map N2 corresponding to the terrain object. The normal map N2 includes a plurality of pixels X1, a plurality of pixels X2, and a plurality of pixels X3. Pixels with the same code have the same normal vector.
[0083] 9, the moving path of the car object is not determined in advance, and the moving path is changed based on the user's operation input. In such a case, it is preferable to calculate the position of the car object every time a predetermined unit time, such as every frame, calculate a moving vector for the predetermined unit time from these positions, and dynamically generate vibration information every predetermined unit time.
[0084] For example, consider a case where a car object is located at point R1, moves to point R2 one frame later based on a user's operation input, and then moves to R3 one frame later with the direction of movement changed based on the user's operation input. In this case, the movement vector calculated in step S15 is calculated for each frame. When the car object moves from point R1 to point R2, the movement vector calculated in step S15 is, for example, a unit vector having a direction V11 from point R1 to point R2. When the car object moves from point R2 to point R3, the movement vector calculated in step S15 is, for example, a unit vector having a direction V12 from point R2 to point R3.
[0085] In addition, the movement vector when the car object moves from point R1 to point R2 may be calculated when the car object actually arrives at point R2, or it may be calculated before the car object actually arrives at point R2 based on the position of point R2 calculated in advance from user input, etc.
[0086] When the car object moves from point R1 to point R2, the car object passes through two pixels X1 and two pixels X2 in this order. Therefore, in step S16, the value of the dot product of the unit vector having the direction V11 and the normal vector indicated by pixel X1, the same value as this dot product, the value of the dot product of the unit vector having the direction V11 and the normal vector indicated by pixel X2, and the same value as this dot product are arranged in this order and generated as vibration information for the movement path from point R1 to point R2. Thereafter, vibration information for the movement path from point R2 to point R3 is generated in a similar procedure.
[0087] This case (the car object moves from point R1 to point R2 to point R3) is an example of a case where the contact point between the car object and the terrain object is assumed to be a point smaller than one pixel on the normal map. The position of the contact point may be set appropriately depending on the type and form of the car object.
[0088] On the other hand, the case where the car object moves from position S1 to position S2 is an example where the contact point between the car object and the terrain object is larger than one pixel of the normal map, specifically, a contact area is set for the tires of the car object.
[0089] When a car object moves from position S1 to position S2, the direction of the movement vector can be determined based on the trajectory of the movement of a predetermined point such as the center point or center of gravity of the car object. In the example of Fig. 9, the movement vector when the car object moves from position S1 to position S2 is a unit vector having a direction V21.
[0090] In this way, when the contact point between the car object and the terrain object is larger than one pixel of the normal map, it is preferable to generate vibration information based on the movement path passing through a specified point such as the center point or center of gravity of the contact point, i.e., by assuming that the contact point between the car object and the terrain object is a point smaller than one pixel of the normal map.
[0091] On the other hand, the inner product of each normal vector of each pixel included in the area Z, which is the area through which the car object passes, and a unit vector having a direction V21 may be calculated for each time series, and vibration information may be generated based on the inner product in each time series. In this case, for example, the vibration information may be generated based on the sum of the inner products in each time series, or the vibration information may be generated by substituting the inner products in each time series into a predetermined relational expression.
[0092] Returning to the description of the flowchart in Fig. 6, in step S18, the computing device 10C transmits the vibration information generated in step S16 and corrected, if necessary, in step S17 to the vibration device 70C.
[0093] In step S19, vibration device 70C receives the vibration information transmitted from computing device 10C in step S18.
[0094] In step S20, the vibration device 70C vibrates the vibration mechanism 74 based on the vibration information received in step S19, and provides vibration feedback or haptic feedback to the user, and the process ends.
[0095] As an aspect of the second embodiment, a new method can be used to generate vibration information for controlling vibrations given to a user. As an aspect of the second embodiment, for example, even if vibration information of vibrations generated when moving on the surface of a virtual object is not created in advance, it becomes possible to dynamically generate vibration information suitable for each scene.
[0096] As an aspect of the second embodiment, by acquiring a normal vector by referring to a normal map, for example, it is possible to reduce the processing load of a computer device.
[0097] As one aspect of the second embodiment, by generating vibration information based on the inner product of a normal vector and a movement vector, for example, it becomes possible to easily generate vibration information.
[0098] As one aspect of the second embodiment, the vibration information includes a vibration waveform created based on a waveform obtained by arranging the inner products in chronological order, which, for example, makes it easier to control the operation of a vibration mechanism. Also, for example, when the vibration mechanism includes a voice coil motor or the like, it becomes possible to present a more complex tactile sensation than when a single basic waveform is reproduced by specifying a frequency and amplitude.
[0099] As one aspect of the second embodiment, by correcting vibration information based on at least one of material information of a virtual object, material information of a moving object, and speed information and acceleration information of a moving object or an operation point, it becomes possible to provide, for example, more realistic vibration feedback or haptic feedback.
[0100] In the second embodiment, the contents described in the first embodiment can be adopted to the extent necessary for the "computer device," "vibration device," "virtual object," "moving object," "user's operation point," "movement vector indicating the movement direction," "predetermined unit time," "normal vector of each surface located on the movement path," and "vibration information."
[0101] [Modification of the second embodiment] Hereinafter, a modified example of the above-mentioned second embodiment will be described with reference to Fig. 10. Fig. 10 is a diagram showing an example of a virtual object Ob and an operation point corresponding to at least one of the embodiments of the present disclosure.
[0102] The example of FIG. 10 is an example in which a computer device 10D has a touch panel 50 and a vibration mechanism 51. An example of such a computer device 10D is a smartphone. In this modification, the contents described in the second embodiment can be adopted to the extent that no contradiction occurs. In this modification, at least a part of the processing performed in the vibration device 70C in the second embodiment is executed in the computer device 10D.
[0103] In the example of Fig. 10, a virtual object Ob is displayed on the touch panel 50. In this case, it is assumed that the user touches a predetermined point T1 on the virtual object Ob and swipes the touched point to a point T2. At this time, the user's operation point moves from the point T1 to the point T2 on the virtual object Ob.
[0104] In this case, for example, a unit vector having a direction V31 from point T1 to point T2 is calculated as a movement vector indicating the movement direction when the operation point moves from point T1 to point T2 on the surface of the virtual object Ob. Also, by referring to the normal map of the virtual object Ob, a normal vector on each surface on the movement path of this operation point is acquired. Then, for example, the inner product of this movement vector and each normal vector is calculated, and the inner products are arranged in chronological order to generate vibration information.
[0105] In this case, the height difference of the movement path of the operation point does not have to be taken into consideration. That is, the direction of the movement vector may be calculated assuming that the height coordinates of the points T1 and T2 are the same. On the other hand, the height difference of the movement path of the operation point may be taken into consideration. In this case, for example, a movement vector taking the height difference into consideration may be calculated based on the height coordinate of the position indicated by the point T1 on the virtual object Ob and the height coordinate of the position indicated by the point T2 on the virtual object Ob.
[0106] The example of FIG. 10 can also be applied to a case where a controller or the like has a touch panel.
[0107] As an aspect of the modified example of the second embodiment, vibration information for controlling vibrations to be applied to the user can be generated by a new method.
[0108] As an aspect of the modified example of the second embodiment, for example, in the case where a computer device or a vibration device is equipped with a touch panel, it becomes possible to perform realistic vibration feedback or haptic feedback.
[0109] In addition, in this modified example, the “computer device,” “vibration device,” “virtual object,” “moving object,” “user's operation point,” “movement vector indicating the movement direction,” “normal vector of each surface located on the movement path,” and “vibration information” can each adopt the contents described in the first embodiment to the extent necessary.
[0110] Although one embodiment of the present invention has been described above in detail, the present invention is not limited to the above embodiment and can be modified, improved, etc. as appropriate. The present invention is defined by the claims and includes all modifications within the meaning and scope of the claims.
[0111] [Note] The above description of the embodiments has been provided so as to enable a person having ordinary skill in the art to which the invention pertains to practice the following invention.
[0112] [1] A program executed on a computer device having a vibration mechanism that generates vibrations, or on a computer device connected wirelessly or by wire to a vibration device having the vibration mechanism, The computer device includes: A calculation function for calculating a movement vector indicating a direction of movement of a moving object or a user's operation point when the moving object or the user's operation point moves on the surface of a virtual object; a generation function of generating vibration information for controlling an operation of the vibration mechanism when the moving object or the operation point moves along the movement path, based on a normal vector of each face of the surface of the virtual object that is located on a movement path of the moving object or the operation point, and the movement vector; A program to achieve this.
[0113] [2] The computer device further comprises: A reference function for obtaining a normal vector of each of the faces by referring to a normal map corresponding to the virtual object; The program described in [1] above.
[0114] [3] The generating function generates the vibration information based on an inner product of the normal vector and the movement vector. The program described in [1] or [2].
[0115] [4] The vibration information includes a vibration waveform created based on a waveform obtained by arranging the inner products in chronological order. A program according to any one of [1] to [3].
[0116] [5] The computer device further comprises: a correction function of correcting the vibration information based on at least one of material information of the virtual object, material information of the moving object, and speed information and acceleration information of the moving object or the operation point; A program described in any one of [1] to [4] that realizes the above.
[0117] [6] A computer device having a vibration mechanism that generates vibrations, or a computer device that is connected wirelessly or by wire to a vibration device having the vibration mechanism, A calculation means for calculating a movement vector indicating a moving direction of a moving object or a user's operation point moving on a surface of a virtual object; a generation means for generating vibration information for controlling an operation of the vibration mechanism when the moving object or the operation point moves along the movement path, based on a normal vector of each face of a surface of the virtual object that is located on a movement path of the moving object or the operation point, and the movement vector; A computer device comprising:
[0118] [7] A computer device having a vibration mechanism that generates vibrations, or a computer device that is connected wirelessly or by wire to a vibration device having the vibration mechanism, A calculation step of calculating a movement vector indicating a movement direction of a moving object or a user's operation point moving on a surface of a virtual object; a generation step of generating vibration information for controlling an operation of the vibration mechanism when the moving object or the operation point moves along the movement path, based on a normal vector of each face of a surface of the virtual object that is located on a movement path of the moving object or the operation point, and the movement vector; The method includes: [Explanation of symbols]
[0119] 10A-D: Computer equipment 70A, 70C: Vibration device
Claims
1. A program executed on a computer device having a vibration mechanism that generates vibrations, or on a computer device connected wirelessly or by wire to a vibration device having the vibration mechanism, The computer device includes: A calculation function for calculating a movement vector indicating a direction of movement of a moving object or a user's operation point when the moving object or the user's operation point moves on the surface of a virtual object; a generation function of generating vibration information for controlling an operation of the vibration mechanism when the moving object or the operation point moves along the movement path, based on a normal vector of each face of the surface of the virtual object that is located on a movement path of the moving object or the operation point, and the movement vector; A program to achieve this.
2. The computer device further comprises: A reference function for obtaining a normal vector of each of the faces by referring to a normal map corresponding to the virtual object; The program according to claim 1 .
3. The generation function generates the vibration information based on an inner product of the normal vector and the movement vector. The program according to claim 1 or 2.
4. The vibration information includes a vibration waveform created based on a waveform obtained by arranging the inner products in chronological order. The program according to claim 1 or 2.
5. The computer device further comprises: a correction function of correcting the vibration information based on at least one of material information of the virtual object, material information of the moving object, and speed information and acceleration information of the moving object or the operation point; The program according to claim 1 or 2, which realizes the above.
6. A computer device having a vibration mechanism that generates vibrations, or a computer device that is connected wirelessly or by wire to a vibration device having the vibration mechanism, A calculation means for calculating a movement vector indicating a moving direction of a moving object or a user's operation point moving on a surface of a virtual object; a generation means for generating vibration information for controlling an operation of the vibration mechanism when the moving object or the operation point moves along the movement path, based on a normal vector of each face of a surface of the virtual object that is located on a movement path of the moving object or the operation point, and the movement vector; A computer device comprising:
7. A computer device having a vibration mechanism that generates vibrations, or a computer device that is connected wirelessly or by wire to a vibration device having the vibration mechanism, A calculation step of calculating a movement vector indicating a movement direction of a moving object or a user's operation point moving on a surface of a virtual object; a generation step of generating vibration information for controlling an operation of the vibration mechanism when the moving object or the operation point moves along the movement path, based on a normal vector of each face of a surface of the virtual object that is located on a movement path of the moving object or the operation point, and the movement vector; The method includes:
Citation Information
Patent Citations
Game program, recording medium, and game processing method
JP2020130551A