JP5618926B2 - Multipointing device control method and program - Google Patents

Multipointing device control method and program Download PDF

Info

Publication number
JP5618926B2
JP5618926B2 JP2011153251A JP2011153251A JP5618926B2 JP 5618926 B2 JP5618926 B2 JP 5618926B2 JP 2011153251 A JP2011153251 A JP 2011153251A JP 2011153251 A JP2011153251 A JP 2011153251A JP 5618926 B2 JP5618926 B2 JP 5618926B2
Authority
JP
Japan
Prior art keywords
pointer
joint
instruction information
skeleton model
pointers
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011153251A
Other languages
Japanese (ja)
Other versions
JP2013020446A (en
Inventor
陽介 川上
陽介 川上
樋口 大輔
大輔 樋口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Celsys Inc
Original Assignee
Celsys Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Celsys Inc filed Critical Celsys Inc
Priority to JP2011153251A priority Critical patent/JP5618926B2/en
Publication of JP2013020446A publication Critical patent/JP2013020446A/en
Application granted granted Critical
Publication of JP5618926B2 publication Critical patent/JP5618926B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Position Input By Displaying (AREA)
  • Controls And Circuits For Display Device (AREA)
  • User Interface Of Digital Computer (AREA)

Description

本発明は、マルチポインティングデバイスの制御方法及びプログラムに関する。   The present invention relates to a control method and program for a multipointing device.

コンピュータ上で動作しているアプリケーションに対して、オペレータが適切な指示を与えるために、様々なマンマシンインターフェスが用いられている。   Various man-machine interfaces are used for an operator to give appropriate instructions to an application running on a computer.

例えば、ディスプレイ上に表示された仮想空間上の三次元モデルとしての骨格モデル(スケルトンモデル)に対して、ユーザの意図したポーズ(姿勢、形状等)を取らせるために、ユーザが適切な指示を与える必要がある。このために、様々なインターフェースが利用されている。また、二次元グラフィックスの分野においても、二次元グラフィックスを移動させたり、変形させたりするためにユーザインターフェースが利用される。この場合、ユーザの要求を簡便に、しかも適切に指示できるユーザインターフェースが必要とされる。   For example, in order to make a pose (posture, shape, etc.) intended by the user take a skeleton model (skeleton model) as a three-dimensional model in the virtual space displayed on the display, the user gives an appropriate instruction. Need to give. For this purpose, various interfaces are used. Also in the field of two-dimensional graphics, a user interface is used to move or deform the two-dimensional graphics. In this case, a user interface that can easily and appropriately instruct user requests is required.

例えば、上述の骨格モデルに意図したポーズを取らせるためにオペレータが用いるインターフェースとしては、マウス、二次元タブレット、マルチポインティングデバイス等がある。これらのデバイスは二次元グラフィックスに対するユーザインターフェースとしても同様に用いられる。また、その他のアプリケーションプログラムのユーザインターフェースとしても、盛んに利用されている。   For example, there are a mouse, a two-dimensional tablet, a multi-pointing device, and the like as an interface used by an operator for causing the above-described skeleton model to take an intended pose. These devices are also used as a user interface for two-dimensional graphics. It is also actively used as a user interface for other application programs.

上述のユーザインターフェースのうち、近年、画面上の複数の位置を独立にポイントして、コンピュータに指示を与えることができるマルチポインティングデバイスが用いられている。典型的なマルチポインティングデバイスとしては、ディスプレイの表面にタッチパネルを設置し、このタッチパネルに対し直接指を用いて複数箇所を同時にポイントできるもの(例えば、マルチタッチスクリーン)が挙げられる。   Of the above-described user interfaces, in recent years, multipointing devices that can point to a plurality of positions on a screen independently and give instructions to a computer have been used. A typical multi-pointing device includes a device (for example, a multi-touch screen) in which a touch panel is installed on the surface of a display and a plurality of locations can be pointed at the same time using a finger directly on the touch panel.

このマルチポインティングデバイスを用いて、オペレータは、コンピュータに対して種々の入力指示を与えることができる。以下に、その例を挙げる。たとえば、「タップ」は、画面に触れてすぐに離す操作で、マウスで行うクリックに対応する。「ダブルタップ」は、短時間に連続して2回タップする操作で、マウスで行うダブルクリックに対応する。「ドラッグ」は、画面に触れたまま指を移動させる操作で、マウスのドラッグに対応する。また、「フリック」は、タップと同時に指をずらす動作を意味し、マウスでは対応する操作は存在しない。「スワイプ」は、画面を掃くような操作であり、ドラッグとフリックの中間に対応する操作である。この「スワイプ」は、スクロール等において、操作する指を離した後もスクロールを継続させる場合などに用いられている。「ピンチイン」や「ピンチアウト」は、二本の指をドラッグさせてそれぞれ近づける操作および遠ざける操作に対応する。「タッチアンドホールド」は、一本の指で一定時間タッチスクリーンをタッチしたままの状態を保つ操作を意味する。   Using this multipointing device, the operator can give various input instructions to the computer. Examples are given below. For example, “tap” corresponds to a click performed with the mouse by touching the screen and releasing it immediately. “Double tap” corresponds to a double click performed with a mouse by tapping twice continuously in a short time. “Drag” is an operation of moving a finger while touching the screen, and corresponds to dragging the mouse. “Flick” means an operation of moving a finger simultaneously with a tap, and there is no corresponding operation with a mouse. “Swipe” is an operation that sweeps the screen, and is an operation corresponding to the middle of dragging and flicking. This “swipe” is used, for example, when scrolling is continued even after a finger to be operated is released. “Pinch-in” and “pinch-out” correspond to operations to move two fingers closer and away from each other. “Touch and hold” means an operation of keeping the touch screen touched with a single finger for a certain period of time.

また、画面を1本の指でなぞり特定のジェスチャ(例えば、円を描く、直線を描く等)を行うことにより、複数の指示を入力できるインターフェースとしては、タッチFLOがある。   Touch FLO is an interface that can input a plurality of instructions by tracing the screen with one finger and performing a specific gesture (for example, drawing a circle, drawing a straight line, etc.).

しかしながら、マルチポインティングデバイスや、その他の様々なユーザインターフェースを用いたとしても、オペレータが骨格モデルに対して、意図した通りの指示を与えるには、依然としてオペレータに対して繁雑な作業が要求される。例えばディスプレイ上の骨格モデルにユーザの意図したポーズ(姿勢、形状等)を取らせるには、固定すべき関節の指示、移動すべき関節の移動、固定した関節の固定解除、他の関節の固定の指示、更に動かすべき関節の移動の指示等、ユーザは、煩雑な繰り返し操作を行わなければならない。また、複数の関節を任意の方向に移動させる指示を、簡便に行うこともできない。   However, even if a multipointing device or other various user interfaces are used, in order for the operator to give instructions as intended to the skeleton model, a complicated work is still required for the operator. For example, in order to make the skeleton model on the display take the pose (posture, shape, etc.) intended by the user, the instruction of the joint to be fixed, the movement of the joint to be moved, the release of the fixed joint, the fixation of another joint The user has to perform complicated and repeated operations such as instructions for moving the joint to be moved. Further, it is not possible to simply give an instruction to move a plurality of joints in an arbitrary direction.

このような状況に鑑み、本実施例に係る方法及びプログラムは、マルチポインティングデバイスなどの、複数のポイント位置において独立に指示を行えるユーザインターフェースを用いて、ユーザの意図した指示を簡便に行えるようにする方法及びプログラムを提供することを目的とする。なお、本発明の目的は、例示として取り上げた上述の骨格モデルへの適用に限定されない。   In view of such a situation, the method and the program according to the present embodiment can easily perform an instruction intended by the user using a user interface such as a multi-pointing device that can perform an instruction independently at a plurality of point positions. It is an object to provide a method and a program. The object of the present invention is not limited to application to the above-described skeleton model taken as an example.

本方法によれば、表示領域にオブジェクトを表示させる方法であって、表示領域に対して複数のポインタの各々により、独立に指示情報を指定できるポインティングデバイスから、前記複数のポインタの各々に対応した指示情報を取得するステップと、第1のポインタに対応する指示情報の変化が、予め定められた閾値を超えない場合、前記第1のポインタに対応する指示情報を、前記第1のポインタに対応する指示情報とは異なる指示情報に置き換え、前記第1のポインタに対応付けるステップと、前記複数のポインタの各々に対応した前記指示情報に基づいて、前記表示領域に表示されるオブジェクトを変化させるステップと、を有する、方法が提供される。   According to the present method, an object is displayed in a display area, and a pointing device capable of designating instruction information independently with respect to the display area by each of a plurality of pointers corresponds to each of the plurality of pointers. If the change of the instruction information corresponding to the step of acquiring the instruction information and the first pointer does not exceed a predetermined threshold, the instruction information corresponding to the first pointer corresponds to the first pointer Replacing the instruction information different from the instruction information to be associated with the first pointer, and changing the object displayed in the display area based on the instruction information corresponding to each of the plurality of pointers. A method is provided.

また、本発明の他の方法によれば、表示領域に骨格モデルを表示させる方法であって、表示領域上の複数の位置を独立にポイントできるポインティングデバイスによる複数のポインタの各々に、前記骨格モデルの関節を対応付けるステップと、前記複数のポインタの各々と、前記複数のポインタ各々に対応する関節との距離が近づくよう、前記骨格モデルのポーズを計算するステップと、前記計算された骨格モデルのポーズを表示するステップと、を有する方法が提供される。   According to another method of the present invention, a skeleton model is displayed in a display area, and the skeleton model is provided on each of a plurality of pointers by a pointing device capable of independently pointing a plurality of positions on the display area. Associating the joints of the plurality of pointers, calculating the pose of the skeletal model so that the distance between each of the plurality of pointers and the joint corresponding to each of the plurality of pointers approaches, and the calculated pose of the skeleton model A method is provided.

マルチポインティングデバイスなどの、複数のポイント位置において独立に指示を行えるユーザインターフェースを用いて、ユーザの意図した指示を簡便に行うことができる。   By using a user interface such as a multi-pointing device that can independently give instructions at a plurality of point positions, it is possible to easily give instructions intended by the user.

本発明の一実施例に従った、骨格モデルの姿勢の指示を示す図である。It is a figure which shows the instruction | indication of the attitude | position of a skeleton model according to one Example of this invention. 一実施例に従った、骨格モデルの姿勢の指示を示す図である。It is a figure which shows the instruction | indication of the attitude | position of a skeleton model according to one Example. 一実施例に従った、紙の仮想オブジェクトを変形させる図である。FIG. 6 is a diagram of deforming a virtual paper object according to one embodiment. 骨格モデルを用いて、ポインタと、ポインタにより制御される対象との対応付けに関する一例を示した図である。It is the figure which showed an example regarding matching with a pointer and the object controlled by a pointer using a skeleton model. 一実施例に従った、三次元オブジェクトの姿勢の指示を示す図である。It is a figure which shows the instruction | indication of the attitude | position of a three-dimensional object according to one Example. 一実施例に従った、ハードウエア構成を示す図である。It is a figure which shows the hardware constitutions according to one Example. 一実施例に従った、方法のフローチャートを示す図である。FIG. 3 shows a flowchart of a method according to one embodiment. 一実施例に従った、別の方法のフローチャートを示す図である。FIG. 6 shows a flowchart of another method according to one embodiment. 骨格モデル、親骨、子骨、及び座標系を示す図である。It is a figure which shows a skeleton model, a master bone, a skeleton, and a coordinate system. CCD法による骨格モデルの制御方法を示す図である。It is a figure which shows the control method of the skeleton model by CCD method.

例えば、三次元仮想空間で人体,動物,構造物等の姿勢(ポーズ,動き等)をシミュレートする際に用いられる骨格モデルを制御する手法の一例として,逆運動学(Inverse Kinematics)がある。この、逆運動学においては,骨格モデルを複数の骨と関節で定義する。逆運動学に基づく骨格モデルの場合、各々の骨および関節の位置,角度,回転(曲げ,捻り)等を意図した通りに制御することが必要となる。例えば、図9(a)に示される人の骨格モデルでは,各々の骨は関節で結合されており,各々の骨の動きが他の骨の動きに影響を与える。逆運動学には、CCD(Cyclic−Coordinate−Descent)などの、種々の骨格モデルの制御方法が存在する。詳細は後述する。   For example, there is inverse kinematics (inverse kinematics) as an example of a technique for controlling a skeleton model used when simulating postures (poses, movements, etc.) of human bodies, animals, structures, etc. in a three-dimensional virtual space. In this inverse kinematics, a skeletal model is defined by multiple bones and joints. In the case of a skeletal model based on inverse kinematics, it is necessary to control the position, angle, rotation (bending, twisting), etc. of each bone and joint as intended. For example, in the human skeleton model shown in FIG. 9A, each bone is connected by a joint, and the movement of each bone affects the movement of other bones. In inverse kinematics, there are various skeletal model control methods such as CCD (Cyclic-Coordinate-Desent). Details will be described later.

そして、骨格モデルの姿勢を制御するためには、少なくとも、固定すべき関節と、動かすべき関節を指定する。なお、指先などの骨の先端も、本明細書では関節として統一的に扱い、説明する。動かすべき関節については、動かす方向と量(距離)を指定することが必要である。なお、固定された関節と動かすべき関節以外の関節は、その骨格モデルに応じて、適切な位置に移動する。   In order to control the posture of the skeleton model, at least a joint to be fixed and a joint to be moved are designated. Note that the tip of a bone such as a fingertip is also treated and described as a joint in this specification. For the joint to be moved, it is necessary to specify the direction and amount (distance) to move. Note that joints other than the fixed joint and the joint to be moved move to appropriate positions in accordance with the skeleton model.

本明細書では、実施例の説明が不必要に複雑化することを避けるため、この逆運動学に関しては、後述するように、概略の原理の説明にとどめ、その詳細は説明しない。なお,本発明は、特定の骨格モデルへの適用に限定されるものではない。   In this specification, in order to avoid unnecessarily complicating the description of the embodiments, the inverse kinematics will be described only as a general principle and will not be described in detail, as will be described later. Note that the present invention is not limited to application to a specific skeleton model.

図1は、本発明の一実施例に従って、マルチポインティングデバイスを用いた骨格モデルのポーズの制御を示している。以下、オペレータの指がマルチポインティングデバイスをポイントしている位置をポインタ位置と呼ぶ。すなわち、ポインタとは、マルチポインティングデバイスにオペレータの指などが触れている部分を指す。   FIG. 1 illustrates skeletal model pose control using a multipointing device, in accordance with one embodiment of the present invention. Hereinafter, the position where the operator's finger points to the multipointing device is referred to as a pointer position. That is, the pointer refers to a portion where an operator's finger or the like is touching the multi-pointing device.

図1(a)は、画面に表示された骨格モデルX100を示している。骨格モデルX100は、腕を水平に伸ばしており、こちらを向いており、右手先が位置a100、左手先が位置b100にある。また、右足先は位置α100、左足先は位置β100にある。以上が骨格モデルX100の初期状態の位置を示している。ここで、位置とは、画面上の位置を指す。   FIG. 1A shows a skeleton model X100 displayed on the screen. The skeletal model X100 has arms extended horizontally and is facing this direction, with the right hand at position a100 and the left hand at position b100. Also, the right foot tip is at position α100 and the left foot tip is at position β100. The above shows the initial position of the skeleton model X100. Here, the position refers to a position on the screen.

そして、オペレータの右手R1のポインタは、位置b100に存在している。また、オペレータの左手L1のポインタは、位置α100に存在している。   The pointer of the operator's right hand R1 exists at the position b100. In addition, the pointer of the operator's left hand L1 exists at the position α100.

マルチポインティングデバイスは、右手R1のポインタ位置及び左手L1のポインタ位置を逐次測定しており、これらの測定結果から、各ポインタの位置を知ることができる。ポインタ位置の時間的な変化により、ポインタの速度が算出できる。算出された右手R1のポインタの速度をVR1、左手L1のポインタの速度をVL1とする。更に、予め定められた速度閾値Vkがメモリ内に保存されているものとする。   The multipointing device sequentially measures the pointer position of the right hand R1 and the pointer position of the left hand L1, and the position of each pointer can be known from these measurement results. The speed of the pointer can be calculated by changing the pointer position with time. The calculated pointer speed of the right hand R1 is VR1, and the pointer speed of the left hand L1 is VL1. Further, it is assumed that a predetermined speed threshold value Vk is stored in the memory.

図1(a)では、オペレータの右手R1のポインタは、ベクトルn100方向に、位置b100から位置b101まで移動している。また、オペレータの左手L1のポインタは、位置α100に止まっている。このため、オペレータの右手R1のポインタの速度VR1は、VR1>Vkとなり、オペレータの左手L1のポインタの速度VL1は、VL1≦Vkが成立しているものとする。   In FIG. 1A, the pointer of the operator's right hand R1 has moved from the position b100 to the position b101 in the vector n100 direction. Further, the pointer of the operator's left hand L1 stops at the position α100. Therefore, the speed VR1 of the operator's right hand pointer R1 is VR1> Vk, and the speed VL1 of the left hand pointer L1 of the operator satisfies VL1 ≦ Vk.

この場合、左手L1のポインタの速度VL1が速度閾値Vkを超えないため、左手L1のポインタは、骨格モデルの右足先を移動させる指示ではなく、右足先の関節を固定する指示を、骨格モデルに与える。そして、右手R1のポインタの速度VR1は閾値Vkを超えているため、右手R1のポインタが、骨格モデルの左手先の関節を移動させる指示を、骨格モデルに与える。   In this case, since the speed VL1 of the pointer of the left hand L1 does not exceed the speed threshold value Vk, the pointer of the left hand L1 does not give an instruction to move the right foot tip of the skeleton model but an instruction to fix the joint of the right foot tip to the skeleton model. give. Then, since the velocity VR1 of the pointer of the right hand R1 exceeds the threshold value Vk, the pointer of the right hand R1 gives an instruction to move the joint of the left hand tip of the skeleton model to the skeleton model.

図1(b)は、上述の図1(a)の操作の結果得られた、新たな姿勢の骨格モデルX101を示している。骨格モデルX101の右足先の関節は、固定関節として位置α100に固定されている。骨格モデルX101の左手先の関節は、位置b101に移動している。骨格モデルは、この操作に基づき、その他の骨と関節を適切な位置に移動させる。右手先は位置a101に移動している。また、左足先は、位置β101に移動している。他の関節および骨の位置をどのように決定するかは、逆運動学の計算方法及び骨格モデルのモデリングによって異なる。逆運動学の計算方法や骨格モデルのモデリングをどのように設定するかは、当業者が決定すべき事項であり、必要に応じて、適切な計算方法、適切なモデル、設定値等を選択すればよい。   FIG. 1B shows a skeleton model X101 having a new posture obtained as a result of the operation shown in FIG. The joint at the right foot tip of the skeleton model X101 is fixed at a position α100 as a fixed joint. The joint on the left hand side of the skeleton model X101 has moved to the position b101. Based on this operation, the skeletal model moves other bones and joints to appropriate positions. The right hand has moved to position a101. Also, the left foot tip has moved to position β101. How to determine the positions of other joints and bones depends on the inverse kinematics calculation method and the skeletal model modeling. How to set the inverse kinematics calculation method and skeletal model modeling is a matter to be determined by those skilled in the art.Select the appropriate calculation method, appropriate model, setting value, etc. as necessary. That's fine.

図1(b)は、更に、左手L1のポインタをベクトルn101方向に位置α100から位置α101に移動させ、右手R1のポインタは位置b101に止まっていることを示している。   FIG. 1B further shows that the pointer of the left hand L1 is moved from the position α100 to the position α101 in the direction of the vector n101, and the pointer of the right hand R1 remains at the position b101.

図1(c)は、図1(b)の上述の操作を終えた状態の骨格モデルX103のポーズを示している。骨格モデルX103は、右足先の関節がドラッグされ位置α101に移動している。左手先の関節は、位置b101に止まっている。また、この操作によって、他の関節及び骨も移動し、右手先の関節は、位置a102に移動し、左足先の関節は、位置β102に移動している。   FIG. 1C shows a pose of the skeleton model X103 in a state where the above-described operation of FIG. In the skeleton model X103, the joint of the right foot tip is dragged and moved to the position α101. The joint on the left hand is stopped at the position b101. In addition, by this operation, the other joints and bones are also moved, the joint at the right hand tip is moved to the position a102, and the joint at the left foot tip is moved to the position β102.

以上の実施例では、マルチポインティングデバイスによって、複数のポインタの位置を独立して計測し、ポインタの速度を予め定められた速度閾値Vkと比較している。そして、ポインタの速度に依存して、ポインタの速度が閾値Vkを超えないポインタについては、対応する関節の移動の指示を、対応する関節の固定の指示に置き換えている。これに対して、ポインタの速度が閾値Vkを超えるポインタについては、対応する関節の移動の指示を与えている。この移動の指示は、ポインタによる本来の指示をそのまま、骨格モデルに与えていることになる。   In the above embodiment, the positions of a plurality of pointers are independently measured by a multipointing device, and the pointer speed is compared with a predetermined speed threshold value Vk. Then, depending on the pointer speed, for the pointer whose pointer speed does not exceed the threshold value Vk, the corresponding joint movement instruction is replaced with the corresponding joint fixing instruction. On the other hand, for a pointer whose pointer speed exceeds the threshold value Vk, an instruction to move the corresponding joint is given. This movement instruction provides the skeleton model with the original instruction from the pointer as it is.

なお、ポインタの移動距離が一定の閾値を超えた場合には、ポインタの速度にかかわらず、骨格モデルの関節の固定の指示に置き換える処理を行わず、関節の移動の指示としてもよい。また、速度閾値Vkの代わりに、移動距離閾値を用いてもよい。例えばた骨格モデルが最後に描画し直された時刻におけるポインタの位置から現在のポインタの位置までの移動距離を測定し、この移動距離を移動距離閾値と比較してもよい。   Note that when the movement distance of the pointer exceeds a certain threshold value, the instruction to move the joint may be used without performing the process of replacing the skeleton model with the joint fixing instruction regardless of the speed of the pointer. Further, a movement distance threshold value may be used instead of the speed threshold value Vk. For example, the movement distance from the position of the pointer to the current pointer position at the time when the skeleton model was last redrawn may be measured, and this movement distance may be compared with a movement distance threshold.

図7は、この操作を示したフロー図である。まず、ステップ702において、マルチポインティングデバイスから、N個の独立した位置情報を取得する。図1の実施例の場合には、N=2である。   FIG. 7 is a flowchart showing this operation. First, in step 702, N pieces of independent position information are acquired from the multipointing device. In the example of FIG. 1, N = 2.

ステップ704において、1番目のポインタの移動速度が速度閾値Vkを超えているか否かを判断する。1番目のポインタの速度が閾値Vkを超えていない場合(「はい」の場合)、ステップ705に移動し、1番目のポインタの指示を関節の固定点指示情報に設定する。逆に1番目のポインタの移動速度が速度閾値Vkを超える場合(「いいえ」の場合)、2番目のポインタの判断ステップ706に移動する。   In step 704, it is determined whether or not the moving speed of the first pointer exceeds the speed threshold value Vk. When the speed of the first pointer does not exceed the threshold value Vk (in the case of “Yes”), the process moves to step 705, and the instruction of the first pointer is set in the joint fixed point instruction information. Conversely, if the moving speed of the first pointer exceeds the speed threshold value Vk (in the case of “No”), the process moves to the determination step 706 for the second pointer.

ステップ706では、ステップ704と同様の判断を2番目のポインタについて行う。必要に応じて、ステップ707が実行される。   In step 706, the same determination as in step 704 is performed for the second pointer. Step 707 is executed as necessary.

同様の判断をN番目のポインタの判断ステップ708まで行う。必要に応じて、ステップ709が実行される。   The same determination is performed up to the Nth pointer determination step 708. Step 709 is executed as necessary.

ステップ710において、N個のポインタの指示情報を用いて、骨格モデルのポーズを計算する。なお、上述の判断ステップで、ポインタの速度が速度閾値Vkを超えていない場合には、ポインタの指示情報が固定点指示情報に置き換えられているため、この固定点指示情報を骨格モデルの計算に適用する。それ以外の場合には、ポインタの指示情報は、本来の指示情報である移動指示として用いられる。   In step 710, the pose of the skeleton model is calculated using the instruction information of the N pointers. If the pointer speed does not exceed the speed threshold value Vk in the above determination step, the pointer instruction information is replaced with the fixed point instruction information. Therefore, the fixed point instruction information is used for the calculation of the skeleton model. Apply. In other cases, the pointer instruction information is used as a movement instruction that is original instruction information.

ステップ712において、計算された骨格モデルを表示する。   In step 712, the calculated skeleton model is displayed.

表示が終了したら、ステップ702に戻る。以上のステップを繰り返すことにより、骨格モデルに所望のポーズを取らせることが容易に行える。   When the display is completed, the process returns to step 702. By repeating the above steps, it is possible to easily cause the skeleton model to take a desired pose.

図1(a)ないし(c)の操作を、たとえばマウスを用いて行ったとすると以下のようになる。マウスの左ボタンによるドラッグを関節の移動指示と定義し、マウスの右クリックを、関節の固定指示、又は関節の固定の解除指示と定義する。   If the operations in FIGS. 1A to 1C are performed using a mouse, for example, the operation is as follows. Dragging with the left mouse button is defined as an instruction to move the joint, and right clicking the mouse is defined as an instruction to fix the joint or to release the fixation of the joint.

まず、固定関節を指示するために、骨格モデルの右足先をマウスで右クリックする。これによって、骨格モデルの右足先の関節が固定関節であることが指示される。次に、マウスを、骨格モデルの左手先の関節に移動させ、位置b100から位置b101まで左ドラッグする。この操作によって、図1(b)の骨格モデルX101の状態となる。次に、骨格モデルの左手先の関節を、右クリックして、関節の固定指示を行う。次に、マウスのカーソルを骨格モデルの右足先に移動させ、右クリックを行い、固定関節の解除を指示する。そして、マウスの左ドラッグを、位置α100から位置α101まで行う。この操作によって、図1(c)の骨格モデルX103の状態になる。   First, in order to designate a fixed joint, the right foot of the skeleton model is right-clicked with the mouse. This indicates that the joint at the right foot of the skeleton model is a fixed joint. Next, the mouse is moved to the joint on the left hand side of the skeleton model, and left dragged from the position b100 to the position b101. By this operation, the state of the skeleton model X101 of FIG. Next, the joint of the left hand of the skeleton model is right-clicked to instruct the joint to be fixed. Next, the mouse cursor is moved to the right foot of the skeleton model, right-clicked, and the release of the fixed joint is instructed. Then, the left mouse drag is performed from position α100 to position α101. By this operation, the state of the skeleton model X103 in FIG.

以上のように、マウスのような単一のポインタを持つポインティングデバイスを用いた場合には、図1に示した骨格モデルのポーズの制御が非常に煩雑になる。これに対して、マルチポインティングデバイスを用いた上述の実施例の場合には、骨格モデルの姿勢の指示を簡便に行える。   As described above, when a pointing device having a single pointer such as a mouse is used, the control of the pose of the skeleton model shown in FIG. 1 becomes very complicated. On the other hand, in the case of the above-described embodiment using a multipointing device, the posture of the skeletal model can be simply indicated.

なお、本明細書に示される実施例の操作は、矛盾のない限り、既に例示したようなマルチポインティングデバイスを用いた種々の操作と組み合わせてもよい。例えば、複数のポインタのうち1つのポインタが静止しており、ポインタの指示が関節の固定指示となった場合に、そのポインタの静止時間が一定時間を超えたときは、指を離しても固定指示を継続させてもよい。この操作は、上述の実施例の機能と、タッチアンドホールドの機能を併用した操作と捉えることもできる。   Note that the operations of the embodiments shown in this specification may be combined with various operations using a multipointing device as exemplified above as long as there is no contradiction. For example, if one pointer out of a plurality of pointers is stationary and the pointer instruction is a joint fixing instruction, if the stationary time of the pointer exceeds a certain time, it is fixed even if the finger is released. The instruction may be continued. This operation can also be regarded as an operation in which the functions of the above-described embodiment and the touch and hold function are used together.

図2は、他の実施例を示している。図2(a)に示されるように、両足先に位置する2つのポインタの移動速度は、閾値Vkを超えないため、骨格モデルの両足先の関節は、それぞれオペレータの左手L2の2つのポインタで固定として指示されている。また、図2(b)に示されるように、骨格モデルの両手先の関節は、それぞれオペレータの右手R2の二つのポインタにより移動させる指示を行っている。すなわち、オペレータの右手人差し指に対応するポインタは、位置a200からa201に、閾値Vkを超える速度で移動しており、オペレータの右手親指に対応するポインタは、位置b200から位置b201に、閾値Vkを超える速度で移動している。このため、オペレータの右手R2に対応する二つのポインタは、本来の指示である移動の指示を骨格モデルに与える。従って、骨格モデルの右手先の関節は、a200からa201に移動する。同様に、骨格モデルの左手先の関節は、b200からb201に移動する。骨格モデルの両足先の関節は、固定関節として指示されるため、左右の足先の関節は、それぞれ位置α200、位置β200に止まっている。   FIG. 2 shows another embodiment. As shown in FIG. 2 (a), the movement speeds of the two pointers located at the two toes do not exceed the threshold value Vk, so the joints at the two toes of the skeleton model are respectively the two pointers of the operator's left hand L2. Instructed as fixed. Further, as shown in FIG. 2 (b), the joints of both hands of the skeleton model are instructed to move by the two pointers of the right hand R2 of the operator. That is, the pointer corresponding to the operator's right hand index finger moves from position a200 to a201 at a speed exceeding the threshold Vk, and the pointer corresponding to the operator's right thumb extends from position b200 to position b201 and exceeds the threshold Vk. Moving at speed. For this reason, the two pointers corresponding to the right hand R2 of the operator give the skeleton model a movement instruction that is the original instruction. Accordingly, the joint on the right hand side of the skeleton model moves from a200 to a201. Similarly, the joint on the left hand side of the skeleton model moves from b200 to b201. Since the joints of both foot tips of the skeletal model are designated as fixed joints, the joints of the left and right foot tips remain at position α200 and position β200, respectively.

上述のように、図2(a)から図2(b)への骨格モデルのポーズの変形は、図1及び図7に示した手法と同様の操作を行うことにより実現できる。   As described above, the deformation of the pose of the skeleton model from FIG. 2A to FIG. 2B can be realized by performing the same operation as the method shown in FIG. 1 and FIG.

なお、骨格モデルのポーズの変形は、速度閾値Vkを用いずに、図8に示す変形例の手法を用いて、骨格モデルのポーズを変化させてもよい。   Note that the pose of the skeleton model may be changed by using the method of the modification shown in FIG. 8 without using the speed threshold Vk.

図8に、変形例の手法の処理フローを示す。   FIG. 8 shows a processing flow of the modified method.

ステップ804において、複数のポインタの各々と、骨格モデルの関節との対応関係を決定する。例えば、図2(a)の場合には、オペレータの4つの指が、画面に触れており、4つポインタが、それぞれ、位置a200、位置b200、位置α200、位置β200に存在している。そして、これらのポインタのそれぞれを、骨格モデルの右手先の関節、左手先の関節、右足先の関節、左足先の関節に対応づける。また、ポインタの総数Nは、N=4である。なお、ポインタと関節との対応付けについては、図4を用いて後述する。   In step 804, the correspondence between each of the plurality of pointers and the joint of the skeleton model is determined. For example, in the case of FIG. 2A, the operator's four fingers are touching the screen, and the four pointers exist at position a200, position b200, position α200, and position β200, respectively. Each of these pointers is associated with the joint of the right hand tip, the joint of the left hand tip, the joint of the right foot tip, and the joint of the left foot tip of the skeleton model. The total number N of pointers is N = 4. The association between the pointer and the joint will be described later with reference to FIG.

ステップ806で、繰り返しのアルゴリズムのための、変数nの初期化(n=1)を行う。   In step 806, the variable n is initialized (n = 1) for the iterative algorithm.

ステップ810は、n番目のポインタの位置に、このポインタに対応する関節を移動させる(又は両者を近づける)ために、骨格モデルのポーズを計算する。   Step 810 calculates the pose of the skeletal model to move the joint corresponding to this pointer to the position of the nth pointer (or bring them closer together).

ステップ812は、繰り返しアルゴリズムのための変数nが、n≧Nであるか否かを判断する。   Step 812 determines whether the variable n for the iterative algorithm is n ≧ N.

ステップ814は、ステップ812の判断が「はい」である場合に実行される。この場合、全てのN個のポインタについて、処理が終了したため、骨格モデルを表示させる。   Step 814 is executed when the determination in step 812 is “Yes”. In this case, since the processing has been completed for all N pointers, the skeleton model is displayed.

ステップ816は、ステップ812の判断が「いいえ」である場合に実行される。この場合には、全てのN個のポインタについて、処理が終了していないため、nをインクリメントし、ステップ810に戻る。   Step 816 is executed when the determination in step 812 is “No”. In this case, since processing has not been completed for all N pointers, n is incremented and the processing returns to step 810.

なお、上述のフローでは、ポインタ毎に骨格モデルを計算しているが、全てのポインタの位置情報を与えて、一度に骨格モデルの計算を実行させてもよい。いずれの計算方法を実行するかは、採用する骨格モデル、計算にかかる時間等を勘案して決定すればよい。   In the above-described flow, the skeleton model is calculated for each pointer. However, the position information of all pointers may be given to calculate the skeleton model at a time. Which calculation method is executed may be determined in consideration of the skeleton model to be used, the time required for the calculation, and the like.

ステップ818は、消滅したポインタや、新たに発生したポインタがあれば、ポインタと、関節との対応付けを更新する。また、ポインタの数が、増減した場合には、ポインタ数Nを適切に更新する。そして、ステップ806に戻る。   Step 818 updates the association between the pointer and the joint if there is a lost pointer or a newly generated pointer. When the number of pointers increases or decreases, the number N of pointers is updated appropriately. Then, the process returns to step 806.

以上の処理は、例えば図2の例の場合、骨格モデルの右手先の関節、及び左手先の関節が、それぞれ、位置a200から位置a201に、位置b200から位置b201に、移動する際に、図8に示す処理ステップの繰り返しが複数回行われることになる。なお、距離閾値Lpを設定し、ポインタと、対応する関節との距離がこの閾値Lpよりも大きい場合にだけ、骨格モデルを計算させるようにしてもよい。この場合には、Lpが小さいほど、骨格モデルの再表示は滑らかになる。なお、骨格モデルの複雑度、処理マシンの計算能力に応じて、適切な距離閾値Lpを設定してもよい。距離閾値Lpはユーザが設定できるようにしてもよい。あるいは、骨格モデルの複雑度に応じて、予め定められた閾値の値Lpを自動的に設定するようにしてもよい。骨格モデルの複雑度は、骨の数、関節の数、骨格モデルの周囲に貼り付けるポリゴンの数、ポリゴンにテクスチャマッピングをするか否か、骨格モデルの関節の曲がり角度に制限を設けるか否か、骨格モデルのレンダリングの所要時間等に基づき判断してもよい。   For example, in the case of the example in FIG. 2, the above processing is performed when the right-hand joint and the left-hand joint of the skeleton model move from position a200 to position a201 and from position b200 to position b201, respectively. The processing steps shown in FIG. 8 are repeated a plurality of times. Note that the distance threshold Lp may be set, and the skeleton model may be calculated only when the distance between the pointer and the corresponding joint is larger than the threshold Lp. In this case, the smaller the Lp is, the smoother the skeleton model is displayed again. An appropriate distance threshold Lp may be set in accordance with the complexity of the skeleton model and the calculation capability of the processing machine. The distance threshold Lp may be set by the user. Alternatively, a predetermined threshold value Lp may be automatically set according to the complexity of the skeleton model. The complexity of the skeletal model is the number of bones, the number of joints, the number of polygons to be pasted around the skeletal model, whether or not texture mapping is applied to the polygons, and whether or not the bending angle of joints in the skeletal model is limited The determination may be made based on the time required for rendering the skeleton model.

なお、図8の繰り返し処理の途中で、ポインタが消滅したり、新たに発生したりした場合には、繰り返し処理を中断して、ステップ814の骨格モデルの表示、または、ステップ818に、強制的にジャンプしてもよい。   If the pointer disappears or newly appears in the middle of the iterative process of FIG. 8, the iterative process is interrupted, and the skeleton model display in step 814 or the step 818 is forcibly performed. You may jump to.

図3は、他の実施例として、仮想的に表示された紙を折る操作を示した図である。   FIG. 3 is a diagram showing an operation of folding virtually displayed paper as another embodiment.

図3(a)に示されるように、画面上に紙P301が示されている。そして、左手L3のポインタは、位置α300をポイントしており、その速度は、速度閾値Vkを超えていない。また、右手R3のポインタは、位置β300をポイントしており、ベクトルn5方向に、移動している。その速度は、速度閾値Vkを超えている。   As shown in FIG. 3A, paper P301 is shown on the screen. The pointer of the left hand L3 points to the position α300, and the speed does not exceed the speed threshold value Vk. The pointer of the right hand R3 points to the position β300 and moves in the vector n5 direction. The speed exceeds the speed threshold Vk.

この場合、左手L3のポインタは、直線m300を折り目とする指示を仮想的な紙のモデルに与える。図3(a)の例の場合には、「点α300を通り、ベクトルn5との角度が直角となる直線」として折り目m300を決定してもよい。あるいは、直角ではなく、予め定められた角度を設定しておいてもよい。その他、折り目m300の方向は、紙が四辺形であれば、その対角線に対して平行にしてもよく、ユーザ又はシステム設計者が、適切な値を予め定めておいてもよい。   In this case, the pointer of the left hand L3 gives an instruction to fold the straight line m300 to the virtual paper model. In the example of FIG. 3A, the crease m300 may be determined as “a straight line passing through the point α300 and having an angle with the vector n5”. Alternatively, instead of a right angle, a predetermined angle may be set. In addition, if the paper is a quadrilateral, the direction of the crease m300 may be parallel to the diagonal line, and an appropriate value may be determined in advance by the user or the system designer.

図3(b)は、右手R3のポインタをベクトルn5方向に動かして、紙の角が位置β301に移動した紙P302を示している。   FIG. 3B shows the paper P302 in which the corner of the paper is moved to the position β301 by moving the pointer of the right hand R3 in the vector n5 direction.

図3(c)は、折り目m300で、紙が完全に折り返され、紙の角が位置β302に達した紙P303の状態を示している。   FIG. 3C shows a state of the paper P303 in which the paper is completely folded at the crease m300 and the paper corner reaches the position β302.

図3に示した実施例では、ポインタの速度が速度閾値Vk超えていれば、ポインタの本来の指示であるドラッグを移動指示情報として、仮想的な紙のモデルに変形処理に適用する。そして、ポインタの速度が速度閾値Vkを超えない場合には、そのポインタの移動指示に代えて、紙の折り目を設定する指示を、仮想的な紙のモデルの変形処理に適用している。   In the embodiment shown in FIG. 3, if the pointer speed exceeds the speed threshold value Vk, the drag that is the original instruction of the pointer is applied to the deformation process on the virtual paper model as the movement instruction information. If the pointer speed does not exceed the speed threshold value Vk, an instruction to set a paper fold is applied to the virtual paper model deformation process instead of the pointer movement instruction.

図4は、骨格モデルを用いて、ポインタと、ポインタにより制御される対象との対応付けに関する一例を示したものである。図4(a)には、骨401ないし403が関節411及び412で接続された、骨格モデルの一部が示されている。そして、ポインタ400が、骨格モデルの近くに存在している。ここで、ポインタ400は、関節411からL450だけ離れた位置に存在している。また、ポインタ400は、関節412とはL460だけ離れた位置に存在している。そして、L450<L460となっている。この場合には、ポインタ400に一番近い関節411が、ポインタ400に関連付けられるようにすればよい。なお、一定の閾値Laを設けて、ポインタ400から一番近い関節までの距離
が、閾値Laを超える場合には、ポインタ400と関節との関連づけを行わないようにしてもよい。
FIG. 4 shows an example of association between a pointer and an object controlled by the pointer using a skeleton model. FIG. 4A shows a part of a skeletal model in which bones 401 to 403 are connected by joints 411 and 412. A pointer 400 exists near the skeleton model. Here, the pointer 400 exists at a position separated from the joint 411 by L450. Further, the pointer 400 is present at a position separated from the joint 412 by L460. And L450 <L460. In this case, the joint 411 closest to the pointer 400 may be associated with the pointer 400. It should be noted that a certain threshold value La is provided, and when the distance from the pointer 400 to the nearest joint exceeds the threshold value La, the association between the pointer 400 and the joint may not be performed.

図4(b)は、ポインタ400が関節411と関連づけされた後に、ポインタ400から関節411及び412までの距離が、それぞれL451、L461(L451>L461)となった場合を示している。この場合、ポインタ400から一番近い関節は、関節412となっている。しかしながら、既に図4(a)において、ポインタ400は、関節411と関連付けられているため、この関連付けを維持し、関連づけの変更は行わないようにしてもよい。   FIG. 4B shows a case where the distance from the pointer 400 to the joints 411 and 412 becomes L451 and L461 (L451> L461) after the pointer 400 is associated with the joint 411, respectively. In this case, the joint closest to the pointer 400 is a joint 412. However, since the pointer 400 is already associated with the joint 411 in FIG. 4A, this association may be maintained and the association may not be changed.

このように、一旦関連付けされたポインタと関節とのペアを維持することによって、骨格モデルの変形を、より安定した形で行わせることが可能となる。ポインタと関節との関連づけを途中で変更すると、ユーザの意図しない関節がポインタに吸い寄せられるような挙動を示すことになる場合があるからである。   Thus, by maintaining a pair of a pointer and a joint that are once associated, the skeleton model can be deformed in a more stable manner. This is because if the association between the pointer and the joint is changed in the middle, a behavior may be exhibited in which a joint not intended by the user is attracted to the pointer.

なお、上述の対応付けは、一例を示したものであり、本発明はこれに限定されるものではない。   Note that the above-described association is an example, and the present invention is not limited to this.

図5は、他の実施例を示している。例示として、携帯電話の仮想的なオブジェクトが表示されている。   FIG. 5 shows another embodiment. As an example, a virtual object of a mobile phone is displayed.

図5(a)において、オペレータの左手L5のポインタは、携帯電話の上部の位置α500に存在している。そして、オペレータの右手R5のポインタは、携帯電話の横腹の部分の位置β500に存在している。そして、左手L5のポインタの速度は、速度閾値Vkを超えておらず、右手R5のポインタは、速度閾値Vkを超える速度でベクトルn500方向に、移動している。この実施例の場合には、左手L5のポインタは、携帯電話表面上の位置α500を通り、例えば、携帯電話の重心を通る直線s500を携帯電話の回転中心軸として設定する指示を与える。そして、オペレータが右手R5のポインタを、ベクトルn500方向に動かすに連れて、回転軸s500を中心に携帯電話が回転する。   In FIG. 5A, the pointer of the operator's left hand L5 is at a position α500 at the top of the mobile phone. The pointer of the operator's right hand R5 is present at the position β500 of the flank portion of the mobile phone. The speed of the left hand L5 pointer does not exceed the speed threshold Vk, and the right hand R5 pointer moves in the vector n500 direction at a speed exceeding the speed threshold Vk. In the case of this embodiment, the pointer of the left hand L5 passes through the position α500 on the surface of the mobile phone, and gives an instruction to set, for example, a straight line s500 passing through the center of gravity of the mobile phone as the rotation center axis of the mobile phone. Then, as the operator moves the pointer of the right hand R5 in the direction of the vector n500, the mobile phone rotates about the rotation axis s500.

図5(b)は、上述の操作を行って、右手R5のポインタが位置β501まで移動し、携帯電話が、これに伴って、回転軸s500を中心に回転した状態を示している。   FIG. 5B shows a state where the above-described operation is performed and the pointer of the right hand R5 moves to the position β501, and the mobile phone is rotated around the rotation axis s500 accordingly.

図5(b)は更に、この状態において、右手R5のポインタの移動速度が、速度閾値Vkを超えなくなり、逆に、左手L5のポインタの移動速度が、速度閾値Vkを超え、ベクトルn501方向に移動し始めた様子を示している。この場合、回転中心は、右手R5のポインタを通り、携帯電話の重心を通過する直線s501(直線s501は、紙面にほぼ垂直である直線)を中心に、携帯電話が回転するようになる。   FIG. 5B further shows that in this state, the moving speed of the pointer of the right hand R5 does not exceed the speed threshold value Vk, and conversely, the moving speed of the pointer of the left hand L5 exceeds the speed threshold value Vk and moves toward the vector n501. It shows how it began to move. In this case, the mobile phone rotates about the straight line s501 passing through the pointer of the right hand R5 and passing through the center of gravity of the mobile phone (the straight line s501 is a straight line that is substantially perpendicular to the paper surface).

図5(c)は、左手L5のポインタが位置α501まで移動した様子を示している。図示されているように、携帯電話は、回転中心軸として直線s501を中心として回転している。   FIG. 5C shows a state where the pointer of the left hand L5 has moved to the position α501. As shown in the figure, the mobile phone rotates about a straight line s501 as a rotation center axis.

なお、上述の実施例では、回転中心として、閾値速度Vkを超えないポインタ位置であって、携帯電話の表面にある点から、携帯電話の重心を通る直線を回転軸として採用したが、重心以外の、予め定められた点を決めておいてもよい。あるいは、軸を中心とする回転ではなく。ポインタ位置を回転の中心点とする回転を行わせてもよい。回転の設定のしかたは、予め定めておけばよい。   In the above-described embodiment, a straight line passing through the center of gravity of the mobile phone from the point on the surface of the mobile phone that is a pointer position that does not exceed the threshold speed Vk is used as the rotation center. A predetermined point may be determined. Or not rotation around the axis. Rotation with the pointer position as the center point of rotation may be performed. How to set the rotation may be determined in advance.

上記実施例では、二つのポインタを用いて、仮想的なオブジェクトを簡単な操作で所望の方向に回転させることが容易に行える。   In the above embodiment, it is possible to easily rotate a virtual object in a desired direction by a simple operation using two pointers.

図6は、本明細書において説明した各種の実施例をインプリメントするシステム600のハードウエアの構成例を示している。システム600は、CPU601、ディスプレイ602、タッチスクリーン604、キーボード606、マウス608、ROM610、RAM612、外部メモリ媒体615を読み書きする外部メモリインターフェース614、ネットワークとの通信を行う通信インターフェース616、及び各ハードウエアを接続するバス620を含む。   FIG. 6 illustrates an example hardware configuration of a system 600 that implements the various embodiments described herein. The system 600 includes a CPU 601, a display 602, a touch screen 604, a keyboard 606, a mouse 608, a ROM 610, a RAM 612, an external memory interface 614 that reads and writes external memory media 615, a communication interface 616 that communicates with a network, and each hardware. A bus 620 to be connected is included.

図9及び図10を用いて、骨格モデルにて関して以下説明する。   The skeleton model will be described below with reference to FIGS. 9 and 10.

三次元仮想空間で人体モデル,動物,構造物等の姿勢(ポーズ,動き等)を制御する際に用いられるこのような骨格モデルにおいては,図9(a)に示す各々の骨および関節の位置,角度,回転(曲げ,捻り)等を意図したとおりに制御することが必要となる。図9(a)に示される骨格モデルでは,各々の骨は関節で結合されており,各々の骨の動きが他の骨の動きに影響を与える。   In such a skeletal model used for controlling the posture (pose, movement, etc.) of a human body model, animal, structure, etc. in a three-dimensional virtual space, the position of each bone and joint shown in FIG. , Angle, rotation (bending, twisting), etc. must be controlled as intended. In the skeleton model shown in FIG. 9A, each bone is connected by a joint, and the movement of each bone affects the movement of other bones.

骨格モデルを制御する手法の一例として,逆運動学(Inverse Kinematics)のうちのCCD(Cyclic−Coordinate−Descent)法について以下に説明する。なお,本発明はこの手法への適用に限定されるものではない。   As an example of a method for controlling the skeleton model, a CCD (Cyclic-Coordinate-Desent) method in inverse kinematics will be described below. The present invention is not limited to application to this method.

図10に示すように,複数の関節J乃至Jと複数の骨B乃至Bを有する骨格モデルを例にして説明する。関節Jの位置が固定されている場合において,骨格モデルの骨Bの点Aを目標点である点Dに移動させる場合のCCD法の操作を以下に示す。CCD法は,1回の計算ステップで1つの関節(J)の角度のみを動かして,点Aと点Dとの距離を最小化し,順次この操作を全ての関節(J乃至J)について計算する。この操作によって,順次点Aと点Dとの距離が小さくなる。この計算を繰り返す。具体的な計算方法を以下に示す。
(1)図10(b)に示すように,まず,関節Jの回転角度だけを操作して点Aと点Dとの距離が最短になるようにする。このためには,関節Jを中心として骨Bを角度θだけ回転させ,関節Jと目標Dとを結んだ直線h上に,点Aを移動させる。これによって,点Aは,直線h上に位置するため,点Aと点Dとの距離が最短になる。
(2)図10(c)に示すように,次に関節Jの回転角度だけを操作して点Aと点Dとの距離が最短になるようにする。このためには,関節Jを中心として骨Bを角度θだけ回転させ,関節Jと目標Dとを結んだ直線h上に,点Aを移動させる。これによって,点Aと点Dとの距離が最短になる。
(3)図10(d)に示すように,次に関節Jの回転角度だけを操作して点Aと点Dとの距離が最短になるようにする。このためには,関節Jを中心として骨Bを角度θだけ回転させ,関節Jと目標Dとを結んだ直線h上に,点Aを移動させる。これによって,点Aと点Dとの距離が最短になる。
(4)同じ操作を上記(1)から再度繰り返す。
As shown in FIG. 10, a skeleton model having a plurality of joints J 1 to J 3 and a plurality of bones B 1 to B 3 will be described as an example. In the case where the position of the joint J 3 is fixed, showing the operation of the CCD method when moving the point A of the bone B 1 skeleton model point D which is a target point below. In the CCD method, only the angle of one joint (J 1 ) is moved in one calculation step to minimize the distance between point A and point D, and this operation is sequentially performed on all joints (J 1 to J 3 ). Calculate about. By this operation, the distance between the point A and the point D is sequentially reduced. Repeat this calculation. A specific calculation method is shown below.
(1) As shown in FIG. 10 (b), first, the distance between point A and point D rotation angle only by operating the joints J 1 is set to be the shortest. For this purpose, around the joint J 1 rotates the bone B 1 by an angle theta 1, on a straight line h 1 of connecting the joints J 1 and the target D, to move the point A. Thus, point A, in order to position on the straight line h 1, the distance between the points A and D are the shortest.
(2) As shown in FIG. 10 (c), the distance between the point A and the point D and then operated by the rotation angle of the joint J 2 is set to be the shortest. For this purpose, around the joint J 2 rotates the bone B 2 by an angle theta 2, on a straight line h 2 for connecting the joint J 2 and the target D, to move the point A. This minimizes the distance between point A and point D.
(3) As shown in FIG. 10 (d), the distance between the point A and the point D and then operated by the rotation angle of the joint J 3 is made to be the shortest. For this purpose, around the joint J 3 rotate the bone B 3 by the angle theta 3, on a straight line h 3 of connecting the joint J 3 and the target D, to move the point A. This minimizes the distance between point A and point D.
(4) Repeat the same operation from (1) above.

点Aと点Dの距離が閾値e以下になること,及び反復回数が上限回数を超えたこと,の少なくともいずれか一方が満たされたときに計算を打ち切ることとしてもよい。   The calculation may be terminated when at least one of the distance between the point A and the point D is equal to or less than the threshold value e and the number of iterations exceeds the upper limit number is satisfied.

上記の例では,点Aは,端点であったが,一般には,骨格の関節である場合もある。   In the above example, the point A is an end point, but may generally be a skeletal joint.

以上、本発明の各種実施例について説明したが、本発明は、上述のマルチポインティングデバイスへの適用に限定されるものではなく、その他の様々なユーザインターフェースに適用できることは言うまでもない(例えば、単一のポインタを持つポインティングデバイスであっても、複数のオペレータがネットワーク等を介して接続され、同一のオブジェクトに対して変形を行わせる場合にも適用できる)。また、本発明は、コンピュータグラフィックスの分野への適用に限られるものではなく、携帯電話、タブレットコンピュータ、プロジェクタ、テレビジョン等を用いて表示を行うコンピュータアプリケーションに対する、ユーザからの指示にも適用し得る。加えて、アプリケーションプログラムに対する単独のオペレータによる指示ばかりでなく、複数のオペレータによる複数の独立した指示に対し用いてもよい。   Although various embodiments of the present invention have been described above, the present invention is not limited to the application to the above-described multipointing device, and can be applied to various other user interfaces (for example, a single Even a pointing device having a pointer of (5) can be applied to a case where a plurality of operators are connected via a network or the like and the same object is deformed). Further, the present invention is not limited to the application to the field of computer graphics, but also applies to instructions from a user for computer applications that display using a mobile phone, a tablet computer, a projector, a television, or the like. obtain. In addition, not only an instruction by a single operator for an application program but also a plurality of independent instructions by a plurality of operators may be used.

なお、通常、マルチポインティングデバイスは、オペレータの複数の指をタッチパネルに接触させて、それぞれの接触位置がポインタとしての機能を果たすが、本発明では、タッチパネルに触れるものとしは、オペレータの指以外のもの(例えばペン等)であってもよい。また、タッチパネルに触れる指は、両手の指を用いてもよく、また、片手の複数の指を用いてもよい。加えて、マルチポインティングデバイスは、タッチパネルに限定されるものではなく、複数の独立した指示を与えることができるあらゆる入力用ユーザインターフェースであってもよい。更に、ユーザインターフェースは、接触を伴わないインターフェースであってもよい。たとえば、音声、光等を用いたものであってもよい。また、複数のオペレータによる指示であってもよい。この場合、複数のオペレータは、ネットワークを介して遠隔地に存在してもよい。   In general, a multipointing device brings a plurality of fingers of an operator into contact with the touch panel, and each contact position functions as a pointer. It may be a thing (for example, a pen). The fingers touching the touch panel may be fingers of both hands or a plurality of fingers of one hand. In addition, the multipointing device is not limited to a touch panel, and may be any input user interface that can give a plurality of independent instructions. Furthermore, the user interface may be an interface without contact. For example, sound, light, or the like may be used. Moreover, the instruction | indication by a some operator may be sufficient. In this case, a plurality of operators may exist at remote locations via a network.

ポインタは、マウスのカーソルのように画面上に表示させてもよいし、非表示であってもよい。非表示であったとしても、画面上に指が触れていれば、ユーザはポインタの位置を認知できるからである。   The pointer may be displayed on the screen like a mouse cursor, or may not be displayed. This is because the user can recognize the position of the pointer if the finger is touching the screen even if it is not displayed.

なお、上述の実施例では、ポインタが、二次元の表示画面上をポイントできる例を示した。したがって、例えば、上述の実施例での関節とポインタの距離は、画面に投影された関節とポインタとの画面上での距離を指す。しかしながら、上述の各種実施例は、ポインタが三次元空間上を移動しポイントできるマルチポインティングデバイスに対しても、同様に適用できることは言うまでもない。この場合には、例えば関節とポインタの距離は、三次元の仮想空間上の距離を指す。   In the above-described embodiment, an example in which the pointer can point on the two-dimensional display screen is shown. Therefore, for example, the distance between the joint and the pointer in the above-described embodiment indicates the distance on the screen between the joint and the pointer projected on the screen. However, it goes without saying that the various embodiments described above can be similarly applied to a multi-pointing device in which a pointer can move and point in a three-dimensional space. In this case, for example, the distance between the joint and the pointer indicates a distance in a three-dimensional virtual space.

上述の各実施例の処理ステップは、矛盾のない限り、順番を入れ替えて実行してもよい。また、請求項に係る方法のステップを入れ替えた方法も、その請求項の技術的範囲に含まれることは言うまでもない。   The processing steps of the above-described embodiments may be executed by changing the order as long as there is no contradiction. Further, it goes without saying that a method in which the steps of the method according to the claims are interchanged is also included in the technical scope of the claims.

Claims (7)

表示領域にオブジェクトを表示させる方法であって、
表示領域に対して複数のポインタの各々によりポイントされた前記オブジェクトの部分に対して、独立に指示情報を指定できるポインティングデバイスから、前記複数のポインタの各々に対応した指示情報を取得するステップと、
所定のポインタに対応する指示情報の変化が、予め定められた閾値を超えない場合、前記所定のポインタに対応する指示情報を、前記所定のポインタに対応する指示情報とは性質の異なる特定の指示情報に置き換え、前記所定のポインタに対応付けるステップと、
前記複数のポインタの各々に対応した前記指示情報又は置き換えられた前記特定の指示情報に基づいて、前記表示領域に表示されるオブジェクトを変化させるステップと、
を有
前記指示情報は、ポイントされた前記オブジェクトの部分の位置であり、前記特定の指示情報は、ポイントされた前記オブジェクトの部分を固定させる指示である、
方法。
A method for displaying an object in a display area,
Obtaining instruction information corresponding to each of the plurality of pointers from a pointing device capable of independently specifying instruction information for the portion of the object pointed to by a plurality of pointers with respect to the display area;
Change instruction information corresponding to a predetermined pointer, it does not exceed the predetermined threshold, the instruction information corresponding to the predetermined pointer specific instructions of different nature from the instruction information corresponding to the predetermined pointer Replacing with information and associating with the predetermined pointer;
Changing an object displayed in the display area based on the instruction information corresponding to each of the plurality of pointers or the replaced specific instruction information ;
I have a,
The instruction information is a position of the part of the object pointed to, and the specific instruction information is an instruction to fix the part of the object pointed to.
Method.
前記閾値は、前指示情報が示す位置の移動速度、又は移動距離である、
請求項1記載の方法。
The threshold is a moving speed or moving distance of the position indicated by the pre-Symbol instruction information,
The method of claim 1.
前記オブジェクトは、骨と骨を関節で接続した骨格モデルであり、
前記指示情報は、関節の位置であり、
前記特定の指示情報は、関節を固定する指示である、
請求項1又は2記載の方法。
The object is a skeletal model in which bones and bones are connected by joints,
The instruction information is a joint position,
The specific instruction information is an instruction to fix a joint.
The method according to claim 1 or 2.
前記ポインティングデバイスは、前記オブジェクトを表示すためのディスプレイを有するタッチパネルである、請求項1ないし3のうちいずれか1項記載の方法。   The method according to claim 1, wherein the pointing device is a touch panel having a display for displaying the object. 前記ポインタは、表示領域において不可視である、請求項1ないし4のうちいずれか1項記載の方法。   The method according to claim 1, wherein the pointer is invisible in a display area. 表示領域に骨格モデルを表示させる方法であって、
表示領域上の複数の位置を独立にポイントできるポインティングデバイスによる複数のポインタの各々に、前記骨格モデルの関節を対応付けるステップと、
前記複数のポインタの各々と、前記複数のポインタ各々に対応する関節との距離が近づくよう、前記骨格モデルのポーズを計算するステップと、
前記計算された骨格モデルのポーズを表示するステップと、
を有し、
前記対応付けるステップは、
所定のポインタに、いずれの関節も対応付けられていない場合は、前記所定のポインタに一番近い第1の関節を、前記所定のポインタに対応する関節とし、前記所定のポインタに、既に第2の関節が対応付けられている場合には、前記所定のポインタに一番近い第3の関節が存在する場合であっても、前記所定のポインタと、前記第2の関節との対応関係を維持する、ステップ、
を含む、方法。
A method for displaying a skeleton model in a display area,
Associating a joint of the skeleton model with each of a plurality of pointers by a pointing device capable of independently pointing a plurality of positions on a display area;
And each of the plurality of pointers, said plurality of pointers to approach the distance between the corresponding joints each, calculating the pose of the skeleton model,
Displaying the calculated pose of the skeletal model;
I have a,
The step of associating includes
If no joint is associated with the predetermined pointer, the first joint closest to the predetermined pointer is set as the joint corresponding to the predetermined pointer, and the second pointer is already set to the second pointer. When the joint is associated, the correspondence between the predetermined pointer and the second joint is maintained even when the third joint closest to the predetermined pointer exists. Step,
Including, METHODS.
請求項1ないしのうちいずれか1項記載の方法をコンピュータに実行させる命令を有するプログラム。 The program which has a command which makes a computer perform the method of any one of Claims 1 thru | or 6 .
JP2011153251A 2011-07-11 2011-07-11 Multipointing device control method and program Active JP5618926B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011153251A JP5618926B2 (en) 2011-07-11 2011-07-11 Multipointing device control method and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011153251A JP5618926B2 (en) 2011-07-11 2011-07-11 Multipointing device control method and program

Publications (2)

Publication Number Publication Date
JP2013020446A JP2013020446A (en) 2013-01-31
JP5618926B2 true JP5618926B2 (en) 2014-11-05

Family

ID=47691820

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011153251A Active JP5618926B2 (en) 2011-07-11 2011-07-11 Multipointing device control method and program

Country Status (1)

Country Link
JP (1) JP5618926B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103268158B (en) * 2013-05-21 2017-09-08 上海速盟信息技术有限公司 A kind of method, device and a kind of electronic equipment of simulated gravity sensing data
JP2019020836A (en) * 2017-07-12 2019-02-07 株式会社コロプラ Information processing method, device, and program for causing computer to execute the method

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3241310B2 (en) * 1996-11-19 2001-12-25 株式会社ナムコ Shape deformation method of skeleton model, image synthesizing device, and information storage medium
JP3265271B2 (en) * 1996-11-19 2002-03-11 株式会社ナムコ Shape deformation method of skeleton model, image synthesizing device, and information storage medium
JP2001134382A (en) * 1999-11-04 2001-05-18 Sony Corp Graphic processor
JP4803883B2 (en) * 2000-01-31 2011-10-26 キヤノン株式会社 Position information processing apparatus and method and program thereof.
US6897853B2 (en) * 2000-11-10 2005-05-24 Microsoft Corp. Highlevel active pen matrix
JP2002319036A (en) * 2001-02-13 2002-10-31 Sega Corp Animation generation program
JP2003058907A (en) * 2001-08-09 2003-02-28 Univ Tokyo Method for generating pose and motion in tree structure link system
TWI399670B (en) * 2006-12-21 2013-06-21 Elan Microelectronics Corp Operation control methods and systems, and machine readable medium thereof
JP5108747B2 (en) * 2008-12-26 2012-12-26 富士フイルム株式会社 Information display apparatus, method and program

Also Published As

Publication number Publication date
JP2013020446A (en) 2013-01-31

Similar Documents

Publication Publication Date Title
JP6938706B2 (en) User interface program and game program
KR102219912B1 (en) Remote hover touch system and method
US8866781B2 (en) Contactless gesture-based control method and apparatus
US9542068B2 (en) System and method for constrained manipulations of 3D objects by multitouch inputs
US20200310561A1 (en) Input device for use in 2d and 3d environments
Mine et al. Making VR work: building a real-world immersive modeling application in the virtual world
CN108228026B (en) Fast manipulation of objects in three-dimensional scenes
KR20130099570A (en) System and method for implemeting 3-dimensional user interface
KR20130137069A (en) Method of simulating the touch screen operation by means of a mouse
CN104281395A (en) Mutual information processing method and electronic device
JP6598984B2 (en) Object selection system and object selection method
Wolf et al. Performance envelopes of in-air direct and smartwatch indirect control for head-mounted augmented reality
JP6360509B2 (en) Information processing program, information processing system, information processing method, and information processing apparatus
JP5618926B2 (en) Multipointing device control method and program
Machuca et al. Interaction Devices and Techniques for 3D Sketching
JP6911772B2 (en) Information processing equipment, information processing methods and programs
Covarrubias et al. A hand gestural interaction system for handling a desktop haptic strip for shape rendering
KR102359598B1 (en) Method and apparatus for 3d sketching
CN111273802B (en) Method for moving object on screen and touch display device
Mohanty et al. Kinesthetically augmented mid-air sketching of multi-planar 3D curve-soups
US10025884B1 (en) Manipulation tool for offset surface of a simulation model
Chang et al. Origami simulator: a multi-touch experience
JP5595948B2 (en) Object correction processing apparatus, method and program
KR102392675B1 (en) Interfacing method for 3d sketch and apparatus thereof
Bruno et al. The over-sketching technique for free-hand shape modelling in Virtual Reality

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130513

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140331

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140826

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140916

R150 Certificate of patent or registration of utility model

Ref document number: 5618926

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250