Geometric projected area of a multi-dimensional object in viewport space

By configuring a computer program in a multi-dimensional environment, projecting the visible faces under the viewpoint of the camera and calculating the sum of the polygonal areas, the problem in the prior art is difficult to efficiently and accurately determine the geometric projection area of ​​a multi-dimensional virtual object, and an accurate and efficient projection area calculation is achieved.

CN113313748BActive Publication Date: 2025-07-01TRIVVER INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202010122480.4
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2020-02-27
Publication Date
2025-07-01
Estimated Expiration
2040-02-27

AI Technical Summary

Technical Problem

The prior art is difficult to efficiently and accurately determine the geometric projection area of ​​multi-dimensional virtual objects in a multi-dimensional environment.

Method used

By installing software, firmware, hardware, or a combination of them on the system, a computer program is configured to determine the geometric projection area of ​​a multidimensional object. The specific steps include projecting the visible face under the camera's viewpoint, determining whether the face is visible, projecting the vertex to the viewport space, and calculating the sum of the polygon area.

Benefits of technology

It realizes efficient and accurate determination of the geometric projection area of ​​multi-dimensional objects in a multi-dimensional environment, and solves the problems of inefficiency or inaccuracy in the prior art.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113313748B_ABST
    Figure CN113313748B_ABST
Patent Text Reader

Abstract

Describes the use of various embodiments, systems, methods, and techniques to determine the geometric projected area of a multi-dimensional object. This includes: a computer system determining a set of visible faces projected by a camera onto a viewport space that is displayed on a graphical user interface, where the multi-dimensional object is presented in an electronically generated multi-dimensional environment; projecting the vertices of each face in the set of visible faces that are visible on the viewport space; determining a set of polygons for each face based on the projected vertices of each respective face; and calculating the area of each polygon in the set of polygons. Thereafter, the sum of the areas of each polygon in the set of polygons is performed to determine the geometric projected area of the multi-dimensional object.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments of the present invention generally relate to projection geometry in electronically (e.g., computer) generated multi-dimensional environments. More specifically, embodiments of the present invention relate to determining the geometric projected area (GAP) of multi-dimensional virtual objects in an electronically generated multi-dimensional environment. Background Art

[0002] Multi-dimensional computer-generated or simulated environments are utilized in many different fields that use computer-aided visualization techniques. These techniques require calculating the GAP to determine the area projected by a virtual object in viewport space.

[0003] However, currently known techniques are inefficient or unable to accurately determine the geometric projected area of an object. Accordingly, there is a need for systems, methods, and techniques that can overcome the above limitations and efficiently determine the GAP of multi-dimensional digital objects within a multi-dimensional environment. Summary of the Invention

[0004] A system of one or more computers can be configured to perform particular operations or actions by virtue of software, firmware, hardware, or a combination thereof installed on the system, the software, firmware, hardware, or a combination thereof causing the system to perform the actions in operation. One or more computer programs can be configured to perform particular operations or actions by virtue of including instructions that, when executed by a data processing device, cause the device to perform the actions. One general aspect includes a system that determines the geometric projected area (GAP) of a multi-dimensional object. The system can be configured to determine a set of visible faces projected by a camera onto viewport space that is displayed on a graphical user interface, where the multi-dimensional object is presented in an electronically generated multi-dimensional environment. The system can also be configured to project vertices of each face in the set of visible faces that are visible onto viewport space. The system can also be configured to determine a set of polygons for each face based on the projected vertices of each face and calculate the area of each polygon in the set of polygons. The system then performs a summation of the areas of each polygon in the set of polygons to determine the GAP of the multi-dimensional object. Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the method.

[0005] Embodiments may include one or more of the following features. The system may also be configured to determine whether a face of a multi-dimensional object is included in a set of visible faces projected onto viewport space by: projecting a first vector perpendicular to the face, projecting a second vector from the camera to the face, determining the angle between the first vector and the second vector, and determining that the face is visible when the angle between the first vector and the second vector is less than 90 degrees. The angle between the first vector and the second vector may be determined by the dot product between the two vectors. The second vector may be projected towards at least one of the center of the face or the midpoint of the face. To project the vertices of the face into viewport space, the system may also be configured to: determine a view projection matrix, where the view represents a mapping from world space coordinates to camera space coordinates, and where the projection represents a mapping from camera space coordinates to viewport space coordinates; derive the homogeneous coordinates of each vertex of the face; and multiply the view projection matrix by the homogeneous coordinates.

[0006] The system may also be configured to determine whether vertices outside the projected vertices of a face are projected inside or outside the viewport space by determining the total number of vertices of the face projected inside the viewport space. When it is determined that a polygon cannot be drawn / projected from the vertices projected inside the viewport space, the area of the polygon is set to zero. Embodiments of the techniques may include hardware, methods or processes, or computer software on a computer-accessible medium. BRIEF DESCRIPTION OF THE DRAWINGS

[0007] The present invention is illustrated by way of example and not limitation in the figures, in which like reference numerals indicate similar elements.

[0008] Figure 1 System 100 according to one embodiment of the present invention is illustrated, which is configured to determine the geometric projected area of a multi-dimensional object displayed on a graphical user interface.

[0009] Figure 2 FIG. 200 according to one embodiment of the present invention is illustrated, which depicts a multi-dimensional object in a multi-dimensional space for which the geometric projected area needs to be determined.

[0010] Figure 3 FIG. 300 according to one embodiment of the present invention is illustrated, which depicts the geometric projected area of a multi-dimensional object on the normalized coordinates of the viewport of a multi-dimensional environment.

[0011] Figure 4 FIG. 400 according to one embodiment of the present invention is illustrated, which depicts a multi-dimensional object in order to determine the midpoint of the face of the object.

[0012] Figure 5FIG. 500 illustrates a process for determining candidate vertices of a multi-dimensional object according to an embodiment of the present invention, which can be used to determine the geometric projection area.

[0013] Figure 6 FIG. 600 is a flowchart illustrating an operation for determining the geometric projection area of a multi-dimensional object according to an embodiment of the present invention.

[0014] Figure 7 FIG. 700 is a flowchart illustrating an operation for determining whether a face of a multi-dimensional object is included in a set of visible faces projected onto a viewport space according to an embodiment of the present invention.

[0015] Figure 8 FIG. 800 is a flowchart illustrating an operation for projecting vertices of a face onto a viewport space according to an embodiment of the present invention.

[0016] Figure 9 FIG. 900 is a flowchart illustrating an operation for determining the geometric projection area of a face of a multi-dimensional object based on the positions of the projected vertices of the face according to an embodiment of the present invention.

[0017] Figure 10 is a block diagram of a data processing system such as computing system 1000 according to an embodiment of the present invention. DETAILED DESCRIPTION

[0018] Various embodiments and aspects of the present invention will be described with reference to the details discussed below, and the accompanying drawings will illustrate the various embodiments. The following description and drawings illustrate the present invention and are not to be construed as limiting the present invention. A number of specific details are described to provide a thorough understanding of the various embodiments of the present invention. However, in some instances, well-known or conventional details are not described in order to provide a concise discussion of the embodiments of the present invention.

[0019] References in this specification to "one embodiment" or "an embodiment" or "another embodiment" mean that a particular feature, structure, or characteristic described in connection with the embodiment can be included in at least one embodiment of the present invention. The appearances of the phrase "in one embodiment" in various places in the specification are not necessarily all referring to the same embodiment. The processes depicted in the drawings are executed by processing logic that includes hardware (e.g., circuits, dedicated logic, etc.), software, or a combination of both. Although the processes are described below in accordance with some order of operations, it should be understood that some of the operations can be performed in a different order. Moreover, some of the operations can be performed in parallel rather than sequentially.

[0020] The Geometric Projection Area (GAP) is the total area projected by the vertices of a multi-dimensional virtual object in a normalized coordinate system that is visible on a viewport (normalized viewport space). When the rendering device includes a conventional graphical interface (e.g., a screen), the normalized coordinate system can be represented as a two-dimensional coordinate system.

[0021] Although exemplary embodiments are illustrated in screen coordinate systems, the scope of the present invention is not intended to be limited to conventional rendering devices (e.g., screens), but may include multi-dimensional rendering devices, including the interfaces required for virtual and augmented reality systems.

[0022] Figure 1 System 100, which is configured to determine the geometric projection area of a multi-dimensional object displayed on a graphical user interface, is illustrated according to one embodiment of the present invention.

[0023] In some embodiments, system 100 may include one or more servers 102. The servers 102 may be configured to communicate with one or more client computing platforms 104 according to a client / server architecture and / or other architectures. The client computing platforms 104 may be configured to communicate with other client computing platforms via the servers 102 and / or according to a peer-to-peer network architecture and / or other architectures. A user may access system 100 via the client computing platforms 104.

[0024] System 100 can generally be used to determine the geometric projection area of a multi-dimensional object. The servers 102 may be configured by machine-readable instructions 106. The machine-readable instructions 106 may include one or more instruction modules. The instruction modules may include computer program modules. The instruction modules may include one or more of an object visible face determination module 108, a vertex determination module 110, a polygon determination module 112, a polygon area determination module 113, and / or other instruction modules.

[0025] In one embodiment, the object visible face determination module 108 may be configured to determine a set of visible faces of a multi-dimensional object projected by a camera onto a viewport space that is displayed on a graphical user interface. The multi-dimensional object may be presented to a user in an electronically generated multi-dimensional environment.

[0026] The vertex determination module 110 may be configured to determine the vertices of each visible face of the multi-dimensional object in the coordinate system used by the viewport space. In one embodiment, module 110 may include instructions for projecting the vertices of each face of the multi-dimensional object that are visible on the viewport space.

[0027] The polygon determination module 112 may be configured to determine the characteristics of each face by determining the number of polygons that can be drawn / projected by the vertices of each face. Module 112 may include instructions for determining polygons (e.g., quadrilaterals, squares, triangles, etc.) from the projected vertices.

[0028] The polygon area determination module 113 may be configured to determine the area of each polygon. Thereafter, module 113 may perform a summation of all the calculated areas to determine the GAP of the multi-dimensional object. In one embodiment, the GAP provides an estimate of the assumed screen area for the projection of the multi-dimensional object on the viewport. The GAP determines the ratio of the projected area of the multi-dimensional object to the area of the viewport:

[0029] GAP = total projected area of the multi-dimensional object / total area of the viewport

[0030] In some embodiments, the server 102, the client computing platform 104, and / or the external resource 114 may be operably linked via one or more electronic communication links. For example, such electronic communication links may be established at least in part via a network such as the Internet and / or other networks. It will be understood that this is not intended to be limiting, and the scope of the present disclosure includes embodiments in which the server 102, the client computing platform 104, and / or the external resource 114 may be operably linked via some other communication medium.

[0031] A given client computing platform 104 may include one or more processors configured to execute computer program modules. The computer program modules may be configured to enable an expert or user associated with the given client computing platform 104 to interface with the system 100 and / or the external resource 114, and / or to provide other functions attributed to the client computing platform 104 herein. By way of non-limiting example, a given client computing platform 104 may include one or more of a desktop computer, a laptop computer, a handheld computer, a tablet computing platform, a netbook, a smartphone, a gaming console, and / or other computing platforms. The external resource 114 may include information sources outside the system 100, external entities participating in the system 100, and / or other resources. In some embodiments, some or all of the functions attributed to the external resource 114 herein may be provided by resources included in the system 100.

[0032] The server 102 may include an electronic storage 116, one or more processors 118, and / or other components. The server 102 may include communication lines or ports that enable information to be exchanged with a network and / or other computing platforms. Figure 1 The illustration of the server 102 in is not intended to be limiting. The server 102 may include a plurality of hardware, software, and / or firmware components that operate together to provide the functions attributed to the server 102 herein. For example, the server 102 may be implemented by a cloud of computing platforms that operate together as the server 102.

[0033] The electronic storage 116 may include a permanent storage medium that stores information electronically. The electronic storage medium of the electronic storage 116 may include a system storage integrated with the server 102 (i.e., substantially non-removable) and / or one or both of a removable storage removably connected to the server 102 via, for example, a port (e.g., a USB port, a FireWire port, etc.) or a drive (e.g., a disk drive, etc.). The electronic storage 116 may include one or more of an optically readable storage medium (e.g., an optical disc, etc.), a magnetically readable storage medium (e.g., a magnetic tape, a magnetic hard disk drive, a floppy disk drive, etc.), a charge-based storage medium (e.g., an EEPROM, a RAM, etc.), a solid-state storage medium (e.g., a flash drive, etc.), and / or other electronically readable storage media. The electronic storage 116 may include one or more virtual storage resources (e.g., cloud storage, a virtual private network, and / or other virtual storage resources). The electronic storage 116 may store software algorithms, information determined by the processor 118, information received from the server 102, information received from the client computing platform 104, and / or other information that enables the server 102 to function as described herein.

[0034] The processor 118 may be configured to provide information processing capabilities in the server 102. Thus, the processor 118 may include one or more of a digital processor, an analog processor, a digital circuit designed to process information, an analog circuit designed to process information, a state machine, and / or other mechanisms for electronically processing information. Although the processor 118 is shown as a single entity in Figure 1 this is for illustrative purposes only. In some embodiments, the processor 118 may include multiple processing units. These processing units may be physically located within the same device, or the processor 118 may represent the processing functions of multiple devices operating in cooperation. The processor 118 may be configured to execute modules 108, 110, 112, and / or other modules.

[0035] The processor 118 may be configured to execute modules 108, 110, 112, and / or other modules by software, hardware, firmware, some combination of software, hardware, and / or firmware, and / or other mechanisms for configuring the processing capabilities on the processor 118. As used herein, the term "module" may refer to any component or any group of components that perform the functions attributed to the module. This may include one or more physical processors, processor-readable instructions, circuits, hardware, storage media, or any other component during the execution of processor-readable instructions.

[0036] It should be understood that although in Figure 1The intermediate modules 108, 110, 112, and / or 113 are illustrated as being implemented within a single processing unit. However, in embodiments where the processor 118 includes multiple processing units, one or more of the modules 108, 110, and / or 112 may be implemented remotely from the other modules. The description of the functions provided by the different modules 108, 110, 112, and / or 113 described below is for illustrative purposes and is not intended to be limiting, as any one of the modules 108, 110, 112, and / or 113 may provide more or fewer functions than described. For example, one or more of the modules 108, 110, 112, and / or 113 may be eliminated, and some or all of their functions may be provided by other modules among 108, 110, 112, and / or 113. As another example, the processor 118 may be configured to execute one or more additional modules that may perform some or all of the functions attributed to one of the modules 108, 110, 112, and / or 113.

[0037] A system consisting of one or more computers may be configured to perform specific operations or actions by virtue of software, firmware, hardware, or a combination thereof installed on the system, which in operation causes the system to perform the actions. One or more computer programs may be configured to perform specific operations or actions by virtue of including instructions that, when executed by a data processing device, cause the device to perform the actions.

[0038] Figure 2 FIG. 200 illustrates an embodiment in accordance with the present invention, which depicts a multi-dimensional object in a multi-dimensional space for which a geometric projected area needs to be determined. As illustrated, the multi-dimensional object 202 is a 3D object in a Euclidean space having points V1 through V8. In one embodiment, the face determination module 108 determines whether the faces of the multi-dimensional object 202 are visible on the viewport space by projecting vectors perpendicular to each face of the multi-dimensional object. As illustrated, the vectors 204-214 each represent the normal vector of each corresponding face / surface of the multi-dimensional object. In this illustration, the dashed vectors 208, 212, and 214 indicate that they are not visible from the camera. Vectors may be projected from each outer surface of the multi-dimensional object 202, whereby the vector 208 starting from the back side of the multi-dimensional object 202 is projected further away from the camera. Thereafter, another (second) vector (not shown) is projected from the camera to each face. The second vector may be drawn / projected from the camera towards the center of each face. In another embodiment, the second vector starting from the camera is drawn / projected towards the midpoint of the face of the multi-dimensional object 202. In yet another embodiment, the second vector may be projected from the face of the multi-dimensional object 202 towards the camera.

[0039] After both vectors are projected onto each face, the angle between the first vector and the second vector is determined. In one embodiment, the angle can be determined by the dot product between the first vector and the second vector. In one embodiment, when the angle between the first vector and the second vector is less than ±90 degrees (plus or minus 90 degrees), the face is determined to be visible in viewport space. When the angle is exactly ±90 degrees, then only the edges / corners of the face are visible. When the angle is greater than ±90 degrees, then the face of the multi-dimensional object is considered invisible. After determining the visible faces projected onto the viewport space, it can be as Figure 3 exemplarily determine the vertices of each visible face (in the viewport space coordinate system).

[0040] Figure 3 FIG. 300 illustrates an embodiment in accordance with the present invention, which depicts the geometric projected area of a multi-dimensional object on the normalized coordinates of the viewport of a multi-dimensional environment. Once the visible faces are determined, the vertices can be projected onto the viewport space.

[0041] This includes determining the view projection matrix, where the view represents the mapping from world space coordinates to camera space coordinates, and the projection represents the mapping from camera space coordinates to viewport space coordinates. It is assumed that the mapping (model matrix) from the local multi-dimensional coordinate space (e.g., a three-dimensional coordinate system) of each face to world space coordinates has been performed. Otherwise, the model view projection matrix is determined instead of the view projection matrix.

[0042] Thereafter, the homogeneous coordinates of each point of the face of the multi-dimensional object can be derived. To derive the homogeneous coordinates, the point coordinates are projected with a scale factor for projection. For example, for a three-dimensional object with a point P xyz , the homogeneous coordinates can be determined as P x,y,z,w , where w represents the scale factor. When presenting the viewport space on a conventional screen with a normalized coordinate system, w is set to 1. Thus, in this example, the homogeneous coordinates of the point P xyz in three-dimensional space can be represented as: P xyz1 .

[0043] Then, the projected vertices of each face can be derived by multiplying the view projection matrix or the model view projection matrix (as appropriate) with the homogeneous coordinates. In three-dimensional space, this can be represented as:

[0044] Vertex viewspace = Matrix viewprojection * P 3DSpace , where P 3DSpace are the homogeneous coordinates of P = (x, y, z, 1).

[0045] In one embodiment, a view projection matrix of a rendering pipeline of a graphics engine (e.g., a 3D engine) that generates a multi-dimensional environment may be used. The view projection matrix depends on the position / rotation of the camera, the field of view, the screen aspect ratio, and the near and far clipping planes of the camera. Thus, one of ordinary skill in the art will understand that the generation of the view projection matrix may vary depending on the implementation.

[0046] Figure 4 FIG. 400 illustrates an embodiment in accordance with the present invention that depicts a multi-dimensional object in order to determine the midpoint of a face of the object. To determine the visible faces, as described above, in one embodiment, a vector from the camera to the face is determined at the midpoint of the face. In one embodiment, to determine the midpoint or an approximation thereof, as illustrated in the example, the multi-dimensional object 202 is encapsulated within a bounding box 402. A face 404 of the bounding box may be selected to determine its midpoint. As illustrated in the example, the face 404 is a plane on the y-axis in Euclidean space (and thus has the same y dimension) that has vertices 406 (x1, y, z1), vertex 408 (x1, y, z2), vertex 410 (x2, y, z2), and vertex 412 (x2, y, z1). The face 404 illustrates a parallelogram and is currently visible to the camera. Then, the midpoint (M p ) is calculated as the sum of all vertex coordinates divided by 4 and is expressed as:

[0047] M p = (coordinates of vertex 406 + coordinates of vertex 408 + coordinates of vertex 410 + coordinates of vertex 412) / 4

[0048] Once the midpoint is determined, in one embodiment, a second vector may be drawn / projected from that point to the camera (and vice versa) as described above to determine if the face is visible.

[0049] Figure 5 FIG. 500 illustrates an embodiment in accordance with the present invention that depicts the process of determining candidate vertices of a multi-dimensional object that may be used to determine a GAP. As illustrated in the example, vertices may be projected inside or outside of the viewport space 501A (represented as 501B). The vertices of two objects are projected as faces 502 and 506, respectively. All vertices of face 502 are projected within the viewport space 501A and are represented as 504A-D. However, vertices 508A and 508B of face 506 are projected within the viewport space 501A, while vertices 510A and 510B are projected at the external space 501B.

[0050] In one embodiment, to determine whether the vertices of a face can be used to determine the GAP of the multi-dimensional object 202, the total number of vertices of the face projected inside the viewport space is determined. As illustrated for face 506, vertices 510A and 510B are projected outside the viewport space (at 501B), and 508A and 508B are projected inside the viewport space 501A. Subsequently, it is determined whether a polygon can be drawn using the vertices projected inside the viewport space. Since a polygon can be drawn using vertices 504A-D, these vertices are considered candidate vertices for determining the area of face 502. Thus, the area of face 502 is used to determine the GAP of the object corresponding to face 502.

[0051] However, as illustrated, a polygon cannot be drawn for face 506 using only two vertices (508A and 508B). Thus, the area of face 506 is set to zero, and face 506 is not considered for determining the GAP of the corresponding object. In another example, if 510B can be projected inside the viewport space 501A, then three vertices of face 506 (vertices 508A, 508B, and 510B) can be used to project a triangle. Thus, in this case, the area of the triangle including the three vertices can be used to determine the area of face 506.

[0052] Figure 6 Flowchart 600 according to an embodiment of the present invention is illustrated, which describes operations for determining the geometric projection area of a multi-dimensional object. As illustrated at operation 602, a set of visible faces projected by a camera onto a viewport space that is displayed on a graphical user interface is determined, where the multi-dimensional object is presented in an electronically generated multi-dimensional environment. Subsequently, at operation 604, the vertices of each face in the set of visible faces projected onto the viewport space are projected. At operation 606, a set of polygons for each face based on the projected vertices of each face is determined. Then, as illustrated at 608, the area of each polygon in the set of polygons is calculated. As illustrated at 610, a summation of each area in the set of polygons is performed to determine the GAP of the multi-dimensional object.

[0053] Figure 7 Flowchart 700 according to an embodiment of the present invention is illustrated, which describes operations for determining whether a face of a multi-dimensional object is included in a set of visible faces projected onto a viewport space. As illustrated at 702, a first vector perpendicular to the face is projected. At 704, a second vector from the camera to the face is projected. At 706, the angle between the first vector and the second vector is determined. At 708, when the angle between the first vector and the second vector is less than 90 degrees, it is determined that the face is visible.

[0054] Figure 8Illustrates flowchart 800 according to an embodiment of the present invention, which describes the operation of projecting the vertices of a face into viewport space. At 802, a view projection matrix is determined. In the view projection matrix, the view represents the mapping of world space coordinates to camera space coordinates, and the projection represents the mapping of camera space coordinates to viewport space coordinates. Thereafter, at 804, the homogeneous coordinates of each vertex of the face are derived. At 806, the view projection matrix and the homogeneous coordinates are multiplied.

[0055] Figure 9 Illustrates flowchart 900 according to an embodiment of the present invention, which describes the operation of determining the geometric projection area of a face of a multi-dimensional object based on the positions of the projected vertices of the face. At 902, based on the projection, it is determined whether the vertices outside the projected vertices of the face are projected inside or outside the viewport space. In one embodiment, the viewport space is equal to the user's visible viewport. However, in another embodiment, the viewport space can extend beyond the visible area of the user's viewport. At 902, the total number of vertices of the face projected inside the viewport space is determined. At 906, when it is determined that a polygon cannot be drawn from the vertices projected inside the viewport space, the area of the polygon is set to zero.

[0056] Figure 10 Is a block diagram of a data processing system such as computing system 1000 that can be used with an embodiment of the present invention. For example, system 1000 can be implemented as part of a system for determining visibility metrics of multi-dimensional objects in a multi-dimensional environment. It should be apparent from this specification that aspects of the present invention can be embodied at least in part in software. That is, the technology can be performed in a computer system or other computer system in response to a processor (such as a microprocessor) of the computer system or other computer system executing a sequence of instructions contained in a memory (such as ROM, DRAM, mass storage, or a remote storage device). In various embodiments, hardware circuits can be used in combination with software instructions to implement the present invention. Thus, the technology is not limited to any particular combination of hardware circuits and software, nor to any particular source of the instructions executed by the computer system. Additionally, throughout this specification, various functions and operations are described as being performed or caused by software code to simplify the description. However, those skilled in the art will recognize that this means that the functions are produced by the processor executing the code.

[0057] In one embodiment, system 1000 may represent server 102. System 1000 may have a distributed architecture having multiple nodes coupled by a network, or all components of the system may be integrated into a single unit. Computing system 1000 may represent any of the above data processing systems that execute any of the above processes or methods. In one embodiment, computer system 1000 may be implemented as an integrated circuit (IC), discrete electronic device, module suitable for a circuit board such as a motherboard, an insertion card of a computer system, and / or a component that can be incorporated within a rack / chassis of any computing device. System 1000 is intended to show a high-level view of many components of any data processing unit or computer system. However, it should be understood that there may be additional or fewer components in certain embodiments, and furthermore, different arrangements of the shown components may occur in other embodiments. System 1000 may represent a desktop computer, laptop computer, tablet computer, server, mobile phone, programmable logic controller, personal digital assistant (PDA), personal communicator, network router or hub, wireless access point (AP) or repeater, set-top box, or a combination thereof.

[0058] In one embodiment, system 1000 includes processor 1001, memory 1003, and devices 1005 - 1008 via bus or interconnect 1022. Processor 1001 may represent a single processor or multiple processors that internally include a single processor core or multiple processor cores. Processor 1001 may represent one or more general-purpose processors, such as a microprocessor, central processing unit (CPU), microcontroller unit (MCU), etc. Processor 1001 may be a complex instruction set computing (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, or a processor that implements other instruction sets, or a processor that implements a combination of instruction sets. Processor 1001 may also be one or more specialized processors, such as an application-specific integrated circuit (ASIC), a cellular or baseband processor, a field-programmable gate array (FPGA), a digital signal processor (DSP), a network processor, a graphics processor, a network processor, a communication processor, a cryptographic processor, a coprocessor, an embedded processor, or any other type of logic capable of processing instructions. Processor 1001 may also be a low-power multi-core processor socket, such as an ultra-low voltage processor, that can act as a main processing unit and central hub for communicating with various components of the system. Such a processor may be implemented as a system-on-chip (SoC).

[0059] The processor 1001 is configured to execute instructions for performing the operations and methods discussed herein. The system 1000 also includes a graphical interface that communicates with a graphics subsystem 1004, which may include a display controller and / or a display device. The processor 1001 may communicate with a memory 1003, which in an embodiment may be implemented via multiple storage devices to provide a given amount of system memory. In various embodiments, the individual storage devices may have different package types, such as single die package (SDP), dual die package (DDP), or quad die package (QDP). In some embodiments, these devices may be directly soldered to the motherboard to provide a lower profile solution, while in other embodiments, these devices may be configured as one or more memory modules, which in turn may be coupled to the motherboard via a given connector. The memory 1003 may be a machine-readable permanent storage medium, such as one or more volatile storage (or memory) devices, such as random access memory (RAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), static RAM (SRAM), or other types of storage devices, such as hard disk drives and flash memory. The memory 1003 may store information including sequences of executable program instructions to be executed by the processor 1001 or any other device. The system 1000 may also include I / O devices such as devices 1005-1008, including a wireless transceiver 1005, an input device 1006, an audio I / O device 1007, and other I / O devices 1008.

[0060] The wireless transceiver 1005 can be a WiFi transceiver, an infrared transceiver, a Bluetooth transceiver, a WiMax transceiver, a wireless cellular phone transceiver, a satellite transceiver (e.g., a Global Positioning System (GPS) transceiver), or other radio frequency (RF) transceiver, a network interface (e.g., an Ethernet interface), or a combination thereof. The input device 1006 can include a mouse, a touchpad, a touch-sensitive screen (which can be integrated with the display device 1004), a pointer device such as a stylus, and / or a keyboard (e.g., a physical keyboard or a virtual keyboard displayed as part of a touch-sensitive screen). Other optional devices 1008 can include a storage device (e.g., a hard disk drive, a flash memory device), a Universal Serial Bus (USB) port, a parallel port, a serial port, a printer, a network interface, a bus bridge (e.g., a PCI-PCI bridge), sensors (e.g., motion sensors such as accelerometers, gyroscopes, magnetometers, optical sensors, compasses, proximity sensors, etc.), or a combination thereof. The optional device 1008 can also include an imaging processing subsystem (e.g., a camera), which can include an optical sensor for facilitating camera functions such as recording photos and video clips, such as a charge-coupled device (CCD) or a complementary metal oxide semiconductor (CMOS) optical sensor. Depending on the specific configuration or design of the system 1000, certain sensors can be coupled to the interconnect 1022 via a sensor hub (not shown), while other devices such as a keyboard or a thermal sensor can be controlled by an embedded controller (not shown).

[0061] To provide persistent storage for information such as data, applications, one or more operating systems, etc., in one embodiment, a mass storage device (not shown) can also be coupled to the processor 1001. In various embodiments, to enable a thinner and lighter system design and improve the system's responsiveness, the mass storage device can be implemented via a solid state device (SSD). However, in other embodiments, the mass storage device can be primarily implemented using a hard disk drive (HDD) with a smaller amount of SSD storage to act as an SSD cache to enable non-volatile storage of context states and other such information during a power-off event, such that the system can boot up quickly when system activity is restarted. A flash memory device can also be coupled to the processor 1001, for example, via a Serial Peripheral Interface (SPI). The flash memory device can provide non-volatile storage for system software, including basic input / output software (BIOS) and other firmware of the system.

[0062] Note that although system 1000 is illustrated as having various components of a data processing system, it is not intended to represent any particular architecture or manner of interconnecting these components; because such details are not closely related to embodiments of the present invention. It will also be understood that network computers, handheld computers, mobile phones, and other data processing systems with fewer components or possibly more components may also be used with embodiments of the present invention.

[0063] Accordingly, a method, apparatus, and computer-readable medium for determining a geometric projected area of a multi-dimensional object in a multi-dimensional environment are described herein. Although the present invention has been described with reference to specific exemplary embodiments, it will be apparent that various modifications and changes can be made to these embodiments without departing from the broader spirit and scope of the invention as set forth in the claims. Therefore, the specification and drawings will be considered in an illustrative sense rather than a restrictive sense.

Claims

1. A method for determining the geometric projected area of a multi-dimensional object in a viewport space, comprising: Determining, by a computer system, a set of visible faces projected by a camera onto the viewport space that is displayed on a graphical user interface, wherein the multi-dimensional object is presented in an electronically generated multi-dimensional environment; Projecting the vertices of each face in the set of visible faces visible on the viewport space; Determining a set of polygons for each face based on the projected vertices of each face; Calculating the area of each polygon in the set of polygons; and Performing a summation of the areas of each polygon in the set of polygons; wherein the method determines the geometric projected area of the multi-dimensional object.

2. The method according to claim 1, wherein, Determining whether a face of the multi-dimensional object is included in the set of visible faces projected onto the viewport space includes: Projecting a first vector perpendicular to the face; Projecting a second vector from the camera to the face; Determining the angle between the first vector and the second vector; and Determining that the face is visible when the angle between the first vector and the second vector is less than 90 degrees.

3. The method according to claim 2, wherein The angle is determined by the dot product between the first vector and the second vector.

4. The method according to claim 2, wherein, The second vector is projected towards the center of the face.

5. The method according to claim 2, wherein The second vector is projected from the camera towards the midpoint of the face.

6. The method according to claim 1, wherein Projecting the vertices of the face onto the viewport space includes: Determining a view projection matrix, where the view represents a mapping from world space coordinates to camera space coordinates, and where the projection represents a mapping of the camera space coordinates to viewport space coordinates; Deriving the homogeneous coordinates of each vertex of the face; and Multiplying the view projection matrix by the homogeneous coordinates.

7. The method according to claim 1, further comprising: Determining whether vertices outside the projected vertices of the face are projected inside or outside the viewport space; Determining the total number of vertices of the face projected inside the viewport space; wherein when it is determined that a polygon cannot be projected from the vertices projected inside the viewport space, the area of the polygon is set to zero.

8. A non-transitory computer-readable medium comprising instructions that, when executed by a processing system having at least one processing core, perform a method for determining the geometric projected area of a multi-dimensional object in a viewport space, the method comprising: Determining a set of visible faces projected by a camera onto the viewport space that is displayed on a graphical user interface, wherein the multi-dimensional object is presented in an electronically generated multi-dimensional environment; Projecting the vertices of each face in the set of visible faces visible on the viewport space; Determining a set of polygons for each face based on the projected vertices of each face; Calculating the area of each polygon in the set of polygons; and Performing a summation of the areas of each polygon in the set of polygons; wherein the processing system determines the geometric projected area of the multi-dimensional object.

9. The permanent computer-readable medium according to claim 8, wherein, Determining whether a face of the multi-dimensional object is included in the set of visible faces projected onto the viewport space includes: Projecting a first vector perpendicular to the face; Projecting a second vector from the camera to the face; Determine the angle between the first vector and the second vector; and When the angle between the first vector and the second vector is less than 90 degrees, determine that the face is visible.

10. The permanent computer-readable medium according to claim 9, wherein, The angle is determined by the dot product between the first vector and the second vector.

11. The permanent computer-readable medium according to claim 9, wherein, The second vector projects towards the center of the face.

12. The permanent computer-readable medium according to claim 9, wherein, The second vector projects from the camera towards the midpoint of the face.

13. The permanent computer-readable medium according to claim 8, wherein, Projecting the vertices of the face into the viewport space includes: Determine the view projection matrix, where view represents the mapping from world space coordinates to camera space coordinates, and where projection represents the mapping of the camera space coordinates to viewport space coordinates; Derive the homogeneous coordinates of each vertex of the face; and Multiply the view projection matrix by the homogeneous coordinates.

14. The permanent computer-readable medium according to claim 8, further comprising:[[]] Determine whether vertices outside the projected vertices of the face are projected inside or outside the viewport space; Determine the total number of vertices of the face projected inside the viewport space; Wherein, when it is determined that a polygon cannot be projected from the vertices projected inside the viewport space, the area of the polygon is set to zero.

15. A system for determining the geometric projected area of a multi-dimensional object in a viewport space, comprising:[[]] A storage device; A processing system coupled to the storage device, the processing system configured to:[[]] Determine a set of visible faces projected by a camera onto a viewport space that is displayed on a graphical user interface, where the multi-dimensional object is presented in an electronically generated multi-dimensional environment; Project the vertices of each face in the set of visible faces projected onto the viewport space; Determine a set of polygons for each face based on the projected vertices of each face; Calculate the area of each polygon in the set of polygons; and Perform the summation of the areas of each polygon in the set of polygons; Wherein the processing system determines the geometric projected area of the multi-dimensional object.

16. The system according to claim 15, wherein To determine whether the faces of the multi-dimensional object are included in the set of visible faces projected onto the viewport space, the processing system is further configured to:[[]] Project a first vector perpendicular to the face; Project a second vector from the camera to the face; Determine the angle between the first vector and the second vector; and When the angle between the first vector and the second vector is less than 90 degrees, determine that the face is visible.

17. The system according to claim 16, wherein, The angle is determined by the dot product between the first vector and the second vector.

18. The system according to claim 16, wherein, The second vector projects towards at least one of the center of the face or from the camera towards the midpoint of the face.

19. The system according to claim 15, wherein, To project the vertices of the face into the viewport space, the processing system is further configured to:[[]] Determine the view projection matrix, where view represents the mapping from world space coordinates to camera space coordinates, and where projection represents the mapping of the camera space coordinates to viewport space coordinates; Derive the homogeneous coordinates of each vertex of the face; and Multiply the view projection matrix by the homogeneous coordinates.

20. The system according to claim 15, wherein, The processing system is further configured to:[[]] Determine whether vertices outside the projected vertices of the face are projected inside or outside the viewport space; Determine the total number of vertices of the face projected inside the viewport space; Wherein, when it is determined that the vertex projection polygon cannot be projected from the vertices projected inside the viewport space, the area of the polygon is set to zero.

Citation Information

Patent Citations

  • Triangle rasterization

    US20150022525A1

  • Three-dimensional (3D) rendering method and apparatus

    US20170032567A1