IP Library Granted Patent US 8,817,074
Granted Patent B2
US 8,817,074 · App. 13/024,814 · Granted Aug 26, 2014

Method of calculating 3D object data within controllable constraints for fast software processing on 32 bit RISC CPUS

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,817,074
App. No.
13/024,814
Granted
Aug 26, 2014
Kind
B2
Abstract

Systems and methods are described to allow arbitrary 3D data to be rendered to a 2D viewport on a device with limited processing capabilities. 3D vertex data is received comprising vertices and connections conforming to coordinate processing constraints. A position and orientation of a camera in world co-ordinates is received to render the 3D vertex data from. A processing zone of the plurality of processing zones the position of the camera is in is determined. The vertices of the 3D vertex data assigned to the determined processing zone are transformed based on the position and orientation of the camera for rendering to the viewport.

Claims (56)

1. A method for rendering 3-dimensional (3D) vertex data to a 2-dimensional (2D) viewport using integer based arithmetic of a 32-bit load store architecture processing unit lacking a floating-point processing unit (FPU), the method comprising:

receiving at the processing unit 3D vertex data comprising a plurality of vertices and connections between vertices conforming to coordinate processing constraints limiting a maximum length of each of the connections between vertices to ½ of a maximum vertex coordinate range of −2x to +2x;

receiving at the processing unit a position of a camera to render the 3D vertex data from;

culling from rendering to the 2D viewport each vertex of the plurality of vertices having a distance from the camera position along at least one axis greater than a maximum length constraint; and

rendering to the 2D viewport remaining vertices using a transformation matrix comprising a plurality of values having a maximum value of 2y;

wherein x+y<=32.

2. The method of claim 1 , wherein x=y=16.

3. The method of claim 1 , wherein culling vertices comprises first culling each vertex of the plurality of vertices having a distance from the camera position along the Z-axis greater than the maximum length constraint.

4. The method of claim 1 , further comprising culling each vertex of the plurality of vertices having a difference between a Z-coordinate of the camera position and a Z-coordinate of the vertex outside the range of a near-clip value of the camera and a far-clip value of the camera.

5. The method of claim 3 , wherein culling vertices further comprises culling each vertex of the remaining vertices having a distance from the camera position along either the X-axis or the Y-axis greater than the maximum length constraint.

6. The method of claim 1 , further comprising normalizing the coordinates of the remaining vertices to the camera position for rendering to the 2D viewport.

7. The method of claim 1 , further comprising normalizing the coordinates of the plurality of vertices to the camera position for culling vertices having a distance from the camera position greater than the maximum length constraint.

8. The method of claim 1 , wherein culling vertices from rendering comprises one of:

setting a Z-coordinate of the vertex to 0; and

removing the vertex from the plurality of vertices to be rendered.

9. The method of claim 1 , wherein the maximum length constraint is less than) 215/[2*sin(45°)].

10. The method of claim 9 , wherein the maximum length constraint is less than, or equal to, 22130.

11. The method of claim 1 , wherein each vertex of the received 3D vertex is associated with at least one processing zone of a plurality of processing zones, and wherein culling vertices comprises:

determining at least one processing zone based on the camera position; and

culling each vertex of the plurality of vertices not associated with the determined at least one processing zone of the camera position.

12. The method of claim 11 , wherein a plurality of processing zones are determined based on the camera position, the plurality of processing zones comprising the processing zone based on the camera position and immediately adjacent processing zones.

13. The method of claim 11 , wherein the processing zone of the camera is in is determined according to the equation:

floor( x /MaxLength)+floor( W*y /MaxLength)+floor( D*z /MaxLength), where

x, y and z are the coordinates of the location position of the camera;

MaxLength is the maximum length of a line segment according to the maximum length constraint;

W is the number of processing zones along an X-axis; and

D is the number of processing zones along a Y-axis.

14. The method of claim 1 , wherein rendering the remaining vertices comprises:

transforming the remaining vertex data based on the transformation matrix; and

projecting the transformed vertex data to 2D.

15. The method of claim 14 , wherein rotating comprises using a trigonometric table with 16 bit values for sine (angle)*2-14 or cosine (angle)*2-14 to provide a scaling factor for reduction of 3D vertex data.

16. The method of claim 14 , wherein scaling comprises multiplying a vertex by a multiple of a scale factor.

17. A method of processing 3D vertex data to conform to coordinate processing constraints for further processing using integer arithmetic using a processor, the processor executing instructions stored in a memory implementing the method comprising:

receiving 3D vertex data comprising a plurality of vertices and connections

adding one or more vertices to the 3D vertex data to subdivide connections between two vertices so that the all connections have a maximum size determined by a maximum length constraint of 215; and

assigning each of the vertices of 3D data to at least one respective processing zone of a plurality of processing zones,

wherein the 3D vertex data is provided to a 32-bit load store architecture processor lacking a floating-point processing unit (FPU).for rendering to a 2D viewport.

18. The method of claim 17 , wherein the maximum length constraint is 22130.

19. The method of claim 17 , wherein each processing zone is a cube having sides of at most a length of the maximum length constraint.

20. The method of claim 17 , further comprising removing any fractional components from the 3D vertex data.

21. A device for rendering 3D vertex data, the device comprising:

a display for displaying information;

a 32-bit load-store architecture processor lacking a floating-point processing unit (FPU) for executing instructions;

a memory for storing instructions that when executed by the processor configure the device to implement a method of processing 3D vertex data for rendering to the display using integer arithmetic comprising:

receiving at the processing unit 3D vertex data comprising a plurality of vertices and connections between vertices conforming to coordinate processing constraints limiting a maximum length of each of the connections between vertices to a maximum length constraint of −2x to +2x;

receiving at the processing unit a position of a camera to render the 3D vertex data from;

culling from rendering to the 2D viewport each vertex of the plurality of vertices having a distance from the camera position along at least one axis greater than a maximum length constraint; and

rendering to the 2D viewport remaining vertices using a transformation matrix comprising a plurality of values having a maximum value of 2y;

wherein x+y<=32.

22. A device for processing 3D vertex data, the device comprising:

a processor for executing instructions; and

a memory for storing instructions that when executed by the processor configure the device to implement a method of pre-processing 3D vertex data for eventual rendering to a display of a device having a 32-bit load-store architecture processor lacking a floating-point processing unit (FPU), the method comprising:

receiving 3D vertex data comprising a plurality of vertices and connections;

adding one or more vertices to the 3D vertex data to subdivide connections between two vertices so that the all connections have a maximum size determined by a maximum length constraint of 215; and

assigning each of the vertices of 3D data to at least one respective processing zone of a plurality of processing zones;

wherein the 3D vertex data is provided to a 32-bit load store architecture processor lacking a floating-point processing unit (FPU).for rendering to a 2D viewport.

Assignments (9)
SECURITY INTEREST Recorded Oct 1, 2025
From: WARNER BROS. DISCOVERY, INC.; WARNER MEDIA, LLC; TURNER BROADCASTING SYSTEM, INC.; HOME BOX OFFICE, INC.; DISCOVERY COMMUNICATIONS, LLC; WARNERMEDIA DIRECT LLC; DISCOVERY.COM LLC; WARNER BROS. ENTERTAINMENT INC.; CNN INTERACTIVE GROUP, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 072995/0858 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2025
From: YOU I LABS INC.
To: WM INTERACTIVE MEDIA HOLDINGS INC.
Reel/Frame 071480/0675 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 31, 2022
From: WM INTERACTIVE MEDIA HOLDINGS INC.
To: WARNERMEDIA DIRECT, LLC
Reel/Frame 058824/0195 →
CHANGE OF NAME Recorded Dec 3, 2021
From: YOU I LABS INC.
To: YOU I LABS INC.
Reel/Frame 058281/0719 →
MERGER AND CHANGE OF NAME Recorded Dec 3, 2021
From: YOU I LABS INC; YOU I LABS INC
To: YOU I LABS INC.
Reel/Frame 058301/0529 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 3, 2021
From: YOU I LABS INC.
To: WM INTERACTIVE MEDIA HOLDINGS INC.
Reel/Frame 058281/0876 →
RELEASE OF SECURITY INTEREST Recorded Feb 5, 2020
From: COMERICA BANK
To: YOU I LABS INC.
Reel/Frame 052022/0108 →
SECURITY INTEREST Recorded Apr 12, 2017
From: YOU I LABS INC.
To: COMERICA BANK
Reel/Frame 041986/0467 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 15, 2011
From: RUSSELL, STUART
To: YOU I LABS, INC.,
Reel/Frame 026133/0413 →