Vertex Selection Using Immersive Gestures in 3D Modeling
The method addresses the challenge of selecting vertices in 3D objects within immersive environments by using hand gestures to determine the closest vertex based on distance and orientation, improving interaction and reducing ambiguity.
Patent Information
- Application Number
- JP2020211251
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-12-30
- Filing Date
- 2020-12-21
- Publication Date
- 2025-10-02
- Estimated Expiration
- 2040-12-21
AI Technical Summary
Existing CAD applications lack efficient methods for selecting topological elements, such as vertices of 3D objects, in immersive environments using natural hand interactions, leading to ambiguity and time-consuming processes.
A computer-implemented method for selecting a vertex in a 3D immersive environment using hand gestures, involving the detection of an index finger and thumb pad opposition to determine a line segment, and identifying the vertex closest to this segment based on distance and orientation considerations.
This method simplifies and clarifies the selection process by using hand gestures, reducing ambiguity and the number of required actions, enhancing user interaction and efficiency in selecting vertices in 3D objects.
Smart Images

Figure 0007748182000031 
Figure 0007748182000032 
Figure 0007748182000033
Abstract
Description
[Technical Field]
[0001] The present invention relates to the field of computer programs and systems, and more particularly to a method for selecting a vertex from a plurality of vertices of a 3D object in a 3D immersive environment. [Background technology]
[0002] Many systems and programs are available on the market for designing, engineering, and manufacturing objects. CAD stands for Computer-Aided Design and refers to software solutions for designing objects. CAE stands for Computer-Aided Engineering and refers to software solutions for simulating the physical behavior of future products. CAM stands for Computer-Aided Manufacturing and refers to software solutions for defining manufacturing processes and operations. In such computer-aided design systems, the graphical user interface plays a key role in the efficiency of the technology. These technologies can be incorporated into Product Lifecycle Management (PLM) systems. PLM refers to a business strategy that helps companies share product data, apply common processes, and leverage corporate knowledge for product development from conception to the end of the product's lifecycle across the extended enterprise. Dassault Systèmes' PLM solutions (product names: CATIA, ENOVIA, DELMIA) provide an Engineering Hub to organize product engineering knowledge, a Manufacturing Hub to manage product engineering knowledge, and an Enterprise Hub to enable enterprise integration and connectivity to both the Engineering and Manufacturing Hubs. Overall, the systems provide an open object model that connects products, processes, and resources, enabling dynamic, knowledge-based product creation and decision support that drives optimized product definition, manufacturing preparation, production, and service.
[0003] CAD applications allow for the interactive creation of accurate 3D objects. A 3D object is considered accurate if it faithfully reproduces its corresponding real-world counterpart. One criterion is to minimize the difference between the envelope of the 3D object and the envelope of the real-world object. Therefore, 3D objects created in CAD applications traditionally contain many small topological elements for the rough portions of the 3D object. Several techniques have been implemented for selecting topological elements of interest for design. Traditionally, mouse-based techniques are used.
[0004] Here, small topological elements may be defined as elements with small visible surfaces. In mouse-based approaches, small topological elements may be defined as elements with small clickable surfaces. In other words, small topological elements in mouse-based approaches are difficult to select because the user needs to be very precise to define the mouse position. Topological elements also often overlap and / or may be partially or completely occluded. Therefore, even if topological elements are not small, their clickable surfaces using mouse-based approaches may be small or even zero.
[0005] In 3D applications, a well-known problem is the ambiguity regarding which element a user wants to select. In CAD applications, mouse-based techniques tend to select the smallest element pointed to by the cursor, but this does not completely resolve the ambiguity. To reduce this ambiguity, a well-known solution is to have the user specify which type of topological element they want to select. Using this information, elements are filtered by type during selection. This solution is time-consuming and requires, for example, displaying the various filters available in the 2D panel. Another problem during element selection is reducing the number of required clicks required to select a single element. For example, to select an element of interest in a 3D object, it is often necessary to zoom in on the zone of interest. Changing the viewpoint of the 3D scene is also necessary when the element of interest is occluded. These two cases require several actions from the user and are time-consuming.
[0006] In recent years, hand interaction has become increasingly important in 3D design applications. Indeed, recent advances in immersive technology have made full hand tracking widely available in virtual reality (VR), augmented reality (AR), and mixed reality (MR). Virtual reality is a 3D immersive environment that can be defined as an artificial environment created using software and presented to the user in such a way that the user suspends belief and accepts it as real. In virtual reality (VR), the user's perception of reality is based entirely on virtual information. Augmented reality (AR) and mixed reality (MR) differ from virtual reality (VR) in the sense that the 3D immersive environment consists of an actual real environment and several layers of virtual objects added to the real environment. In augmented reality (AR) and mixed reality (MR), the user is provided with additional computer-generated information that enhances their perception of reality. In virtual reality (VR), on the other hand, the surrounding environment is completely virtual. The difference between augmented reality and mixed reality is that users cannot directly interact with virtual objects in augmented reality (AR). In mixed reality, additional computer-generated information is "mixed" together to create a realistic environment that the user can navigate and interact with both real and virtual objects.
[0007] For example, Augmented Reality (AR) has the ability to display a virtual 3D box on a physical table, and Mixed Reality (MR) allows users to pick up and open the box.
[0008] In the definition of virtual reality, augmented reality, and mixed reality, a real object is an object that physically exists in the ambient world.
[0009] None of the existing CAD applications allow for the creation of accurate 3D objects through natural hand interaction in an immersive environment. Summary of the Invention [Problem to be solved by the invention]
[0010] In this regard, there remains a need for improved methods for selecting topological elements, such as vertices of 3D objects, in the 3D immersive environment of a CAD system by using hand gestures. [Means for solving the problem]
[0011] Thus, there is provided a computer-implemented method for selecting a vertex from a plurality of vertices of a 3D object in a 3D immersive environment of a CAD system, each vertex having a position in the 3D immersive environment. The method comprises: Displaying the 3D object in the 3D immersive environment; Detecting a hand gesture including an index finger pad and a thumb pad opposed to each other and the finger pads spaced apart; determining a line segment parallel to a line segment connecting the pad of the index finger and the pad of the thumb, the line segment having a position in the 3D immersive environment; and identifying a vertex of the 3D object having a position closest to the determined line segment.
[0012] The method may include one or more of the following.
[0013] The identifying includes casting a ray from the determined parallel line segment that is parallel to a center of the 3D object.
[0014] Each vertex of the 3D object further has a normal, and the opposing pads of the index finger and the thumb further form an orientation plane having a normal, and the identifying step comprises:
number
number
number
number
number
[0015] The term ||FH|| of the function f is replaced by ||FH'||, and H' is
number
number
[0016] The term ||FH|| or ||FH'|| of the function f further includes the Euclidean distance in the 3D immersive environment between the position of the vertex and at least one intersection point of a ray projected from the center of the head or dominant eye or a point midway between the eyes to the center of the 3D model with the 3D model.
[0017] The identifying includes determining a vertex of the 3D object having a position closest to the determined line segment; calculating one or more n-neighbor vertices of the determined vertex, the one or more neighbor vertices forming a subset of selectable vertices with the determined vertex; and identifying a vertex of the 3D object from the subset of selectable vertices having an orientation closest to the orientation plane.
[0018] Modifying a first rendering of the vertices of a subset of the selectable vertices.
[0019] Modifying the second rendering of the identified vertices.
[0020] The vertices of said 3D object may be part of a triangle and / or part of a quadrilateral and / or part of a topological surface and / or part of a parametric surface and / or part of a procedural surface.
[0021] Detecting the hand gesture includes opposing the pad of an index finger and the pad of a thumb, with the index finger and thumb being substantially parallel.
[0022] Selecting the identified vertex of the 3D object by detecting that the hand gesture further includes contact between the pad of an index finger and the pad of a thumb.
[0023] Detecting that the hand gesture further includes abduction of all fingers except the thumb and deselection of the selected vertices.
[0024] There is further provided a computer program comprising instructions for carrying out the method.
[0025] A system is further provided that includes a display and a processing circuit communicatively coupled to a memory, the memory storing the computer memory.
[0026] There is further provided a computer readable medium having said computer program recorded thereon.
[0027] Embodiments of the present invention will now be described, by way of non-limiting example, with reference to the accompanying drawings, in which: [Brief explanation of the drawings]
[0028] [Figure 1] 1 shows an example of a flowchart of the method. [Figure 2] 1 shows an example of a flowchart of step S40 of the present method. [Figure 3] An example of a system is shown below. [Figure 4] 1 shows an example of a posteroanterior view of the skeleton of a right hand in the default pose. [Figure 5] 10 shows an example of a detected gesture. [Figure 6] 10 shows an example of a virtual plane generated from a detected gesture. [Figure 7] 10 shows an example of a gesture for selecting a vertex. [Figure 8] Here is an example using a virtual hand. [Figure 9] Here is an example using a virtual hand. [Figure 10] FIG. 10 is a diagram illustrating an example of a virtual skeleton. DETAILED DESCRIPTION OF THE INVENTION
[0029] Referring to the flowchart of FIG. 1 , a computer-implemented method for selecting a vertex from a plurality of vertices of a 3D object in a 3D immersive environment of a CAD system is proposed. Each vertex has a position in the 3D immersive environment. The method includes displaying a 3D object in the immersive environment. Next, a hand gesture is detected. The hand gesture includes opposing the pad of an index finger and the pad of a thumb, with the pads of the fingers spaced apart. Thus, the index finger and thumb are always in a pinch position. Next, the method also includes determining a line segment parallel to a line segment connecting the pad of the index finger and the pad of the thumb. The determined parallel line segment has a position in the immersive environment. Next, the method includes identifying a vertex of the 3D object having a position closest to the determined line segment.
[0030] This constitutes an improved method for selecting a vertex from multiple vertices of a 3D object in a 3D immersive environment of a CAD system using hand interaction. In particular, this method solves the problem of ambiguity regarding which element a user wants to select. As mentioned above, in CAD applications, 3D objects contain many small elements. Selecting an element can be difficult using mouse-based techniques due to the element's size or the size of the element's visible surface from the user's perspective. Indeed, when the size is small, mouse-based techniques require the user to move the mouse very precisely and / or zoom in and / or change the perspective of the 3D scene. The method presented here solves this drawback. In fact, this method uses the positions of each vertex and the position of a line segment calculated from the opposing pads of the index finger and thumb during a hand gesture to determine which element the user wants to select. The gesture generates a line segment whose length depends on the user. The user can adjust the length of the line segment to select the vertex with the closest position. Elements of a 3D object may be distinguished and therefore selected by the user using this method. Furthermore, opposing the thumb and index finger pad is a very simple and basic gesture that can be easily performed by a user.
[0031] The method is computer-implemented. This means that the steps (or substantially all steps) of the method are similarly implemented by at least one computer, or any system. Thus, the steps of the method are implemented by a computer, possibly fully automatically or semi-automatically. In one example, triggering of at least some of the method may be implemented through user-computer interaction. The level of user-computer interaction required depends on the level of automation envisioned and can be balanced with the need to realize the user's wishes. In one example, this level may be user-defined and / or predefined.
[0032] For example, detecting (S20) and determining (S30) depend in part on user actions. Detecting (S20) is performed as a result of a user action including a hand gesture in which the pad of the index finger opposes the pad of the thumb. Determining (S30) is performed as a result of a user action including a user hand gesture in which a line segment is created at a location that is used to identify an element the user wants to select.
[0033] A typical example of a computer implementation of the method is to perform the method using a system adapted for this purpose. The system may include a processor and a graphical user interface (GUI) coupled to a memory, the memory having recorded thereon a computer program including instructions for performing the method. The memory may also store a database. The memory is any hardware adapted for such storage, possibly comprising several physically separate parts (e.g., one for the program and possibly one for the database).
[0034] FIG. 3 shows an example of a system, which is a client computer system, eg, a user's workstation.
[0035] The client computer in this example includes a central processing unit (CPU) 1010 connected to an internal communication bus 1000 and a random access memory (RAM) 1070 also connected to the bus. The client computer further includes a graphics processing unit (GPU) 1110 associated with a video random access memory 1100 connected to the bus. The video RAM 1100 is also known in the art as a frame buffer. A mass storage controller 1020 manages access to mass storage devices such as a hard drive 1030. Mass memory devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including, by way of example, semiconductor memory devices such as EPROM, EEPROM, and flash memory devices, magnetic disks such as internal hard disks and removable disks, magneto-optical disks, and CD-ROM disks 1040. Any of the foregoing may be supplemented by or incorporated in specially designed application-specific integrated circuits (ASICs). A network adapter 1050 manages access to a network 1060. The client computer may also include a cursor control device, a keyboard, or other haptic device 1090. A cursor control device is used in the client computer to allow a user to selectively position a cursor at any desired location on the display 1080. Furthermore, the cursor control device allows the user to select various commands and input control signals. The cursor control device includes a number of signal generators for inputting control signals into the system. Typically, the cursor control device may be a mouse, with buttons on the mouse being used to generate the signals. Alternatively or additionally, the client computer system may include a sensitive pad and / or a sensitive screen.
[0036] A computer program may include computer-executable instructions, including means for causing the system to perform the method. The program may be recordable on any data storage medium, including the system's memory. The program may be implemented, for example, in digital electronic circuitry, or in computer hardware, firmware, software, or a combination thereof. The program may be implemented as an apparatus, for example, as an article of manufacture tangibly embodied in a machine-readable storage device for execution by a programmable processor. The method steps may be performed by a programmable processor executing a program of instructions to perform the functions of the method by operating on input data and generating output. The processor is thus programmable and may be coupled to receive data and instructions from, and transmit data and instructions to, a data storage system, at least one input device, and at least one output device. The application program may be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language, as appropriate. In either case, the language may be a compiled or interpreted language. The program may also be a full installation program or an update program. Application of the program on a system, in either case, results in instructions for performing the method.
[0037] The method manipulates 3D objects. Hereinafter, any reference to a 3D object refers to a digitally modeled 3D object, not a physical 3D object. The digitally modeled 3D object can represent, for example, a (mechanical) part or assembly of parts (or, equivalently, an assembly of parts, which can be viewed as a part itself from the perspective of the method, or the method can be applied to each part of the assembly independently), or more generally, any rigid assembly (e.g., a moving mechanism), the geometry of a product that will be manufactured in the real world after completion of the virtual design using, for example, a CAD software solution or CAD system. CAD software solutions enable design in a variety of unlimited industrial sectors, including aerospace, architecture, consumer goods, high-tech devices, industrial equipment, transportation, marine, and / or offshore oil and gas production or transportation. Thus, the 3D modeled objects herein may represent industrial products that may be any mechanical part, such as parts of ground vehicles (including, for example, automobiles and light truck equipment, racing cars, motorcycles, trucks and motor equipment, trucks and buses, trains), parts of aircraft (including, for example, airframe equipment, aerospace equipment, propulsion equipment, defense products, aviation equipment, space equipment), parts of naval vehicles (including, for example, naval equipment, merchant ships, offshore equipment, yachts and workboats, marine equipment), general mechanical parts (including, for example, industrial manufacturing machinery, large mobile machinery or equipment, installation equipment, industrial equipment products, fabricated metal products, tire manufacturing products), electric mechanical or electronic parts (including, for example, consumer electronics, security and / or control and / or instrumentation products, computing and communications equipment, semiconductors, medical devices and instruments), consumer goods (including, for example, furniture, home and garden products, leisure goods, fashion products, hard goods retailer products, soft goods retailer products), packaging (including, for example, food and beverage and tobacco, beauty and personal care, household product packaging), etc.
[0038] A 3D object may be composed of at least one of three types of topological entities: faces, edges, and vertices. By definition, a face is a bounded portion of a surface. An edge is a bounded portion of a curve. A vertex is a point in 3D space. They are related to each other as follows: A bounded portion of a curve is defined by two points (vertices) on the curve. A bounded portion of a surface is defined by its boundary, which is a set of edges on the surface. The edges of a face's boundary are connected by sharing a vertex. Faces are connected by sharing an edge. Two faces are adjacent if they share an edge. Similarly, two edges are adjacent if they share a vertex. All edges of a face may or may not be coplanar. The normal of a face can be calculated by taking the vector cross product of the two edges of that face. Note that if all edges of a face are not coplanar, different normals can be calculated depending on the edges selected to calculate the cross product. Vertex normals can be provided and / or calculated. The normals of a face or vertex may be edited. For example, normals are often edited for faces where not all edges are coplanar. The normal gives the orientation of the face. In other words, the normal determines the front and back sides of the face. Traditionally, for a 3D object, the normals of its vertices point toward the outside of the 3D object. The normals of vertices may be subtracted from the normals of the faces to which they belong. A vertex generally belongs to at least three faces, i.e., the vertex is shared by at least three edges of each of at least three faces.
[0039] In what follows, we assume that all orientations, directions and positions are calculated in the reference frame of the 3D immersive environment.
[0040] 3D objects may also be defined using edges or lines, vertices, and possibly faces or surfaces. Lines, edges, or surfaces can be represented in various ways, for example, with Non-Uniform Rational B-Splines (NURBS). These edges, lines, and / or surfaces can be used as inputs from which the geometry of the 3D object can be generated, and a representation of the 3D object can be generated. The methods described herein can be used on 3D objects based on Non-Uniform Rational B-Splines (NURBS) lines, edges, and surfaces when they contain vertices that a user may want to select. More generally, surfaces can be parametric and / or procedural surfaces, which contain vertices. Parametric surfaces are surfaces that are defined by two parameters:
number
number
[0041] 3D objects can be computed from point clouds obtained from laser scans of mockups. Such point clouds are typically made up of disconnected vertices, but can also contain interconnected edges that represent the shape of the digitized mockup.
[0042] The 3D object may be a wireframe 3D object, which may be obtained from a point cloud or may be designed by a user.
[0043] 1, the method displays (S10) at least one 3D object in a 3D immersive environment. When two or more 3D objects are displayed in the 3D immersive environment, one 3D object is identified as the 3D object of interest. The 3D object of interest will hereinafter be referred to as the 3D object.
[0044] As defined above, a 3D immersive environment can be used in virtual reality, augmented reality, or mixed reality. A 3D immersive environment has a reference frame. Therefore, all objects in the 3D immersive environment and all their topological elements can be positioned relative to this reference frame. The method can then be used in virtual reality, augmented reality, and mixed reality to select vertices of any 3D object in the 3D immersive environment. The method can also be used in any other reality, including an environment with a reference frame that allows the location of at least one 3D object.
[0045] Next, a hand gesture is detected (S20). The hand gesture includes opposing the pad of the index finger and the pad of the thumb. Each finger pad has a substantially flat surface. The pads are opposing when they are substantially parallel to each other. The pads of the index finger and the thumb are not in contact, and there is a space between the pads. The space is selected by the user. Preferably, the space between the pads is greater than one centimeter. In other words, the gesture can be viewed as forming an open twist with the index finger and thumb.
[0046] A user's interaction with the 3D immersive environment can be achieved by tracking the position and orientation of parts of the user's body, or by tracking the position and orientation of each of several parts of the user's body, or even by tracking the position and orientation of the user's entire body.
[0047] In one example, the user's body part is the user's hand.
[0048] Hand tracking provides direct and natural interaction and improves the immersive experience. In fact, users do not need to use specific virtual reality, mixed reality, or augmented reality hand controllers. Traditionally, to interact with a 3D object in a 3D immersive environment, the method involves pointing at the 3D object with a virtual 3D line and then clicking a button on a specific controller.
[0049] Hand tracking allows for the detection of specific hand postures or gestures. For example, hand tracking for specific postures can be performed using a video recorder or gloves, and hand tracking for specific gestures can be performed using an accelerometer. This method can use the user's right or left hand. A posture is a pose using a body part, and a gesture here can be defined as a movement that allows the body part to modify that posture. In other words, a second posture can be seen as the result of a gesture initiated from a first posture. Therefore, detecting a gesture can be performed by detecting a second posture and comparing this second posture with the first posture. If the detected second posture is the same as the first posture, a gesture has not occurred. If the detected posture is different from the first posture, a gesture can be defined as the difference between the second posture and the first posture. More generally, a gesture can be defined as a change in posture triggered by a change in the position and / or orientation of a user's body part, such as the user's hand. For example, in this method, detecting a hand gesture can include calculating the difference between a current posture and a default posture. In this example, the default posture corresponds to a first posture, and the current posture corresponds to a second posture. The difference can be inferred from changes in the position and / or orientation of the user's hand. It is noteworthy that hand tracking for a specific posture is performed using a device that captures postures at a high frame rate, e.g., at least 10 frames per second, and therefore the risk of not detecting a movement, including a movement from a first posture to a first posture with an intermediate second posture, is very low. The default posture can be any posture that allows detection of the opposing pads of the index finger and thumb, with the pads of both fingers separated by a minimum distance. An example of a default posture for a right hand is shown in FIG. 10. This default posture is an example of a common posture for resting the right hand. That is, the default posture is an example of a posture for a right hand with all muscles relaxed. The default posture can also be defined as any posture not detected as a specific posture, used in any step of the method.
[0050] Gesture detection can be performed in various ways. In one example, gestures can be detected by mathematical comparison of the relative positions and / or orientations of various body parts, with some tolerance to account for morphological variations. Note that a calibration phase may be required for the system to adjust to the user's morphology. In another example, gestures can also be detected using machine learning techniques by training a neural network to distinguish between different possible gestures.
[0051] In one example, the kinematic parameters of a hand gesture may be provided through a virtual skeleton, as shown in FIG. 10 . The virtual skeleton includes one or more joints and one or more bones. This virtual skeleton does not need to replicate the actual skeleton. In other words, the joints and bones of the virtual skeleton may not correspond to those of the actual skeleton. For example, the virtual skeleton of a hand may have fewer or more joints than the actual skeleton of the hand. Furthermore, even if each joint of the virtual skeleton corresponds to a joint of the actual skeleton, their positions and orientations may be different. The linear velocity, angular velocity, position, and orientation of the joints of the virtual skeleton can be used to detect the gestures and postures of the actual skeleton. For simplicity, hereafter, it is assumed that the virtual skeleton replicates the actual skeleton of the hand.
[0052] It should be noted that the method of the present invention is independent of the detection method used to detect the various postures described, and therefore any technique that can detect posture changes (e.g., changes in the position and / or orientation of a part of the user's body), whether based on a virtual skeleton or not, may be used.
[0053] An example of an actual hand skeleton is shown in Figure 4. The hand includes five fingers, conventionally referred to as the thumb, index finger, middle finger, ring finger, and little finger. The thumb is composed of a metacarpophalangeal joint 10 and an interphalangeal joint 60. The index finger is composed of a metacarpophalangeal joint 20, a proximal interphalangeal joint 70, and a distal interphalangeal joint 110. The middle finger is composed of a metacarpophalangeal joint 30, a proximal interphalangeal joint 80, and a distal interphalangeal joint 120. The ring finger is composed of a metacarpophalangeal joint 40, a proximal interphalangeal joint 90, and a distal interphalangeal joint 130. The little finger is composed of a metacarpophalangeal joint 50, a proximal interphalangeal joint 100, and a distal interphalangeal joint 140. The remainder of the hand can be divided into three regions. The first region is the palm, which is the central region at the front of the hand. The second region is the back of the hand, which corresponds to the palm. The third area is the heel of the hand, located in the proximal portion of the palm.
[0054] Opposing the pad of the index finger and the pad of the thumb is a gesture that prepares to pinch and grip an object (e.g., a vertex element of a 3D model) between the index finger and thumb. As shown in the example of FIG. 5, the pad 300 of the index finger and the pad 302 of the thumb are opposed but not touching. They are separated by a distance selected by the user. This distance is represented by the line segment 200 connecting the tips of the index finger and thumb. Still referring to FIG. 5, the index finger is flexed. For example, flexion may be achieved by the proximal interphalangeal joint 70, while the distal interphalangeal joint 110 is not flexed or is barely flexed. This allows the distal and middle phalanges of the index finger to be substantially aligned, thus facilitating gesture detection. The thumb may be slightly extended so that the distal and middle phalanges of the thumb are also substantially aligned. Thus, as shown in FIG. 5, the distal and middle phalanges of the index finger and thumb are substantially parallel when the pads of the index finger and thumb are opposed. Therefore, the pads of the index finger and thumb are also substantially parallel.
[0055] 1 , after detecting a gesture including the opposing pad of the index finger and the pad of the thumb (S20), the method includes determining a line segment parallel to the line segment connecting the pad of the index finger and the pad of the thumb (S30). The line segment connecting the pads of the index finger and the thumb may connect the centers of the pads of the index finger and the thumb.
[0056] In one example, calculating a line segment parallel to the line segment connecting the finger pads is performed by determining a line segment joining the fingertips. This is easier to perform than detecting a line segment connecting the centers of the pads of the index finger and thumb. Calculating the line segment connecting the tips of both fingers can be performed using a virtual skeleton of the user's hand. The determined parallel line segments have positions in 3D space. This means that each point on the line segment has a position in 3D space, e.g., two endpoints of the line segment. Thus, in these examples, S30 includes determining a line or line segment connecting the tip of the index finger and the tip of the thumb, and then calculating, from this line or line segment, a line segment connecting the pad of the index finger and the pad of the thumb, or connecting the center of the pad of the index finger and the center of the pad of the thumb.
[0057] In one example, the parallel line segments include a line segment connecting the pad of the index finger and the pad of the thumb. A line segment can connect the pad of the index finger and the center of the pad of the thumb. In these examples, a line segment connecting (the center of) the pad of the index finger and (the center of) the pad of the thumb is directly determined. Therefore, in these examples, S30 includes determining a line segment connecting the pad of the index finger and the pad of the thumb, or determining a line segment connecting the center of the pad of the index finger and the center of the pad of the thumb.
[0058] The determining (S30) may be performed without a virtual skeleton. As an example, the determining (S30) may be based on a neural network trained to determine (S30) from a video recorder.
[0059] The method then further includes identifying (S40) the vertex of the 3D object having the closest position to the determined parallel line segment. The closest position is determined by comparing the position of each vertex of the 3D model with the position of the parallel line segment. Thus, for each vertex of the 3D model, the distance between the position of each vertex and the parallel line segment is calculated. The distance may be a Euclidean distance.
[0060] In one example, points are selected on parallel line segments to identify the vertex with the closest position, which improves the determination of the closest position in terms of use of computational resources since fewer distances must be calculated.
[0061] In one example, the point on the parallel line segment is located in the middle of the parallel line segment (i.e., the center of the parallel line segment). This particular location improves ergonomics and interaction for the user, as the user can more easily adapt the hand position and the space between the pads of two fingers to select the vertex of interest. The gap between the two fingers can be used as a field of view, and vertices within the field of view (from the user's perspective) are selectable.
[0062] In an example of the present disclosure, identifying (S40) may be performed iteratively by considering each vertex of the 3D object. It should be understood that only a subset of the vertices of the 3D object are used when determining the vertex of the 3D object that has the closest position to the parallel line segment. For example, only vertices that are reachable by the user's hand and visible to the user may be used.
[0063] In one example, identifying can be performed by casting a ray from a determined parallel line segment parallel to the center of the 3D object. Here, the expression "from a determined parallel line segment parallel to the center of the 3D object" means that the ray passes through the parallel line segment before reaching the 3D model; the ray does not necessarily have to start from the parallel line segment. In one example, the ray passes through the middle of the parallel line segment.
[0064] In one example, the ray may be cast from the center of the user's head or the user's dominant eye, or a point midway between the user's eyes, which makes selection easier for the user as there is an improved match between the vertex the user sees between their index finger and thumb and the vertex that will be selected by the method.
[0065] In one example, each vertex of a 3D object has a normal, and the opposing pads of the index finger and thumb may form an orientation plane with the normal. As described above, if a vertex of a 3D model does not have a normal, the vertex normal can be calculated. If calculation is performed, it may be performed at any step of the method, preferably before identifying (S40). The opposing pads of the index finger and thumb may form a plane oriented with respect to the normal. Determining the plane may be performed in steps S20, S30, or S40. The orientation plane is determined based on the positions of the index finger and thumb when the pad of the index finger and the pad of the thumb are opposed. In practice, as already described, when the pad of the index finger and the pad of the thumb are opposed, the distal and middle phalanges of the index finger and the thumb are substantially aligned, and a plane including these two lines may be formed. Furthermore, the plane may include parallel line segments. Therefore, it can be considered that a plane is formed when the distal and middle phalanges of the index finger and the thumb are opposed. The plane so formed must be oriented, and the plane normal is added. The orientation of the plane is arbitrary and may be selected, for example, by the user.
[0066] Now, reference is made to FIG. 6. FIG. 6 shows an example of a plane formed by the opposing pads of the index finger and thumb. The distal and middle phalanges of the index finger are substantially aligned, as are the distal and middle phalanges of the thumb. Furthermore, the middle phalanges of the index finger and thumb are substantially parallel, so that the distal and middle phalanges of the index finger and thumb form a support for plane 202. Parallel line segment 200 belongs to plane 202, as shown in FIG. 6. Plane 202 is oriented, and a graphical cue 204 may be displayed to indicate to the user the normal to plane 202. Plane 202 may or may not be displayed, and preferably is not displayed to keep the gesture as natural as possible, e.g., the user is not distracted by the surface representation, and eye strain is reduced during the method. Thus, the hand is associated with the plane formed by the opposing pads of the index finger and thumb. Hereinafter, this will be referred to as the orientation plane of the hand.
[0067] In one example, a plane can be derived from a triangle formed by three points: (i) the tips or pads of the index finger and thumb, or two points formed by the centers of the pads of the fingers, and (ii) one point formed by the joint between the metacarpal bone of the index finger and the metacarpal bone of the thumb, or one point formed by the intersection of lines defined by these bones, or one point formed by the wrist. In these examples, parallel line segments can belong to the plane.
[0068] In an example where each vertex of the 3D object further has a normal and the opposing pads of the index finger and thumb form an orientation plane further having a normal, identifying (S40) may include identifying from the plurality of vertices a vertex that minimizes a function denoted f as calculated in equation (1) below:
number
number
number
number
number
[0069] The function f is a weighted sum of two terms. In fact, the first term ||FH|| is multiplied by a coefficient w1, and the second term
number
[0070] The first weighted term ||FH|| is the Euclidean distance in the 3D immersive environment between the position of the vertex Vertex and the position H of the orientation plane formed by the index finger and thumb when the index finger pad and the thumb pad are opposed to each other. The position H of the orientation plane may be the position of a parallel line segment, for example, the center of a parallel line segment.
[0071] Second weighted term
number
[0072] Each weight w1 and w2 can be greater than or equal to zero. The sum of the two weights is strictly greater than zero. If one of the weights is equal to zero, it means that only one of the two terms is considered in the function. As an example, w1 may be set to 0.1 to 0.5, and w2 may be set to 0.5 to 0.9.
[0073] The weights w1 and w2 may be pre-calculated. For example, they may be pre-calculated based on the number and size of the 3D object's vertices. The weights w1 and w2 may be pre-calculated, for example, when loading a 3D immersive environment including the 3D object. If the 3D object has many vertices, the weight of the second term may be greater than the weight of the first term. The weights may also depend on the device used. For example, some devices may provide limited accuracy for hand position but better accuracy for orientation. The weights may change during the method. For example, the weights may change depending on the number and size of the 3D object's vertices on the surface of the 3D object located within the user's field of view. The field of view may be defined as the extent of the environment that can be viewed at a given time. Therefore, as the field of view may change during the method, the weights w1 and w2 may also change.
[0074] In one example, identifying (S40) may be performed iteratively by considering each vertex of the 3D object. In another example, identifying (S40) may be performed iteratively by considering each vertex of a subset of the 3D object. For each vertex, the result of the function f is calculated. The vertex with the minimum value is the vertex of the 3D object that minimizes the function f.
[0075] In one example, the term |FH| of the function f may be replaced by the term ||FH'||, where H' is calculated using equation (2).
number
number
[0076] H' is the calculated position of the orientation plane of the virtual hand. The orientation plane of the virtual hand can be obtained as described above. The virtual hand includes a virtual plane obtained from the opposing pads of the virtual index finger and virtual thumb of the virtual hand. Thus, the user's virtual hand reproduces (or mimics) the gesture performed by the user. The virtual hand can be defined as a hand virtually located at least farther from the user's viewpoint E in the 3D immersive environment than the user's hand. Using a virtual hand is useful to ensure that the term ||FH'|| is always appropriate with respect to the distance of the vertices from the user's viewpoint E. The virtual hand does not have to be closer to the user's viewpoint E than the user's hand. The user's viewpoint E may be located, for example, at the center of the user's head, the user's dominant eye, or midway between the user's eyes. Omax is the position of the vertex of the 3D object farthest from the user's viewpoint E. As an example, the vertex considered as the vertex of the 3D object farthest from the user's viewpoint E may be determined at the start of the method, for example, at the start of detecting (S20). As an example, the vertex considered as the vertex of the 3D object farthest from the user's viewpoint E may also be updated throughout the method. Updating the considered vertex as the vertex of the 3D object farthest from the user's viewpoint E is particularly useful if the user's viewpoint E and / or the 3D object move during the method. In other words, as an example, Omax may be determined during the detecting (S20) and updated during the method. Hmax is the position of the orientation plane of the user's hand farthest from the user's viewpoint E in a cross-section of the user's body. Hmax therefore serves as an indicator of whether a vertex can be selected using a method that takes into account the distance of the vertex from the user's viewpoint E. Hmax is, for example, the position of the orientation plane of the user's hand when the user's arm is extended horizontally in front of them. Hmax may be pre-calculated, for example, during a calibration phase. Hmax may also be set by the user. a is used as a factor of ||EOmax|| / ||EHmax||. a is, for example, set by the user before using the method.When a=1, this means that the virtual hand will be farther away from the user's hand in the 3D immersion space when the distance between the vertex of the 3D object farthest from the user's viewpoint E is greater than the position of the orientation plane of the user's hand farthest from the user's viewpoint E in the cross-section of the user's body. By using a value greater than 1 for a, the user can select the vertex of the 3D object farthest from the user's viewpoint E without having to fully extend their arm. As an example, the value of a can be set between 1.5 and 2. For simplicity, we will consider a=1 in the following.
[0077] Using a virtual hand improves a user's interaction with 3D objects (and more generally in a 3D environment). The examples in Figures 8 and 9 show the ergonomic improvements that result from the use of a virtual hand.
[0078] In the example of Figure 8, the use of a virtual hand allows the user to select any vertex of a 3D object without having to fully extend their arm, which can be tiring for the user, so using a virtual hand solves this problem.
[0079] In the example of FIG. 9, by using a virtual hand, the user can select any vertex of a 3D object without moving the user's viewpoint E. In fact, as an example, when the distance between the farthest 3D object vertex and the user's viewpoint E is greater than the distance between the center of the user's hand farthest from E in a cross-section of the user's body, some vertices of the 3D object may not be selectable without using the virtual hand. In this case, the virtual hand is located farther from the user's viewpoint E than the user's hand. Without using the virtual hand, the term ||FH|| would penalize the selection of the 3D object vertex farthest from the user's viewpoint E. Therefore, the method is biased by this term. The virtual hand solves this problem by virtually moving the position of the user's hand in the 3D immersive environment, ensuring that the virtual H' is always at least as far as the farthest vertex of the 3D object and that both positions are considered from the user's viewpoint E.
[0080] In one example, the use of a virtual hand can be combined with ray projection from the virtual hand. This combination can be activated, for example, when the user's hand is very close to the user's head. The direction of the ray can be perpendicular to the orientation plane of the virtual hand toward the center of the 3D object. The orientation plane of the virtual hand is obtained from the virtual opposing pads of the index finger and thumb, and the ray can be preferably projected from a virtual parallel line segment obtained from a line segment connecting the tips of the index finger and thumb of the virtual hand, reproducing the user's hand gesture. This combination can be very useful in mixed reality or augmented reality, for example, to select any vertex of a 3D object that may be surrounded by real obstacles. Using the direction of ray projection to select a vertex from multiple vertices of a 3D object is particularly useful for selecting a vertex located behind the object from the user's perspective. As an example, the direction of the orientation plane obtained from the virtual opposing pads of the index finger and thumb of the virtual hand can be used during identifying (S40). Thus, the method allows selecting vertices that are located behind the object from the user's point of view by rotating the palm towards the head.
[0081] In one example, the term ||FH|| or ||FH'|| of the function f (calculated by Equation (1) or Equation (2) respectively) may further include a Euclidean distance in the 3D immersive environment between the position of the vertex and at least one intersection point of a ray cast from the 3D model and the user's viewpoint E. The ray may be cast from, for example, the center of the head or dominant eye, or a point midway between the two eyes, to the center of the 3D model. The direction of the projection may be defined, for example, by the direction of the user's line of sight or the user's head. The direction of the projection may be calculated, for example, from the position of the user's viewpoint E to the position of the center of the 3D model. The center of the 3D model may be defined, for example, as the center of the bounding box of the 3D model. As an example, the direction of the projection is calculated from the position of the user's viewpoint E to the position of the center of the 3D model. The projection of the ray passes through a virtual parallel line segment obtained from a line segment connecting the tips of the (virtual) index finger and the (virtual) thumb of a virtual hand that reproduces the user's hand gesture.
[0082] Adding a term based on the Euclidean distance in the 3D immersive environment between the position of the vertex and at least one intersection point of a ray cast from the user's viewpoint E and the 3D model to the term ||FH|| or ||FH'|| enables the method to be sensitive to the position of the user's viewpoint E. In other words, this enables the selection of vertices aligned with a line between the user's viewpoint E and at least one intersection point of the ray and the 3D model. This is particularly useful when the 3D model is partially rendered outside the field of view. In this case, the method penalizes the selection of vertices outside the field of view.
[0083] To determine the position and / or orientation of the user's head, head tracking can be performed by any technology that can detect changes in posture or movement. An example is a headset or glasses that provide such information in virtual reality, mixed reality, or augmented reality. Eye tracking technology can be used to determine the direction and / or orientation of the user's gaze.
[0084] In one example, referring to the example of FIG. 2 , identifying (S40) may further include determining (S400) a vertex of the 3D object having a position closest to the determined line segment. Identifying (S40) may further include calculating (S410) one or more n-neighboring vertices of the determined vertex, where the one or more neighboring vertices and the determined vertex form a subset 230 of selectable vertices. The n-neighboring vertices of the determined vertex are vertices that share an edge with the determined vertex's n-1-neighboring vertex and do not share an edge with the determined vertex's n-2-neighboring vertex. Thus, the 1-neighboring vertices of the determined vertex are vertices that share an edge with the determined vertex, and the 2-neighboring vertices of the determined vertex are vertices that share an edge with the determined vertex's 1-neighboring vertex and do not share an edge with the determined vertex. Identifying (S40) may further include identifying (S420) a vertex of the 3D object having an orientation closest to the orientation plane from the subset of selectable vertices. n may be predetermined based on the size of the vertices of the 3D object. n may also be updated based on the size of the vertices forming the subset, or the size of the visible surface of the vertices forming the subset from the user's viewpoint E, and / or the distance between the user's viewpoint and the determined vertices. n may also be predetermined based on device specifications or based on user preferences.
[0085] Determining (S400 and S420) may also be performed by determining the vertex of the 3D object having the closest direction, or by determining the vertex that minimizes the function f in Equation (1) or Equation (2). All combinations of determining (S400 and S420) may be used. For example, determining (S400) may be performed by determining the vertex of the 3D object having the closest direction, and determining (S420) may be performed by determining the vertex that minimizes the function f.
[0086] In another example, determining (S400) and determining (S420) may be performed by determining a vertex that minimizes a function f. In this case, during determining (S400), weight w1 may be four times greater than w2, and during determining (S420), weight w1 may be four times less than w2.
[0087] In one example, the method may further include modifying the first rendering of the vertices of a subset of selectable vertices. The subset of selectable vertices is calculated during step S410. As described above, the subset is calculated, for example, based on the vertices determined during determining (S40). The size of the subset depends on the value of n used in calculating (S410). In one example, the value of n may be calculated to ensure that the visible surface from the user's viewpoint is always large enough for the user to easily identify it. Modifying the rendering of the subset helps the user identify which vertices are considered selectable during step S420. Thus, the user can easily identify that the vertex of interest is not in this subset and will therefore modify the position and / or orientation of the user's hand to change the subset 230 during step S410. In one example, after identifying a subset of selectable vertices, the user can modify the position of their hand to change the subset of selectable vertices and / or modify the orientation of their hand to change the vertices identified within the same subset of selectable vertices.
[0088] The rendering modification can be performed in various ways. The rendering modification may be performed during the calculating (S410) and / or identifying (S420) steps. As one example, the rendering modification may be performed by highlighting the selectable vertices. As another example, the rendering modification may be performed by applying a particular texture to the selectable vertices. The rendering may be modified only for the edges of the selectable vertices. For example, the edges may be highlighted or thickened. In another example, the rendering modification may also include expanding and cutting the selectable vertices from the 3D object. The rendering modification can be completed by any other feedback to the user, such as automatic snapping of graphical user information to the identified vertices. The rendering modification may also appear on the user's hand by changing the user's expression. For example, the color of the hand can be changed or a line can be superimposed on the fingers.
[0089] In one example, the method may further include modifying the second rendering of the identified vertices. The identified vertices may be, for example, vertices identified during step S40. Thus, modifying the rendering of the identified vertices begins to assist the user in selecting vertices of interest.
[0090] The identified vertices may be, for example, vertices identified during step S420. The identified vertices may be, for example, vertices determined during step S400. In these cases, for example, the second and third renderings may differ from the first rendering of the subset of selectable vertices. The second rendering may differ from the third rendering. The first rendering and / or the second rendering and / or the third rendering improve user interaction with the 3D object in the 3D environment. Indeed, during step S420, the user can easily determine whether they need to change their hand position to change the subset of selectable vertices and / or modify their hand orientation to change the identified vertices within the same subset of selectable vertices. Less user interaction is required to select the desired vertices.
[0091] The rendering modification can be implemented in various ways. In one example, the rendering can be implemented by highlighting the selectable vertices. In another example, the rendering can be implemented by applying a particular texture to the selectable vertices. The rendering can be modified only to the edges of the selectable vertices, for example, the edges can be highlighted or thickened. In another example, the rendering modification can also include expanding and cutting the selectable vertices from the 3D object. The rendering modification can be completed by any other feedback to the user, such as automatic snapping of graphical user information to the identified vertices. The rendering modification can also be manifested on the user's hand by changing the representation of the user's hand, for example, the color of the hand can change or lines can be superimposed on the fingers.
[0092] A good balance can be found between providing continuous user feedback and avoiding excessive popping. Providing continuous user feedback can be defined as having a method of responding to user input. In other words, for example, as soon as the user provides input, the method should update the results of identifying (S40) and / or determining (S400) and / or calculating (S410) and / or identifying (S420) without any visible delay. By having a method of responding to user input, the method risks providing excessive popping. The term popping defines the tendency of a user interface to switch rapidly and continuously between various states. In the present method, it may be, for example, a rapid and agile switch between two or more vertices that are considered identified vertices.
[0093] As an example, an identified vertex with a modified rendering may be retained until a better candidate of the same dimension is reliably identified. In other words, identifying (S40) may include minimizing a function f, and switching from the currently identified vertex to another vertex is not performed as soon as the value of the function f of the other vertex becomes smaller than the value of the function f of the currently identified vertex. To avoid excessive popping, a penalty threshold or penalty factor may be used during identifying (S40) to compare the result of the function f of the currently identified vertex with another vertex. In other words, a surface identified using a modified rendering may be retained until a better candidate of the same dimension minimizes the function f with an added penalty threshold and / or by multiplying the result of the candidate's function f by a penalty factor. Alternatively, excessive popping may be avoided by switching from the currently identified vertex to another vertex only after detecting that the user has not moved for a certain amount of time.
[0094] Continuous user feedback may be provided, for example, by modifying the rendering of the 3D object, and / or by adding a virtual representation near the 3D object and / or near the user's hand, and / or by haptic feedback from the device.
[0095] In one example, the surfaces of a 3D object in this method may be portions of triangles and / or quadrilaterals and / or topological surfaces and / or parametric surfaces and / or procedural surfaces. A topological surface is a group of adjacent triangles or adjacent quadrilaterals that forms a larger, “logically” continuous surface while still potentially displaying a wide variety of different orientations between each primitive, especially when the topological surface is large. In CAD programs, topological surfaces are most often bounded by topological edges and, therefore, by the vertices of the topological edges. By adjacent triangles and / or adjacent quadrilaterals, it should be understood that each triangle or quadrilateral in a group is an adjacent triangle or quadrilateral of one of the triangles or quadrilaterals in that group. For example, a CAD object representing a car may be composed of thousands of triangles that may be grouped into fewer than 100 topological vertices. For example, one topological vertex may represent the top surface of a car seat.
[0096] In one example, the method includes selecting an identified vertex of the 3D object by detecting that the hand gesture further includes contact between the pad of the index finger and the pad of the thumb. In other words, the identified vertex of the 3D object is added to a current selection of vertices when the hand gesture further includes contact between the pad of the index finger and the pad of the thumb.
[0097] In one example, the method further includes selecting the identified vertex of the 3D object by detecting that the hand gesture further includes contact between the tip of the index finger and the tip of the thumb. An example of selecting by detecting that the hand gesture further includes contact between the tips of the index finger and the thumb is shown in Figure 7. In other words, the identified vertex of the 3D object is added to the current selection of vertices when the hand gesture further includes contact between the tip of the index finger and the tip of the thumb.
[0098] In one example, the method further includes selecting the identified vertex of the 3D object by detecting that the hand gesture further includes a distance between the pad of the index finger and the pad of the thumb that is less than a predetermined value, for example, less than or equal to one centimeter.
[0099] In one example, after selecting the first vertex, the user can return to the default gesture and / or can perform the gesture again to select another vertex (second vertex). The first selected vertex can be retained in memory such that the first and second vertices are stored in memory. By repeating the gesture, the user can select several vertices of the 3D model. In one example, the method can further include detecting that the hand gesture further includes abduction of all fingers and deselecting the selected vertices. The detection can occur during any step of the method. Thus, as one example, the user can deselect the last selected vertex. As another example, the user can deselect the entire current selection of vertices.
[0100] The size of the rendering of the vertices during pre-selection (i.e., before selection) may be inversely proportional to the distance between the thumb and index finger, improving ergonomics for the user.
[0101] The user can pre-select some vertices (current selection of vertices) and enforce selection of all pre-selected vertices.
[0102] The term "center" herein may be interpreted to mean "substantially center."
Claims
1. 1. A computer-implemented method for selecting vertices from a plurality of vertices of a 3D object in a 3D immersive environment of a CAD system, each vertex having a position and a normal in the 3D immersive environment, the method comprising: Displaying the 3D object in the 3D immersive environment (S10); Detecting (S20) a hand gesture including opposing an index finger pad and a thumb pad, wherein the finger pads are spaced apart and the opposing index finger pad and thumb pad form an orientation plane having a normal; determining (S30) a line segment parallel to a line segment connecting the pad of the index finger and the pad of the thumb, the determined line segment having a position in the 3D immersive environment; identifying (S40) a vertex of the 3D object having a closest position to the determined line segment, determining (S400) the vertex of the 3D object having a position closest to the determined line segment; Calculating (S410) one or more n-neighbor vertices of the determined vertex, the one or more neighbor vertices forming a subset of selectable vertices with the determined vertex; identifying (S420) from the subset of selectable vertices a vertex of the 3D object that has an orientation closest to the orientation plane; Including, 10. A computer-implemented method comprising:
2. The identifying step further includes casting a ray from the determined parallel line segment parallel to a center of the 3D object.
10. The computer-implemented method of claim 1.
3. The identifying (S40) [Equation 19] and further comprising minimizing a function f that satisfies: where: Vertex is the vertex of interest, [Equation 20] and [Equation 21] and [Equation 22] and ||FH|| is the Euclidean distance in the 3D immersion environment between the position of the vertex Vertex and the position H of the orientation plane, [Equation 23] is the angle in the 3D immersion environment between the normal of the vertex Vertex and the normal of the orientation plane 3. The computer-implemented method of claim 1 or 2.
4. The term ∥FH∥ of the function f is replaced by ∥FH′∥, and H′ is [0000] is calculated by where: H' is the position of the virtual hand orientation plane, E is the position of the user's viewpoint, H is the position of the alignment plane formed by the opposing pads of the fingers and thumb; EH is the vector from E to H, Omax is the position of the vertex of the 3D object that is farthest from E, Hmax is the position of the center of the user's hand farthest from E in a cross-section of the user's body; [Equation 25] and ||EOmax|| is the norm of the vector from E to Omax, ||EHmax|| is the norm of the vector from E to Hmax 4. The computer-implemented method of claim 3.
5. The term ||FH|| or ||FH′|| of the function f further includes a Euclidean distance in the 3D immersive environment between the position of the vertex and at least one intersection point of the 3D model with a ray projected from the center of the head or the dominant eye or a point midway between the eyes to the center of the 3D model.
5. The computer-implemented method of claim 4.
6. and modifying the first rendering of the vertices of the subset of selectable vertices.
10. The computer-implemented method of claim 1.
7. and modifying the second rendering of the identified vertices.
7. A computer-implemented method according to any one of claims 1 to 6.
8. The vertices of the 3D object may be part of a triangle and / or part of a quadrilateral and / or part of a topological surface and / or part of a parametric surface and / or part of a procedural surface.
8. A computer-implemented method according to any one of claims 1 to 7.
9. Detecting the hand gesture (S20) includes opposing the pad of the index finger and the pad of the thumb, the index finger and the thumb being substantially parallel.
9. A computer-implemented method according to any one of claims 1 to 8.
10. and selecting the identified vertex of the 3D object by detecting that the hand gesture further includes contact between the pad of an index finger and the pad of a thumb.
10. A computer-implemented method according to any one of claims 1 to 9.
11. detecting that the hand gesture further includes abduction of all fingers; deselecting the selected vertices.
11. The computer-implemented method of claim 10.
12. A computer program comprising instructions enabling a computer to carry out the method of any one of claims 1 to 11.
13. 13. A system comprising a display and a processing circuit communicatively coupled to a memory, the memory storing the computer program of claim 12.
14. A computer readable medium storing the computer program of claim 12.
15. 1. A computer-implemented method for selecting vertices from a plurality of vertices of a 3D object in a 3D immersive environment of a CAD system, each vertex having a position and a normal in the 3D immersive environment, the method comprising: Displaying the 3D object in the 3D immersive environment (S10); Detecting (S20) a hand gesture including opposing an index finger pad and a thumb pad, wherein the opposing finger pads are spaced apart and the opposing index finger pad and thumb pad form an orientation plane having a normal thereto; determining (S30) a line segment parallel to a line segment connecting the pad of the index finger and the pad of the thumb, the determined line segment having a position in the 3D immersive environment; identifying (S40) a vertex of the 3D object having a closest position to the determined line segment, each vertex of the 3D object further has a normal, and the opposing pads of the finger and thumb further form an orientation plane having the normal; The identifying (S40) [Equation 19] and further comprising minimizing a function f that satisfies: where: Vertex is the vertex of interest, [Equation 20] and [Equation 21] and [Equation 22] and ||FH|| is the Euclidean distance in the 3D immersion environment between the position of the vertex Vertex and the position H of the orientation plane, [Equation 23] is the angle in the 3D immersion environment between the normal of the vertex Vertex and the normal of the orientation plane A computer-implemented method comprising:
Citation Information
Patent Citations
Graphic processor
JP1994337907A
Finger operation detection device, finger operation detection method, finger operation detection program, and virtual object processing system
JP2014235634A
Finger operation detection device, finger operation detection method, finger operation detection program, and virtual object processing system
JP2015114762A