pinto - sing.stanford.eduserver discovery • how do servers know to query each other? • pinto...

88
PIntO

Upload: others

Post on 20-Jul-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

PIntO

Page 2: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

WoW

Page 3: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Scripts// Declare two variables that refer to a pawns.var pawn P, Q; // Here is a function that makes use of P.// It displays some information about P.function MyFunction(){ // Set P's enemy to Q. P.Enemy = Q; // Tell P to play his running animation. P.PlayRunning();}

Page 4: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Potentially Interesting Objects

• Objects register queries

• Often restricted to clients

• Often implicit

• Server returns relevant objects

Page 5: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Discovery Today

• Almost universally distance based

• “Let me know about everything within x meters”

• Games use imposters

• Only simple for centrally controlled content

Page 6: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Mirror’s Edge

Page 7: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Mirror’s Edge

Page 8: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers
Page 9: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers
Page 10: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Shortcoming

• Distance doesn’t capture what’s important

Page 11: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers
Page 12: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers
Page 13: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers
Page 14: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers
Page 15: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Solid Angle

• Object could be far away, but big

• Object could be nearby, but small

• We care about apparent size or solid angle

• “Let me know about all objects that are bigger than n pixels on my screen”

Page 16: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Query Comparison

• For same # of objects, better quality

• For same quality, fewer objects

Page 17: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Non-visual ?

• Discovery, not communication

• Reflects real “discovery”

Page 18: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Outline

• Motivation

• Previous Work

• BVH++

• Continuous Queries and Cuts

• Distributed Queries

Page 19: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Implementation

• How do we efficiently evaluate these queries?

• All objects with solid angle < x

• Standing query - continuous stream of updates

• Not much guidance from CG literature

Page 20: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Implementation

• Doesn’t seem too different from distance query

• Just a slightly different constraint

• Maybe we can reuse existing techniques

Page 21: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Bounding Volume Hierarchy

C

DB

A

Page 22: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

G E

Bounding Volume Hierarchy

F

C

DB

A

A B C D

E F

G

Page 23: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

G E

Bounding Volume Hierarchy

F

C

DB

A

A B C D

E F

G

Page 24: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

G E

Bounding Volume Hierarchy

F

C

DB

A

A B C D

E F

G

Page 25: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

G E

Bounding Volume Hierarchy

F

C

DB

A

A B C D

E F

G

Page 26: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

G E

Bounding Volume Hierarchy

F

C

DB

A

A B C D

E F

G

Page 27: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

G E

Bounding Volume Hierarchy

F

C

DB

A

A B C D

E F

G

Page 28: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

G E

Bounding Volume Hierarchy

F

C

DB

A

A B C D

E F

G

Page 29: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Why does this work?

• Conservative check on entire group

• If boundary of bounding volume is out of range, contained objects must be too

• Quickly cull large subtrees

Page 30: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Outline

• Motivation

• Previous Work

• BVH++

• Continuous Queries and Cuts

• Distributed Queries

Page 31: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Solid Angle Queries

• Use same BVH

• Bounding volumes must have larger solid angle

• Recurse if bounding volume satisfies constraint

Page 32: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Results

• 50,000 objects (1m) randomly placed over 1km2

• 50 queriers

• Branching factor: 10

• Solid angle comparisons:

• Brute force: 50,000

• BVH: 60,466 (No culling!)

Page 33: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

What went wrong?

• Too conservative

Page 34: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

What went wrong?

• Too conservative

Page 35: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

BVH++

• Track largest object in subtree

• Check against virtual worst-case object

• As close as possible

• As big as possible

Page 36: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

BVH++

• Track largest object in subtree

• Check against virtual worst-case object

• As close as possible

• As big as possible

Page 37: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Results

• Solid angle comparisons:

• Brute force: 50,000

• BVH: 19,631

Page 38: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Branching Factor• Higher branching factor potentially allows

better culling

Page 39: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Branching Factor

• Future evaluation

• Some operations on tree are linear in branching factor

• Maintenance cost vs. traversal cost

• Timing based - depends on optimized implementation

Page 40: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Outline

• Motivation

• Previous Work

• BVH++

• Continuous Queries and Cuts

• Distributed Queries

Page 41: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Continuous Queries

• Good approach for one-off queries

• Could just reevaluate periodically

• How frequently?

• Wasted effort - check same nodes repeatedly, even if they don’t change

Page 42: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Query Cuts

• Maintain “cut” representing stopping points of evaluation

• Leaves

• or internal nodes which do not satisfy constraint

Page 43: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Query Cuts

A B C D

E F

G

Page 44: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Query Cuts

A B C D

E F

GCut - ordered list of

CutNodes

CutNode - stores references to parent Cut,

BVH node

BVH Node - stores bounds, max object size,

unordered set of CutNodes

Page 45: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Query Cut Updates

• Query change (position, solid angle) causes results to change

• Traverse cut, pushing it up or down

• Sequence of all children failing test pushes cut up

• Cut pushed down as usual

Page 46: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Query Cut Updates

• Sequence of all children failing test pushes cut up

A B C D

E F

G

Page 47: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Query Cut Updates

• Sequence of all children failing test pushes cut up

A B C D

E F

G

A

Page 48: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Query Cut Updates

• Sequence of all children failing test pushes cut up

A B C D

E F

G

A

Page 49: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Query Cut Updates

• Cut pushed down as usual

A B C D

E F

G

A

Page 50: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Query Cut Updates

• Cut pushed down as usual

A B C D

E F

G

A

F

Page 51: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Query Cut Updates

• Cut pushed down as usual

A B C D

E F

G

A

F

Page 52: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Query Cut Updates

• Due to object change (position, size)

• or addition, removal

• Update BVH

• Reevaluate cuts, pushing up or down

• BVH nodes store pointers to cut nodes to quickly determine which nodes in which cuts require adjustment

Page 53: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Query Cut Updates

• Some BVH updates cause major adjustments to tree

• Merge/split

• ... and splits can even percolate all the way up to the root

• insertion where all ancestors are full

Page 54: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Query Cut Updates

• Current approach

• “Lift” all cuts to stable point

• Mark for retraversal and update

• Simple but expensive

A B C D

E F

G

A

Page 55: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Query Cut Updates

• Current approach

• “Lift” all cuts to stable point

• Mark for retraversal and update

• Simple but expensive

A B C D

E F

G

A

F

Page 56: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Query Cut Updates

• Current approach

• “Lift” all cuts to stable point

• Mark for retraversal and update

• Simple but expensive

A B C D

E F

G

A D’

Page 57: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Query Cut Updates

• Current approach

• “Lift” all cuts to stable point

• Mark for retraversal and update

• Simple but expensive

A B C D

E F

G

A D’

Page 58: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Query Cut Updates

• Any approach that:

• ensures the cut remains structurally valid

• marks the cut for re-traversal using update procedure

• will work

• More complicated solution might keep cut closer to final cut, making update cheaper

Page 59: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Considerations

• Updating queries:

• due to object motion can be expensive

• due to query motion almost always better than re-evaluating one-off query

• Polling might be cheaper for frequent movement, especially of objects

• or when reevaluating position due to velocity frequently

Page 60: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Considerations

• Trees for static vs. dynamic objects

• Also reduces maintenance cost by isolating frequently adjusted nodes in their own tree

• Static tree: cut-based, event-driven queries

• Dynamic tree: poll-based queries

Page 61: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Reporting Results

• Deltas on result set (additions, removals)

• Sort by solid angle

• Prioritize additions

• But probably not the dominant factor in quality over time

• Downloading content likely much slower

Page 62: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Outline

• Motivation

• Previous Work

• BVH++

• Continuous Queries and Cuts

• Distributed Queries

Page 63: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Distributed

• Each space server starts out only with local objects

SS 1 SS 2

A B

Local

C D

Local

Page 64: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Distributed

• Space servers aggregate queries and send one query to each other space server

SS 1 SS 2

A B

Local

C D

LocalQ(1 -> 2)

Q(2 -> 1)

Page 65: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Distributed

• Results from these queries used to maintain global tree

SS 1 SS 2

A B

Local

C D

Local

A

B

Global

C A

Global

C D B

Page 66: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Distributed

• Global tree answers queries from connected objects

SS 1 SS 2

A B

Local

C D

Local

A

B

Global

C A

Global

C D B

Q(A) Q(C) Q(D)

(Object Hosts)

Page 67: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

What about updates?

• Loc takes care of updates

• PIntO triggers subscriptions in Loc automatically

• For other servers and connected objects

Page 68: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Server Discovery

• How do servers know to query each other?

• PIntO service

• Collects region, max object size, and query from space servers

• Answers queries about which servers have objects that might satisfy query

• Same data structure works!

Page 69: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

SS NSS 1

PIntO Conceptual Model

S S S S

A C D B E F G H

PIntO Service

...

Space Servers

Objects

Page 70: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Evaluations

• # of servers

• Very limited in range query (4 or 8 neighbors)

• Potentially all servers for solid angle

• # of objects in global tree

• Efficiency of query aggregation

• # objects returned in object query / # objects returned by server queries ?

Page 71: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers
Page 72: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Insertion

• Recursively select best child node

• Min volume increase

A B C D

E F

G

Page 73: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Insertion

• Recursively select best child node

• Min volume increase

A B C D

E F

G

X

Page 74: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Insertion

• Recursively select best child node

• Min volume increase

A B C D

E F

G

X

F

Page 75: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Insertion

A B C D

E F

G

X

• Split nodes as necessary

• Possibly reorders children

• May obtain new root

Page 76: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Insertion

• Split nodes as necessary

• Possibly reorders children

• May obtain new root

A B C D

E F

G

X

F’

G

Page 77: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Insertion

• Split nodes as necessary

• Possibly reorders children

• May obtain new root

A B C D

E F

G

X

F’

G G

H

Page 78: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers
Page 79: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Deletion

• Find leaf node (hash table)

A B C

E F

G

D

Page 80: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Deletion

• Find leaf node (hash table)

A B C

E F

G

C D

Page 81: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Deletion

• Remove

• Merge parent’s children if:

• All children are leaf nodes

• Fewer children than branching factor

A B

E F

G

C D

Page 82: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Deletion

• Remove

• Merge parent’s children if:

• All children are leaf nodes

• Fewer children than branching factor

A B

E F

G

D

Page 83: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Deletion

• Remove

• Merge parent’s children if:

• All children are leaf nodes

• Fewer children than branching factor

A B

E F

G

D

F

D

Page 84: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Deletion

• Remove

• Merge parent’s children if:

• All children are leaf nodes

• Fewer children than branching factor

A B

E F

G

D

Page 85: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Deletion

• Remove

• Merge parent’s children if:

• All children are leaf nodes

• Fewer children than branching factor

A B

E F

G

F’

Page 86: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers
Page 87: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers

Split

• Select two seeds for new nodes

• e.g. pair of objects (nodes) that cause worst increase in volume

• Add each object to one group

• based again on which causes the least harm

Page 88: PIntO - sing.stanford.eduServer Discovery • How do servers know to query each other? • PIntO service • Collects region, max object size, and query from space servers • Answers