<<

Accurate Real-time Physics for Large Worlds

Lorenzo Schwertner Kaufmann, Flavio Paulus Franzin, Roberto Menegais and Cesar Tadeu Pozzer Universidade Federal de Santa Maria, Santa Maria, Brazil

Keywords: Real-time Physics Simulation, Physics Engines, Large-scale , Floating-point Imprecision.

Abstract: Physics simulation provides a means to simulate and animate entities in graphics applications. For large envi- ronments, physics simulation poses significant challenges due to the inherent known limitations and problems of real number arithmetic operations. Most real-time physics engines use single-precision floating-point for performance reasons, limiting simulation with a lack of precision that causes collision artifacts and positioning errors on large-scale scenarios. Double-precision floating-point physics engines can be used as an alternative, but few exist, and fewer are supported in game engines. In this paper, we propose an efficient solution capable of delivering precise real-time physics simulation in large-scale worlds, regardless of the underlying numeric representation. It implements a layer between high-level applications and physics engines. This layer subdi- vides the world into dynamically allocated sectors which are simulated independently. Objects are grouped into sectors based on their positions. Redundant copies are created for objects crossing sectors’ boundaries, providing seamless simulation across sector edges. We compare the proposed technique performance and precision with standard simulations, demonstrating that our approach can achieve precision for arbitrary scale worlds while maintaining the computational costs compatible with real-time applications.

1 INTRODUCTION pressing infinite real numbers into a limited amount of bytes requires an approximate representation (Gold- Physics simulation plays a fundamental part in many berg, 1991). IEEE-754 floating-point represents real virtual scenarios across a broad range of applications, numbers as δ × βε, where δ is a significand, β is including games, films, and simulations. Physics are a base, and ε is an exponent, thus rounding error simulated using physics engines —low-level middle- increases proportionally to value magnitude. Most ware that provides support to physical behaviors, such arithmetic operations using values represented with as fluids, soft and rigid bodies simulation. Games and floating-point precision produce results that cannot be simulations rely on real-time physics engines to pro- represented using a fixed amount of bits, thus requir- vide dynamic, immersive scenarios. For performance ing rounding. reasons, most of these engines operate with single In physics simulations, the rounding error in- floating-point precision, enough to cover a wide range creases proportionally to objects’ distance from the of applications. However, for large-scale scenarios, origin on which the simulation is continuously per- these engines present a limitation due to the low ac- formed, and error accumulates over error. Empiri- curacy of the floating-point numbers, especially when cal experiments suggest that single-precision floating- representing big numbers. Simulations for objects far point limit is 104 units ( Community, 2018); from origin might use imprecise values, causing fail- while others define it at 5×103 units (Unity Commu- ure in the algorithms, varying from nity, 2017), or within the range of 4 × 103 to 8 × 103 small intersections that do not compromise the over- units (Burk et al., 2016). Thus, applications with sce- all simulation to big intersections that spoil the simu- narios larger than these dimensions are susceptible lation (e.g., vehicles falling off a terrain). Moreover, to numerical inaccuracy and may present problems nowadays, it is noticeable that 3D games and graph- throughout the physics simulation. ical simulations, used for training or amusement, are In terms of accuracy, some physics engines are dealing with constantly expanding scenarios, thus re- designed to support double (e.g., and New- quiring solutions to enable proper visualization and ton Dynamics) instead of single-precision to repre- simulation of moving entities. sent the physics components and provide more accu- Floating-point imprecision occurs because com- racy in calculations. Double-precision math (and thus

135

Kaufmann, L., Franzin, F., Menegais, R. and Pozzer, C. Accurate Real-time Physics Simulation for Large Worlds. DOI: 10.5220/0010194501350142 In Proceedings of the 16th International Joint Conference on Computer , Imaging and Theory and Applications (VISIGRAPP 2021) - Volume 1: GRAPP, pages 135-142 ISBN: 978-989-758-488-6 Copyright c 2021 by SCITEPRESS – Science and Technology Publications, Lda. All rights reserved

GRAPP 2021 - 16th International Conference on Computer Graphics Theory and Applications

double-precision matrix and vector APIs) cannot take quired information for its correct simulation —this as much advantage of SIMD instruction sets (Ericson, requirement is termed awareness. Different tech- 2005), which are generally sized to support and vec- niques focus on partitioning their agents into groups tors that have 32-bit wide components. Few physics while keeping a low number of overlapping between engines support double floating-point precision and regions of interest of objects in different partitions game engines, such as Unity, 4, Cry —this problem is termed communication level. Be- Engine 3 and do not natively support them. sides it, the distribution of simulations introduces An alternative to increase numerical precision is other problems, such as well-balancing the simulation the origin shifting approach. This approach estab- load across the available processing nodes and how lishes a real-time center point (e.g., the observer po- to operate efficiently since the partitioning algorithms sition), and 1) physics simulation considers the cen- themselves might not scale well. ter point as the Cartesian origin or 2) the objects are (Lozano et al., 2007) explores a complete frame- shifted to the Cartesian origin, having a center point work for scalable large-scale crowd simulations. as a reference, maintaining the same layouts of ob- Their solution successfully provides scalability while jects’ position. In an efficient and precise way, this providing awareness and time-space consistency. approach guarantees the physical simulation for any This is achieved using rectangular grids and dividing dimension of the scenario. However, physics objects the agents according to their position in the grid. must be close to an arbitrary center point. Otherwise, (Vigueras et al., 2010) improves efficiency of pre- inaccuracy errors remain. For sparsely distributed vious methods by employing the use of irregular simulations, e.g., multiplayer games, origin shifting shapes regions (convex hulls). Their results show that does not work. irregular shapes outperform techniques with regular We present a solution compatible with real-time ones, regardless of the crowd simulation. simulations that expands state-of-the-art physics en- (Wang et al., 2009) proposes a technique for parti- gines, ensuring physics simulations enough precision, tioning crowds into clusters, minimizing communica- regardless of the world scale and underlying numeric tion overhead. Their work achieves great scalability representation. Our solution is implemented as a layer through the application of an adapted K-means clus- between high-level applications and physics engines. tering to efficiently partition agent-based crowd sim- This layer split the world in sectors and adds re- ulations. dundancy to each sector, ensuring each part has all Newer techniques explore further performance the required information to, independently, be sim- improvement, either minimizing communication ulated without inconsistencies close to the Cartesian costs, equalizing balancing, or both, while efficiently origin. Furthermore, our solution benefits from how doing so. For example, (Petkova et al., 2016) large-scale worlds application must implement world uses community structures to group related agents streaming due to memory and processing limitations, among processors, reducing communication over- amortizing space partitioning cost. The main con- head. (Wang et al., 2018) explores parallelizing tribution of our work is a novel solution that pro- the simulation per agent using the Power Law in vides arbitrariness in sparse simulations precision, CUDA architecture to ensure behavior synchroniza- enabling floating-point engines to increase precision tion across threads. Their solution explores minute and/or scale. model details while improving efficiency. This paper is organized as follows: Section 2 pro- (Brown et al., 2019) propose a solution applying a vides background and related works on the subject. partitioning solution for physics servers with horizon- Section 3 discusses all the steps of the proposed so- tal scalability. In their work, the scenario is parti- lution in-depth. Section 4 discusses the effects of tioned in regions using Distributed Virtual Environ- the sector size choice. Results are evaluated and dis- ments modeling, and each partition is assigned to cussed in Section 5. Finally, Section 6 presents con- a server for physics simulation. Objects interacting clusion and directions for future work. across partition boundaries are handled by projecting objects in overlapping regions to guarantee a seamless simulation. 2 RELATED WORK These solutions propose and improve the simula- tion of a massive number of elements through par- Many works explored the distribution and paral- titioning and parallelization techniques while solv- lelization of simulations to provide simulation at ing problems such as communications between agents an individual level, i.e., without relying on group- in different partitions. (Brown et al., 2019) apply generalized properties. Each agent must have the re- said methods showing that physics simulations per-

136 Accurate Real-time Physics Simulation for Large Worlds

formance could benefit from partitioning. We use a partitioning system, along with ob- However, none of the solutions consider scalabil- jects’ relocation relative to their partition center (ori- ity in terms of size. In fact, to the best of gin shifting), and a cloning system similar to Brown’s our knowledge, no paper explores the physics simula- Aura projection to achieve large-scale precise real- tion of large-scale environments - prone to error be- time physics simulations for sparsely distributed ob- cause the inherited physics simulation floating-point jects. precision issues increased by the types of arithmetic a physics engine must calculate. It must be noted that when we mention large scale 3 ACCURATE PHYSICS physics simulations, we are not referring to a ‘large SIMULATION number of objects’ simulation, but rather to the sim- ulation of an arbitrary number of objects with large scale positions. This section describes the Large Physics Sectoriza- tion System (LPSS), our layer-based proposal to per- Several commercial examples managed to address form physics simulation on large-scale scenarios with the physics simulation precision limitations. Kerbal sparse objects, ensuring numerical accuracy (Figure Space Program is a space flight exploration and sim- 1). Our solution can be used with any physics engine ulation game praised for accurate orbital mechanics. that supports distinct concurrent simulations, such as Internally it uses Unity-PhysX (single floating-point PhysX, Bullet and, . precision) and an origin shifting approach for near player simulations combined with numerical models Environment for distant orbit calculations. This solution is sim- Boundaries ple and efficient but is not capable of simulating far Application objects using the physics engine. Therefore, the so- lution works for applications centered in one entity, Collision Callbacks and which objects far from this entity does not require Invokes simulation simulation. For sparse simulations, e.g., multiplayer games and military simulators, the solution is insuffi- LPSS cient. Sector Size Invokes individual (Outerra, 2012) is a 3D planetary engine simulations per sector which uses the JSBSim Flight Dynamics Model li- brary for high fidelity simulation of aircraft, and Bul- Physics Engine let physics engine for simulation of vehicle physics. The Bullet physics engine supports single or double- Figure 1: Overview of the architecture. Sector size is de- precision floating-point arithmetic (Guo, 2013). With fined by the application prior to the simulation start. The the double precision option, simulation calculations physics engine runs the sector simulations concurrently. are more precise and can be performed in a larger sim- ulated volume. The world is subdivided into regular partitions, Star Citizen is an upcoming multiplayer space similarly to (Wang et al., 2009). During the execu- trading and combat simulator with explorable star tion, before each physics simulation, the Sectoriza- systems. It has been developed in an extended ver- tion process (Sec. 3.1) assigns each physics object sion of CryEngine 3 () with 64-bit arith- to one sector based on its center position. Each ob- metic (Burk et al., 2016) to support a vast playable ject is relocated relative to its sector. In the sequence, volume of 200 × 109Km3 (Burk et al., 2016). the Cloning Manager (Sec. 3.2) filters potential col- These solutions are limited to specific use cases. lisions between objects in distinct sectors and creates Origin shifting only supports large-scale simulations Clones with redundant physics information only for if the physics simulation is concentrated around a these objects, similarly to (Brown et al., 2019). Fi- unique center point (e.g., camera position). Also, nally, the Simulation process invokes one physics sim- physics simulations far from this center point must ulation instance per sector. tolerate low precision simulations or be disabled. Double precision requires physics engine support 3.1 Sectorization while few engines support it and fewer game engines. Furthermore, except for Outerra-Bullet, these solu- Any system can be employed to partition objects. tions are proprietary, and the used techniques are not Using an adapted K-Means algorithm, for instance, described in scientific papers. would partition objects more efficiently than a grid

137 GRAPP 2021 - 16th International Conference on Computer Graphics Theory and Applications

partitioning one. Using K-Means, however, would Cloning Manager identifies probable interactions that not allow a satisfactory implementation of partition would cause inconsistency and creates Clones to en- size constraint, and the simulation would suffer from sure a correct simulation. the floating-point arithmetic issues. F The reason above was key in our decision to use Sa Sb a grid partitioning system. Although its performance E D is far from sophisticated partitioning techniques, it al- A lows us to define hard-boundaries which ensure ob- C jects’ coordinates are inside a pre-defined volume B and, thus, coordinate errors are inside an acceptable G H range. Specifically, our partitioning system works as follows. F F Sa Sb The world is logically subdivided into three- E E dimensional partitions. Each partition might have a D D A sector assigned to it depending on the existence of ob- C C jects inside that partition. A sector is an abstract struc- B ture in which objects can be assigned and revoked. G H G H Since the solution aims for an arbitrary scale, we map Figure 2: Simulation situations and how cloning manager each sector into an auto-resizing hash table. Thus, handles them. Dynamic objects are represented by vehicles, sectors are created when an object is placed within its static objects by walls, and Clones are transparent. volume and destroyed when no object is inside. Sec- tors that contain at least one dynamic object are sim- A Clone is a copy of the physical components of a ulated per physics step. Each sector has an index to physics object created to other objects react correctly localize them in space. During sectorization, physics when assigned to different sectors. The procedure to objects are assigned to one sector based on their posi- create a clone is: tion as: 1. Create a deep copy of the original object. Game (x,y,z) engines already provide methods for this (e.g., (i, j,k) = (1) L Unity’s Instantiate and Unreal Engine’s Duplica- teObject). where (i, j,k) is the sector hash index, (x,y,z) is the object position, and L is the sector’s edge size. 2. Remove all non-physics components related to After sectorization, object position is the sum of physics. its sector center and the displacement to it: Static clones send physics callbacks to their origi- nal objects. Dynamic objects physics properties, such (x,y,z) = ds + (si,s j,sk) ∗ L (2) as velocity and position, are copied from the original where (x,y,z) is the object position, (i, j,k) is the sec- object to their Clones before each physics simulation step (Figure 3). tor hash index, ds is the object’s displacement to its sector center and L is the sector’s edge size. The Cloning Manager considers pairs of objects Representing the position in this format guaran- from different sectors that might collide, using Axis- tees that the object’s coordinate is within the sector Aligned Bounding Box (AABB) intersection algo- boundaries, and the associated error has a stipulated rithms. For those pairs, three cases are possible: limit. • Static: static object intersecting with two or more sectors; 3.2 Cloning Manager • Dynamic-Static: a probable collision between static and dynamic objects in different sectors; During the Sectorization process, each object gets as- signed to one sector based on its position. Further- • Dynamic-Dynamic: a probable collision between more, each sector is simulated independently, and ob- dynamic objects in different sectors. jects from different sectors do not interact in the Sim- Figure 2 illustrates the cases handled by the ulation step. Consequently, this can cause inconsis- Cloning Manager. Static overlapping cases (e.g., wall tency in the simulation when objects intersect adja- F) are solved when the object is created. For each sec- cent sectors. As an example, in Figure 2, object tor intersected by the object, a clone is created and as- B only collides with C when its position is within signed to it. It remains active during the object’s life- the sector Sa boundaries. To handle these cases, the time. For Dynamic-Static cases (e.g., B-C), a clone

138 Accurate Real-time Physics Simulation for Large Worlds

Dynamic Object Static Clone Static Object

Rigid Body Rigid Body Rigid Body

Collider A Collider B Collider A Collider B Collider A Collider B OnCollide, Physics Callbacks OnTrigger Movement Behavior Renderer Sync

Renderer . . .

Position, . . . Dynamic Clone Rotation, Physics Properties Velocity Rigid Body Physical Components Other Components Sync Before Physics Collider A Collider B During Physics Simulation Simulation

Figure 3: Original objects have miscellaneous components, e.g., renderer and movement behavior, while clones have only physics related ones. Both share a component to sync state (physics properties and collision events). of the static object is created and assigned to the dy- Original namic object’s sector. For Dynamic-Dynamic cases Clone (e.g., D-E and G-H), both objects should be cloned. In the D-E case, both objects overlap the adjacent sec- tors; and, in the G-H case, vehicle G does not overlap sector Sb, but is in imminent collision with vehicle H. Vehicle A is far from the sectors’ border and the Cloning Manager ignores it. r For every physics step, the Cloning Manager con- siders all pairs of objects and generates a collection with required clones. For performance and memory segmentation reasons, each object manages a pool of clones to avoid continuous object creation. Figure 4: Sector and its neighbors inscribed in precision range (sphere with radius r. For better viewing drawn as a circle). 4 SECTOR SIZE 5 RESULTS The sector size is an arbitrary value, but if it is too big, the simulation might be imprecise. In this section, we Physics are sensitive to initial conditions, i.e., small define the sector size’s limit to ensure precision. Our changes in one state can result in more significant dif- solution has the following design choices: ferences in later ones. As discussed before, floating- • The solution does not offer support for objects point physics simulations are also susceptible to ac- with AABB larger than the sector size; cumulating rounding error, varying the error in many • Clones share their original object position while degrees of magnitude with slightly different distances being placed in another sector. Consequently their from the Cartesian origin, which increases the sam- position is outside their assigned sector. pling error. Thus, computing a physics simulation er- ror is not trivial, and results might differ significantly Consider Figure 4. The pink sector might contain under slightly different conditions. clones from adjacent sectors. To guarantee clones are We compare the PhysX physics engine and our simulated inside the precision range, sector size must solution running on top of PhysX, both in the Unity be such that all neighbor sectors stay inside it. The . Our tests run in a Quad-Core i3-9100F, sector edge L must be L ≤ 2√r , where r is the preci- 3 3 GTX 1050 Ti, and 8GB of DDR4 RAM clocked at sion limit. 2400 MHz. Our precision test consists of two spheres, im-

139 GRAPP 2021 - 16th International Conference on Computer Graphics Theory and Applications

pulsed towards each other to collide. The spheres’ ing with 128 sectors). As an example of the impact radii are 0.5 units, and in the best conditions, a col- caused by the number of physics instances, simulat- lision is expected when spheres are one unit apart. ing 128 instances with one object is ≈ 80 times more Running the test at origin (ground truth) results in a expensive than one instance with 128 objects. Since collision detection when spheres are 0.479 units apart simulations are independent, the problem can be miti- due to simulation discrete time steps. All tests execute gated by splitting simulations across processing cores. using the same time step value, thus canceling any disturbance on the results. We calculate the error for 20 ms each object as the Euclidean distance between its final position after the simulation and its final position after 15 ms the ground-truth simulation. The simulation error is the aggregation of all objects errors using a Least Ab- 10 ms solute Deviations loss function. Figure 5 compares collision detection error over origin distance. Since 5 ms our implementation uses a sector grid centralized at 0 ms the origin, it offers the same precision until half sector 0 25 50 75 100 125 size (with minor differences). After half sector size, Simulation Instances PhysX error increases until 8 × 106 distance from the Cartesian origin. After this distance, spheres would Figure 6: Processing times to simulate 128 physics objects over physics simulations instances. not collide due to imprecision even when using so- phisticated and expensive collision detection methods The third experiments focus on the sectorization available in Unity-PhysX, e.g., Speculative Continu- and cloning management overhead for each physics ous Collision Detection (Unity, 2020). In contrast, simulation step. As seen in Figure 7, objects sec- our solution maintains the error in an acceptable range torization cost is proportional to the number of ob- since objects are kept near the origin. When objects jects and is negligible compared to simulation cost. are assigned to the next sector, their position becomes Cloning management, however, has a considerable local to the new sector, approximating and distancing cost over object count, which can be minimized us- from the Cartesian origin, configuring an error peri- ing faster broad-phase collision detection algorithms. odic wave pattern. Clones must be simulated as physics objects, which translates in increasing simulation time. LPSS 128 LPSS 1024 PhysX 1 Clones Checking Simulation Sectoring 0.1 2.0ms

0.01 1.5ms 0.001

0.0001 Error 1.0ms

0.00001 0.5ms 0.000001

10 1000 100000 10000000 0.0ms 25 50 75 100 125 Origin distance Objects Figure 5: Collision detection error over simulation distance to the Cartesian origin using PhysX and our solution (LPSS) Figure 7: LPSS overhead per physics simulation. with 128 and 1024 sector size. Furthermore, we visually explored the difference The sparse positioning of objects generates more between using our proposal and not. Figure 8 demon- sectors and, consequently, more instances of physics strates how our solution scales well with large envi- simulation are demanded. As the number of instances ronments. Right stacks use LPSS while left stacks do increases, more physics invocations are needed, di- not. rectly impacting the application’s performance. Fig- Top stacks are simulated at origin and bottom are ure 6 demonstrates the time consumption relative to displaced 224 units from origin. This tests shows that the number of physical instances. The test starts simulation works as expected at the origin regardless with 128 objects assigned to one sector, and these if the simulation uses or not or solution, but at high objects are progressively distributed in more physics coordinates using PhysX is so inaccurate that the sim- instances until reaching one object per sector (end- ulation fall apart while our solution remain stable and

140 Accurate Real-time Physics Simulation for Large Worlds

we will explore more complex partitioning systems to minimize communication overhead while maxi- mizing load balancing, supporting large-scale virtual worlds with horizontally scalable parallelism.

ACKNOWLEDGEMENTS

We thank the Brazilian Army and its Prg EE AS- TROS 2020 for the financial support through the SIS- ASTROS project.

REFERENCES

AdoredTV (2015). Citizen spotlight - Star Cit- Figure 8: Visual comparison between physics simulations izen - Roberts Space Industries. https: of stacks. //robertsspaceindustries.com/community/ citizen-spotlight/1599-Star-Citizen-How-Big. correct. In this test, LPSS sectors are 1000 units in Baraff, D. (1989). Analytical methods for dynamic simula- length. A minor difference can be perceive between tion of non-penetrating rigid bodies. In Proceedings using or not our solution without displacement from of the 16th Annual Conference on Computer Graph- the world origin. This discrepancy is due to a physics ics and Interactive Techniques, SIGGRAPH 1989, vol- frame gap in our system initialization. While the ume 23, pages 223–232. PhysX test is completely disrupted when simulating Boeing, A. and Braunl,¨ T. (2007). Evaluation of real-time with big coordinates, LPSS error is kept acceptable. physics simulation systems. Elsevier. Brown, A., Ushaw, G., and Morgan, G. (2019). Aura pro- jection for scalable real-time physics. In Proceedings - I3D 2019: ACM SIGGRAPH Symposium on Interac- 6 CONCLUSION tive 3D Graphics and Games. Burk, S., Coleman, A., and Tracy, S. (2016). Sean Tracy In this paper, we present a low computational cost on 64-bit Engine Tech & Procedural Edge Blending. system to increase simulation precision in physics en- https://www.youtube.com/watch?v=OB AI9ukSp8. gines, supporting larger or infinity scenarios regard- Ericson, C. (2005). Real-Time Collision Detection, vol- less of the utilized physics engine and its numeric rep- ume 1. Morgan Kaufmann. resentation. This is achieved by dividing the world Goldberg, D. (1991). What every computer scientist should into logical sectors and simulating objects with sector know about floating-point arithmetic. ACM Comput- ing Surveys (CSUR) local coordinate systems. Coordinates are restricted , 23(1):5–48. to half sector size. Ergo, floating-point values have a Guo, S. (2013). Double & Single Precision in Bullet. http: //guoshihui.net/double-single-precision-in-bullet. well-defined max error. Objects redundant copies are created to handle correctly interactions across sector’s Kavan, L. (2003). Rigid body collision response. https://www.cs.utah.edu/∼ladislav/kavan03rigid/ edges. kavan03rigid.html. Smaller sectors guarantee more precision but Liu, H., Bowman, M., Adams, R., Hurliman, J., and Lake, cover a small volume, which may require more sec- D. (2010). Scaling virtual worlds: Simulation require- tors and physics simulation, compromising the appli- ments and challenges. In Proceedings - Winter Simu- cation performance. Hence, a trade-off can be defined lation Conference, pages 778–790. between precision and performance without depend- Lozano, M., Morillo, P., Lewis, D., Reiners, D., and Cruz- ing on physics engines’ implementations. Neira, C. (2007). A distributed framework for scal- Our research focuses on achieving arbitrary pre- able large-scale crowd simulation. Lecture Notes in cision with simulation consistency and low process- Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioin- ing cost per simulation step. As future work, we will formatics), 4563 LNCS(May 2014):111–121. explore acceleration structures to minimize overhead, Lui, J. C. and Chan, M. F. (2002). An efficient partitioning especially in cloning management. Furthermore, we algorithm for distributed virtual environment systems. will look to merge our solution with (Brown et al., IEEE Transactions on Parallel and Distributed Sys- 2019), to provide an efficient cloning system and tems, 13(3):193–211.

141 GRAPP 2021 - 16th International Conference on Computer Graphics Theory and Applications

Outerra (2012). Outerra: Outerra Tech Demo re- leased! https://outerra.blogspot.com/2012/02/ outerra-tech-demo-released.html. Petkova, A., Hughes, C., Deo, N., and Dimitrov, M. (2016). Accelerating the distributed simulations of agent-based models using community detection. In 2016 IEEE RIVF International Conference on Com- puting Communication Technologies, Research, Inno- vation, and Vision for the Future (RIVF), pages 25–30. Seugling, A. and Rolin, M. (2006). Evaluation of physics engines and implementation of a physics module in a 3d-authoring tool. Umea University, page 89. Tracy, D. J., Buss, S. R., and Woods, B. M. (2009). Efficient Large-Scale Sweep and Prune Methods with AABB Insertion and Removal. Technical report, University of California San Diego. Unity (2020). Manual: Continuous collision de- tection (CCD). https://docs.unity3d.com/Manual/ ContinuousCollisionDetection.html. Unity Community (2017). Making an map. Could use some input. - Unity Forum. https://forum.unity.com/threads/ making-an-open-world-map-could-use-some-input. 484643. Unity Community (2018). Floating Point Errors and Large Scale Worlds - Unity Forum. https://forum.unity.com/ threads/floating-point-errors-and-large-scale-worlds. 526807/. Vigueras, G., Lozano, M., Orduna,˜ J. M., and Grimaldo, F. (2010). A comparative study of partitioning methods for crowd simulations. Applied Soft Computing Jour- nal, 10(1):225–235. Wang, J., Mao, T., Song, X., Liu, S., Jiang, H., and Wang, Z. (2018). Parallel crowd simulation based on power law. In 2018 International Conference on Virtual Reality and Visualization (ICVRV), pages 78–81. Wang, Y., Lees, M., Cai, W., Zhou, S., and Low, M. Y. H. (2009). Cluster based partitioning for agent-based crowd simulations. In Winter Simulation Conference, WSC ’09, page 1047–1058. Winter Simulation Con- ference.

142