IP Library Granted Patent US 7,808,500
Granted Patent B2
US 7,808,500 · App. 11/562,166 · Granted Oct 5, 2010

Method for improving spatial index efficiency by jittering splitting planes

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 7,808,500
App. No.
11/562,166
Granted
Oct 5, 2010
Kind
B2
Abstract

Embodiments of the invention provide methods and apparatus to improve the efficiency of a ray tracing image processing system. According to one embodiment of the invention, when building a spatial index the position of a splitting plane used to create a bounding volume may be jittered or moved along an axis to determine if a more efficient location for the splitting plane exists. After jittering the splitting plane a number of primitives intersected by the splitting plane may be calculated. The number of primitives intersected by the splitting plane for each location may be compared, and the location with the fewest intersected primitives may be chosen for the final position of the splitting plane. By choosing the location with the fewest intersected primitives the number of ray-primitive intersection tests necessary when performing ray tracing may be reduced. Consequently, the efficiency of the image processing system may be improved.

Claims (59)

1. A method, comprising:

creating a spatial index having nodes representing bounding volumes in a three dimensional scene, comprising:

a) drawing an initial splitting plane within a bounding volume at a first point along a reference axis;

b) determining a number of primitives intersected by the initial splitting plane; and

c) jittering the splitting plane along the reference axis and by operation of one or more computer processors to determine a location for the splitting plane where fewer primitives are intersected; wherein jittering the splitting plane comprises:

selecting a second point a first distance from the first point along the reference axis, wherein the second point is oriented in a first direction along the reference axis with respect to the first point, and wherein selecting the second point comprises:

determining if a group of vertices are close to the first point in the first direction; and

if so, selecting the second point to be a distance from the first point beyond the group of vertices in the first direction;

drawing a second splitting plane within the bounding volume at the second point; and

determining a number of primitives intersected by the second splitting plane.

2. The method of claim 1 , wherein drawing an initial splitting plane within the bounding volume at a first point along the reference axis comprises:

projecting vertices of primitives within the bounding volume onto the reference axis; and

determining the first point to be within the middle of the projected vertices.

3. The method of claim 1 , wherein creating the spatial index further comprises:

selecting a third point a second distance from the first point along the reference axis, and wherein the third point is oriented in a second direction along the reference axis with respect to the first point;

drawing a third splitting plane within the bounding volume at the third point;

determining a number of primitives intersected by the third splitting plane; and

selecting the splitting plane which intersects the fewest number of primitives.

4. The method of claim 3 , wherein the first direction is a positive direction along the reference axis and the second direction is a negative direction along the reference axis.

5. The method of claim 3 , wherein the first distance and the second distance are the same distance.

6. A method, comprising:

creating a spatial index having nodes representing bounding volumes in a three dimensional scene, comprising:

a) drawing an initial splitting plane within a bounding volume at a first point along a reference axis;

b) determining a number of primitives intersected by the initial splitting plane;

c) jittering the splitting plane along the reference axis and by operation of one or more computer processors to determine a location for the splitting plane where fewer primitives are intersected; wherein jittering the splitting plane comprises:

selecting a second point a first distance from the first point along the reference axis, wherein the second point is oriented in a first direction along the reference axis with respect to the first point, and wherein selecting the second point comprises:

(i) determining if a group of vertices are close to the first point in the first direction; and

(ii) if so, selecting the second point to be a distance from the first point beyond the group of vertices in the first direction;

drawing a second splitting plane within the bounding volume at the second point; and

determining a number of primitives intersected by the second splitting plane;

d) selecting a third point a second distance from the first point along the reference axis, wherein the third point is oriented in a second direction along the reference axis with respect to the first point and wherein the first distance and the second distance are the same distance;

e) drawing a third splitting plane within the bounding volume at the third point;

f) determining a number of primitives intersected by the third splitting plane; and

g) selecting the splitting plane which intersects the fewest number of primitives.

7. The method of claim 6 , wherein drawing an initial splitting plane within the bounding volume at a first point along the reference axis comprises:

projecting vertices of primitives within the bounding volume onto the reference axis; and

determining the first point to be within the middle of the projected vertices.

8. The method of claim 6 , wherein the first direction is a positive direction along the reference axis and the second direction is a negative direction along the reference axis.

9. A method, comprising:

creating a spatial index having nodes representing bounding volumes in a three dimensional scene, comprising:

a) drawing an initial splitting plane within a bounding volume at a first point along a reference axis;

b) determining a number of primitives intersected by the initial splitting plane;

c) jittering the splitting plane along the reference axis and by operation of one or more computer processors to determine a location for the splitting plane where fewer primitives are intersected; wherein jittering the splitting plane comprises:

selecting a second point a first distance from the first point along the reference axis, wherein the second point is oriented in a first direction along the reference axis with respect to the first point, and wherein selecting the second point comprises:

(i) determining if a first group of vertices are close to the first point in the first direction; and

(ii) if so, selecting the second point to be a distance from the first point beyond the first group of vertices in the first direction;

drawing a second splitting plane within the bounding volume at the second point; and

determining a number of primitives intersected by the second splitting plane;

d) selecting a third point a second distance from the first point along the reference axis, wherein the third point is oriented in a second direction along the reference axis with respect to the first point and wherein selecting the third point comprises:

determining if a second group of vertices are close to the first point in the second direction; and

if so, selecting the third point to be a distance from the first point beyond the second group of vertices in the second direction;

e) drawing a third splitting plane within the bounding volume at the third point;

f) determining a number of primitives intersected by the third splitting plane; and

g) selecting the splitting plane which intersects the fewest number of primitives.

10. The method of claim 9 , wherein drawing an initial splitting plane within the bounding volume at a first point along the reference axis comprises:

projecting vertices of primitives within the bounding volume onto the reference axis; and

determining the first point to be relatively within the middle of the projected vertices.

11. The method of claim 9 , wherein the first direction is a positive direction along the reference axis and the second direction is a negative direction along the reference axis.

12. The method of claim 9 , wherein the first distance and the second distance are the same distance.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Oct 17, 2016
From: BANK OF AMERICA, N.A.
To: ACTIVISION BLIZZARD INC.; ACTIVISION PUBLISHING, INC.; ACTIVISION ENTERTAINMENT HOLDINGS, INC.; BLIZZARD ENTERTAINMENT, INC.
Reel/Frame 040381/0487 →
SECURITY AGREEMENT Recorded Feb 11, 2014
From: ACTIVISION PUBLISHING, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 032240/0257 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2013
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: ACTIVISION PUBLISHING, INC.
Reel/Frame 029900/0285 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2006
From: SHEARER, ROBERT ALLEN
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 018543/0044 →