Abstract:
A method and apparatus for guiding flight through a computer digital mockup object scene is generated on a display. A three dimensional graphical figure, such as an arrow, is formed on the display to represent a trajectory responsive to positioning of an input device. The three dimensional graphical figure is bent responsive to rotation speed of a viewpoint base; and stretched or compressed responsive to viewpoint translation speed. The visual texture of the three dimensional graphical figure can be altered to indicate an imminent collision of the viewpoint with an object in the digital mock up scene. Altering the texture can include changing the color or presenting a pattern such as a checkerboard or stripes. An imminent collision is determined by computing the viewpoint eye translation along its sight direction and testing the resulting eye position against the depth buffer. The three dimensional graphical figure can also be vibrated back and forth responsive to a collision of the viewpoint with an object in the digital mockup scene.

Description:
BACKGROUND  
         [0001]    The present invention relates to computer software utility programs, and more specifically to a three-dimensional arrow tool to guide fly through motion inside a digital mockup.  
           [0002]    Graphically representing motion inside a three-dimensional digital mockup on a computer display can be difficult due to the number of parameters that must be simultaneously managed. In addition, a camera view of a digital mockup offers few, if any, points of reference to guide motion. Without a point of reference, it is easy for an operator to become disoriented within the scene.  
           [0003]    Realistic emulation of motion inside a graphical mockup typically includes emulation of the movements of a camera in the scene. In addition, a velocity indicator and proximity detection can enhance motion emulation. Proximity detection can include a point of impact in relation to the camera located at a point from which the three-dimensional digital mockup is being viewed. This camera can also be inclusive of a virtual structure that is being manipulated to alter the view, for example, piloting an airplane, driving a car, operating a tool or other in screen device.  
           [0004]    In particular, it is difficult to effect three-dimensional motion inside a digital mockup using a two dimensional pointing device such as a mouse. Other software tools designed to implement three-dimensional motion using a two dimensional pointing device can be awkward to use and unintuitive. For example, it is known to use a two dimensional compass and gauge in close proximity to a navigation tool. A motion direction is then issued from the mouse location. The two visual devices appear on screen, such as a gauge and a compass, to indicate course and azimuth. The known art, however, makes it difficult on a human operator to evaluate simulated motion in an instinctive manner. The operator is forced to perform a conversion from two dimensional features to a three dimensional trajectory. These previously known methods require a user to follow multiple information feedback at one time. A human operator can find it difficult to simultaneously track the compass and the mouse location.  
           [0005]    Other previously known approaches include the use of an alternate pointing device such as a joystick. However, this can require additional hardware equipment than that normally deployed on a computer system. In addition, it requires an operator to relocate their hand from one pointing device to the other each time the user needed to effect a simulated motion.  
           [0006]    It would be useful, therefore, to have a three dimensional software tool using a standard pointing device to evaluate direction of motion, speed, proximity of virtual objects and collisions during fly motion inside a three-dimensional digital mockup.  
         SUMMARY OF THE INVENTION  
         [0007]    Accordingly, the present invention provides a method and apparatus for guiding flight through a computer digital mockup object scene generated on a display. A three dimensional graphical figure, such as an arrow can be formed on the display to represent a trajectory responsive to positioning of a cursor with an input device. The three dimensional graphical figure can be bent responsive to rotation speed of a viewpoint; and stretched or compressed responsive to viewpoint translation speed.  
           [0008]    In one embodiment, the three dimensional graphical figure formed is an arrow with a head part and base part. In one aspect the visual texture of the three dimensional graphical figure can be altered to indicate an imminent collision of the viewpoint with an object in the digital mock up scene. Altering the texture can include changing the color, presenting a pattern or changing the shape. An imminent collision can be determined by computing the viewpoint eye translation along its sight direction and testing the resulting eye position against the depth buffer.  
           [0009]    In another aspect, the three dimensional graphical figure can be vibrated back and forth responsive to a collision of the viewpoint with an object in the digital mockup scene. The three dimensional graphical figure can be implemented using multiple slices.  
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0010]    [0010]FIG. 1 is a block diagram of a computer system.  
         [0011]    [0011]FIG. 2 illustrates the elements of a three dimensional viewer.  
         [0012]    [0012]FIG. 3 illustrates a 3 types of transformation.  
         [0013]    [0013]FIG. 4 is an exemplary illustration of a three dimensional arrow tool.  
         [0014]    [0014]FIG. 5 illustrates a an arrow tool divided into slices.  
         [0015]    [0015]FIG. 6 illustrates alternate views of arrow slices.  
         [0016]    [0016]FIG. 7 illustrates a flow of a collision detection feature.  
         [0017]    [0017]FIG. 8 illustrates an object scene including a three dimensional arrow tool.  
         [0018]    [0018]FIG. 9 illustrates an alternative view of the object scene of FIG. 8.  
         [0019]    [0019]FIG. 10 illustrates a prior art compass and gauge. 
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0020]    Referring to FIG. 1, physical resources of a computer system  100  are depicted. The computer  100  has a central processor  101  connected to a processor host bus  102  over which it provides data, address and control signals. The processors  101  may be any conventional general purpose single-chip or multi-chip microprocessor such as a Pentium® series processor, A K6 processor, a MIPS® processor, a Power PC® processor or an ALPHA® processor. In addition, the processor  101  may be any conventional special purpose microprocessor such as a digital signal processor or a graphics processor. The microprocessor  101  can have conventional address, data, and control lines coupling it to a processor host bus  102 .  
         [0021]    The computer  100  can include a system controller  103  having an integrated RAM memory controller  104 . The system controller  103  can be connected to the host bus  102  and provide an interface to random access memory  105 . The system controller  103  can also provide host bus to peripheral bus bridging functions. The controller  103  can thereby permit signals on the processor host bus  102  to be compatibly exchanged with signals on a primary peripheral bus  110 . The peripheral bus  110  may be, for example, a Peripheral Component Interconnect (PCI) bus, an Industry Standard Architecture (ISA) bus, or a Micro-Channel bus. Additionally, the controller  103  can provide data buffering and data transfer rate matching between the host bus  102  and peripheral bus  110 . The controller  103  can thereby allow, for example, a processor  101  having a 64-bit 66 MHz interface and a 533 Mbytes/second data transfer rate to interface to a PCI bus  110  having a data path differing in data path bit width, clock speed, or data transfer rate.  
         [0022]    Accessory devices including, for example, a hard disk drive control interface  111  coupled to a hard disk drive  114 , a video display controller  112  coupled to a video display  115 , and a keyboard and mouse controller  113  can be coupled to a peripheral bus  110  and controlled by the processor  101 . The computer system can include a connection to a computer system network, an intranet or an internet. Data and information may be sent and received over such a connection.  
         [0023]    The computer  100  can also include nonvolatile ROM memory  107  to store basic computer software routines. ROM  107  may include alterable memory, such as EEPROM (Electronically Erasable Programmable Read Only Memory), to store configuration data. BIOS routines  123  can be included in ROM  107  and provide basic computer initialization, systems testing, and input/output (I/O) services. The BIOS  123  can also include routines that allow an operating system to be “booted” from the disk  113 . Examples of high-level operating systems are, the Microsoft Windows 98™, Windows NT™, UNIX, LINUX, the Apple MacOS™ operating system.  
         [0024]    An operating system may be fully loaded in the RAM memory  105  or may include portions in RAM memory  105 , disk drive storage  114 , or storage at a network location. The operating system can provide functionality to execute software applications, software systems and tools of software systems. Software functionality can access the video display controller  112  and other resources of the computer system  100  to provide two dimensional (2-D) and three-dimensional (3-D) models on the video computer display  115 .  
         [0025]    Referring now to FIG. 2, a three-dimensional viewer can project objects included in a scene onto a screen by defining a viewpoint, or camera. The viewpoint can include an eye position  210  an up direction  211 , a sight direction  212 , a right direction  213 , a near clipping plane  214  a far clipping plane and a field of view  230 . Objects  220  and  221  located between the near clipping plane  214  and the far clipping plane  215  can be included in the object scene.  
         [0026]    The eye position and the three vectors (sight, right and up direction) can define the viewpoint base. The fly-through functionality can rely on a motion of this base in the scene coordinates system. In one embodiment the viewpoint, or camera, can be inclusive of a virtual structure that is being manipulated to alter the view. For example, the viewpoint can change responsive to emulating motion of a structure such as piloting an airplane, driving a car, operating a tool or other in scene device.  
         [0027]    Referring now to FIG. 3, to effectuate each step of a motion, three kinds of transformation can be consecutively applied to the viewpoint base. The motions can include:  
         [0028]    a) rotation of the three directions around the absolute z-axis, or horizontal rotation, by an angle θ z0 =Ω z0 *Δt, where Δt is the time elapsed during the last step,  311 ;  
         [0029]    b) rotation of the sight in an up direction around the right direction, or vertical rotation, by an angle θ right =Ω right *Δt,  312 ; and  
         [0030]    c) positive translation of the eye position along the sight direction by a distance D sight =V sight *Δt,  313 .  
         [0031]    At each step of the animation, the rotational speeds of the viewpoint base Ω z0    310  and Ω right    312  are computed from the relative position of the mouse pointer to the center of the screen  320 :  
         Ω z0 =α 1 *( x   mouse   −w   screen /2)  
         Ω right =α 2 *( y   mouse   −h   screen /2)  
         [0032]    where α 1  and α 2  are positive constant values and w screen  and h screen  are the screen  320  bounds.  
         [0033]    The translation speed of the viewpoint along its sight direction V sight  can be set to a low positive value (adapted to the scene bounds) at the start of the flight and can later be increased or decreased utilizing two keyboard keys such as for example Page Up and Page Down keys. An alternative computation can be made from the position of a sensitive joystick.  
         [0034]    Referring now to FIG. 4, a three-dimensional representation of a trajectory that a current input device position will lead to can be represented as a navigation arrow, or other three dimensional graphical figure. In one embodiment, the three dimensional graphical figure can be illustrated as a three dimensional transparent arrow  410 - 411  drawn over the scene. When a user moves an input device, the arrow can bend according to the current rotation speed of the viewpoint base. In addition, the three-dimensional arrow can stretch according to a current viewpoint translation speed. An optional collision detection mechanism can be enabled wherein the arrow can also be used to indicate imminent impact with the nearest object in the sight direction.  
         [0035]    A value read from a depth buffer at the center of the screen, which is the distance from the viewpoint eye to the nearest object, can be divided by a current translation speed to obtain the delay before a potential traversal. A traversal can appear as a collision in a digital mockup scene. In one embodiment, if this delay falls under a predefined value the color of the arrow can graduate from one color to another, such as green to red. Other implementations can include changing the texture of the arrow, or other three dimensional graphical figure used. Texture variables can include a pattern such as a checkerboard or stripe pattern. In addition, texture variables can include increased brightness of other visual indicator. In another embodiment, collision or imminent collision can be signaled with an audio sound.  
         [0036]    Referring now to FIG. 5, for each step of an animation, arrow curvature can be computed by cutting the arrow tail into several slices  511 - 518 , the arrow end is considered as one more slice  519 . Referring now to FIG. 6, each slice can be assigned a base  
       (       P   i     ,                  S   ρ     i     ,                  R   ρ     i     ,                  U   ρ     i       )                         
 
         [0037]    Each slice base can be thought as a viewpoint base, with the first slice as the current viewpoint base.  
         [0038]    Beginning with the first slice  511 , each slice base can be computed from the previous one by applying a similar transformation as for the viewpoint base in a fly-through motion, wherein:  
         [0039]    rotation of the three directions around the absolute z-axis by an angle θ′ z0 =Ω z0 *K1,  610 ;  
         [0040]    rotation of  
           S   ρ     i                   and                     U   ρ     i                           
 
         [0041]     around  
         R   ρ     i                         
 
         [0042]     by an angle θ′ right =Ω right * K1,  611 ; and  
         [0043]    translation of P i  along  
         S   ρ     i                         
 
         [0044]     by a distance D′=V sight *K2,  612 ;  
         [0045]    where K1 and K2 are positive constants.  
         [0046]    As each slice can be computed from the previous one, by applying transformation depending on the current viewpoint rotation and translation speed, the arrow shape can be made to look like the curve that the viewpoint would describe if the user would keep the same input device position.  
         [0047]    Referring now to FIG. 7, in one embodiment, traversal of a surface of an object in the scene can be avoided by enabling a collision detection feature. Once enabled, this feature can apply rotations to the viewpoint according to the input device position  710  and redraw the scene from the rotated viewpoint  711 . After the scene has been redrawn, the program can compute the viewpoint eye translation along its sight direction, and test the resulting eye position against the depth buffer. In one embodiment, the translated point is projected at the center of the screen, in which case the test can consist in a comparison of sight direction (D sight ) and the value read from the depth buffer at the center of the screen. A target can be drawn at the center of screen to indicate to the user that this point can be used as the reference point to avoid collision. It can also be used as reference point for the mouse input device.  
         [0048]    If the test of the eye position against the buffer is a failure, the translated viewpoint can be rejected and indicate a surface traversal will occur during the next step. The system can then process the fly animation by not applying the translation to the viewpoint and resetting the speed  713 . In addition the arrow color can be updated.  
         [0049]    If the test of the eye position against the buffer is successful, the system can process the fly animation by applying the translation to the viewpoint and processing the next step. The value read in the depth buffer can be used to compute the distance from the viewpoint to the first object in the sight direction, and the delay before the impact. The arrow color can be updated based upon the computed collision delay.  
         [0050]    Referring now to FIG. 8, an object scene  800  can contain an object  820  and a planar grid  830 . A three dimensional arrow  810  can be directed with a pointing device to avoid traversal of the object  820 . In the illustration depicted in FIG. 8, the arrow  810  is directed to curve to the left of the object  820  and over the top of the grid  830 . Referring now to FIG. 9, the projected path of the three-dimensional arrow  810 , in object scene  900 , is directed to the right of the object and the planar grid  830 . The three dimensional arrow allows the operator to guide motion through the scenes on a three dimensional basis.  
         [0051]    The invention may be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. Apparatus of the invention may be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a programmable processor; and method steps of the invention may be performed by a programmable processor executing a program of instructions to perform functions of the invention by operating on input data and generating output.  
         [0052]    The invention may advantageously be implemented in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. Each computer program may be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language if desired; and in any case, the language may be a compiled or interpreted language.  
         [0053]    Generally, a processor will receive instructions and data from a read-only memory and/or a random access memory. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of nonvolatile 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. Any of the foregoing may be supplemented by, or incorporated in, specially-designed ASICs (application-specific integrated circuits).  
         [0054]    A number of embodiments of the present invention have been described. It will be understood that various modifications may be made without departing from the spirit and scope of the invention. Therefore, other implementations are within the scope of the following claims.