pinto wow scripts
play

PIntO WoW Scripts // Declare two variables that refer to a pawns. - PowerPoint PPT Presentation

PIntO WoW 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


  1. PIntO

  2. WoW

  3. 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(); }

  4. P otentially Int eresting O bjects • Objects register queries • Often restricted to clients • Often implicit • Server returns relevant objects

  5. Discovery Today • Almost universally distance based • “Let me know about everything within x meters” • Games use imposters • Only simple for centrally controlled content

  6. Mirror’s Edge

  7. Mirror’s Edge

  8. Shortcoming • Distance doesn’t capture what’s important

  9. 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”

  10. Query Comparison • For same # of objects, better quality • For same quality, fewer objects

  11. Non-visual ? • Discovery, not communication • Reflects real “discovery”

  12. Outline • Motivation • Previous Work • BVH++ • Continuous Queries and Cuts • Distributed Queries

  13. 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

  14. Implementation • Doesn’t seem too different from distance query • Just a slightly different constraint • Maybe we can reuse existing techniques

  15. Bounding Volume Hierarchy A C B D

  16. Bounding Volume Hierarchy A C E G F B D G E F A B C D

  17. Bounding Volume Hierarchy A C E G F B D G E F A B C D

  18. Bounding Volume Hierarchy A C E G F B D G E F A B C D

  19. Bounding Volume Hierarchy A C E G F B D G E F A B C D

  20. Bounding Volume Hierarchy A C E G F B D G E F A B C D

  21. Bounding Volume Hierarchy A C E G F B D G E F A B C D

  22. Bounding Volume Hierarchy A C E G F B D G E F A B C D

  23. 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

  24. Outline • Motivation • Previous Work • BVH++ • Continuous Queries and Cuts • Distributed Queries

  25. Solid Angle Queries • Use same BVH • Bounding volumes must have larger solid angle • Recurse if bounding volume satisfies constraint

  26. Results • 50,000 objects (1m) randomly placed over 1km 2 • 50 queriers • Branching factor: 10 • Solid angle comparisons: • Brute force: 50,000 • BVH: 60,466 (No culling!)

  27. What went wrong? • Too conservative

  28. What went wrong? • Too conservative

  29. BVH++ • Track largest object in subtree • Check against virtual worst-case object • As close as possible • As big as possible

  30. BVH++ • Track largest object in subtree • Check against virtual worst-case object • As close as possible • As big as possible

  31. Results • Solid angle comparisons: • Brute force: 50,000 • BVH: 19,631

  32. Branching Factor • Higher branching factor potentially allows better culling

  33. Branching Factor • Future evaluation • Some operations on tree are linear in branching factor • Maintenance cost vs. traversal cost • Timing based - depends on optimized implementation

  34. Outline • Motivation • Previous Work • BVH++ • Continuous Queries and Cuts • Distributed Queries

  35. 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

  36. Query Cuts • Maintain “cut” representing stopping points of evaluation • Leaves • or internal nodes which do not satisfy constraint

  37. Query Cuts G E F A B C D

  38. Query Cuts BVH Node - stores bounds, max object size, G unordered set of Cut - ordered list of CutNodes CutNodes E F A B C D CutNode - stores references to parent Cut, BVH node

  39. 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

  40. Query Cut Updates • Sequence of all children failing test pushes cut up G E F A B C D

  41. Query Cut Updates • Sequence of all children failing test pushes cut up G E F A A B C D

  42. Query Cut Updates • Sequence of all children failing test pushes cut up G E F A A B C D

  43. Query Cut Updates • Cut pushed down as usual G E F A A B C D

  44. Query Cut Updates • Cut pushed down as usual G E F F A A B C D

  45. Query Cut Updates • Cut pushed down as usual G E F F A A B C D

  46. 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

  47. 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

  48. Query Cut Updates • Current approach • “Lift” all cuts to stable point • Mark for retraversal and update • Simple but expensive G E F A A B C D

  49. Query Cut Updates • Current approach • “Lift” all cuts to stable point • Mark for retraversal and update • Simple but expensive G E F F A A B C D

  50. Query Cut Updates • Current approach • “Lift” all cuts to stable point • Mark for retraversal and update • Simple but expensive G E F A A B C D D’

  51. Query Cut Updates • Current approach • “Lift” all cuts to stable point • Mark for retraversal and update • Simple but expensive G E F A A B C D D’

  52. 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

  53. 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

  54. 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

  55. 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

  56. Outline • Motivation • Previous Work • BVH++ • Continuous Queries and Cuts • Distributed Queries

  57. Distributed • Each space server starts out only with local objects SS 1 SS 2 Local Local C D A B

  58. Distributed • Space servers aggregate queries and send one query to each other space server SS 1 SS 2 Q(1 -> 2) Local Local C D A B Q(2 -> 1)

  59. Distributed • Results from these queries used to maintain global tree SS 1 SS 2 Local Global Local Global C D A B B D B A C A C

  60. Distributed • Global tree answers queries from connected objects SS 1 SS 2 Local Global Local Global C D A B B D B A C A C Q(C) Q(D) Q(A) (Object Hosts)

  61. What about updates? • Loc takes care of updates • PIntO triggers subscriptions in Loc automatically • For other servers and connected objects

  62. 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!

  63. PIntO Conceptual Model PIntO Service Space Servers S S S S SS 1 SS N ... Objects D B G H A C E F

  64. 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 ?

  65. Insertion G E F A B C D • Recursively select best child node • Min volume increase

  66. Insertion G E F A B C D X • Recursively select best child node • Min volume increase

  67. Insertion G E F F A B C D X • Recursively select best child node • Min volume increase

  68. Insertion G E F A B C D X • Split nodes as necessary • Possibly reorders children • May obtain new root

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend