WO2020084662A1 - スケルトンモデル更新装置、スケルトンモデル更新方法及びプログラム - Google Patents
スケルトンモデル更新装置、スケルトンモデル更新方法及びプログラム Download PDFInfo
- Publication number
- WO2020084662A1 WO2020084662A1 PCT/JP2018/039189 JP2018039189W WO2020084662A1 WO 2020084662 A1 WO2020084662 A1 WO 2020084662A1 JP 2018039189 W JP2018039189 W JP 2018039189W WO 2020084662 A1 WO2020084662 A1 WO 2020084662A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- node
- skeleton model
- posture
- nodes
- collision
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/103—Static body considered as a whole, e.g. static pedestrian or occupant recognition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/40—3D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/74—Image or video pattern matching; Proximity measures in feature spaces
- G06V10/75—Organisation of the matching processes, e.g. simultaneous or sequential comparisons of image or video features; Coarse-fine approaches, e.g. multi-scale approaches; using context analysis; Selection of dictionaries
- G06V10/755—Deformable models or variational models, e.g. snakes or active contours
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/20—Movements or behaviour, e.g. gesture recognition
- G06V40/23—Recognition of whole body movements, e.g. for sport training
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/21—Collision detection, intersection
Definitions
- the present invention relates to a skeleton model updating device, a skeleton model updating method and a program.
- the player object displayed on the screen moves according to the movement of the user wearing multiple trackers.
- the position to which a given node associated with each tracker should move is specified based on data indicating the postures of a plurality of trackers worn by the user.
- the pose of the skeleton model associated with the user is updated by inverse kinematics (IK) calculation based on the position to which the given node should move.
- IK inverse kinematics
- a collision may occur between the player object and another object such as an obstacle such as a wall or another player object.
- another object such as an obstacle such as a wall or another player object.
- updating the posture of the skeleton model that is associated with the user by IK calculation based on the position to which a given node should move is also performed in other scenes than games, such as scenes where animation is produced. Even in a scene other than such a game, it may be necessary to update the posture of the skeleton model in consideration of the influence of the generated collision as described above.
- the present invention has been made in view of the above problems, and one of its objects is a skeleton model updating device and a skeleton model updating device that can make the movement of a skeleton model when a collision occurs more natural than before.
- a model updating method and program are provided.
- a skeleton model updating device includes a position specifying unit that specifies a position to which one or more given nodes included in a skeleton model should move, and the one or more positions.
- a posture update unit that updates the posture of the skeleton model by executing an inverse kinematics calculation based on the position to which a given node should move, and a collision for one or more nodes included in the skeleton model
- the posture updating unit updates the posture of the skeleton model by executing the inverse kinematics calculation in which the influence of the collision on the one or more nodes is taken into consideration.
- the posture updating unit executes the inverse kinematics calculation based on a position to be moved according to the influence of the collision with respect to the one or more nodes in which the collision has occurred. , Update the posture of the skeleton model.
- the posture update unit executes the inverse kinematics calculation in which the initial position is a position to be moved according to the influence of the collision for the one or more nodes in which the collision occurs,
- the posture of the skeleton model may be updated.
- the posture updating unit updates the posture of the skeleton model by executing the inverse kinematics calculation divided in each of the one or more nodes in which the collision has occurred. To do.
- the posture updating unit updates the posture of the skeleton model by executing the inverse kinematics calculation based on a position to which the one or more given nodes should move. After that, the posture of the skeleton model is updated by executing further inverse kinematics calculation using each of the one or more nodes in which the collision has occurred as a root node.
- the posture update unit sets, according to a property of the collision, a position to be moved according to an influence of the collision for the one or more nodes in which the collision has occurred, to an initial position. Based on the inverse kinematics calculation, the inverse kinematics calculation divided by each of the one or more nodes in which the collision occurs, or the position to which the one or more given nodes should move A process including updating the pose of the skeleton model by executing the inverse kinematics calculation, and further inverse kinematics calculation using each of the one or more nodes in which the collision has occurred after the updating as a root node. By executing either of the above, the posture of the skeleton model is updated.
- a display control unit that causes a display unit to display an image corresponding to at least one of the position and orientation of a node corresponding to the user's head included in the skeleton model.
- the display control unit may display the video on the display unit of the head mounted display.
- the skeleton model updating method includes a position specifying step of specifying a position to which one or more given nodes included in the skeleton model should move, and the one or more given nodes move.
- the posture of the skeleton model is updated by executing the inverse kinematics calculation in which the influence of the collision on the one or more nodes is added.
- the program according to the present invention is based on a position specifying procedure for specifying a position to which one or a plurality of given nodes included in a skeleton model should move, and a position to which the one or a plurality of given nodes should move.
- a posture update procedure for updating the posture of the skeleton model by executing inverse kinematics calculation by a computer, and when a collision occurs with respect to one or more nodes included in the skeleton model, the posture is updated.
- the posture of the skeleton model is updated by executing the inverse kinematics calculation in which the influence of the collision on the one or more nodes is added.
- FIG. 1 is a diagram showing an example of a configuration of an entertainment system 10 according to an embodiment of the present invention.
- FIG. 2 is a diagram showing an example of the configuration of the entertainment device 14 according to the present embodiment.
- an entertainment system 10 includes a plurality of trackers 12 (trackers 12a to 12e in the example of FIG. 1), an entertainment device 14, a relay device 16, a display 18, and a camera microphone unit 20. Contains.
- the tracker 12 is, for example, a device for tracking the position and orientation of the tracker 12.
- the tracker 12 may include various sensors such as a camera, an inertial sensor (IMU), a geomagnetic sensor (direction sensor), an acceleration sensor, a motion sensor, and a GPS (Global Positioning System) module. Then, the tracker 12 may specify the posture of the tracker 12 based on the sensing data that is the measurement result of the sensor included in the tracker 12.
- the posture of the tracker 12 may be specified based on the image including the image of the tracker 12 captured by the camera 20a included in the camera microphone unit 20 described later.
- the tracker 12a, the tracker 12b, the tracker 12c, the tracker 12d, and the tracker 12e are attached to the user's head, left hand, right hand, left foot, and right foot, respectively.
- the tracker 12b and the tracker 12c may be gripped by a user by hand.
- the postures specified by the tracker 12a, the tracker 12b, the tracker 12c, the tracker 12d, and the tracker 12e correspond to the postures of the user's head, left hand, right hand, left foot, and right foot, respectively.
- the postures of a plurality of parts included in the body of the user are specified by the plurality of trackers 12.
- the entertainment device 14 is a computer such as a game console, a DVD player, a Blu-ray (registered trademark) player, or the like.
- the entertainment apparatus 14 according to the present embodiment generates video and audio by executing a game program stored in or recorded on an optical disk, reproduction of content, and the like. Then, the entertainment apparatus 14 according to the present embodiment outputs the video signal representing the generated video and the audio signal representing the generated sound to the display 18 via the relay device 16.
- the entertainment apparatus 14 includes a processor 30, a storage unit 32, a communication unit 34, and an input / output unit 36 as shown in FIG. 2, for example.
- the processor 30 is a program control device such as a CPU that operates according to a program installed in the entertainment apparatus 14, for example.
- the processor 30 according to the present embodiment also includes a GPU (Graphics Processing Unit) that draws an image in a frame buffer based on graphics commands and data supplied from the CPU.
- GPU Graphics Processing Unit
- the storage unit 32 is, for example, a storage element such as a ROM or RAM or a hard disk drive.
- the storage unit 32 stores programs executed by the processor 30 and the like. Further, in the storage unit 32 according to the present embodiment, an area of the frame buffer in which an image is drawn by the GPU is secured.
- the communication unit 34 is, for example, a communication interface such as a wireless LAN module.
- the input / output unit 36 is an input / output port such as an HDMI (registered trademark) (High-Definition Multimedia Interface) port and a USB port.
- HDMI registered trademark
- USB Universal Serial Bus
- the relay device 16 is a computer that relays a video signal or an audio signal output from the entertainment device 14 and outputs the relayed video signal or audio signal to the display 18.
- the display 18 is, for example, a liquid crystal display or the like, and displays an image represented by a video signal output from the entertainment device 14.
- the camera microphone unit 20 includes, for example, a camera 20a that outputs an image of a subject to the entertainment device 14 and a microphone that acquires ambient audio, converts the audio into audio data, and outputs the audio data to the entertainment device 14. 20b is included.
- the camera 20a according to this embodiment is a stereo camera.
- the tracker 12 and the relay device 16 are capable of wirelessly transmitting and receiving data, for example.
- the entertainment device 14 and the relay device 16 are connected to each other via, for example, an HDMI cable or a USB cable, and can transmit and receive data to and from each other.
- the relay device 16 and the display 18 are connected via, for example, an HDMI cable or the like.
- the entertainment device 14 and the camera microphone unit 20 are connected via, for example, an AUX cable.
- the skeleton model 40 includes a head node 42a, a left hand node 42b, a right hand node 42c, a left foot node 42d, and a right foot node 42e.
- the head node 42a corresponds to the head of the user wearing the tracker 12a.
- the left hand node 42b corresponds to the left hand of the user wearing the tracker 12b.
- the right hand node 42c corresponds to the right hand of the user wearing the tracker 12c.
- the left foot node 42d corresponds to the left foot of the user wearing the tracker 12d.
- the right foot node 42e corresponds to the right foot of the user wearing the tracker 12e.
- the skeleton model 40 also includes a pelvic node 42f, a first spinal column node 42g, a second spinal column node 42h, a third spinal column node 42i, and a neck node 42j.
- the pelvic node 42f plays the role of a root node in the entire skeleton model 40.
- the skeleton model 40 further includes a left clavicle node 42k, an upper left arm node 42l, a left forearm node 42m, a right clavicle node 42n, an upper right arm node 42o, and a right forearm node 42p.
- the skeleton model 40 further includes a left thigh node 42q, a left calf node 42r, a left ball of the foot node 42s, a right thigh node 42t, a right calf node 42u, and a right ball of the foot node 42v. There is.
- the pelvic node 42f and the first spinal column node 42g are connected by a bone 44a.
- the first spinal column node 42g and the second spinal column node 42h are connected by a bone 44b.
- the second spinal column node 42h and the third spinal column node 42i are connected by a bone 44c.
- the third spinal column node 42i and the neck node 42j are connected by a bone 44d.
- the neck node 42j and the head node 42a are connected by a bone 44e.
- a bone 44f connects the third spinal column node 42i and the left clavicle node 42k.
- the left clavicle node 42k and the upper left arm node 42l are connected by a bone 44g.
- the left upper arm node 42l and the left forearm node 42m are connected by a bone 44h.
- the left forearm node 42m and the left-hand node 42b are connected by a bone 44i.
- a bone 44j connects the third spinal column node 42i and the right clavicle node 42n.
- the right clavicle node 42n and the right upper arm node 42o are connected by a bone 44k.
- the right upper arm node 42o and the right forearm node 42p are connected by a bone 44l.
- the right forearm node 42p and the right hand node 42c are connected by a bone 44m.
- the pelvis node 42f and the left thigh node 42q are connected by a bone 44n.
- the left thigh node 42q and the left calf node 42r are connected by a bone 44o.
- the left calf node 42r and the left foot node 42d are connected by a bone 44p. Further, the left foot node 42d and the left ball of the foot ball node 42s are connected by a bone 44q.
- the pelvis node 42f and the right thigh node 42t are connected by a bone 44r. Further, the right thigh node 42t and the right calf node 42u are connected by a bone 44s. Further, the right calf node 42u and the right foot node 42e are connected by a bone 44t. Further, the right foot node 42e and the right ball of the foot ball 42v are connected by a bone 44u.
- FIG. 3 shows a skeleton model 40 in a basic posture (a so-called A pose in which a leg is opened and an arm is slanted downward, for example), which is the skeleton model 40 in an initial state.
- a basic posture a so-called A pose in which a leg is opened and an arm is slanted downward, for example
- body tracking based on the postures specified for the plurality of trackers 12 can be performed.
- the position with respect to the reference position in the initial state and the orientation with respect to the reference direction in the initial state are determined.
- the orientation of each of the plurality of bones 44 included in the skeleton model 40 with respect to the reference orientation in the initial state is determined.
- the posture of the head node 42a can be determined based on the data indicating the posture specified for the tracker 12a.
- the posture of the left-hand node 42b can be determined based on the data indicating the posture specified for the tracker 12b.
- the attitude of the right-hand node 42c can be determined based on the data indicating the attitude specified for the tracker 12c.
- the posture of the left foot node 42d can be determined based on the data indicating the posture specified for the tracker 12d.
- the posture of the right foot node 42e can be determined based on the data indicating the posture specified for the tracker 12e.
- the posture of the pelvic node 42f can be determined based on, for example, the determined posture of the head node 42a.
- the posture estimation of the pelvic node 42f may be performed using the learned machine learning model based on the postures specified for the trackers 12a to 12e.
- the posture of the third spinal column node 42i can be determined.
- the positions and orientations of the remaining nodes 42 and the orientations of the bones 44 by forward-rear reaching inverse kinematics (FABRIK) calculation.
- FABRIK inverse kinematics
- the head node 42a, the left-hand node 42b, the right-hand node 42c, the left-foot node 42d, and the right-foot node 42e correspond to the effectors in FABRIK.
- the position and orientation of the node 42 and the orientation of the bone 44 included in the skeleton model 40 are determined according to the motion of the effector.
- FIGS. 4 and 5 are diagrams schematically showing an example of FABRK calculation.
- the FABRK calculation executed for the right-hand node 42c, the right clavicle node 42n, the upper right arm node 42o, and the right forearm node 42p is shown.
- the current positions of the right-hand node 42c, the right clavicle node 42n, the right upper arm node 42o, and the right forearm node 42p in the skeleton model 40 are P (c1), P (n1), P (o1), and P (o1), respectively.
- P1 The lengths of the bone 44m, the bone 44l, the bone 44k, and the bone 44j are d1, d2, and d3, respectively.
- the right-hand node 42c moves to the position T1.
- the position of the right-hand node 42c after the movement is shown as P (c2).
- the right forearm node 42p moves in the direction from the position P (c2) to the position P (p1) to the position P (p2) distant from the position P (c2) by the length d1.
- the upper right arm node 42o moves to the position P (o2) which is away from the position P (p2) by the length d2 in the direction from the position P (p2) to the position P (o1).
- the right clavicle node 42n moves in the direction from the position P (o2) to the position P (n1) to the position P (n2) distant from the position P (o2) by the length d3.
- the parent node 42 of the parent node 42 based on the position to which the node 42 associated with the tracker 12 should move and the current position of the parent node 42 of the node 42. Includes new position determination. Further, the determination is executed under the condition that the length between the node 42 associated with the tracker 12 and the parent node 42 is kept constant.
- the node 42 associated with the tracker 12 will be referred to as a target node.
- the right clavicle node 42n moves from the position P (n2) to the position P (n3).
- the position P (n3) shown in FIG. 5 is the same as the position P (n1) of the right clavicle node 42n at the start of the FABRK calculation.
- the upper right arm node 42o moves in the direction from the position P (n3) to the position P (o2) to the position P (o3) separated from the position P (n3) by the length d3.
- the right forearm node 42p moves in the direction from the position P (o3) to the position P (p2) to the position P (p3) distant from the position P (o3) by the length d2.
- the right-hand node 42c moves in the direction from the position P (p3) to the position P (c2) to the position P (c3) distant from the position P (p3) by the length d1.
- the forward arrival phase and the backward arrival phase are repeatedly executed until the length between the position of the right-hand node 42c and the position T1 becomes equal to or less than a predetermined threshold. Even if the length between the position of the right-hand node 42c and the position T1 does not become equal to or less than the predetermined threshold value, the FABRK calculation is performed when the front arrival phase and the rear arrival phase are repeatedly executed a predetermined number of times (for example, 10 times). Will be terminated.
- the FABRK calculation determines the posture of the skeleton model 40 by a simple algorithm.
- the posture of the skeleton model 40 that the joint does not bend in a natural direction and cannot be a human body may be determined.
- this information is not reflected in the rotation of the elbow about the arm direction, although the information about the rotation of the hand about the arm direction can be acquired from the tracker 12b or the tracker 12c.
- the overall postures of the plurality of nodes 42 in the vicinity of the nodal point of the tree-structured skeleton model 40 which should not be greatly distorted, such as from the chest to the shoulders, are determined by the process of the forward arrival phase. May be greatly distorted.
- the validity of the determination result of the posture of the skeleton model 40 using the FABRIK calculation can be improved as follows.
- FIG. 6 is a functional block diagram showing an example of functions of the entertainment apparatus 14 according to the present embodiment.
- the entertainment apparatus 14 according to the present embodiment does not need to have all the functions shown in FIG. 6, and may have functions other than the functions shown in FIG.
- the entertainment apparatus 14 functionally includes, for example, a skeleton model data storage unit 50, a posture data acquisition unit 52, an initial position determination unit 54, and a posture update unit 56. Be done.
- the skeleton model data storage unit 50 is implemented mainly by the storage unit 32.
- the attitude data acquisition unit 52 is mainly mounted on the processor 30 and the input / output unit 36.
- the initial position determination unit 54 and the posture update unit 56 are mainly mounted on the processor 30.
- the above functions may be implemented by causing the processor 30 to execute a program that is installed in the entertainment device 14 that is a computer and that includes a command corresponding to the above functions.
- This program may be supplied to the entertainment apparatus 14 via a computer-readable information storage medium such as an optical disc, a magnetic disc, a magnetic tape, a magneto-optical disc, a flash memory, or the like, or via the Internet or the like.
- the skeleton model data storage unit 50 stores, for example, skeleton model data indicating the posture of the skeleton model 40.
- the skeleton model data may include, for example, data indicating the positions of the plurality of nodes 42. Further, the skeleton model data may include data indicating the orientation of the node 42. Here, the data indicating the orientation may be data indicating the amount of rotation in each of the three axial directions. Further, the skeleton model data may include data indicating the position and orientation of the bone 44. The position and orientation of the bone 44 are uniquely determined based on the positions of the nodes 42 at both ends of the bone 44.
- the skeleton model data storage unit 50 stores skeleton model data indicating the latest posture of the skeleton model 40. Further, it is assumed that the skeleton model data storage unit 50 also stores skeleton model data indicating the posture of the skeleton model 40 in the initial state that takes a basic posture such as A pose.
- the posture data acquisition unit 52 acquires posture data indicating the positions and orientations of the trackers 12a to 12e specified at a predetermined sampling rate, for example.
- the tracker 12 may generate posture data indicating the position and orientation of the tracker 12 at a predetermined sampling rate. Then, in response to the generation, the tracker 12 may transmit the attitude data generated by the tracker 12 to the entertainment device 14 via the relay device 16.
- the camera microphone unit 20 may generate posture data indicating the positions and orientations of the trackers 12a to 12e at a predetermined sampling rate. Then, in response to the generation, the camera microphone unit 20 may transmit the attitude data generated by the camera microphone unit 20 to the entertainment device 14.
- the initial position determination unit 54 determines the initial positions of some nodes 42 based on the posture data acquired by the posture data acquisition unit 52, for example.
- the posture update unit 56 updates the posture of the skeleton model 40 in this embodiment, for example.
- the skeleton model data stored in the skeleton model data storage unit 50 is updated.
- the posture update unit 56 calculates the posture of the skeleton model 40 by front-rear reaching inverse kinematics (FABRIK) calculation based on the posture data acquired by the posture data acquisition unit 52 and the initial position determined by the initial position determination unit 54. You may update.
- FABRIK inverse kinematics
- the attitude data acquisition unit 52 acquires attitude data that is generated by the tracker 12 and indicates the position and orientation of the tracker 12 at the latest specific timing (S101).
- the posture data acquisition unit 52 acquires the posture data indicating the position and the direction of the tracker 12 for each of the trackers 12a to 12e.
- the posture updating unit 56 estimates the position and orientation of the pelvic node 42f based on the posture data acquired in the process shown in S101 (S102).
- the position and orientation of the third spinal column node 42i may be estimated.
- the positions and orientations of the pelvic node 42f and the third spinal column node 42i may be estimated.
- the posture updating unit 56 updates the skeleton model data based on the estimation result of the process shown in S102 (S103).
- S103 for example, a process of rotating the latest skeleton model 40 and the skeleton model 40 in the initial state is executed.
- the initial position determination unit 54 determines the initial positions of some of the nodes 42 included in the skeleton model 40 (S104).
- the direction A2 is specified.
- a position P2 which is a direction d2 away from the position T2 in the opposite direction to the direction A2 along the direction A2 is determined as an initial position of the right forearm node 42p that is the parent node 42 of the right-hand node 42c.
- the length d1 is the length of the bone 44m as described above.
- a position obtained by interpolating the current position of the right forearm node 42p and the position P2 with a predetermined weight may be determined as the initial position of the right forearm node 42p.
- the weight may be determined based on the length between the current position of the right-hand node 42c and the position T2, which is associated with the speed of the tracker 12c. For example, as the length between the current position of the right-hand node 42c and the position T2 is shorter, a position closer to the current position of the right forearm node 42p may be determined as the initial position of the right forearm node 42p. By doing so, it is possible to avoid a situation in which the elbow of the player object moves largely when the player rotates only the wrist, for example.
- the direction A3 is specified.
- the length d4 is the length of the bone 44t.
- a position obtained by interpolating the current position of the right calf node 42u and the position P3 may be determined as the initial position of the right calf node 42u.
- the initial positions of the other nodes 42 such as the left forearm node 42m and the left calf node 42r are determined.
- the posture updating unit 56 executes the processes shown in S201 to S208 of FIG. 10, in which the list of the head node 42a, the left-hand node 42b, the right-hand node 42c, the left-foot node 42d, and the right-foot node 42e is used as the argument TNs (S105). .
- the posture updating unit 56 checks whether ni is the root node (pelvis node 42f) (S201). If ni is the root node (S201: Y), the processing loop shown in S201 to S206 is exited.
- the posture updating unit 56 adds ni to the list FNs representing the forward reaching node group in the current loop of the processing of S201 to S206 (S202).
- the posture updating unit 56 updates ni to the parent node 42 of ni (S203).
- the posture updating unit 56 checks whether ni is the node 42 in which the number of child nodes 42 is 2 or more, or the pelvic node 42f which is the root node (S204).
- ni is neither a node 42 in which the number of child nodes 42 is 2 or more nor a root node (S204: N), the process returns to S202.
- the posture update unit 56 adds ni to the list RNs representing the sub-root node group (S205). ).
- the posture update unit 56 executes the process of the forward arrival phase of FABRK described with reference to FIG. 4 on the node 42 included in the FNs (S206).
- the posture update unit 56 confirms whether or not there is the node 42 included in the list RNs (S207).
- the posture updating unit 56 sets the list RNs to the list TNs in the next loop (S208), and the process returns to S201. In this case, ni will be added to the new list FNs when the process of S202 is executed next.
- the first FNs includes, for example, a head node 42a and a neck node 42j.
- the second FNs includes, for example, the left-hand node 42b, the left forearm node 42m, the upper left arm node 42l, and the left clavicle node 42k.
- the third FNs will include, for example, a right-hand node 42c, a right forearm node 42p, an upper right arm node 42o, and a right clavicle node 42n.
- the fourth FNs includes, for example, the left foot node 42d, the left calf node 42r, and the left thigh node 42q.
- the fifth FNs will include, for example, the right foot node 42e, the right calf node 42u, and the right thigh node 42t.
- the list RNs of the sub-root node group in the first loop of the processing shown in S201 to S208 includes the pelvic node 42f, which is the root node, and the third spinal column node 42i. These nodes 42 are the nodes 42 at the nodes in the skeleton model 40.
- the list FNs includes a pelvic node 42f, a first spinal column node 42g, a second spinal column node 42h, and a third spinal column node 42i. Then, in the second loop of the processing shown in S201 to S208, the sub-root node group list RNs becomes empty.
- the posture updating unit 56 executes the processing shown in S301 to S309 in FIG. 11 (S106).
- the processing shown in S301 to S309 is executed with each of the nodes 42 (sub root nodes) included in the list RNs in the first loop of the processing shown in S201 to S208 as an argument.
- the processes shown in S301 to S309 are executed twice.
- the processing shown in S301 to S309 is executed for the node 42 on which the processing shown in S105 has been executed. Therefore, for example, the left ball of thumb ball 42s and the right ball of thumb ball 42v are not included in the skeleton model 40, and the processes shown in S301 to S309 are executed.
- the posture updating unit 56 sets a sub-root node as an argument in the element n (S301).
- the posture updating unit 56 adds n to the list BNs representing the backward reaching node group (S302).
- the posture updating unit 56 confirms whether or not n is the node 42 in which the number of child nodes 42 is 1 (S303).
- n is the node 42 in which the number of child nodes 42 is 1 (S303: Y)
- the posture update unit 56 updates n to the child node 42 of n (S304), and indicates S302. Return to processing.
- the posture update unit 56 sets the node 42 included in BNs to the rear side of FABRIK described with reference to FIG.
- the process of the arrival phase is executed (S305). If the number of nodes 42 included in the BNs is 1, the process of the backward arrival phase is not executed.
- the posture updating unit 56 confirms whether or not n is the node 42 in which the number of child nodes 42 is 2 or more (S306).
- n is the node 42 in which the number of child nodes 42 is 2 or more (S306: Y)
- the posture updating unit 56 executes the route transform process (S307).
- the route transform process shown in S307 refers to, for example, a process of updating the postures of some of the nodes 42 included in the skeleton model 40.
- n is the node 42 in which the number of child nodes 42 is 2 or more
- n is the node 42 of the node included in the skeleton model 40.
- the positions and orientations of the plurality of nodes 42 including the node 42 of the node may be updated so as to match the relative positions and orientations in the basic posture.
- the postures of the third spinal column node 42i, the left clavicle node 42k, and the right clavicle node 42n may be updated based on the third spinal column node 42i.
- the rotation of the left upper arm node 42l based on the basic posture with the bone 44c connecting the third spinal column node 42i and the second spinal column node 42h as an axis is specified. May be done.
- the rotation of the upper right arm node 42o based on the basic posture with the bone 44c as an axis may be specified.
- the quaternion spherical linear interpolation is executed to update the postures of the third spinal column node 42i, the left clavicle node 42k, and the right clavicle node 42n.
- the postures of the pelvis node 42f, the left thigh node 42q, and the right thigh node 42t may be updated based on the pelvis node 42f.
- the initial position determination unit 54 determines the initial positions of some nodes 42 included in the skeleton model 40 (S308). For example, it is assumed that the postures of the third spinal column node 42i, the left clavicle node 42k, and the right clavicle node 42n have been updated in the process shown in S307. In this case, the initial positions of the upper right arm node 42o, the upper left arm node 42l, the neck node 42j, and the second spinal column node 42h are based on the updated attitudes of these nodes 42 and the basic attitude of the skeleton model 40. It is determined.
- the initial positions of these nodes 42 may be determined such that the positions and orientations are based on the third spinal column node 42i that is the sub-root node in the basic posture.
- the postures of the pelvic node 42f, the left thigh node 42q, and the right thigh node 42t are updated by the processing shown in S307.
- the initial position of the first spinal column node 42g may be determined based on the updated postures of the nodes 42 and the basic posture of the skeleton model 40.
- the initial position of the first spinal column node 42g may be determined such that the position and orientation are based on the pelvic node 42f that is the sub-root node in the basic posture.
- n is not the node 42 in which the number of child nodes 42 is 2 or more (S306: N)
- the process of S309 in the sub-root node is ended. That is, when n is the terminal node 42 in the skeleton model 40 for which the processing shown in S301 to S309 is executed, the processing shown in S309 in the sub-root node is ended.
- the process of the rear reaching phase is executed for the pelvis node 42f, the left thigh node 42q, the left calf node 42r, and the left foot node 42d.
- the process of the rear reaching phase is executed for the pelvis node 42f, the right thigh node 42t, the right calf node 42u, and the right foot node 42e.
- the process of the posterior reaching phase is executed for the pelvic node 42f, the first spinal column node 42g, the second spinal column node 42h, and the third spinal column node 42i.
- the process of the rear reaching phase is executed for the third spinal column node 42i, the neck node 42j, and the head node 42a.
- the processing of the rear reaching phase is executed for the third spinal column node 42i, the left clavicle node 42k, the left upper arm node 42l, the left forearm node 42m, and the left hand node 42b.
- the process of the rear reaching phase is executed for the third spinal column node 42i, the right clavicle node 42n, the upper right arm node 42o, the right forearm node 42p, and the right hand node 42c.
- the posture update unit 56 confirms whether or not the position error at the target node is equal to or less than a predetermined threshold value (S107).
- a predetermined threshold value for example, it is confirmed whether or not the total length between the position of the node 42 and the position to which the node 42 specified based on the measurement result of the tracker 12 should move is less than or equal to a predetermined threshold value. To be done.
- the posture update unit 56 executes the same process as the process shown in S105 (S108). Then, the posture updating unit 56 executes the same process as the process shown in S106 (S109). Then, the process returns to S107. In the processing shown in S108 and S109, the above list may be reused.
- the posture updating unit 56 updates the posture of the node 42 whose posture is undecided. Yes (S110). It should be noted that, if the process shown in S108 and the process shown in S109 are executed a predetermined number of times, the process shown in S110 may be executed even if the position error at the target node is not less than or equal to the predetermined threshold value. Good.
- the postures of the left ball of the ball 42s and the right ball of the ball 42v are updated.
- the posture of the left ball of the ball 42s may be updated such that the relative posture based on the posture of the left foot node 42d becomes the relative posture in the basic posture.
- the posture of the right ball of the thumb node 42v may be updated such that the relative posture based on the posture of the right foot node 42e becomes the relative posture in the basic posture.
- the posture updating unit 56 updates the orientation of the bone 44 and the rotation of the node 42 (S111), and returns to the processing shown in S101. Then, the processing shown in S101 to S111 is executed based on the posture data indicating the position and the orientation of the tracker 12 at the latest specific timing newly acquired. In this way, the processing shown in S101 to S111 is repeatedly executed.
- the orientation of the bone 44 can be uniquely specified based on the positions of the nodes 42 at both ends of the bone 44.
- the rotation about the bone 44 cannot be known from the positions of the nodes 42 at both ends of the bone 44.
- the posture updating unit 56 determines the rotation of the tracker 12b or the tracker 12c indicated by the posture data by determining the component of the bending of the wrist with respect to the arm, the component of the rotation of the arm with respect to the basic posture, and the direction of the arm. Separated into components of rotation about the axis.
- a component of rotation about the direction along the bone 44m in the right-hand node 42c as an axis is shown as Qroll1.
- the posture updating unit 56 determines the rotation of the upper arm or the forearm based on the rotation around the arm direction.
- the rotation component about the bone 44m of the right-hand node 42c is the rotation Qroll2 about the arm direction of the right forearm node 42p and the rotation about the arm direction of the upper right arm node 42o. Determined as Qroll3.
- the rotation component of the left-hand node 42b about the bone 44i is determined as the rotation about the arm direction of the left forearm node 42m and the upper left arm node 42l.
- an upper limit such as 60 degrees may be set in advance for the difference between Qroll1 and Qroll2 and the difference between Qroll2 and Qroll3.
- a value obtained by multiplying the value of Qroll1 by a predetermined coefficient of 1 or less may be set as the value of Qroll2.
- a value obtained by multiplying the value of Qroll2 by a predetermined coefficient of 1 or less may be set as the value of Qroll3.
- the posture data acquisition unit 52 acquires the posture data indicating the posture of the target node included in the tree-structured skeleton model 40 in the process shown in S101. Then, in the processing shown in S104, the initial position determination unit 54 determines the position to which the target node should move based on the posture data. Then, in the process shown in S104, the initial position determination unit 54 determines the initial position of the parent node 42 of the target node in the FABRK calculation based on the position to which the target node should move and the given posture of the skeleton model 40. To decide. Further, in the processing shown in S308, the initial position determination unit 54 determines the initial positions of some of the nodes 42 based on the position to which the target node should move and the given posture of the skeleton model 40.
- a position away from the position T2 to which the right-hand node 42c should be moved by the length d1 in the direction opposite to the direction A2 along the direction A2 is given as the initial position of the right forearm node 42p.
- Equivalent to the posture for example, a position separated by a length d4 from the position T3 in the direction rotated by a predetermined angle (for example, 90 degrees) about the left-right direction when the direction A3 is the reference direction is the initial position of the right calf node 42u.
- a predetermined angle for example, 90 degrees
- given positions and orientations based on the root node in the basic posture are the upper right arm node 42o, the upper left arm node 42l, the neck node 42j, the second spinal column node 42h, and the initial position of the first spinal column node 42g. It corresponds to a given posture.
- the posture updating unit 56 determines the new position of the parent node 42 based on the position to which the target node should move and the initial position of the parent node 42 of the target node. Perform FABRik calculation including decision. As a result, the posture of the skeleton model 40 is updated.
- the joint is not bent in a natural direction, and there is less risk that the posture is determined to be unsuitable for the human body.
- the validity of the determination result of the posture of the skeleton model 40 can be improved.
- the posture data acquisition unit 52 acquires posture data indicating the posture of the target node included in the skeleton model 40 having a tree structure. Then, in the processing shown in S102 to S109, the posture updating unit 56 updates the posture of the skeleton model 40 by executing FABRK calculation including determination of a new position of the parent node 42 of the target node. Then, in the process shown in S111, the posture update unit 56 specifies the rotation of the target node about the bone 44 connecting the target node and the parent node 42 of the target node as an axis, based on the posture data. Then, in the process shown in S111, the posture update unit 56 determines the rotation of the parent node 42 of the target node based on the rotation of the target node.
- the posture data acquisition unit 52 causes the posture of the first target node included in the tree-structured skeleton model 40 and the plurality of nodes 42 including the second target node.
- the posture data indicating the posture of the is acquired.
- the posture update unit 56 performs the forward arrival phase process in the FABRK calculation on the first node group including the first target node and connected to each other, based on the posture data.
- the posture of the node group of No. 1 is updated.
- the posture update unit 56 performs processing on the second node group including the second target node, which is connected to each other, by the process of the forward arrival phase in the FABRK calculation. Update your posture.
- the posture updating unit 56 updates the postures of the plurality of nodes 42 after updating the first node group and the second node group.
- the plurality of nodes 42 include the node 42 included in the first node group and closest to the node included in the skeleton model 40, and the node 42 included in the second node group included in the skeleton model 40. And the node 42 closest to the node.
- the attitude updating unit 56 updates the attitude of the skeleton model 40 by the processing of the backward arrival phase in the FABRK calculation.
- the overall postures of the plurality of nodes 42 near the nodal point of the tree-structured skeleton model 40 in which the overall posture should not be significantly distorted, for example, from the chest to the shoulders. Can be prevented from being greatly distorted.
- the validity of the determination result of the posture of the skeleton model 40 can be improved.
- the present invention is not limited to the above embodiment.
- the application range of the present invention is not limited to updating the posture of the skeleton model 40 in real time according to the actual movement of the tracker 12.
- the present invention may be applied to a scene in which the skeleton model 40 and a player object corresponding to the skeleton model 40 are reproduced based on a time series of a series of posture data recorded in advance in the entertainment apparatus 14. Good.
- the tracker 12a may be a head mounted display (HMD).
- HMD head mounted display
- an image may be displayed on the display unit of the HMD, for example, according to the result of various kinds of processing such as game processing according to the positions or orientations of a plurality of parts included in the user.
- a collision may occur between the player object corresponding to the skeleton model 40 and another object such as an obstacle such as a wall or another player object.
- the attitude of the skeleton model 40 is updated by executing the IK calculation considering the influence of the collision.
- the initial position determination unit 54 monitors the occurrence of the above-mentioned collision in the game processing. During this period, the above-described processing of S101 to S112 is repeatedly executed.
- the initial position determination unit 54 specifies the position to be moved according to the influence of the collision, for one or a plurality of nodes in which the collision has occurred.
- a dynamic effector node one or a plurality of nodes in which collision has occurred will be referred to as a dynamic effector node.
- physical quantities such as the position, posture, velocity, acceleration, angular velocity, force, and impact of the dynamic effector node, which are associated with the influence of collision, are specified.
- the position to which the dynamic effector node should move is specified.
- the posture of the skeleton model 40 is updated by executing FABRK calculation based on the position to which the dynamic effector node should move.
- the above-described position to be moved is set as the initial position for the dynamic effector node, and then the processes shown in S105 to S112 are executed.
- the target node node 42 may be a dynamic effector node.
- a position obtained by interpolating the position to be moved of the node 42 based on the posture data generated by the tracker 12 and the position to be moved according to the influence of collision is set as the initial position of the node 42. May be.
- the weight corresponding to the influence of collision may be specified. Then, the above-mentioned interpolation may be performed by the weight.
- the node 42 on which the above-mentioned route transform process is executed may be a dynamic effector node.
- the node 42 on which the above-mentioned route transform process is executed may be a dynamic effector node.
- the node 42 whose posture is updated by the route transform process together with the node 42 may be set with the initial position in which the influence of collision is taken into consideration.
- the initial position determination unit 54 monitors the occurrence of the above-mentioned collision in the game processing. During this period, the above-described processing of S101 to S112 is repeatedly executed.
- the initial position determination unit 54 specifies the position to which the dynamic effector node should move. Then, the position to be moved is set as the initial position of the dynamic effector node.
- the posture updating unit 46 updates the posture of the skeleton model 40 by executing the FABRIK calculation including the process of the forward arrival phase in the FABRIK calculation divided by the dynamic effector node.
- the right forearm node 42p is a dynamic effector node.
- the process of the front reaching phase is performed on the right forearm node 42p, the right upper arm node 42o, and the right clavicle node 42n. Will be executed.
- the process of the forward arrival phase may be executed. If the node 42 whose initial position is determined in the process of S308 is a dynamic effector node, the initial position determination process of S308 may not be executed for the node 42.
- the node 42 of the right finger may be provided ahead of the right-hand node 42c. Then, in such a case, for example, a collision may occur in which the finger of the player object contacts the object on the desk. In this case, the node 42 of the right finger becomes the dynamic effector node. For example, in such a case, the FABRIK calculation divided by the right-hand node 42c may be executed. In this case, it is possible to prevent the finger of the player object from falling into the object on the desk. In this way, in the second implementation example, the FABRK calculation divided by the target node may be executed.
- the posture of the skeleton model 40 may be updated by executing an IK calculation that is divided by one or a plurality of dynamic effector nodes other than the FABRK calculation.
- the initial position determination unit 54 monitors the occurrence of the above-mentioned collision in the game processing. During this period, the above-described processing of S101 to S112 is repeatedly executed.
- the initial position determination unit 54 specifies the position to which the dynamic effector node should move. Then, the position to be moved is set as the initial position of the dynamic effector node.
- the posture updating unit 56 executes the process of the backward reaching phase with the dynamic effector node as the root node.
- the process of the backward reaching phase with each dynamic effector node as the root node is sequentially executed.
- the initial position determination unit 54 determines that the target node that is one or more given nodes 42 included in the skeleton model 40 is Identify the position to move. Then, the posture updating unit 56 updates the posture of the skeleton model 40 by executing FABRIK calculation based on the position to which the target node should move.
- the target node does not have to be plural, and may be one.
- the posture updating unit 56 executes the FABRIK calculation in which the influence of the collision with respect to the one or a plurality of dynamic effector nodes is taken into consideration, so that the skeleton model 40 Update the attitude of.
- the posture updating unit 56 executes the FABRik calculation in which the initial position is the position to be moved according to the influence of the collision that has occurred in one or more dynamic effector nodes, and thus the skeleton The posture of the model 40 is updated.
- the first implementation example is suitable in a situation where it is desirable to prioritize the posture of the tracker 12 over the influence of the collision that has occurred, such as when a collision with a light object has occurred.
- the posture updating unit 56 updates the posture of the skeleton model 40 by executing the IK calculation divided by each of the one or more dynamic effector nodes.
- the second implementation example is suitable in a situation where the priority of the influence of the generated collision and the posture of the tracker 12 are equal, for example, when a collision with a wall object occurs.
- the posture updating unit 56 further performs further IK in which each of the one or more dynamic effector nodes is set as a root node after the above-described updating based on the position to which the one or more target nodes should move.
- the posture of the skeleton model 40 is updated by executing the calculation.
- the third implementation example is suitable in a situation where it is desirable to prioritize the influence of the collision that has occurred over the posture of the tracker 12, such as when a collision with a heavy object has occurred.
- the dynamic effector node may be affected by collision for a long time.
- the impact may affect the dynamic effector node for a long time.
- the FABRIK calculation considering the effect of the occurrence of collision as described above may be continuously executed.
- the processing of the first implementation example, the processing of the second implementation example, or the processing of the third implementation example described above is executed, so that the skeleton
- the posture of the model 40 may be updated. For example, assume that a collision has occurred between another object and the player object. In this case, the process of the first implementation example is executed when the weight associated with the other object is lighter than the predetermined weight, and the process of the third implementation example is executed when the weight associated with the other object is heavier than the predetermined weight. You may do it. Further, for example, the process of the second implementation example may be executed when a collision occurs between a player object and a predetermined object such as a wall, a table, or a floor.
- the entertainment apparatus 14 includes a display control unit that causes the display unit to display an image after the IK calculation in which the influence of collision on the dynamic effector node is added is executed and the posture of the skeleton model 40 is updated. It may be further equipped. Further, the display control unit may cause the display unit to display an image corresponding to at least one of the position and the orientation of the updated head node 42a, for example. Further, when the tracker 12a is a head mounted display (HMD), the display control unit causes the display unit of the HMD to display an image corresponding to at least one of the updated position and orientation of the head node 42a. You may The display control unit may be mounted mainly with the control unit 30 and the input / output unit 36. Further, some or all of the functions of the display control unit may be implemented by the tracker 12.
- a display control unit that causes the display unit to display an image after the IK calculation in which the influence of collision on the dynamic effector node is added is executed and the posture of the skeleton model 40 is updated. It may be further
- the posture update unit 46 may execute an IK calculation that considers the influence of the collision with respect to the dynamic effector node, other than the FABRIK calculation.
- IK calculation may be executed in consideration of the influence of the occurrence of collision as described above.
- the above-described IK calculation is executed when an animation representing a state in which a player object moves in accordance with the skeleton model 40 is generated based on a time series of a series of posture data and motion data recorded in advance in the entertainment device 14. May be done.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Human Computer Interaction (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Psychiatry (AREA)
- Social Psychology (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Processing Or Creating Images (AREA)
Abstract
コリジョンが発生した際のスケルトンモデルの動きを従来よりも自然なものとすることができるスケルトンモデル更新装置、スケルトンモデル更新方法及びプログラムを提供する。初期位置決定部(54)は、スケルトンモデルに含まれる1又は複数の所与のノードが移動すべき位置を特定する。姿勢更新部(56)は、1又は複数の所与のノードが移動すべき位置に基づいて逆運動学計算を実行することでスケルトンモデルの姿勢を更新する。スケルトンモデルに含まれる1又は複数のノードに対するコリジョンが発生した際には、姿勢更新部(56)は、当該1又は複数のノードに対する当該コリジョンの影響を加味した逆運動学計算を実行することで、スケルトンモデルの姿勢を更新する。
Description
本発明は、スケルトンモデル更新装置、スケルトンモデル更新方法及びプログラムに関する。
複数のトラッカーを装着するユーザの動きに応じて、画面に表示されているプレイヤオブジェクトが動くゲームが存在する。このようなゲームにおいては、例えば、ユーザが装着する複数のトラッカーの姿勢を示すデータに基づいて、各トラッカーに対応付けられる所与のノードが移動すべき位置が特定される。そして所与のノードが移動すべき位置に基づいて、逆運動学(IK)計算により当該ユーザに対応付けられるスケルトンモデルの姿勢が更新される。そしてスケルトンモデルの姿勢の更新に応じて、画面に表示されている当該スケルトンモデルに応じたプレイヤオブジェクトが更新される。
このようなゲームのプレイ中に、プレイヤオブジェクトと、壁などの障害物や他のプレイヤオブジェクトなどといった他のオブジェクトと、のコリジョンが発生することがある。このようなコリジョンが発生した際には、発生したコリジョンによる影響を考慮してスケルトンモデルの姿勢を更新する必要がある。
しかし従来技術では、このようなコリジョンが発生した際には、IK計算の代わりに、あるいは、IK計算の結果を無視して、コリジョンの影響をスケルトンモデルの姿勢に反映させる処理が実行されていた。その結果、スケルトンモデルの動きが不自然なものとなることがあった。
また所与のノードが移動すべき位置に基づいてIK計算によりユーザに対応付けられるスケルトンモデルの姿勢を更新することは、例えばアニメーションを制作する場面などといったゲーム以外の場面においても行われている。このようなゲーム以外の場面においても上述したような、発生したコリジョンによる影響を考慮したスケルトンモデルの姿勢の更新が必要なことがある。
本発明は上記課題に鑑みてなされたものであって、その目的の1つは、コリジョンが発生した際のスケルトンモデルの動きを従来よりも自然なものとすることができるスケルトンモデル更新装置、スケルトンモデル更新方法及びプログラムを提供することにある。
上記課題を解決するために、本発明に係るスケルトンモデル更新装置は、スケルトンモデルに含まれる1又は複数の所与のノードが移動すべき位置を特定する位置特定部と、前記1又は複数の所与のノードが移動すべき位置に基づいて逆運動学計算を実行することで前記スケルトンモデルの姿勢を更新する姿勢更新部と、を含み、前記スケルトンモデルに含まれる1又は複数のノードに対するコリジョンが発生した際には、前記姿勢更新部は、当該1又は複数のノードに対する当該コリジョンの影響を加味した前記逆運動学計算を実行することで、前記スケルトンモデルの姿勢を更新する。
本発明の一態様では、前記姿勢更新部は、前記コリジョンが発生した前記1又は複数のノードについての当該コリジョンの影響に応じた移動すべき位置に基づいて前記逆運動学計算を実行することで、前記スケルトンモデルの姿勢を更新する。
この態様では、前記姿勢更新部は、前記コリジョンが発生した前記1又は複数のノードについての当該コリジョンの影響に応じた移動すべき位置を初期位置とする前記逆運動学計算を実行することで、前記スケルトンモデルの姿勢を更新してもよい。
また、本発明の一態様では、前記姿勢更新部は、前記コリジョンが発生した前記1又は複数のノードのそれぞれで分断された前記逆運動学計算を実行することで、前記スケルトンモデルの姿勢を更新する。
また、本発明の一態様では、前記姿勢更新部は、前記1又は複数の所与のノードが移動すべき位置に基づいて前記逆運動学計算を実行することで前記スケルトンモデルの姿勢を更新した後に、前記コリジョンが発生した前記1又は複数のノードのそれぞれをルートノードとするさらなる逆運動学計算を実行することで、前記スケルトンモデルの姿勢を更新する。
また、本発明の一態様では、前記姿勢更新部は、前記コリジョンの性質に応じて、前記コリジョンが発生した前記1又は複数のノードについての当該コリジョンの影響に応じた移動すべき位置を初期位置とする前記逆運動学計算、前記コリジョンが発生した前記1又は複数のノードのそれぞれで分断された前記逆運動学計算、又は、前記1又は複数の所与のノードが移動すべき位置に基づいて前記逆運動学計算を実行することによる前記スケルトンモデルの姿勢の更新と当該更新の後の前記コリジョンが発生した前記1又は複数のノードのそれぞれをルートノードとするさらなる逆運動学計算とを含む処理、のいずれかを実行することで、前記スケルトンモデルの姿勢を更新する。
また、本発明の一態様では、前記コリジョンが発生した前記1又は複数のノードに対する当該コリジョンの影響を加味した前記逆運動学計算が実行されて前記スケルトンモデルの姿勢が更新された後の、前記スケルトンモデルに含まれるユーザの頭部に相当するノードの位置又は向きの少なくとも一方に応じた映像を表示部に表示させる表示制御部、をさらに含む。
この態様では、前記表示制御部は、ヘッドマウントディスプレイの表示部に前記映像を表示させてもよい。
また、本発明に係るスケルトンモデル更新方法は、スケルトンモデルに含まれる1又は複数の所与のノードが移動すべき位置を特定する位置特定ステップと、前記1又は複数の所与のノードが移動すべき位置に基づいて逆運動学計算を実行することで前記スケルトンモデルの姿勢を更新する姿勢更新ステップと、を含み、前記スケルトンモデルに含まれる1又は複数のノードに対するコリジョンが発生した際には、前記姿勢更新ステップでは、当該1又は複数のノードに対する当該コリジョンの影響を加味した前記逆運動学計算を実行することで、前記スケルトンモデルの姿勢を更新する。
また、本発明に係るプログラムは、スケルトンモデルに含まれる1又は複数の所与のノードが移動すべき位置を特定する位置特定手順、前記1又は複数の所与のノードが移動すべき位置に基づいて逆運動学計算を実行することで前記スケルトンモデルの姿勢を更新する姿勢更新手順、をコンピュータに実行させ、前記スケルトンモデルに含まれる1又は複数のノードに対するコリジョンが発生した際には、前記姿勢更新手順では、当該1又は複数のノードに対する当該コリジョンの影響を加味した前記逆運動学計算を実行することで、前記スケルトンモデルの姿勢を更新する。
図1は、本発明の一実施形態に係るエンタテインメントシステム10の構成の一例を示す図である。図2は、本実施形態に係るエンタテインメント装置14の構成の一例を示す図である。
図1に示すように、本実施形態に係るエンタテインメントシステム10は、複数のトラッカー12(図1の例ではトラッカー12a~12e)とエンタテインメント装置14と中継装置16とディスプレイ18とカメラマイクユニット20とを含んでいる。
本実施形態に係るトラッカー12は、例えば、当該トラッカー12の位置や向きを追跡するためのデバイスである。ここでトラッカー12が、例えばカメラ、慣性センサ(IMU)、地磁気センサ(方位センサ)、加速度センサ、モーションセンサ、GPS(Global Positioning System)モジュールなどといった各種センサを備えていてもよい。そしてトラッカー12は、当該トラッカー12が備えるセンサによる計測結果であるセンシングデータに基づいて、当該トラッカー12の姿勢を特定してもよい。
また例えば、後述するカメラマイクユニット20に含まれるカメラ20aが撮影する、トラッカー12の像が含まれる画像に基づいて、当該トラッカー12の姿勢が特定されてもよい。
本実施形態ではトラッカー12a、トラッカー12b、トラッカー12c、トラッカー12d、トラッカー12eは、それぞれ、ユーザの頭部、左手、右手、左足、右足に装着される。ここで図1に示すようにトラッカー12bやトラッカー12cはユーザによって手で把持されるものであってもよい。本実施形態ではトラッカー12a、トラッカー12b、トラッカー12c、トラッカー12d、トラッカー12eによって特定される姿勢は、それぞれ、ユーザの頭部、左手、右手、左足、右足の姿勢に相当する。このように本実施形態では複数のトラッカー12によって、ユーザの体に含まれる複数の部位の姿勢が特定されることとなる。
本実施形態に係るエンタテインメント装置14は、例えばゲームコンソール、DVDプレイヤ、Blu-ray(登録商標)プレイヤなどといったコンピュータである。本実施形態に係るエンタテインメント装置14は、例えば記憶されている、あるいは、光ディスクに記録された、ゲームプログラムの実行やコンテンツの再生などによって映像や音声を生成する。そして本実施形態に係るエンタテインメント装置14は、生成される映像を表す映像信号や生成される音声を表す音声信号を、中継装置16を経由してディスプレイ18に出力する。
本実施形態に係るエンタテインメント装置14には、例えば図2に示すように、プロセッサ30、記憶部32、通信部34、入出力部36が含まれる。
プロセッサ30は、例えばエンタテインメント装置14にインストールされるプログラムに従って動作するCPU等のプログラム制御デバイスである。本実施形態に係るプロセッサ30には、CPUから供給されるグラフィックスコマンドやデータに基づいてフレームバッファに画像を描画するGPU(Graphics Processing Unit)も含まれている。
記憶部32は、例えばROMやRAM等の記憶素子やハードディスクドライブなどである。記憶部32には、プロセッサ30によって実行されるプログラムなどが記憶される。また、本実施形態に係る記憶部32には、GPUにより画像が描画されるフレームバッファの領域が確保されている。
通信部34は、例えば無線LANモジュールなどの通信インタフェースなどである。
入出力部36は、HDMI(登録商標)(High-Definition Multimedia Interface)ポート、USBポートなどの入出力ポートである。
本実施形態に係る中継装置16は、エンタテインメント装置14から出力される映像信号や音声信号を中継してディスプレイ18に出力するコンピュータである。
本実施形態に係るディスプレイ18は、例えば液晶ディスプレイ等であり、エンタテインメント装置14から出力される映像信号が表す映像などを表示させる。
本実施形態に係るカメラマイクユニット20は、例えば被写体を撮像した画像をエンタテインメント装置14に出力するカメラ20a及び周囲の音声を取得して当該音声を音声データに変換してエンタテインメント装置14に出力するマイク20bを含んでいる。また本実施形態に係るカメラ20aはステレオカメラである。
トラッカー12と中継装置16とは、例えば、無線によるデータの送受信が互いに可能になっている。エンタテインメント装置14と中継装置16とは、例えば、HDMIケーブルやUSBケーブルなどを介して接続されており、データの送受信が互いに可能になっている。中継装置16とディスプレイ18とは、例えば、HDMIケーブルなどを介して接続されている。エンタテインメント装置14とカメラマイクユニット20とは、例えば、AUXケーブルなどを介して接続されている。
本実施形態では例えば、エンタテインメント装置14によってゲームプログラムが実行されている際に、図3に示すスケルトンモデル40における、ユーザの体に含まれる複数の部位の姿勢に応じたゲーム処理等の各種の処理が実行される。そして当該処理の結果に応じた映像が例えばディスプレイ18に表示される。例えばスケルトンモデル40の姿勢に応じたプレイヤオブジェクトのポリゴンモデルの映像がディスプレイ18に表示される。
図3に示すように、本実施形態に係るスケルトンモデル40には、頭部ノード42a、左手ノード42b、右手ノード42c、左足ノード42d、右足ノード42eが含まれている。頭部ノード42aは、トラッカー12aが装着されるユーザの頭部に相当する。左手ノード42bは、トラッカー12bが装着されるユーザの左手に相当する。右手ノード42cは、トラッカー12cが装着されるユーザの右手に相当する。左足ノード42dは、トラッカー12dが装着されるユーザの左足に相当する。右足ノード42eは、トラッカー12eが装着されるユーザの右足に相当する。
またスケルトンモデル40には、上記のノード42の他に、骨盤ノード42f、第1脊柱ノード42g、第2脊柱ノード42h、第3脊柱ノード42i、首ノード42jが含まれる。本実施形態では例えば、骨盤ノード42fが、スケルトンモデル40全体におけるルートノードの役割を担う。
またスケルトンモデル40には、さらに、左鎖骨ノード42k、左上腕ノード42l、左前腕ノード42m、右鎖骨ノード42n、右上腕ノード42o、右前腕ノード42pが含まれている。
またスケルトンモデル40には、さらに、左大腿部ノード42q、左ふくらはぎノード42r、左母指球ノード42s、右大腿部ノード42t、右ふくらはぎノード42u、右母指球ノード42vが含まれている。
ここで図3に示すように、骨盤ノード42fと第1脊柱ノード42gとの間はボーン44aで接続されている。また第1脊柱ノード42gと第2脊柱ノード42hとの間はボーン44bで接続されている。また第2脊柱ノード42hと第3脊柱ノード42iとの間はボーン44cで接続されている。また第3脊柱ノード42iと首ノード42jとの間はボーン44dで接続されている。また首ノード42jと頭部ノード42aとの間はボーン44eで接続されている。
そして第3脊柱ノード42iと左鎖骨ノード42kとの間はボーン44fで接続されている。また左鎖骨ノード42kと左上腕ノード42lとの間はボーン44gで接続されている。また左上腕ノード42lと左前腕ノード42mとの間はボーン44hで接続されている。また左前腕ノード42mと左手ノード42bとの間はボーン44iで接続されている。
そして第3脊柱ノード42iと右鎖骨ノード42nとの間はボーン44jで接続されている。また右鎖骨ノード42nと右上腕ノード42oとの間はボーン44kで接続されている。また右上腕ノード42oと右前腕ノード42pとの間はボーン44lで接続されている。また右前腕ノード42pと右手ノード42cとの間はボーン44mで接続されている。
そして骨盤ノード42fと左大腿部ノード42qとの間はボーン44nで接続されている。また左大腿部ノード42qと左ふくらはぎノード42rとの間はボーン44oで接続されている。また左ふくらはぎノード42rと左足ノード42dとの間はボーン44pで接続されている。また左足ノード42dと左母指球ノード42sとの間はボーン44qで接続されている。
そして骨盤ノード42fと右大腿部ノード42tとの間はボーン44rで接続されている。また右大腿部ノード42tと右ふくらはぎノード42uとの間はボーン44sで接続されている。また右ふくらはぎノード42uと右足ノード42eとの間はボーン44tで接続されている。また右足ノード42eと右母指球ノード42vとの間はボーン44uで接続されている。
図3には、初期状態におけるスケルトンモデル40である、基本姿勢の(ここでは例えば、脚を開き腕を斜め下に下した、いわゆるAポーズの)スケルトンモデル40が示されている。
そして本実施形態では例えば、複数のトラッカー12について特定される姿勢に基づくボディトラッキングが行える。ここでは例えば、スケルトンモデル40に含まれる複数のノード42のそれぞれについての、初期状態における基準の位置に対する位置及び初期状態における基準の向きに対する向きの決定が実行される。またスケルトンモデル40に含まれる複数のボーン44のそれぞれについての、初期状態における基準の向きに対する向きの決定が実行される。
ここで例えば、トラッカー12aについて特定される姿勢を示すデータに基づいて、頭部ノード42aの姿勢は決定できる。同様に、トラッカー12bについて特定される姿勢を示すデータに基づいて、左手ノード42bの姿勢は決定できる。また、トラッカー12cについて特定される姿勢を示すデータに基づいて、右手ノード42cの姿勢は決定できる。また、トラッカー12dについて特定される姿勢を示すデータに基づいて、左足ノード42dの姿勢は決定できる。また、トラッカー12eについて特定される姿勢を示すデータに基づいて、右足ノード42eの姿勢は決定できる。
また、骨盤ノード42fの姿勢の決定も、例えば決定される頭部ノード42aの姿勢に基づいて可能である。ここで例えば、トラッカー12a~トラッカー12eについて特定される姿勢に基づいて、学習済の機械学習モデルを用いた骨盤ノード42fの姿勢の推定が実行されてもよい。また同様に、第3脊柱ノード42iの姿勢の決定も可能である。
そして以上の決定結果や推定結果に基づいて、前方後方到達逆運動学(FABRIK)計算によって、残りのノード42の位置及び向きやボーン44の向きを決定することが考えられる。ここでは例えば、頭部ノード42a、左手ノード42b、右手ノード42c、左足ノード42d、及び、右足ノード42eが、FABRIKにおけるエフェクタに相当することとなる。そしてエフェクタの運動に応じて、スケルトンモデル40に含まれるノード42の位置及び向きやボーン44の向きが決定される。
図4、及び、図5は、FABRIK計算の一例を模式的に示す図である。図4、及び、図5では、一例として、右手ノード42c、右鎖骨ノード42n、右上腕ノード42o、及び、右前腕ノード42pについて実行されるFABRIK計算が示されている。
図4では、スケルトンモデル40における右手ノード42c、右鎖骨ノード42n、右上腕ノード42o、及び、右前腕ノード42pの現在の位置がそれぞれP(c1)、P(n1)、P(o1)、P(p1)と示されている。またボーン44m、ボーン44l、ボーン44k、ボーン44jの長さは、それぞれd1、d2、d3であることとする。
この状況でトラッカー12cの計測結果に基づいて、右手ノード42cが移動すべき位置T1が特定されたとする。
以下、FABRIK計算における前方到達フェーズについて図4を参照しながら説明する。
前方到達フェーズでは、まず、右手ノード42cが位置T1に移動する。図4では移動後の右手ノード42cの位置がP(c2)と示されている。そして右前腕ノード42pが、位置P(c2)から位置P(p1)に向かう方向に、位置P(c2)から長さd1だけ離れた位置P(p2)に移動する。そして右上腕ノード42oが、位置P(p2)から位置P(o1)に向かう方向に、位置P(p2)から長さd2だけ離れた位置P(o2)に移動する。そして右鎖骨ノード42nが、位置P(o2)から位置P(n1)に向かう方向に、位置P(o2)から長さd3だけ離れた位置P(n2)に移動する。
このように、FABRIK計算における前方到達フェーズの処理には、トラッカー12に対応付けられるノード42が移動すべき位置と当該ノード42の親のノード42の現在の位置とに基づく当該親のノード42の新たな位置の決定が含まれている。また当該決定は、トラッカー12に対応付けられるノード42と当該親のノード42との間の長さを一定に保つという条件で実行される。以下、トラッカー12に対応付けられるノード42をターゲットノードと呼ぶこととする。
以下、FABRIK計算における後方到達フェーズについて図5を参照しながら説明する。
まず、右鎖骨ノード42nが、位置P(n2)から位置P(n3)に移動する。ここで図5に示す位置P(n3)は、FABRIK計算の開始時における右鎖骨ノード42nの位置P(n1)と同じ位置である。そして右上腕ノード42oが、位置P(n3)から位置P(o2)に向かう方向に、位置P(n3)から長さd3だけ離れた位置P(o3)に移動する。そして右前腕ノード42pが、位置P(o3)から位置P(p2)に向かう方向に、位置P(o3)から長さd2だけ離れた位置P(p3)に移動する。そして右手ノード42cが、位置P(p3)から位置P(c2)に向かう方向に、位置P(p3)から長さd1だけ離れた位置P(c3)に移動する。
そして右手ノード42cの位置と位置T1との間の長さが所定の閾値以下になるまで、前方到達フェーズと後方到達フェーズとが繰り返し実行される。なお右手ノード42cの位置と位置T1との間の長さが所定の閾値以下にならなくても、前方到達フェーズと後方到達フェーズとが所定回数(例えば10回)繰り返し実行されるとFABRIK計算は終了される。
このように、FABRIK計算では簡易なアルゴリズムによってスケルトンモデル40の姿勢が決定される。しかしその結果、関節が自然な方向に曲がらず、人体ではありえないようなスケルトンモデル40の姿勢が決定されることがある。
またFABRIK計算による姿勢の決定では、トラッカー12bやトラッカー12cから腕方向を軸とした手の回転の情報を取得できるにも関わらず、この情報が腕方向を軸とした肘の回転に反映されない。
また木構造のスケルトンモデル40に対するFABRIK計算では、複数のターゲットノードのそれぞれを起点とした、当該ターゲットノードを含むノード群に対して独立した前方到達フェーズの処理を実行する必要がある。そのため例えば胸から肩までのような、全体としての姿勢が大きくゆがむべきではない、木構造のスケルトンモデル40の結節点の近傍の複数のノード42の全体としての姿勢が、前方到達フェーズの処理により大きくゆがむことがある。
以上のように、FABRIK計算を用いたスケルトンモデル40の姿勢の決定において、妥当性が低い結果が得られることがあった。
このことを踏まえ本実施形態では以下のようにして、FABRIK計算を用いたスケルトンモデル40の姿勢の決定結果の妥当性を向上できるようにした。
以下、本実施形態に係るエンタテインメント装置14の機能、及び、本実施形態に係るエンタテインメント装置14で実行される処理についてさらに説明する。
図6は、本実施形態に係るエンタテインメント装置14の機能の一例を示す機能ブロック図である。なお、本実施形態に係るエンタテインメント装置14で、図6に示す機能のすべてが実装される必要はなく、また、図6に示す機能以外の機能が実装されていても構わない。
図6に示すように、本実施形態に係るエンタテインメント装置14には、機能的には例えば、スケルトンモデルデータ記憶部50、姿勢データ取得部52、初期位置決定部54、姿勢更新部56、が含まれる。
スケルトンモデルデータ記憶部50は、記憶部32を主として実装される。姿勢データ取得部52は、プロセッサ30及び入出力部36を主として実装される。初期位置決定部54、姿勢更新部56は、プロセッサ30を主として実装される。
以上の機能は、コンピュータであるエンタテインメント装置14にインストールされた、以上の機能に対応する指令を含むプログラムをプロセッサ30で実行することにより実装されてもよい。このプログラムは、例えば、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等のコンピュータ読み取り可能な情報記憶媒体を介して、あるいは、インターネットなどを介してエンタテインメント装置14に供給されてもよい。
スケルトンモデルデータ記憶部50は、本実施形態では例えば、スケルトンモデル40の姿勢を示すスケルトンモデルデータを記憶する。スケルトンモデルデータには、例えば、複数のノード42のそれぞれの位置を示すデータが含まれていてもよい。またスケルトンモデルデータにはノード42の向きを示すデータが含まれていてもよい。ここで向きを示すデータは例えば三軸方向それぞれについての回転量を示すデータであってもよい。またスケルトンモデルデータには、ボーン44の位置及び向きを示すデータが含まれていてもよい。ボーン44の位置及び向きは、当該ボーン44の両端のノード42の位置に基づいて一意に定まる。
また本実施形態では、スケルトンモデルデータ記憶部50には、最新のスケルトンモデル40の姿勢を示すスケルトンモデルデータが記憶されていることとする。またスケルトンモデルデータ記憶部50には、Aポーズなどの基本姿勢をとる初期状態のスケルトンモデル40の姿勢を示すスケルトンモデルデータも記憶されていることとする。
姿勢データ取得部52は、本実施形態では例えば、所定のサンプリングレートで特定されるトラッカー12a~12eの位置及び向きを示す姿勢データを取得する。ここで例えば、所定のサンプリングレートでトラッカー12が、当該トラッカー12の位置及び向きを示す姿勢データを生成してもよい。そして生成に応じてトラッカー12が、当該トラッカー12が生成した姿勢データを、中継装置16経由でエンタテインメント装置14に送信してもよい。また例えば、カメラマイクユニット20が、所定のサンプリングレートでトラッカー12a~12eの位置及び向きを示す姿勢データを生成してもよい。そして生成に応じてカメラマイクユニット20が、当該カメラマイクユニット20が生成した姿勢データを、エンタテインメント装置14に送信してもよい。
初期位置決定部54は、本実施形態では例えば、姿勢データ取得部52が取得する姿勢データに基づいて、いくつかのノード42の初期位置を決定する。
姿勢更新部56は、本実施形態では例えば、スケルトンモデル40の姿勢を更新する。ここでは例えば、スケルトンモデルデータ記憶部50に記憶されているスケルトンモデルデータが更新される。姿勢更新部56は、姿勢データ取得部52が取得する姿勢データ、及び、初期位置決定部54が決定する初期位置に基づいて、前方後方到達逆運動学(FABRIK)計算によりスケルトンモデル40の姿勢を更新してもよい。
ここで、本実施形態に係るエンタテインメント装置14で行われる処理の流れの一例を、図7に例示するフロー図を参照しながら説明する。
まず、姿勢データ取得部52が、トラッカー12によって生成される最新の特定タイミングにおける当該トラッカー12の位置及び向きを示す姿勢データを取得する(S101)。ここでは例えば、姿勢データ取得部52は、トラッカー12a~12eのそれぞれについての、当該トラッカー12の位置及び向きを示す姿勢データを取得する。
そして、姿勢更新部56が、S101に示す処理で取得された姿勢データに基づいて、骨盤ノード42fの位置及び向きを推定する(S102)。ここで例えば骨盤ノード42fの代わりに、第3脊柱ノード42iの位置及び向きが推定されてもよい。また例えば、骨盤ノード42f及び第3脊柱ノード42iの位置及び向きが推定されてもよい。
そして姿勢更新部56が、S102に示す処理の推定結果に基づいて、スケルトンモデルデータを更新する(S103)。S103に示す処理では例えば、最新のスケルトンモデル40及び初期状態のスケルトンモデル40を回転させる処理が実行される。
そして初期位置決定部54が、スケルトンモデル40に含まれる一部のノード42の初期位置を決定する(S104)。
ここでは例えば図8に示すように、S101に示す処理で取得された姿勢データが示すトラッカー12cの位置に基づいて、ターゲットノードである右手ノード42cが移動すべき位置T2及び右手ノード42cが向くべき向きA2が特定される。そして、向きA2に沿った、向きA2とは逆の向きに、位置T2から長さd1だけ離れた位置P2が、右手ノード42cの親のノード42である右前腕ノード42pの初期位置として決定される。ここで長さd1は、上述のようにボーン44mの長さである。
なおここで右前腕ノード42pの現在の位置と位置P2とを所定の重みにより補間した位置が右前腕ノード42pの初期位置として決定されてもよい。
また当該重みが、トラッカー12cの速度に対応付けられる、右手ノード42cの現在の位置と位置T2との間の長さに基づいて、決定されてもよい。例えば右手ノード42cの現在の位置と位置T2との間の長さが短いほど、右前腕ノード42pの現在の位置に近い位置が右前腕ノード42pの初期位置として決定されるようにしてもよい。このようにすれば例えばプレイヤが手首だけを回転させた場合にプレイヤオブジェクトの肘が大きく動いてしまう事態を避けることができる。
また図9に示すように、例えば、S101に示す処理で取得された姿勢データが示すトラッカー12eの位置に基づいて、ターゲットノードである右足ノード42eが移動すべき位置T3及び右足ノード42eが向くべき向きA3が特定される。そして向きA3を基準の向きとした際の左右方向を軸として所定の角度(例えば90度)回転させた方向に、位置T3から長さd4だけ離れた位置P3が、右足ノード42eの親のノード42である右ふくらはぎノード42uの初期位置として決定される。ここで長さd4は、ボーン44tの長さである。
なお上述の例と同様に右ふくらはぎノード42uの現在の位置と位置P3とを補間した位置が右ふくらはぎノード42uの初期位置として決定されてもよい。
同様にして例えば、左前腕ノード42m、左ふくらはぎノード42r、などといった他のノード42の初期位置が決定される。
そして姿勢更新部56が、頭部ノード42a、左手ノード42b、右手ノード42c、左足ノード42d、右足ノード42eのリストを引数TNsとする、図10のS201~S208に示す処理を実行する(S105)。
ノード42のリストTNsを引数とするS105に示す処理では、TNsに含まれるすべての要素niに対して、以下で説明するS201~S206に示す処理が繰り返し実行される。
まず、姿勢更新部56が、niがルートノード(骨盤ノード42f)であるか否かを確認する(S201)。niがルートノードである場合は(S201:Y)、S201~S206に示す処理のループから抜ける。
niがルートノードでない場合は(S201:N)、姿勢更新部56が、S201~S206に示す処理の今回のループにおける、前方到達ノード群を表すリストFNsにniを追加する(S202)。
そして姿勢更新部56が、niを、niの親のノード42に更新する(S203)。
そして姿勢更新部56が、niが子のノード42の数が2以上であるノード42、又は、ルートノードである骨盤ノード42fであるか否かを確認する(S204)。
niが子のノード42の数が2以上であるノード42でもルートノードでもない場合は(S204:N)、S202に示す処理に戻る。
niが子のノード42の数が2以上であるノード42、又は、ルートノードである場合は(S205:Y)、姿勢更新部56が、サブルートノード群を表すリストRNsにniを追加する(S205)。
そして姿勢更新部56が、FNsに含まれるノード42に対して、図4を参照して説明したFABRIKの前方到達フェーズの処理を実行する(S206)。
TNsに含まれるすべての要素niに対して、S201~S206に示す処理が実行されると、姿勢更新部56が、リストRNsに含まれるノード42があるか否かを確認する(S207)。
リストRNsに含まれるノード42がある場合は(S207:Y)、姿勢更新部56が、リストRNsを次のループにおけるリストTNsに設定して(S208)、S201に示す処理に戻る。この場合、次にS202に示す処理が実行される際には、新たなリストFNsにniが追加されることとなる。
S207に示す処理でリストRNsに含まれるノード42がないことが確認された場合は(S207:N)、S105に示す処理は終了となる。
以上の処理により図3に示すスケルトンモデル40については、S201~S208に示す処理の初回のループにおいて、前方到達ノード群を表すリストFNsが5個生成される。1番目のFNsには例えば、頭部ノード42a、及び、首ノード42jが含まれることとなる。2番目のFNsには例えば、左手ノード42b、左前腕ノード42m、左上腕ノード42l、及び、左鎖骨ノード42kが含まれることとなる。3番目のFNsには例えば、右手ノード42c、右前腕ノード42p、右上腕ノード42o、及び、右鎖骨ノード42nが含まれることとなる。4番目のFNsには例えば、左足ノード42d、左ふくらはぎノード42r、及び、左大腿部ノード42qが含まれることとなる。5番目のFNsには例えば、右足ノード42e、右ふくらはぎノード42u、及び、右大腿部ノード42tが含まれることとなる。
そしてS201~S208に示す処理の初回のループにおけるサブルートノード群のリストRNsには、ルートノードである骨盤ノード42f、及び、第3脊柱ノード42iが含まれる。これらのノード42は、スケルトンモデル40における結節点のノード42である。
そしてS201~S208に示す処理の2回目のループでは前方到達ノード群のリストFNsが1個生成される。当該リストFNsには、骨盤ノード42f、第1脊柱ノード42g、第2脊柱ノード42h、及び、第3脊柱ノード42iが含まれる。そしてS201~S208に示す処理の2回目のループではサブルートノード群のリストRNsは空となる。
S105に示す処理が終了すると、姿勢更新部56が、図11のS301~S309に示す処理を実行する(S106)。
S106に示す処理では、S201~S208に示す処理の初回のループにおけるリストRNsに含まれるすべてのノード42(サブルートノード)のそれぞれを引数とする、S301~S309に示す処理が実行される。ここで上述のようにRNsに含まれるノード42の数が2である場合は、S301~S309に示す処理は2回実行されることとなる。なおS301~S309に示す処理は、S105に示す処理が実行されたノード42に対して実行される。そのため例えば、左母指球ノード42s、及び、右母指球ノード42vについてはスケルトンモデル40に含まれないこととして、S301~S309に示す処理は実行される。
まず、姿勢更新部56が、引数であるサブルートノードを要素nに設定する(S301)。
そして、姿勢更新部56が、後方到達ノード群を表すリストBNsにnを追加する(S302)。
そして、姿勢更新部56が、nが子のノード42の数が1であるノード42であるか否かを確認する(S303)。
nが子のノード42の数が1であるノード42である場合は(S303:Y)、姿勢更新部56が、nを、nの子のノード42に更新して(S304)、S302に示す処理に戻る。
nが子のノード42の数が1であるノード42でない場合は(S303:N)、姿勢更新部56が、BNsに含まれるノード42に対して、図5を参照して説明したFABRIKの後方到達フェーズの処理を実行する(S305)。なおここでBNsに含まれるノード42の数が1である場合は、後方到達フェーズの処理は実行されない。
そして、姿勢更新部56が、nが子のノード42の数が2以上であるノード42であるか否かを確認する(S306)。
nが子のノード42の数が2以上であるノード42である場合は(S306:Y)、姿勢更新部56が、ルートトランスフォームの処理を実行する(S307)。
S307に示すルートトランスフォームの処理とは、例えば、スケルトンモデル40に含まれる一部のノード42の姿勢を更新する処理を指す。nが子のノード42の数が2以上であるノード42である場合は、nはスケルトンモデル40に含まれる結節点のノード42であることとなる。ここで例えば、当該結節点のノード42を含む複数のノード42の位置及び向きが、基本姿勢における相対的な位置及び向きと合致するよう更新されてもよい。
ここで例えば第3脊柱ノード42iを基準にして、第3脊柱ノード42i、左鎖骨ノード42k、及び、右鎖骨ノード42nの姿勢が更新されるようにしてもよい。ここで例えば、左上腕ノード42lの位置に基づいて、第3脊柱ノード42iと第2脊柱ノード42hとを接続するボーン44cを軸とした、基本姿勢を基準とした左上腕ノード42lの回転が特定されてもよい。また例えば、右上腕ノード42oの位置に基づいて、ボーン44cを軸とした、基本姿勢を基準とした右上腕ノード42oの回転が特定されてもよい。そしてこのようにして特定される2つの回転に基づいて、クォータニオンの球面線形補間を実行することで、第3脊柱ノード42i、左鎖骨ノード42k、及び、右鎖骨ノード42nの姿勢が更新されるようにしてもよい。また同様に、骨盤ノード42fを基準にして、骨盤ノード42f、左大腿部ノード42q、及び、右大腿部ノード42tの姿勢が更新されるようにしてもよい。
そして、初期位置決定部54が、スケルトンモデル40に含まれるいくつかのノード42についての初期位置を決定する(S308)。例えば、S307に示す処理で第3脊柱ノード42i、左鎖骨ノード42k、及び、右鎖骨ノード42nの姿勢が更新されたとする。この場合、更新後のこれらのノード42の姿勢、及び、スケルトンモデル40の基本姿勢に基づいて、右上腕ノード42o、左上腕ノード42l、首ノード42j、及び、第2脊柱ノード42hの初期位置が決定される。ここで例えば基本姿勢におけるサブルートノードである第3脊柱ノード42iを基準とする位置や向きとなるよう、これらのノード42の初期位置が決定されてもよい。また例えば、S307に示す処理で骨盤ノード42f、左大腿部ノード42q、及び、右大腿部ノード42tの姿勢が更新されたとする。この場合、更新後のこれらのノード42の姿勢、及び、スケルトンモデル40の基本姿勢に基づいて、第1脊柱ノード42gの初期位置が決定されてもよい。例えば基本姿勢におけるサブルートノードである骨盤ノード42fを基準とする位置や向きとなるよう、第1脊柱ノード42gの初期位置が決定されてもよい。
そして、nの子のノード42である要素nciのすべてについて、nciを次のサブルートノードとした、S301以降の処理が再帰的に繰り返し実行される(S309)。
S306に示す処理でnが子のノード42の数が2以上であるノード42でないことが確認された場合は(S306:N)、当該サブルートノードにおけるS309に示す処理が終了される。すなわちnが、S301~S309に示す処理が実行されるスケルトンモデル40における末端のノード42である場合は、当該サブルートノードにおけるS309に示す処理が終了される。
そして、S309に示す処理が実行される要素nciがなくなった際に、S106に示す処理は終了される。
S106に示す処理では例えば、骨盤ノード42f、左大腿部ノード42q、左ふくらはぎノード42r、及び、左足ノード42dに対して後方到達フェーズの処理が実行される。
また、骨盤ノード42f、右大腿部ノード42t、右ふくらはぎノード42u、及び、右足ノード42eに対して後方到達フェーズの処理が実行される。
また、骨盤ノード42f、第1脊柱ノード42g、第2脊柱ノード42h、及び、第3脊柱ノード42iに対して後方到達フェーズの処理が実行される。
また、第3脊柱ノード42i、首ノード42j、及び、頭部ノード42aに対して後方到達フェーズの処理が実行される。
また、第3脊柱ノード42i、左鎖骨ノード42k、左上腕ノード42l、左前腕ノード42m、及び、左手ノード42bに対して後方到達フェーズの処理が実行される。
また、第3脊柱ノード42i、右鎖骨ノード42n、右上腕ノード42o、右前腕ノード42p、及び、右手ノード42cに対して後方到達フェーズの処理が実行される。
S106に示す処理が終了すると、姿勢更新部56が、ターゲットノードにおける位置の誤差が所定の閾値以下であるか否かを確認する(S107)。ここでは例えば、ノード42の位置と、トラッカー12の計測結果に基づいて特定される当該ノード42が移動すべき位置と、の間の長さの合計が所定の閾値以下であるか否かが確認される。
ターゲットノードにおける位置の誤差が所定の閾値以下でない場合は(S107:N)、姿勢更新部56が、S105に示す処理と同様の処理を実行する(S108)。そして、姿勢更新部56が、S106に示す処理と同様の処理を実行する(S109)。そして、S107に示す処理に戻る。S108及びS109に示す処理では、上述のリストが再利用されるようにしてもよい。
S107に示す処理において、ターゲットノードにおける位置の誤差が所定の閾値以下であることが確認された場合は(S107:Y)、姿勢更新部56は、姿勢が未決定であるノード42の姿勢を更新する(S110)。なお、S108に示す処理、及び、S109に示す処理が、所定回数実行された場合に、ターゲットノードにおける位置の誤差が所定の閾値以下でなくてもS110に示す処理が実行されるようにしてもよい。
S110に示す処理では例えば、左母指球ノード42s、及び、右母指球ノード42vの姿勢が更新される。この場合、左母指球ノード42sの姿勢は、左足ノード42dの姿勢を基準とした相対的な姿勢が基本姿勢における当該相対的な姿勢となるよう更新されてもよい。また右母指球ノード42vの姿勢は、右足ノード42eの姿勢を基準とした相対的な姿勢が基本姿勢における当該相対的な姿勢となるよう更新されてもよい。
そして、姿勢更新部56が、ボーン44の向き、及び、ノード42の回転を更新して(S111)、S101に示す処理に戻る。そして新たに取得される最新の特定タイミングにおけるトラッカー12の位置及び向きを示す姿勢データに基づく、S101~S111に示す処理が実行される。このようにしてS101~S111に示す処理は繰り返し実行されることとなる。
ここでは例えば、ボーン44の向きは、当該ボーン44の両端のノード42の位置に基づいて一意に特定可能である。ところが、ボーン44を軸とした回転については、ボーン44の両端のノード42の位置からはわからない。
そこでS111に示す処理では例えば、姿勢更新部56が、姿勢データが示すトラッカー12bやトラッカー12cの回転を、腕に対する手首の曲がりの成分、基本姿勢に対する腕の回転の成分、及び、腕の方向を軸とした回転の成分に分離する。図12には、右手ノード42cにおけるボーン44mに沿った方向を軸とした回転の成分がQroll1として示されている。
そして姿勢更新部56が、腕の方向を軸とした回転に基づいて、上腕や前腕の回転を決定する。ここでは例えば、右手ノード42cについてのボーン44mを軸とした回転の成分が、右前腕ノード42pの腕の方向を軸とした回転Qroll2、及び、右上腕ノード42oの腕の方向を軸とした回転Qroll3として決定される。同様に、左手ノード42bについてのボーン44iを軸とした回転の成分が、左前腕ノード42m、及び、左上腕ノード42lの腕の方向を軸とした回転として決定される。
ここで例えば、Qroll1とQroll2との差や、Qroll2とQroll3の差に、例えば60度などの上限が予め設定されていてもよい。またQroll2の値として、Qroll1の値に1以下の所定の係数を乗じた値が設定されてもよい。またQroll3の値として、Qroll2の値に1以下の所定の係数を乗じた値が設定されてもよい。
以上のように、本実施形態では例えば、S101に示す処理において姿勢データ取得部52が、木構造のスケルトンモデル40に含まれるターゲットノードの姿勢を示す姿勢データを取得する。そしてS104に示す処理において、初期位置決定部54が、姿勢データに基づいてターゲットノードが移動すべき位置を決定する。そしてS104に示す処理において、初期位置決定部54が、FABRIK計算における当該ターゲットノードの親のノード42の初期位置を、当該ターゲットノードが移動すべき位置と、スケルトンモデル40の所与の姿勢に基づいて決定する。またS308に示す処理において、初期位置決定部54が、いくつかのノード42の初期位置を、ターゲットノードが移動すべき位置と、スケルトンモデル40の所与の姿勢に基づいて決定する。
上述の例では例えば、向きA2に沿った向きA2とは逆の向きに、右手ノード42cが移動すべき位置T2から長さd1だけ離れた位置が、右前腕ノード42pの初期位置についての所与の姿勢に相当する。また例えば、向きA3を基準の向きとした際の左右方向を軸として所定の角度(例えば90度)回転させた方向に、位置T3から長さd4だけ離れた位置が、右ふくらはぎノード42uの初期位置についての所与の姿勢に相当する。
また基本姿勢におけるルートノードを基準とする所与の位置や向きが、右上腕ノード42o、左上腕ノード42l、首ノード42j、第2脊柱ノード42h、及び、第1脊柱ノード42gの初期位置についての所与の姿勢に相当する。
また、S105~S111に示す処理において、姿勢更新部56が、ターゲットノードが移動すべき位置と当該ターゲットノードの親のノード42の初期位置とに基づいて、当該親のノード42の新たな位置の決定を含むFABRIK計算を実行する。その結果、スケルトンモデル40の姿勢が更新される。
このようにして本実施形態によれば、FABRIK計算を用いた姿勢の決定においても、関節が自然な方向に曲がらず、人体ではありえないような妥当性を欠く姿勢が決定されるおそれが下がる。その結果、スケルトンモデル40の姿勢の決定結果の妥当性を向上できることとなる。
また本実施形態では例えば、S101に示す処理において、姿勢データ取得部52が、木構造のスケルトンモデル40に含まれるターゲットノードの姿勢を示す姿勢データを取得する。そしてS102~S109に示す処理において、姿勢更新部56が、当該ターゲットノードの親のノード42の新たな位置の決定を含むFABRIK計算を実行することで、スケルトンモデル40の姿勢を更新する。そしてS111に示す処理において、姿勢更新部56が、姿勢データに基づいて、ターゲットノードと当該ターゲットノードの親のノード42とを接続するボーン44を軸とした当該ターゲットノードの回転を特定する。そしてS111に示す処理において、姿勢更新部56が、ターゲットノードの回転に基づいて、当該ターゲットノードの親のノード42の回転を決定する。
このようにして本実施形態によれば、トラッカー12による計測結果に基づく腕方向を軸とした回転の決定が行えることとなる。その結果、スケルトンモデル40の姿勢の決定結果の妥当性を向上できることとなる。
また本実施形態では例えば、S101に示す処理において、姿勢データ取得部52が、木構造のスケルトンモデル40に含まれる第1のターゲットノードの姿勢、及び、第2のターゲットノードを含む複数のノード42の姿勢を示す姿勢データを取得する。
そしてS207に示す処理において、姿勢更新部56が、姿勢データに基づいて、第1のターゲットノードを含む互いに接続された第1のノード群に対して、FABRIK計算における前方到達フェーズの処理により当該第1のノード群の姿勢を更新する。また同じくS207に示す処理において、姿勢更新部56が、第2のターゲットノードを含む互いに接続された第2のノード群に対して、FABRIK計算における前方到達フェーズの処理により当該第2のノード群の姿勢を更新する。
そしてS307に示す処理において、姿勢更新部56が、第1のノード群及び第2のノード群の更新の後に、複数のノード42の姿勢を更新する。ここでは例えば、当該複数のノード42には、第1のノード群に含まれる、スケルトンモデル40に含まれる結節点に最も近いノード42と、第2のノード群に含まれる、スケルトンモデル40に含まれる結節点に最も近いノード42と、が含まれる。
またS304に示す処理において、姿勢更新部56が、FABRIK計算における後方到達フェーズの処理によりスケルトンモデル40の姿勢を更新する。
本実施形態ではこのようにして、例えば胸から肩までのような、全体としての姿勢が大きくゆがむべきではない、木構造のスケルトンモデル40の結節点の近傍の複数のノード42の全体としての姿勢が大きくゆがむことを防ぐことができる。その結果、スケルトンモデル40の姿勢の決定結果の妥当性を向上できることとなる。
なお、本発明は上述の実施形態に限定されるものではない。
例えば本発明の適用範囲は、トラッカー12の実際の動きに応じたリアルタイムでのスケルトンモデル40の姿勢の更新には限定されない。例えば本発明が、エンタテインメント装置14に予め記録された、一連の姿勢データの時系列に基づいて、スケルトンモデル40や当該スケルトンモデル40に応じたプレイヤオブジェクトが動く様子を再生する場面に適用されてもよい。
また例えばトラッカー12aは、ヘッドマウントディスプレイ(HMD)であってもよい。この場合に、ユーザに含まれる複数の部位の位置又は向きに応じたゲーム処理等の各種の処理の結果に応じた映像が例えばHMDの表示部に表示されるようにしてもよい。
また例えば、図6に示す機能の一部又は全部がトラッカー12によって実装されてもよい。
また本実施形態におけるゲーム処理において、例えばスケルトンモデル40に対応するプレイヤオブジェクトと、壁などの障害物や他のプレイヤオブジェクトなどといった他のオブジェクトと、のコリジョンが発生することがある。
このようなコリジョンが発生した際に、本実施形態に係るエンタテインメントシステム10では、当該コリジョンの影響を加味したIK計算を実行することにより、スケルトンモデル40の姿勢が更新される。
以下、発生したコリジョンの影響を加味したIK計算の第1の実装例について説明する。
第1の実装例では、初期位置決定部54が、ゲーム処理における上述のコリジョンの発生を監視する。この間、上述したS101~S112に示す処理が繰り返し実行されている。
そして初期位置決定部54がコリジョンの発生を検出した際には、初期位置決定部54が、当該コリジョンが発生した1又は複数のノードについての、当該コリジョンの影響に応じた移動すべき位置を特定する。以下、コリジョンが発生した1又は複数のノードをダイナミックエフェクタノードと呼ぶこととする。ここでは例えばコリジョンの影響に対応付けられる、ダイナミックエフェクタノードの位置、姿勢、速度、加速度、角速度、力、撃力などといった物理量が特定される。そして当該物理量に基づいて物理シミュレーション処理を実行することにより、当該ダイナミックエフェクタノードの移動すべき位置が特定される。
そしてダイナミックエフェクタノードの移動すべき位置に基づいてFABRIK計算を実行することで、スケルトンモデル40の姿勢が更新される。ここでは例えばS104に示す処理において、さらに、ダイナミックエフェクタノードについて、上述の移動すべき位置が初期位置として設定された上で、S105~S112に示す処理が実行される。
ここで例えば、ターゲットノードであるノード42がダイナミックエフェクタノードであることがある。この場合は、トラッカー12によって生成される姿勢データに基づく当該ノード42の移動すべき位置と、コリジョンの影響に応じた移動すべき位置と、を補間した位置が当該ノード42の初期位置として設定されてもよい。ここでコリジョンの影響に応じた重みが特定されてもよい。そして当該重みにより上述の補間が行われてもよい。
また例えば、上述のルートトランスフォームの処理が実行されるノード42がダイナミックエフェクタノードであることがある。この場合は、当該ノード42だけではなく、当該ノード42とともにルートトランスフォームの処理により姿勢が更新されるノード42についてもコリジョンの影響が考慮された初期位置が設定されてもよい。
以下、発生したコリジョンの影響を加味したIK計算の第2の実装例について説明する。
第2の実装例でも第1の実装例と同様に、初期位置決定部54が、ゲーム処理における上述のコリジョンの発生を監視する。この間、上述したS101~S112に示す処理が繰り返し実行されている。
そして初期位置決定部54がコリジョンの発生を検出した際には、初期位置決定部54がダイナミックエフェクタノードの移動すべき位置を特定する。そして当該移動すべき位置がダイナミックエフェクタノードの初期位置として設定される。
そして、姿勢更新部46は、ダイナミックエフェクタノードで分断されたFABRIK計算における前方到達フェーズの処理を含むFABRIK計算を実行することで、スケルトンモデル40の姿勢を更新する。例えば、右前腕ノード42pがダイナミックエフェクタノードであることとする。この場合、右手ノード42c、及び、右前腕ノード42pに対して前方到達フェーズの処理が実行された後に、右前腕ノード42p、右上腕ノード42o、右鎖骨ノード42nに対して前方到達フェーズの処理が実行されることとなる。
また後方到達フェーズの処理においても同様に、右前腕ノード42p、右上腕ノード42o、右鎖骨ノード42nに対して後方到達フェーズの処理が実行された後に、右手ノード42c、及び、右前腕ノード42pに対して前方到達フェーズの処理が実行されてもよい。なおS308に示す処理で初期位置が決定されるノード42がダイナミックエフェクタノードである場合には、当該ノード42についてはS308に示す初期位置の決定の処理が実行されないようにしてもよい。
例えばスケルトンモデル40において右手ノード42cの先に例えば右指のノード42が設けられることがある。そしてこのような場合に例えばプレイヤオブジェクトの指が机のオブジェクトに接触するコリジョンが発生することがある。この場合は右指のノード42がダイナミックエフェクタノードとなる。例えばこのような場合に右手ノード42cにより分断されたFABRIK計算が実行されてもよい。この場合、プレイヤオブジェクトの指が机のオブジェクトにめりこむことを防ぐことができる。このように第2の実装例においてターゲットノードで分断されたFABRIK計算が実行されてもよい。
なお第2の実装例において、1又は複数のダイナミックエフェクタノードで分断された、FABRIK計算以外のIK計算を実行することで、スケルトンモデル40の姿勢が更新されるようにしてもよい。
以下、コリジョンの発生による影響を加味したIK計算の第3の実装例について説明する。
第3の実装例でも第1の実装例や第2の実装例と同様に、初期位置決定部54が、ゲーム処理における上述のコリジョンの発生を監視する。この間、上述したS101~S112に示す処理が繰り返し実行されている。
そして初期位置決定部54がコリジョンの発生を検出した際には、初期位置決定部54がダイナミックエフェクタノードの移動すべき位置を特定する。そして当該移動すべき位置がダイナミックエフェクタノードの初期位置として設定される。
そして第3の実装例では、上述のS101~S112に示す処理が実行される。そしてその後、姿勢更新部56が、ダイナミックエフェクタノードをルートノードとした後方到達フェーズの処理を実行する。ここでダイナミックエフェクタノードが複数存在する場合は、それぞれのダイナミックエフェクタノードをルートノードとした後方到達フェーズの処理が順次実行される。
なお第3の実装例において、S101~S112に示す処理が実行された後に、ダイナミックエフェクタノードをルートノードとした後方到達フェーズの処理以外のさらなるIK計算が実行されることで、スケルトンモデル40の姿勢が更新されるようにしてもよい。
以上で説明したように、発生したコリジョンの影響を加味したIK計算においては、通常は、初期位置決定部54が、スケルトンモデル40に含まれる1又は複数の所与のノード42であるターゲットノードが移動すべき位置を特定する。そして姿勢更新部56が、ターゲットノードの移動すべき位置に基づいてFABRIK計算を実行することでスケルトンモデル40の姿勢を更新する。ここではターゲットノードは複数である必要はなく1つであってもよい。
そして1又は複数のダイナミックエフェクタノードに対するコリジョンが発生した際には、姿勢更新部56は、当該1又は複数のダイナミックエフェクタノードに対する当該コリジョンの影響を加味したFABRIK計算を実行することで、スケルトンモデル40の姿勢を更新する。
ここで第1の実装例では、姿勢更新部56は、1又は複数のダイナミックエフェクタノードについての発生したコリジョンの影響に応じた移動すべき位置を初期位置とするFABRIK計算を実行することで、スケルトンモデル40の姿勢を更新する。第1の実装例は、例えば、軽いオブジェクトとのコリジョンが発生した場合などといった、発生したコリジョンの影響よりもトラッカー12の姿勢を優先させることが望ましい状況において好適である。
また第2の実装例では、姿勢更新部56は、1又は複数のダイナミックエフェクタノードのそれぞれで分断されたIK計算を実行することで、スケルトンモデル40の姿勢を更新する。第2の実装例は、例えば、壁のオブジェクトとのコリジョンが発生した場合などといった、発生したコリジョンの影響とトラッカー12の姿勢との優先度が同等である状況において好適である。
また第3の実装例では、姿勢更新部56は、1又は複数のターゲットノードの移動すべき位置に基づく上述の更新の後にさらに、1又は複数のダイナミックエフェクタノードのそれぞれをルートノードとするさらなるIK計算を実行することで、スケルトンモデル40の姿勢を更新する。第3の実装例は、例えば、重いオブジェクトとのコリジョンが発生した場合などといった、トラッカー12の姿勢よりも発生したコリジョンの影響を優先させることが望ましい状況において好適である。
なお、ある程度長い時間にわたってダイナミックエフェクタノードがコリジョンの影響を受けることがある。例えば、ボールなどのオブジェクトがプレイヤオブジェクトに当たった場面においては、撃力がある程度長い時間にわたってダイナミックエフェクタノードに影響を与えることがある。このような場面においては、ダイナミックエフェクタノードがコリジョンの影響を受ける時間については、以上で説明したようなコリジョンの発生による影響を加味したFABRIK計算が継続して実行されてもよい。
また、発生したコリジョンの性質に応じて、上述の第1の実装例の処理、第2の実装例の処理、又は、第3の実装例の処理、のいずれかが実行されることで、スケルトンモデル40の姿勢が更新されるようにしてもよい。例えば、他のオブジェクトとプレイヤオブジェクトの間でコリジョンが発生したとする。この場合、当該他のオブジェクトに対応付けられる重さが所定の重さより軽い場合に第1の実装例の処理が実行され、所定の重さより重い場合に第3の実装例の処理が実行されるようにしてもよい。また例えば、壁やテーブルや床などといった所定のオブジェクトとプレイヤオブジェクトとの間でコリジョンが発生した場合に第2の実装例の処理が実行されるようにしてもよい。
また、本実施形態に係るエンタテインメント装置14が、ダイナミックエフェクタノードに対するコリジョンの影響を加味したIK計算が実行されてスケルトンモデル40の姿勢が更新された後の映像を表示部に表示させる表示制御部をさらに備えていてもよい。また当該表示制御部は、例えば、更新された後の頭部ノード42aの位置又は向きの少なくとも一方に応じた映像を表示部に表示させてもよい。またトラッカー12aがヘッドマウントディスプレイ(HMD)である場合に、当該表示制御部が、更新された後の頭部ノード42aの位置又は向きの少なくとも一方に応じた映像をHMDの表示部に表示させるようにしてもよい。当該表示制御部は、制御部30及び入出力部36を主として実装されていてもよい。また当該表示制御部の機能の一部又は全部が、トラッカー12によって実装されてもよい。
また、ダイナミックエフェクタノードに対するコリジョンが発生した際に、姿勢更新部46が、FABRIK計算以外の、ダイナミックエフェクタノードに対する当該コリジョンの影響を加味したIK計算を実行するようにしてもよい。
またアニメーションの制作の場面などといったゲーム以外の場面において、上述したようなコリジョンの発生による影響を加味したIK計算が実行されてもよい。例えば、エンタテインメント装置14に予め記録された、一連の姿勢データの時系列やモーションデータに基づいてスケルトンモデル40に応じたプレイヤオブジェクトが動く様子を表すアニメーションが生成される際に上述のIK計算が実行されてもよい。
コリジョンが発生した際に、IK計算の代わりに、あるいは、IK計算の結果を無視して、コリジョンの影響をスケルトンモデル40の姿勢に反映させる処理を実行すると、スケルトンモデル40の動きが不自然なものとなることがある。ここで以上のようにダイナミックエフェクタノードに対するコリジョンの影響を加味したIK計算が実行されるようにすることで、コリジョンが発生した際のスケルトンモデル40の動きを自然なものとすることができる。
なお、本発明は上述の実施形態にも限定されるものではない。
また、上記の具体的な文字列や数値及び図面中の具体的な文字列や数値は例示であり、これらの文字列や数値には限定されない。
Claims (10)
- スケルトンモデルに含まれる1又は複数の所与のノードが移動すべき位置を特定する位置特定部と、
前記1又は複数の所与のノードが移動すべき位置に基づいて逆運動学計算を実行することで前記スケルトンモデルの姿勢を更新する姿勢更新部と、を含み、
前記スケルトンモデルに含まれる1又は複数のノードに対するコリジョンが発生した際には、前記姿勢更新部は、当該1又は複数のノードに対する当該コリジョンの影響を加味した前記逆運動学計算を実行することで、前記スケルトンモデルの姿勢を更新する、
ことを特徴とするスケルトンモデル更新装置。 - 前記姿勢更新部は、前記コリジョンが発生した前記1又は複数のノードについての当該コリジョンの影響に応じた移動すべき位置に基づいて前記逆運動学計算を実行することで、前記スケルトンモデルの姿勢を更新する、
ことを特徴とする請求項1に記載のスケルトンモデル更新装置。 - 前記姿勢更新部は、前記コリジョンが発生した前記1又は複数のノードについての当該コリジョンの影響に応じた移動すべき位置を初期位置とする前記逆運動学計算を実行することで、前記スケルトンモデルの姿勢を更新する、
ことを特徴とする請求項2に記載のスケルトンモデル更新装置。 - 前記姿勢更新部は、前記コリジョンが発生した前記1又は複数のノードのそれぞれで分断された前記逆運動学計算を実行することで、前記スケルトンモデルの姿勢を更新する、
ことを特徴とする請求項1又は2に記載のスケルトンモデル更新装置。 - 前記姿勢更新部は、前記1又は複数の所与のノードが移動すべき位置に基づいて前記逆運動学計算を実行することで前記スケルトンモデルの姿勢を更新した後に、前記コリジョンが発生した前記1又は複数のノードのそれぞれをルートノードとするさらなる逆運動学計算を実行することで、前記スケルトンモデルの姿勢を更新する、
ことを特徴とする請求項1又は2に記載のスケルトンモデル更新装置。 - 前記姿勢更新部は、前記コリジョンの性質に応じて、前記コリジョンが発生した前記1又は複数のノードについての当該コリジョンの影響に応じた移動すべき位置を初期位置とする前記逆運動学計算、前記コリジョンが発生した前記1又は複数のノードのそれぞれで分断された前記逆運動学計算、又は、前記1又は複数の所与のノードが移動すべき位置に基づいて前記逆運動学計算を実行することによる前記スケルトンモデルの姿勢の更新と当該更新の後の前記コリジョンが発生した前記1又は複数のノードのそれぞれをルートノードとするさらなる逆運動学計算とを含む処理、のいずれかを実行することで、前記スケルトンモデルの姿勢を更新する、
ことを特徴とする請求項1又は2に記載のスケルトンモデル更新装置。 - 前記コリジョンが発生した前記1又は複数のノードに対する当該コリジョンの影響を加味した前記逆運動学計算が実行されて前記スケルトンモデルの姿勢が更新された後の、前記スケルトンモデルに含まれるユーザの頭部に相当するノードの位置又は向きの少なくとも一方に応じた映像を表示部に表示させる表示制御部、をさらに含む、
ことを特徴とする請求項1から6のいずれか一項に記載のスケルトンモデル更新装置。 - 前記表示制御部は、ヘッドマウントディスプレイの表示部に前記映像を表示させる、
ことを特徴とする請求項7に記載のスケルトンモデル更新装置。 - スケルトンモデルに含まれる1又は複数の所与のノードが移動すべき位置を特定する位置特定ステップと、
前記1又は複数の所与のノードが移動すべき位置に基づいて逆運動学計算を実行することで前記スケルトンモデルの姿勢を更新する姿勢更新ステップと、を含み、
前記スケルトンモデルに含まれる1又は複数のノードに対するコリジョンが発生した際には、前記姿勢更新ステップでは、当該1又は複数のノードに対する当該コリジョンの影響を加味した前記逆運動学計算を実行することで、前記スケルトンモデルの姿勢を更新する、
ことを特徴とするスケルトンモデル更新方法。 - スケルトンモデルに含まれる1又は複数の所与のノードが移動すべき位置を特定する位置特定手順、
前記1又は複数の所与のノードが移動すべき位置に基づいて逆運動学計算を実行することで前記スケルトンモデルの姿勢を更新する姿勢更新手順、をコンピュータに実行させ、
前記スケルトンモデルに含まれる1又は複数のノードに対するコリジョンが発生した際には、前記姿勢更新手順では、当該1又は複数のノードに対する当該コリジョンの影響を加味した前記逆運動学計算を実行することで、前記スケルトンモデルの姿勢を更新する、
ことを特徴とするプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020551726A JP7005788B2 (ja) | 2018-10-22 | 2018-10-22 | スケルトンモデル更新装置、スケルトンモデル更新方法及びプログラム |
US17/284,832 US20210390750A1 (en) | 2018-10-22 | 2018-10-22 | Skeleton model update apparatus, skeleton model update method, and program |
PCT/JP2018/039189 WO2020084662A1 (ja) | 2018-10-22 | 2018-10-22 | スケルトンモデル更新装置、スケルトンモデル更新方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2018/039189 WO2020084662A1 (ja) | 2018-10-22 | 2018-10-22 | スケルトンモデル更新装置、スケルトンモデル更新方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2020084662A1 true WO2020084662A1 (ja) | 2020-04-30 |
Family
ID=70331013
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2018/039189 WO2020084662A1 (ja) | 2018-10-22 | 2018-10-22 | スケルトンモデル更新装置、スケルトンモデル更新方法及びプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210390750A1 (ja) |
JP (1) | JP7005788B2 (ja) |
WO (1) | WO2020084662A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115131478A (zh) * | 2022-07-15 | 2022-09-30 | 北京字跳网络技术有限公司 | 图像处理方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10208072A (ja) * | 1996-11-19 | 1998-08-07 | Namco Ltd | スケルトンモデルの形状変形方法、画像合成装置及び情報記憶媒体 |
JP2007334443A (ja) * | 2006-06-12 | 2007-12-27 | Kyushu Institute Of Technology | アバター動作制御システム、そのプログラム及び方法 |
US20180122125A1 (en) * | 2016-11-03 | 2018-05-03 | Naturalmotion Ltd. | Animating a virtual object in a virtual world |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8730245B2 (en) * | 2008-12-01 | 2014-05-20 | Naturalmotion Ltd. | Defining an animation of a virtual object within a virtual world |
-
2018
- 2018-10-22 JP JP2020551726A patent/JP7005788B2/ja active Active
- 2018-10-22 US US17/284,832 patent/US20210390750A1/en active Pending
- 2018-10-22 WO PCT/JP2018/039189 patent/WO2020084662A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10208072A (ja) * | 1996-11-19 | 1998-08-07 | Namco Ltd | スケルトンモデルの形状変形方法、画像合成装置及び情報記憶媒体 |
JP2007334443A (ja) * | 2006-06-12 | 2007-12-27 | Kyushu Institute Of Technology | アバター動作制御システム、そのプログラム及び方法 |
US20180122125A1 (en) * | 2016-11-03 | 2018-05-03 | Naturalmotion Ltd. | Animating a virtual object in a virtual world |
Also Published As
Publication number | Publication date |
---|---|
JPWO2020084662A1 (ja) | 2021-06-10 |
JP7005788B2 (ja) | 2022-01-24 |
US20210390750A1 (en) | 2021-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7038847B2 (ja) | スケルトンモデル更新装置、スケルトンモデル更新方法及びプログラム | |
JP7102618B2 (ja) | スケルトンモデル更新装置、スケルトンモデル更新方法及びプログラム | |
US20170108922A1 (en) | Image generation device, image generation method and non-transitory recording medium storing image generation program | |
JP7171745B2 (ja) | 推定装置、学習装置、推定方法、学習方法及びプログラム | |
JP7283388B2 (ja) | 情報処理装置、情報処理方法、およびプログラム | |
JP2011258130A (ja) | プログラム、情報記憶媒体及び画像生成システム | |
JP2018064767A (ja) | ゲームプログラム、ゲーム処理方法、ゲームシステム、およびゲーム装置 | |
US11389724B2 (en) | Non-transitory computer-readable medium, device, and method for image generation | |
WO2020084662A1 (ja) | スケルトンモデル更新装置、スケルトンモデル更新方法及びプログラム | |
CN114296539B (zh) | 方向预测方法、虚拟实境装置及非暂态计算机可读取媒体 | |
US11589778B2 (en) | Body size estimation apparatus, body size estimation method, and program | |
JP6874207B2 (ja) | 推定装置、推定方法及びプログラム | |
JP7334337B2 (ja) | モーション決定装置、学習装置、モーション決定方法、学習方法及びプログラム | |
WO2020090042A1 (ja) | トラッカーのキャリブレーション装置、トラッカーのキャリブレーション方法及びプログラム | |
JP5378027B2 (ja) | ゲームプログラム、記憶媒体およびコンピュータ装置 | |
JP5377868B2 (ja) | プログラム、情報記憶媒体、およびゲームシステム | |
CN115639904A (zh) | 一种基于人体姿态识别的对象控制方法和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 18938100 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2020551726 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 18938100 Country of ref document: EP Kind code of ref document: A1 |