# Patent

## Title
Methods, systems, and computer readable media for simulating sound propagation in large scenes using equivalent sources

## Abstract

The subject matter described herein includes an approach for wave-based sound propagation suitable for large, open spaces spanning hundreds of meters, with a small memory footprint. The scene is decomposed into disjoint rigid objects. The free-field acoustic behavior of each object is captured by a compact per-object transfer-function relating the amplitudes of a set of incoming equivalent sources to outgoing equivalent sources. Pairwise acoustic interactions between objects are cornuted analytically, yielding compact inter-object transfer functions. The global sound field accounting for all orders of interaction is computed using these transfer functions. The runtime system uses fast summation over the outgoing equivalent source amplitudes for all objects to auralize the sound field at a moving listener in real-time. We demonstrate realistic acoustic effects such as diffraction, low-passed sound behind obstructions, focusing, scattering, high-order reflections, and echoes, on a variety of scenes.

## Background
RELATED APPLICATIONS
The presently disclosed subject matter claims the benefit of U.S. Provisional Patent Application Ser. No. 61/614,468, filed Mar. 22, 2012; the disclosure of which is incorporated herein by reference in its entirety.


GOVERNMENT INTEREST
This invention was made with government support under Grant No. W911NF-10-1-0506 awarded by the Army Research Office and Grant Nos. CMMI-1000579, IIS-0917040, and 0904990 awarded by the National Science Foundation. The government has certain rights in this invention.


TECHNICAL FIELD
The subject matter described herein relates to simulating sound propagation in a scene. More particularly, the subject matter described herein includes methods, systems, and computer readable media for simulating sound propagation in large scenes using equivalent sources.
BACKGROUND
Interactive sound propagation has emerged as a powerful tool in computer graphics to enhance the realism of virtual worlds by predicting the behavior of sound as it interacts with the environment. In order to generate realistic acoustic effects, including interference, diffraction, scattering, and higher-order effects, it is important to develop techniques that can directly solve the acoustic wave equation. There is extensive work on numerical methods in scientific computing and acoustics to solve the wave equation. Furthermore, there has been considerable interest in developing interactive wave techniques such as modeling free-space sound radiation [James et al. 2006], first-order scattering from surfaces [Tsingos et al. 2007], and performing sound propagation for indoor scenes [Savioja 2010; Raghuvanshi et al. 2010].
Large open scenes, which arise in many applications ranging from games to training/simulation systems, present a significant challenge for interactive wave-based sound propagation techniques. State-of-the-art wave simulation methods can take hours of computation and gigabytes of memory for performing sound propagation in indoor scenes such as concert halls. For large, open scenes spanning hundreds of meters, it is challenging to run these techniques in real-time. On the other hand, geometric (ray-based) acoustic techniques can provide real-time performance for such environments. However, geometric techniques are better suited for higher frequencies of the audible range since accurately modeling diffraction and higher-order wave effects remains a significant challenge, especially at low frequencies.
SUMMARY
The subject matter described herein includes methods, systems, and computer readable media for simulating sound propagation in large scenes using equivalent sources. One method for simulating sound propagation in a scene includes decomposing a scene into disjoint objects. Per object transfer functions are generated for each of the disjoint objects. Each per object transfer function maps an incoming sound field reaching an object to an outgoing sound field emanating from the object. A plurality of inter-object transfer functions corresponding to pairs of the disjoint objects is generated. Each inter-object transfer function maps the outgoing sound field emanating from one of the disjoint objects to an incoming sound field of another of the disjoint objects. The per-object transfer functions and the inter-object transfer functions are used to perform simulation of sound propagation within the scene and thereby to determine a sound field for the scene.
The subject matter described herein may be implemented in hardware, software, firmware, or any combination thereof. As such, the terms “function” “node” or “module” as used herein refer to hardware, which may also include software and/or firmware components, for implementing the feature being described. In one exemplary implementation, the subject matter described herein may be implemented using a computer readable medium having stored thereon computer executable instructions that when executed by the processor of a computer control the computer to perform steps. Exemplary computer readable media suitable for implementing the subject matter described herein include non-transitory computer-readable media, such as disk memory devices, chip memory devices, programmable logic devices, and application specific integrated circuits. In addition, a computer readable medium that implements the subject matter described herein may be located on a single device or computing platform or may be distributed across multiple devices or computing platforms.



BRIEF DESCRIPTION OF THE DRAWINGS
The subject matter described herein will now be explained with reference to the accompanying drawings of which:
FIG. 1 illustrates images of exemplary scenes in which the subject matter described herein may be utilized. In FIG. 1, image (a) is an image of a reservoir from the video game Half-Life 2, image (b) is an outdoor scene in winter, and image (c) is an outdoor scene of a desert.
FIG. 2 illustrates diagrams of objects within a scene. In FIG. 2, image (a) is a diagram illustrating a radiating object A, its corresponding boundary (offset surface) ∂A, exterior region ∂A+, interior region ∂A− and the set of equivalent sources (denoted by stars), image (b) is a classification of objects in a scene. The triangle and rectangle constitute a single object, as their offset surfaces overlap. On the other hand, L-shaped objects labeled Object 2 and Object 3 are classified as separate objects.
FIG. 3 illustrates an overview of the present wave-based sound propagation technique based on equivalent sources on a simple scene composed of two objects (shown in white). Pressure fields are visualized using different shading to denote different pressures. The darker region around each object denotes the region of highest pressure. Per-object transfer functions are computed independently for each of the two objects.
FIG. 4A illustrates a pressure field at 170 Hz in a simple scene with a single object (rocks) and a single sound source (dot 400). The difference between total and incident fields is the scattered field (scaled 8 times for visualization). Note the high amplitude of the scattered field between the rocks representing the large difference in incident and total field resulting from diffracted occlusion.
FIG. 4B illustrates the magnitude scattered sound field at 163 Hz from the wall.
FIG. 5 is a graph illustrating the variation of error=∥Pref−PESM∥2/∥Pref∥2 between the pressure fields of the reference wave solver and our technique for varying values of a (scattering matrix error threshold) for the two walls case (fixed η=1%).
FIG. 6 is a graph illustrating the variation of number of outgoing equivalent sources with frequency for four different objects. As the frequency increases (wavelength decreases), surface details of size of wavelength start increasing the complexity of the sound field. This results in larger number of equivalent sources. When all the details of the object are captured, increasing the frequency has little effect and the number of equivalent sources start to stabilize. Error thresholds used were σ=15% and η=1%.
FIG. 7 is a comparison between the magnitude of the complex scattered field (∥total field−incident field∥) computed by the reference wave-solver (top row) and our technique (bottom row) with error thresholds σ=15% and η=1%. Our technique produces good approximations while reducing memory usage by orders of magnitude (50× in this case). The dark point on the left hand side of each image denotes the position of the sound source.
FIG. 8 is a block diagram of an exemplary system for simulating sound propagation within a scene using equivalent sources according to an embodiment of the subject matter described herein.
FIG. 9 is a flow chart of an exemplary process for simulating sound propagation within a scene according to an embodiment of the subject matter described herein.



DETAILED DESCRIPTION
The subject matter described herein includes an approach for precomputed wave-based sound propagation that is applicable to large, open scenes. It is based on the equivalent source method, which has been widely studied for radiation and scattering problems in acoustics and electromagnetics [Doicu et al. 2000]. Our approach consists of two main stages—preprocessing and runtime. During preprocessing, we decompose the scene into disjoint, well-separated rigid objects. The acoustic behavior of each object taken independently is characterized by its per-object transfer function, which maps an arbitrary incident field on the object to the resulting scattered field. We propose an equivalent source formulation to express this transfer function as a compact scattering matrix. Pairwise acoustic coupling between objects is then modeled by computing inter-object transfer functions between all pairs of objects, which maps outgoing scattered field from one object to incoming field on another object. These transfer functions are represented compactly by using the same equivalent source framework, yielding interaction matrices. Acoustic transfer between multiple objects can thus be represented using chained multiplication of their scattering and interaction matrices. Finally, the acoustic response of the scene to a static source distribution is computed by solving a global linear system that accounts for all orders of inter-object wave propagation.
At run-time, fast summation over all outgoing equivalent sources for all objects is performed at the listener location(s). The computed response is used for real-time binaural sound rendering. Multiple moving sources with a static listener can be handled by exploiting acoustic reciprocity. The runtime memory and computational requirements are proportional to the number of objects and their outgoing field complexity (usually a few thousand equivalent sources for a few percent error), instead of the volume or surface area of the scene. Exemplary contributions of our work include:

    Object-based sound field decomposition using per- and inter-object acoustic transfer functions for enabling interactive wave-based sound propagation on large, open scenes.
    Compact per-object transfer using equivalent sources to model the scattering behavior of an object mapping arbitrary incident fields to the resultant scattered fields.
    Compact analytical coupling of objects is achieved by expressing inter-object transfer functions in the same, compact equivalent source basis used per object.
    Fast, memory-efficient run-time of our technique enables real-time sound rendering for a moving source or listener, with only a few tens of megabytes of memory footprint.


Our approach is well-suited for quick iterations while authoring scenes—per-object transfer functions, which take a significant portion of our precomputation time, are independent of the scene and can thus be stored in a lookup table. Thus, adding, deleting or moving a few objects in an existing scene has low precomputation overhead, linear in the number of objects.
We have tested our technique on a variety of benchmarks (FIG. 1) and integrated our system with the Valve Source game engine (Half-Life 2). Our technique takes orders of magnitude less runtime memory compared to state-of-the-art wave solvers, thus enabling interactive performance and generates realistic acoustic effects. To the best of our knowledge, ours is the first real-time technique for accurate wave-based sound propagation in such large open scenes.
Related Work
Our technique has close theoretical parallels with prior numerical wave solvers. We first explore these connections, followed by a comparison with related prior work in interactive geometric and wave-based techniques.
2.1 Numerical Wave Solvers
Research in wave-based acoustic simulation techniques spans a broad range of areas such as noise control, automotive design, urban architectural planning and concert hall design. Wave solvers can be classified into volumetric and surface-based approaches. The most common among volumetric techniques are the Finite Element Method (FEM) [Zienldewicz et al. 2006; Thompson 2006] and Finite Difference Time Domain (FDTD) method [Yee 1966; Taflove and Hagness 2005; Sakamoto et al. 2006], which require a discretization of the entire volume of the scene. The compute and memory usage of these methods thus increases linearly with the volume of the scene. Faster methods like Pseudospectral Time Domain (PSTD) [Liu 1997] and Adaptive Rectangular Decomposition (ARD) [Raghuvanshi et al. 2009] have been proposed and achieve good accuracy with a much coarser spatial discretization. Volumetric techniques are well-suited for scenes with high surface area and low air volume, which makes them highly applicable to indoor spaces.
Surface-based techniques are better suited for open scenes, for which scattering geometry is sparse with large regions of air with uniform wave-propagation speed. The most common approach here is the Boundary Element Method (BEM) [Cheng and Cheng 2005], which express the global acoustic field as the sum of the elementary radiating fields from monopole and dipole sources placed on a uniform, sub-wavelength sampling of the scene's surface. Traditional BEM scales as the square of the surface area but recent research on the Fast Multipole Method for BEM (FMM-BEM) [Liu et al. 2009; Gumerov and Duraiswami 2009] has improved the complexity to linear in surface area by creating a hierarchical clustering of BEM monopoles and dipoles (using an Octree) and approximating their interactions compactly using high-order multipole Green's functions.
For acoustic radiation and scattering problems, an efficient and powerful surface-based technique is the Equivalent Source Method (ESM) [Fairweather 2003; Kropp and Svensson 1995; Ochmann 1999; Pavic 2006], which forms the basis of our formulation. Instead of relying on a boundary-integral formulation as BEM does, ESM exploits the uniqueness of solutions to the acoustic boundary value problem—equivalent multipole sources (Green's functions) are placed at variable locations in space with the intent of making the total generated field match boundary conditions on the object's surface, since uniqueness guarantees correctness of the solution. The flexibility of location results in fewer multipole sources. The ESM can result in large gains in performance and memory-efficiency for scattering and radiation problems in large spaces, and has hence been used widely in both acoustic and electromagnetic applications [Doicu et al. 2000]. ESM is an attractive starting point for precomputed approaches such as [James et al. 2006] and our method, because it allows very flexible performance-accuracy tradeoffs. More importantly, the compactness of the solutions reduces runtime memory and compute requirements by a large factor making them amenable for real-time evaluation. Offline FMM-BEM solutions are infeasible for interactive applications because of the large, dense number of monopole and dipole sources in the final solution that needs to be stored and summed on the fly.
A related technique called the Transition-matrix method has been used extensively for electromagnetic scattering, and also developed for acoustics [Waterman 2009]. The method relates the incoming and outgoing fields in a scattering process in terms of the coefficients of a complete system of the vector basis functions, that are not necessarily Green's functions, unlike BEM or ESM.
2.2 Interactive Geometric Techniques
Most current interactive sound propagation systems are based on geometric acoustics, which applies the high-frequency Eikonal (ray) approximation to sound propagation. The image source method [Allen and Berkley 1979] is the most commonly used geometric technique, and there has been much research on improving its performance [Funkhouser et al. 1998]. However, the image source method can only model purely specular reflections. Other techniques based on ray tracing [Vorlander 1989; Lentz et al. 2007] or radiosity [Tsingos and Gascuel 1997] have been developed for modeling diffuse reflections, but these energy-based formulations may not model phase accurately. Techniques based on acoustic radiance transfer [Siltanen et al. 2007] can model arbitrary surface interactions for wide-band signals, but cannot accurately model wave phenomena such as diffraction. The two main approaches for modeling diffraction in a geometric acoustics framework are the Uniform Theory of Diffraction (UTD) [Tsingos et al. 2001] and the Biot-Tolstoy-Medwin (BTM) formulation [Svensson et al. 1999]. UTD is an approximate formulation while the BTM yields accurate results at a significant performance cost. Methods based on image source gradients [Tsingos 2009] and acoustic radiance transfer operators [Antani et al. 2012] have been developed to interactively model higher-order propagation effects. Recent developments in fast ray tracing have enabled interactive geometric propagation in dynamic scenes, but these methods only model first order edge diffraction based on UTD [Taylor et al. 2009].
2.3 Interactive Wave-Simulation Techniques
Sound propagation from a single radiating object in free space can be efficiently modeled using Precomputed Acoustic Transfer (PAT) [James et al. 2006], based on equivalent sources. [Tsingos et al. 2007] solves the boundary integral formulation of the Helmholtz equation subject to the Kirchhoff approximation in real-time. [Raghuvanshi et al. 2010] relies on a volumetric sampling of acoustic responses on a spatial grid and perceptual encoding based on acoustic properties of indoor spaces. Recent work has shown that FDTD simulations can be run in real-time on the GPU [Savioja 2010], but only for very small spaces that span a few meters across. We compare our method in more detail with other interactive wave-simulation techniques in Section 6.3.
3 The Equivalent Source Method







TABLE 1







Table of commonly used symbols










Symbols
Meaning







p
(complex-valued) pressure field



qi
ith eq. src



φik
kth multipole term of qi



qiin, qjout
ith & jth eq. src for incoming,




outgoing field resp.



φikin, φjhout
kth & hth multipole term of eq. src.




qiin & qjout resp.



P, Q
number of outgoing, incoming eq.




srcs resp.



N, M
order of outgoing, incoming




multipoles resp.



σ, η
error threshold for per-object, inter-




object transfer function



m
number of objects



n
number of samples on object's offset




surface










In this section, we give a brief review of the Equivalent Source Method, starting with our notation in Table 1. Consider the exterior scattering problem [Thompson and Pinsky 2004]—a solid three-dimensional object A immersed in an unbounded air volume (FIG. 2(a)). Considering only time-harmonic vibrations with angular frequency ω and a homogeneous medium with constant speed of sound c, acoustic wave propagation can be expressed as a boundary value problem for the Helmholtz equation:




  
    
      
        
          
            
              
                ∇
                2
              
              ⁢
              p
            
            +
            
              
                
                  ω
                  2
                
                
                  c
                  2
                
              
              ⁢
              p
            
          
          =
          
            0
            ⁢
            
              
            
            ⁢
            in
            ⁢
            
              
            
            ⁢
            
              ∂
              
                A
                +
              
            
          
        
        ,
      
    
    
      
        (
        1
        )
      
    
  




where p is the (complex-valued) pressure field, ∂A+ is the domain exterior to the object and ∇2 is the Laplacian operator. At the boundary of the domain, ∂A the pressure is specified using a Dirichlet boundary condition:

p=ƒ(x) on ∂A,  (2)

To complete the problem specification, the behavior of p at infinity must be specified, usually by the Somtnetfeld radiation condition [Pierce 1989]. The Equivalent Source Method [Ochmann 1995; Ochmann 1999; Pavic 2006] relies on the existence of fundamental solutions (also called Green's functions or equivalent sources), q(x, y), of the Helmholtz equation (1) subject to the Sommerfeld radiation condition for all x≠y. An equivalent source, q(x, yi), is the solution field induced at any point x due to a point source located at yi, and can be expressed as the sum:





  
    
      
        
          
            q
            ⁡
            
              (
              
                x
                ,
                
                  y
                  i
                
              
              )
            
          
          =
          
            
              
                ∑
                
                  l
                  =
                  0
                
                
                  L
                  -
                  1
                
              
              ⁢
              
                
                  ∑
                  
                    m
                    =
                    
                      -
                      l
                    
                  
                  l
                
                ⁢
                
                  
                    d
                    ilm
                  
                  ⁢
                  
                    
                      φ
                      ilm
                    
                    ⁡
                    
                      (
                      x
                      )
                    
                  
                
              
            
            =
            
              
                ∑
                
                  k
                  =
                  1
                
                
                  L
                  2
                
              
              ⁢
              
                
                  d
                  ik
                
                ⁢
                
                  
                    φ
                    ik
                  
                  ⁡
                  
                    (
                    x
                    )
                  
                
              
            
          
        
        ,
      
    
    
      
        (
        3
        )
      
    
  




where k is a generalized index for (l, m). The fundamental solution φik(x) is a multipole source located at yi, dik is its strength and L is the order of the multipole (L=1 is just a monopole, L=2 includes dipole terms as well, and so on). (Refer to the Appendix A.1 for the full expression of φilm(x).)

The fundamental solutions φik(x) are used to solve the Helmholtz equation. Consider the outgoing scattered field due to an object, and the associated Dirichlet boundary value problem on a smooth offset boundary ∂A. Consider a discrete set of R source locations {yi}




  
    
      
        R
      
    
    
      
        
          i
          =
          1
        
      
    
  
  ,




all contained in the interior region ∂A−. The total field due to these sources at any xε∂A+ is:





  
    
      
        
          
            p
            ⁡
            
              (
              x
              )
            
          
          =
          
            
              
                ∑
                
                  i
                  =
                  1
                
                R
              
              ⁢
              
                
                  c
                  i
                
                ⁢
                
                  q
                  ⁡
                  
                    (
                    
                      x
                      ,
                      
                        y
                        i
                      
                    
                    )
                  
                
              
            
            =
            
              
                ∑
                
                  i
                  =
                  1
                
                R
              
              ⁢
              
                
                  ∑
                  
                    k
                    =
                    1
                  
                  
                    L
                    2
                  
                
                ⁢
                
                  
                    c
                    ik
                  
                  ⁢
                  
                    
                      φ
                      ik
                    
                    ⁡
                    
                      (
                      x
                      )
                    
                  
                
              
            
          
        
        ,
      
    
    
      
        (
        4
        )
      
    
  




where cik=cidcik are the corresponding strengths of the equivalent sources. The main idea of the ESM is that if the equivalent source strengths cik and positions yi are chosen to match the Dirichlet boundary condition on ∂A,





  
    
      
        
          
            p
            ⁡
            
              (
              x
              )
            
          
          =
          
            
              
                ∑
                
                  i
                  =
                  1
                
                R
              
              ⁢
              
                
                  ∑
                  
                    k
                    =
                    1
                  
                  
                    L
                    2
                  
                
                ⁢
                
                  
                    c
                    ik
                  
                  ⁢
                  
                    
                      φ
                      ik
                    
                    ⁡
                    
                      (
                      x
                      )
                    
                  
                
              
            
            =
            
              f
              ⁡
              
                (
                x
                )
              
            
          
        
        ;
        
          x
          ∈
          
            ∂
            A
          
        
      
    
    
      
        (
        5
        )
      
    
  




then p(x) is the correct solution over all ∂A+. This process can also be used to represent the field incident on an object, the only difference being that the equivalent sources are now placed in the exterior region ∂A+. Again, by matching the boundary condition (5), we get the correct solution p(x) for all x in the interior region ∂A−.

In practice, the boundary conditions can only be satisfied approximately with a finite number of sources (R), and the degree of approximation can be controlled by changing R. Since each source's multipole strengths must be stored and its contribution evaluated at run-time, R is the main parameter for trading accuracy for run time performance and memory requirements. This flexibility makes the ESM highly suitable for interactive applications.
4 Sound Propagation Using ESM
We now give a brief overview of the pre-computation and runtime stages of our technique (FIG. 3). We assume that the scene is composed of static objects. Our formulation is in the frequency domain, hence the steps outlined in this section (except the offset surface calculation) need to be performed for a regularly sampled set of frequencies in the range [0, νmax] where 0, νmax is the maximum frequency simulated.
4.1 Our Approach
Offset surface calculation: In the pre-processing stage, we first classify objects in the scene and calculate the offset surface for each object. Per-object transfer function: For each object, we compute a per-object transfer function, which maps the incoming field reaching the object to the outgoing scattered field.
Inter-object transfer function: For each object pair, we pre-compute an inter-object transfer function, which encodes how the outgoing scattered field of one object becomes the incoming field for another object.
Global solve: Based on per-object and inter-object transfer functions, and a sound source configuration, we model acoustic interactions between the objects in the scene, thereby computing the strengths of all the outgoing field equivalent sources of all objects.

Run-time pressure evaluation: At run-time, we add the pressure produced by all the outgoing field equivalent sources at the listener position for each frequency. This is an extremely fast computation, and can be performed for moving sources or a moving listener in real-time.

4.2 Offset Surface Calculation

The first step is to decompose the input scene into well-separated objects. To decide if two objects are well-separated, we use the notion of an offset surface. The offset surface is defined by taking the constant offset along the normal direction at each point on the boundary of the object. Two objects are considered disjoint if and only if their offset surfaces do not intersect. Otherwise, we combine them and treat them as a single object (see FIG. 2(b)). We compute the offset surface of an object using distance field and the marching cubes algorithm. Typical values of distance field voxel resolution h and offset distance δ are specified in Table 3. After decomposing the scene into well-separated objects, we compute the scattering properties for each object independently.
4.3 Per-Object Transfer Function
In order to capture an object's scattering behavior, we define a per-object transfer function ƒ, a function which maps an arbitrary incoming field reaching the object to the corresponding outgoing scattered field after reflection, scattering and diffraction due to the object itself. This function is linear owing to the linearity of the wave equation and depends only on the shape and material properties of the object.
The incoming and outgoing fields for an object A are both expressed using equivalent sources. The outgoing field is represented by placing equivalent sources {q1out, q2out, q3out, . . . } in the interior region ∂A− of the object. Similarly, the incoming field is represented by placing equivalent sources {q1in, q2in, q3in, . . . } in the exterior region ∂A+. The transfer function ƒ maps the basis of the incoming field (multipoles φikin) to the corresponding outgoing field expressed as a linear combination of its basis functions (multipoles φjhout):




  
    
      
        
          
            
              
                [
                
                  
                    
                      
                        f
                        ⁡
                        
                          (
                          
                            φ
                            11
                            in
                          
                          )
                        
                      
                    
                  
                  
                    
                      
                        f
                        ⁡
                        
                          (
                          
                            φ
                            12
                            in
                          
                          )
                        
                      
                    
                  
                  
                    
                      ⋮
                    
                  
                  
                    
                      ⋮
                    
                  
                  
                    
                      
                        f
                        ⁡
                        
                          (
                          
                            φ
                            
                              QM
                              2
                            
                            in
                          
                          )
                        
                      
                    
                  
                
                ]
              
              =
              
              ⁢
              
                
                  [
                  
                    
                      
                        
                          α
                          11
                          11
                        
                      
                      
                        
                          α
                          12
                          11
                        
                      
                      
                        ...
                      
                      
                        
                          α
                          
                            PN
                            2
                          
                          11
                        
                      
                    
                    
                      
                        
                          α
                          11
                          12`
                        
                      
                      
                        
                          α
                          12
                          12
                        
                      
                      
                        ...
                      
                      
                        
                          α
                          
                            PN
                            2
                          
                          12
                        
                      
                    
                    
                      
                        ⋮
                      
                      
                        ⋮
                      
                      
                        ...
                      
                      
                        ⋮
                      
                    
                    
                      
                        ⋮
                      
                      
                        ⋮
                      
                      
                        ...
                      
                      
                        ⋮
                      
                    
                    
                      
                        
                          α
                          11
                          
                            QM
                            2
                          
                        
                      
                      
                        
                          α
                          12
                          
                            QM
                            2
                          
                        
                      
                      
                        ...
                      
                      
                        
                          α
                          
                            PN
                            2
                          
                          
                            QM
                            2
                          
                        
                      
                    
                  
                  ]
                
                ⁡
                
                  [
                  
                    
                      
                        
                          φ
                          11
                          out
                        
                      
                    
                    
                      
                        
                          φ
                          12
                          out
                        
                      
                    
                    
                      
                        ⋮
                      
                    
                    
                      
                        ⋮
                      
                    
                    
                      
                        
                          φ
                          
                            PN
                            2
                          
                          out
                        
                      
                    
                  
                  ]
                
              
            
          
        
        
          
            
              =
              
              ⁢
              
                
                  T
                  A
                
                ⁢
                
                  Φ
                  A
                  out
                
              
            
          
        
      
    
    
      
        (
        6
        )
      
    
  




where αjhik≡TA (ik, jh) is the (complex) amplitude for the outgoing multipole φjhout induced by a unit amplitude incoming multipole φikin. The per-object sound transfer function for object A is encoded in the coefficient matrix TA, which we call the scattering matrix.

Computing the Scattering Matrix

For each incoming field multipole in turn, we place a unit-amplitude sound source φik and use a numerical wave solver to compute the total pressure field at n uniformly sampled locations {x1, x2, . . . , xn} on ∂A. We subtract the incident field from the total pressure field to compute the outgoing scattered field (see FIG. 4A, panel (c)) at these sampled locations, denoted by Pik={p(x1), p(x2), . . . , p(xn)}.
We fit the outgoing field multipole expansion to the sampled scattered field, in a least-squares sense, by solving an over-determined linear system (n>PN2) subject to a pre-specified error threshold a for all incoming field multipoles:




  
    
      
        
          
            
              ∑
              
                
                  (
                  
                    j
                    ,
                    h
                  
                  )
                
                =
                
                  (
                  
                    1
                    ,
                    1
                  
                  )
                
              
              
                (
                
                  P
                  ,
                  
                    N
                    2
                  
                
                )
              
            
            ⁢
            
              
                
                  φ
                  jh
                  out
                
                ⁡
                
                  (
                  
                    x
                    t
                  
                  )
                
              
              ⁢
              
                α
                jh
                ik
              
            
          
          =
          
            p
            ⁡
            
              (
              
                x
                t
              
              )
            
          
        
        ,
        
          

        
        ⁢
        
          
            for
            ⁢
            
              
            
            ⁢
            t
          
          =
          
            1
            ⁢
            
              
            
            ⁢
            ...
            ⁢
            
              
            
            ⁢
            n
          
        
      
    
    
      
        (
        7
        )
      
    
  
  
    
      
        
          V
          ⁢
          
            
          
          ⁢
          
            α
            ik
          
        
        =
        
          
            p
            _
          
          ik
        
      
    
    
      
        (
        8
        )
      
    
  




The least-squares solution yields the coefficients αik corresponding to the ikth row of the scattering matrix T. This process is repeated for all incoming source multipoles to compute the scattering matrix. The solution can be computed efficiently using a single combined linear system:

VTAtr=[p11 . . . pQM2]  (9)

where TAtr is the transpose of TA. The per-object transfer function is computed for all objects at sampled frequencies. Details on choosing the number and positions of both incoming and outgoing equivalent sources are given in Section 4.5.

4.4 Inter-Object Transfer Function

Scenes with multiple objects exhibit object-to-object interactions, where the outgoing field from one object enters as the incoming field in other objects. For example, with two objects A and B, source s and listener l, the possible interactions that can occur from s to l are: direct sound (0th order) s→l, 1st order s→A→l; S→B→l, 2nd order s→A→B→l; S→B→A→l, and so on. We model these interactions by formulating an inter-object transfer function. For two objects A and B, the inter-object transfer function gAB expresses the outgoing field of A in terms of the basis of incoming field of B. Like the per-object transfer function, the inter-object transfer function is also a linear function. The inter-object transfer function gAB maps each basis function of the outgoing field of A (multipoles φjhout) to the corresponding incoming field of B expressed as a linear combination of its basis functions (multipoles φikin):




  
    
      
        
          
            
              
                [
                
                  
                    
                      
                        
                          g
                          A
                          B
                        
                        ⁡
                        
                          (
                          
                            φ
                            11
                            out
                          
                          )
                        
                      
                    
                  
                  
                    
                      
                        
                          g
                          A
                          B
                        
                        ⁡
                        
                          (
                          
                            φ
                            12
                            out
                          
                          )
                        
                      
                    
                  
                  
                    
                      ⋮
                    
                  
                  
                    
                      ⋮
                    
                  
                  
                    
                      
                        
                          g
                          A
                          B
                        
                        ⁡
                        
                          (
                          
                            φ
                            
                              PN
                              2
                            
                            out
                          
                          )
                        
                      
                    
                  
                
                ]
              
              =
              
              ⁢
              
                
                  [
                  
                    
                      
                        
                          β
                          11
                          11
                        
                      
                      
                        
                          β
                          12
                          11
                        
                      
                      
                        ...
                      
                      
                        
                          β
                          
                            QM
                            2
                          
                          11
                        
                      
                    
                    
                      
                        
                          β
                          11
                          12
                        
                      
                      
                        
                          β
                          12
                          12
                        
                      
                      
                        ...
                      
                      
                        
                          β
                          
                            QM
                            2
                          
                          12
                        
                      
                    
                    
                      
                        ⋮
                      
                      
                        ⋮
                      
                      
                        ...
                      
                      
                        ⋮
                      
                    
                    
                      
                        ⋮
                      
                      
                        ⋮
                      
                      
                        ...
                      
                      
                        ⋮
                      
                    
                    
                      
                        
                          β
                          11
                          
                            PN
                            2
                          
                        
                      
                      
                        
                          β
                          12
                          
                            PN
                            2
                          
                        
                      
                      
                        ...
                      
                      
                        
                          β
                          
                            QM
                            2
                          
                          
                            PN
                            2
                          
                        
                      
                    
                  
                  ]
                
                ⁡
                
                  [
                  
                    
                      
                        
                          φ
                          11
                          in
                        
                      
                    
                    
                      
                        
                          φ
                          12
                          in
                        
                      
                    
                    
                      
                        ⋮
                      
                    
                    
                      
                        ⋮
                      
                    
                    
                      
                        
                          φ
                          
                            QM
                            2
                          
                          in
                        
                      
                    
                  
                  ]
                
              
            
          
        
        
          
            
              
                =
                
                ⁢
                
                  
                    G
                    A
                    B
                  
                  ⁢
                  
                    Φ
                    B
                    in
                  
                
              
              ,
            
          
        
      
    
    
      
        (
        10
        )
      
    
  




where βikjh=GAB(jh, jk) is the (complex) amplitude of the incoming multipole φikin of B induced by a unit-amplitude outgoing multipole φjhout of A. The inter-object transfer function from A to B is thus encoded as GAB, which we call the interaction matrix. The interaction matrix is not symmetric in general, i.e. GAB≠GBA. Since the outgoing field of an object is not defined in its interior region, GAA and GBB are zero matrices.

Computing the Interaction Matrix

The interaction matrix GAB can be computed using a least-squares formulation similar to the one used for computing scattering matrices. However, the pressure values at the offset surface samples for B, Pjh={p(x1), p(x2), . . . , p(xn)} are simpler to compute. In a homogenous medium, the outgoing field due to a multipole is the same as the free space field, for which analytical expressions exist (see Appendix A.1). Therefore, we simply evaluate the analytical expressions of the outgoing field multipoles φjhout of A at the sample points of B. The resulting linear system is solved subject to a separate error threshold, η:




  
    
      
        
          
            
              ∑
              
                
                  (
                  
                    i
                    ,
                    k
                  
                  )
                
                =
                
                  (
                  
                    1
                    ,
                    1
                  
                  )
                
              
              
                (
                
                  Q
                  ,
                  
                    M
                    2
                  
                
                )
              
            
            ⁢
            
              
            
            ⁢
            
              
                
                  φ
                  ik
                  in
                
                ⁡
                
                  (
                  
                    x
                    t
                  
                  )
                
              
              ⁢
              
                β
                ik
                jh
              
            
          
          =
          
            p
            ⁡
            
              (
              
                x
                t
              
              )
            
          
        
        ,
        
          

        
        ⁢
        
          
            for
            ⁢
            
              
            
            ⁢
            t
          
          =
          1
        
        ,
        ...
        ⁢
        
          
        
        ,
        n
        ,
      
    
    
      
        (
        11
        )
      
    
  




Again, this process is repeated for each outgoing multipole of B, and solved efficiently as a single combined linear system:

UGABtr=[p11 . . . pPN2]  (12)

The inter-object transfer functions are computed for all object pairs, independently for each frequency.

4.5 Computing Equivalent Source Positions

Choosing offset surface samples Solving equations (9) and (12) at frequency ƒ involves computing the pressure at sampled locations {x1, x2, . . . , xn} on the offset surface of each object. The number of sampled locations n depends on the spatial variation of the pressure field, which in turn, depends on its frequency ƒ. As per Nyquist theorem, representing a signal at frequency ƒ with a finite number of samples requires a sampling rate of 2ƒ. The spatially-varying pressure field defined on the 2D offset surface S must be sampled at a rate of 2ƒ in both dimensions. Therefore, we place n∝(2ƒ)2x area (S) samples uniformly on the offset surface.

Choosing incoming equivalent sources Since the nature of the incoming field is not known a priori, it is hard to optimize the number and position of incoming equivalent sources. We resolve this problem by generating another offset surface at distance Δ>δ from the object (where δ is the original offset surface's distance) and placing incoming equivalent sources on this new surface. The number of incoming equivalent sources Q depends on the spatial variation of the incoming pressure field. As before, Q∝(2ƒ)2x area (S) equivalent sources are placed uniformly on the larger offset surface. This allows us to represent the incoming field on the inner offset surface to good accuracy.
Choosing outgoing equivalent sources The number of outgoing equivalent sources P and their positions are decided based on a multi-level source placement algorithm similar to [James et al. 2006]. The previous algorithm was designed to satisfy a single radiating field of an object at each frequency. Our algorithm is designed to satisfy multiple outgoing radiating fields at each frequency simultaneously. In our case, for each object at each frequency, we have as many outgoing radiating fields as the number of incoming multipoles QM2. This gives us a vector of pressure residuals r=[r1r2 . . . rQM2]tr and a corresponding vector of projections p=[p1p2 . . . pQM2]tr where p1=∥(Ux)Hri∥2. We choose the best candidate as the one that minimizes the pressure residual of all the outgoing fields simultaneously via a modified largest projection x*=arg maxxεχ∥p∥22. We update the unitary matrix and for each residual ri we remove its component in the chosen subspace. We then compute the modified residual ∥d∥2 where d=[d1d2 . . . dQM2] and di=∥ri∥2. We repeat this process until the relative value of modified residual falls below the error tolerance TOL. Similar to the number of incoming equivalent sources Q, the number of outgoing equivalent sources P also increase with frequency. But it strongly depends on the shape of the object and the complexity of the outgoing scattered field it generates. The candidate positions χ are chosen randomly on the surface of the object in the same manner as previous algorithm, but a minimum distance between any two equivalent sources is enforced to improve the condition number of the system, since extremely close equivalent sources adversely affect the conditioning of the system. We choose a minimum distance of half the wavelength at any given frequency.

4.6 Global Solve

Once the scattering and interaction matrices are computed, and the sound source position has been decided, we compute the outgoing equivalent source strengths of all the objects in the scene. We initially describe our algorithm for a simple two-object scene, and it naturally generalizes to any number of objects. Consider a sound source s and two objects A and B. Let the incoming field multipoles at A and B be ΦAin and ΦBin, respectively. Similarly, let the multipole expansion for the outgoing field for A and B be ΦAout and ΦBout respectively. Let the scattering matrices for A and B are TA and TB, respectively. Let the interaction matrices for the objects be GAB and GBA respectively. The sound source pressure field s(x) expressed in terms of incoming field multipoles is denoted SA and SB, respectively. Based on these transfer functions, one can compute the steady state field after all orders of interaction. The steady state outgoing fields of A and B (denoted by PAout and PBout respectively) are:




  
    
      
        
          P
          A
          out
        
        =
        
          
            
              ∑
              
                i
                =
                1
              
              P
            
            ⁢
            
              
            
            ⁢
            
              
                ∑
                
                  k
                  =
                  1
                
                
                  N
                  2
                
              
              ⁢
              
                
              
              ⁢
              
                
                  c
                  ik
                  A
                
                ⁢
                
                  φ
                  ik
                
              
            
          
          =
          
            
              C
              A
              tr
            
            ⁢
            
              Φ
              A
              out
            
          
        
      
    
    
      
        (
        13
        )
      
    
  
  
    
      
        
          P
          B
          out
        
        =
        
          
            
              ∑
              
                i
                =
                1
              
              P
            
            ⁢
            
              
            
            ⁢
            
              
                ∑
                
                  k
                  =
                  1
                
                
                  N
                  2
                
              
              ⁢
              
                
              
              ⁢
              
                
                  c
                  ik
                  B
                
                ⁢
                
                  φ
                  ik
                
              
            
          
          =
          
            
              C
              B
              tr
            
            ⁢
            
              Φ
              B
              out
            
          
        
      
    
    
      
        (
        14
        )
      
    
  




In order to compute the source strengths, CA and CB, we solve a linear system. Assume the outgoing field in the scene is {umlaut over (C)}. This field, in addition to the source field {umlaut over (S)}, when propagated through the scene (transferred via all possible objects), generates an incoming field on the object ({umlaut over (C)}{umlaut over (C)}+{umlaut over (S)}). This incoming field is then scattered by the object to produce an outgoing field {umlaut over (T)}({umlaut over (G)}{umlaut over (C)}+{umlaut over (S)}). Under steady state, this outgoing field must equal {umlaut over (C)}. Mathematically, this can be written as

{umlaut over (C)}={umlaut over (T)}(({umlaut over (G)}{umlaut over (C)}+{umlaut over (S)})

(see Appendix A.2 for the symbols and details). This yields a linear system for the outgoing source strengths for all objects:

(I−{umlaut over (T)}{umlaut over (G)}){umlaut over (C)}={umlaut over (T)}{umlaut over (S)}  (15)

This linear system is solved for a regularly-sampled set of frequencies. For a scene composed of multiple objects, we derive the same equation as above with the symbols having analogous meanings, as described in detail in Appendix A.3.

4.7 Runtime Computation

At the end of the preprocessing stage, we get the outgoing equivalent source strengths for all objects at regularly sampled set of frequencies corresponding to each sound source. During run-time, we use these strengths to compute the pressure field at any listener position x:




  
    
      
        
          
            p
            ⁡
            
              (
              x
              )
            
          
          =
          
            
              
                ∑
                
                  j
                  =
                  1
                
                m
              
              ⁢
              
                
              
              ⁢
              
                
                  C
                  
                    A
                    j
                  
                  tr
                
                ⁢
                
                  
                    Φ
                    
                      A
                      j
                    
                    out
                  
                  ⁡
                  
                    (
                    x
                    )
                  
                
              
            
            +
            
              s
              ⁡
              
                (
                x
                )
              
            
          
        
        ,
      
    
    
      
        (
        16
        )
      
    
  




where m is the number of objects in the scene, s(x) is the field generated by the sound source, and CAj={c11Aj, c12Aj . . . cPN2Aj}tr. This computation is performed at regularly-sampled set of frequencies and repeated for each source to compute a band-limited frequency response. Evaluating the above expression for a new value of x is very efficient, allowing a moving listener to be handled naturally in real-time. Note that the pressure can be evaluated at any position x in space and not necessarily at grid positions. Therefore, no spatial interpolation is required with our technique since the analytical expressions for equivalent source solutions are used. Unlike grid-based approaches like FDTD, our equivalent source method is independent of the spatial discretization, resulting in a much smoother auralization for a moving listener. The case of multiple moving sources with a fixed listener is handled using the principle of acoustic reciprocity, by switching the role of source and listener.

5 Implementation

In this section, we describe the implementation details of our technique. Typical parameter values used in our experiments are specified in Table 3.







TABLE 3







Parameters used in our system









Parameter
Value
Description





c
340 m/s
speed of sound


νmax
1 kHz
highest frequency simulated


h
c/2νmax = 0.17 m
distance field's voxel resolution


δ
5 h = 0.85 m
inner offset distance


Δ
8 h = 1.36 m
outer offset distance


σ
15%
error threshold for scattering matrix


η
 1%
error threshold for transfer matrix









Implementation Details The offset surface generation code is written in C++. When computing per-object transfer functions, outgoing scattered fields are computed on the offset surface (Section 4.3) using an efficient GPU-based implementation of the ARD wave solver [Raghuvanshi et al. 2009]. The remaining parts of the pre-processing stage (solving the linear system for per-object transfer functions, inter-object transfer functions and equivalent source strengths) are implemented in MATLAB. Precomputation for each frequency is performed in parallel over the nodes of a CPU cluster.

The run-time code is written in C++, and has also been integrated with Valve's Source engine, as demonstrated in the supplementary video.

The timing results for offset surface generation, the ARD solver, and run-time code are measured on a 4-core 2.80 GHz Xeon X5560 desktop with 4 GB of RAM and NVIDIA GeForce GTX 480 GPU 429 with 1.5 GB memory. The timing results for the MATLAB-based precomputation are measured on a 64-node CPU cluster (8-core, 2.80 GHz, 48 GB, Xeon X5560 processor nodes). Detailed statistics are provided in Table 2.







TABLE 2







Performance statistics

























source-













field

# eq. 









per-
inter-
(per-
global- 
srcs








Wave
object
object
freq,
solve 
(total,
eval.







sim
(per
(per 
per-
(per freq,
per
(total,
storage (total,


Scene
#objs.
#freq
#srcs
(total)
freq)
fret)
arc)
per src)
arc)
per arc)
fixed + per arc)






















Concave
1
250
1
 80 min
 51 min
NA
1 min
0.1 min
0.1M
 3 ms
(1 + 4) 
NIB


Wall
1
250
1
 50 min
101 min
NA
3 min
0.1 min
0.1M
 4 ms
(2 + 5) 
MB


Rock
1
250
1
 80 min
 87 min
NA
1 min
0.1 min
0.4M
10 ms
(4 + 11) 
MB


Parallel
2*
250
1
 50 min
101 min
13 min
6 min
1.4 min
0.2M
 8 ms
(4 + 10) 
MB


Desert
4* + 2*
500
3
360 min
196 min
98 min
9 min
 26 min
1.1M
26 ms
(12 + 33) 
MB


Reservoir
4* + 1
500
2
293 min
224 min
63 min
7 min
 15 min
1.3M
33 ms
(15 + 41) 
MB


Christmas
2* + 2* + 1
500
2
890 min
301 min
71 min
7 min
 18 min
1.5M
38 ms
(18 + 47) 
MB









Abbreviations used in Table 2 are as follows: “#objs.” denotes the number of objects in the scene, “#freq.” is the number of frequency sampled in the range [0-νmax], “#srcs” is the number of sound sources, “wave sim.” is the total simulation time of the numerical wave solver for all objects for all frequencies, “per-object” and “inter-object” denote the total compute time for the per-object transfer function for all objects and inter-object transfer functions for all object pairs respectively, “source-field” is time to express each sound source in terms of incoming multipoles and “global-solve” is time to compute equivalent source strengths. At runtime, the total number of equivalent sources “# eq. srcs” (in million M), performance “eval.” and storage requirement “storage” are also specified. For column, “#objs.”, notation a*+b* denotes that first object has been instanced a times and second object instanced b times, but their per-object transfer function is computed only once. Offset surface generation code takes<1 sec for each object. All timings are for a single 2.80 GHz Xeon X5560 processor core.

Due to the computational overhead of the pre-computation stage, we treat band-limited sources that emit sound whose frequency range is bounded by maximum frequency νmax, for the purpose of wave simulations. The pressure is computed at regularly sampled set of frequencies in the range [0, σmax] with a step size of Δν. The value of parameter Δν is 1.9 Hz for concave, wall, rock and parallel walls benchmarks and 3.8 Hz for desert, reservoir and Christmas scene.
Handling ground reflections To handle ground reflections, we assume the ground to be an infinite plane. Similar to the image source method [Allen and Berkley 1979], we reflect our equivalent sources about the ground plane and multiply their source strengths by the reflection coefficient of the ground. Since sound waves traveling in air maintain their phase upon reflection from a hard surface, we do not need to invert the strengths of the equivalent sources.

Spectral Extrapolation The band-limited nature of the frequency responses of our technique necessitates a plausible extrapolation to higher frequencies at runtime. Simply replicating the spectrum maintains temporal peak structure, but results in audible comb filter artifacts. Instead, we observe that typical edge diffraction spectra are roughly linear on a logarithmic scale. Hence, we first estimate a trend-line by a least-squares fit to the maxima of the log magnitude spectrum, and adjust for the trend to create a flat response by multiplying with the inverse of the trend on a linear scale. This adjusted response is replicated to higher frequencies and then multiplied by the trend (for all frequencies), yielding the final wide-band spectrum. If the trend-line has positive slope, indicating a high-pass response, we flatten the trend-line for frequencies beyond νmax. This extrapolation step exactly preserves the spectrum up to νmax.

Real-Time Auralization We have integrated our technique with Valve's Source engine. Audio is rendered using FMOD, and is processed in frames of 1024 audio samples, at a sampling rate of 44.1 kHz. In-game (“dry”) audio clips are pre-processed by computing a windowed short-time Fourier transform (STFT) on each frame (Blackman window). The STFTs are computed on audio frames after zero-padding by the maximum IR length to prevent aliasing artifacts. Real-time auralization is performed using overlap-add STFT convolutions. In each rendered frame, the dry audio frame for each source is convolved (multiplied in the frequency-domain) with the corresponding IR. The results are then mixed, and an inverse FFT performed on the mixed audio. Finally, overlap from previous frames is added in, and overlap from the current frame is cached in a ring buffer. Binaural sound rendering is achieved by using two virtual listeners, one for each ear.

6 Results and Analysis

In this section, we present the results of our technique on different benchmarks, provide detailed error analysis and compare it with prior work. See Table 4 and Appendix A.4 for the computational complexity of our approach.







TABLE 4







Computational complexity of our approach. Refer to Table 1 for


meaning of each symbol and Appendix A.4 for the derivation of these


expressions.










Quantity
Complexity



(1 source)
(per freq)







Precompute time
 0 (mQ (nP2 u log u mPnQ) m3P3)



Runtime compute
 0 (mP)



Runtime memory
11 rnP










6.1 Benchmarks

We have considered a variety of scenes for testing our technique. For auralizations corresponding to all the benchmarks discussed below, kindly refer to the supplementary video.

Single Object We considered various objects which have different scattering characteristics to test our technique—rocks, a wall, and a concave reflector. The rocks scatter sound in all directions (FIG. 4A). Referring to FIG. 4B, panel (a), we show the magnitude scattered sound field at 163 Hz from the wall, with the sound source shown with the dark dot. It is visible that the wall strongly reflects sound back to the source. As a more challenging benchmark, the magnitude scattered sound field for a concave reflector at 163 Hz is shown in FIG. 4B, panel (b). The reflector generates significant interference effects, resulting in caustic formation in the focal region. This is clearly captured by our technique, as the dark, amplitude region labeled 402 in the figure, showing that our technique is able to approximate the phase of the scattered wave field with reasonable accuracy.

Parallel Buildings This scene consists of two buildings situated parallel to one another. We show two walkthroughs of this scene, with a flying helicopter, and a person speaking, respectively. As the helicopter moves behind a building, diffraction leads to a distinct low-passed occlusion effect. The two walls trap sound between them as high order reflections (see FIG. 7 for field visualizations), so that the loudness of someone talking between the buildings is markedly louder than someone standing even slightly to the side.

Desert This is a large scene with three different sound sources spread throughout the scene—a jeep, a bird, and a radio. As the listener walks through the scene, the received sound from the various sources changes significantly depending on whether or not the listener is in line-of-sight of the source(s). We also specifically demonstrate the effect of second-order diffracted occlusion of the jeep sound around two buildings.

Christmas Town This scene demonstrates sound propagation in a village with many houses, a church, a bell tower and large buildings. This benchmark shows diffraction around buildings, sound propagation over large distances from the bell tower, reflections between two parallel buildings, for multiple sources.

Reservoir We show that our technique can be integrated with an existing game (Half-Life 2) to generate realistic wave acoustic effects in a large outdoor game map. Ours is the first wave-based sound propagation technique which can accurately model wave phenomena such as diffraction behind the rocks and scattering around buildings over large distances on such a scene in real-time.

6.2 Error Analysis

FIG. 5 shows the convergence of our method as the scattering matrix error threshold decreases. We also plot the variation in the number of equivalent sources with frequency (see FIG. 6) to achieve given error thresholds. Higher frequencies require more equivalent sources to capture their spatial variation. However, after a certain point when all the details in the object have been captured, increasing the frequency results has little effect on the number of equivalent sources.
FIG. 7 compares the pressure field on a spatial grid of listeners at different frequencies for the parallel buildings scene, as computed using the reference wave solver and our technique. The theoretical runtime memory requirements for different wave-solvers are discussed in the Appendix A.4. We also compare the runtime memory requirements for these solvers on our benchmark scenes (Table 5).
6.3 Comparison with Prior Interactive Techniques
Our usage of equivalent sources for sound propagation is in a similar vein to prior work [James et al. 2006], where the authors represent arbitrary outgoing radiation fields from a single geometrically complex object. Our work differs primarily in three regards: First, we model mutual interactions between objects in arbitrary scenes using inter-object transfer functions, accounting for high-order interactions such as echoes and multiple diffraction. Secondly, we model acoustic scattering from objects (as opposed to radiation), which requires an approximation of both the incoming and outgoing pressure fields for an object. Finally, our outgoing equivalent sources are chosen to satisfy multiple outgoing scattered fields as opposed to a single radiation field.
The problem of real-time acoustic scattering has been previously addressed using GPUs [Tsingos et al. 2007]. First-order scattering effects are modeled but acoustic interactions between objects cannot be modeled. In contrast, our work can handle all orders of interactions between the objects using inter-object transfer functions.
A recent technique for interactive acoustics based on wave simulation was proposed in [Raghuvanshi et al. 2010], which relies on sampling the volume of the scene and uses perceptual compression specific to indoor scenes. The runtime memory requirement of their technique on our benchmarks (assuming a spatial sampling of 1 m) is 187 MB for parallel walls and 1.8 GB for the reservoir. This technique is complementary to our approach—it works best in indoor spaces with a lot of geometric clutter but limited volume, while our technique is better suited to outdoor spaces with well-separated objects and is insensitive to air volume. In fact, it would be quite natural to integrate this method with ours, with the indoor and outdoor propagation models coupled through transport operators defined on doors and windows.
7. Conclusions and Discussion
We have presented a novel wave-based sound propagation algorithm that captures acoustic effects such as high-order diffraction and scattering using an equivalent source formulation. As a result, our technique can perform accurate sound propagation on large, open scenes in real-time, has a small memory footprint, and allows flexible efficiency-accuracy tradeoffs. Compared to directly storing and convolving wave-solver solutions for auralization, we reduce the memory usage more than 100 times.
Our approach is currently most suitable for static scenes, due to the computational cost of recomputing inter-object transfers as objects move. Our approach can be combined with Fast Multipole Method (FMM) to accelerate inter-object transfer evaluations using progressive far-field approximations. Moreover, real-time performance could be achieved by further using GPU-based dense linear solvers. The incoming field strength computation for a moving source is similar to inter-object transfer. Thus, the combination of FMM and GPU-based computations could enable dynamic sources along with a moving listener.
The complexity of our method increases linearly as a function of the frequency, and our approach is practical up to roughly 1-2 kHz depending on the scene. Geometric approximations become quite accurate for outdoor scenes at these frequencies because buildings and terrain have much larger dimensions than the wavelength of 17 cm at 2 kHz. Thus, hybridization of our technique with geometric methods could lead to accurate wide-band propagation techniques for open scenes.
A APPENDIX
A1. Mathematical Expression of Multipole Solutions
The field due to a multipole located at point yi is mathematically defined as follows—

φilm(x)=Γlmhl(2)(wri/c)ψlm(θi,φi)  (1)

Where w is the angular frequency, c is the speed of sound, (ri, θi, φi) is the vector (x−yi) expressed in spherical coordinates, hl(2)(wri/c) are the spherical Hankel functions of the second kind [Abramowitz and Stegun 1964], ψlm(θ,φ) are the spherical harmonic functions [Hobson 1955] and Γlm is the normalizing factor that makes spherical harmonics orthonormal.

A.2 Two-Object Steady State Field

We describe detail the way we computer the equivalent source strengths for a scene composed of two objects. Consider a scene with objects A and B and a sound source s. Let the incoming field multipoles at A and B be ΦAin and ΦBin, respectively. Similarly, let the multipoles for the outgoing field for A and B be ΦAout and ΦBout, respectively. The scattering matrices for A and B are TA and TB, respectively. Let the interaction matrices for the objects be GAB and GBA respectively. First of all, we express the incoming field produced by sound source s on objects A and B in terms of their incoming field multipoles



  
    
      s
      A
      in
    
    =
    
      
        
          ∑
          
            j
            =
            1
          
          Q
        
        ⁢
        
          
        
        ⁢
        
          
            ∑
            
              h
              =
              1
            
            
              M
              2
            
          
          ⁢
          
            
          
          ⁢
          
            
              a
              jh
            
            ⁢
            
              φ
              jh
              in
            
          
        
      
      =
      
        
          S
          A
          tr
        
        ⁢
        
          Φ
          A
          in
        
      
    
  




  
    
      s
      B
      in
    
    =
    
      
        
          ∑
          
            j
            =
            1
          
          Q
        
        ⁢
        
          
        
        ⁢
        
          
            ∑
            
              h
              =
              1
            
            
              M
              2
            
          
          ⁢
          
            
          
          ⁢
          
            
              b
              jh
            
            ⁢
            
              φ
              jh
              in
            
          
        
      
      =
      
        
          S
          B
          tr
        
        ⁢
        
          Φ
          B
          in
        
      
    
  



Now assume that the steady state outgoing field of object A and B is PAout and PBout respectively.





  
    
      
        
          P
          A
          out
        
        =
        
          
            
              ∑
              
                i
                =
                1
              
              P
            
            ⁢
            
              
            
            ⁢
            
              
                ∑
                
                  k
                  =
                  1
                
                
                  N
                  2
                
              
              ⁢
              
                
              
              ⁢
              
                
                  C
                  ik
                  A
                
                ⁢
                
                  φ
                  ik
                
              
            
          
          =
          
            
              C
              A
              tr
            
            ⁢
            
              Φ
              A
              out
            
          
        
      
    
    
      
        (
        2
        )
      
    
  
  
    
      
        
          P
          B
          out
        
        =
        
          
            
              ∑
              
                i
                =
                1
              
              P
            
            ⁢
            
              
            
            ⁢
            
              
                ∑
                
                  k
                  =
                  1
                
                
                  N
                  2
                
              
              ⁢
              
                
              
              ⁢
              
                
                  C
                  ik
                  B
                
                ⁢
                
                  φ
                  ik
                
              
            
          
          =
          
            
              C
              B
              tr
            
            ⁢
            
              Φ
              B
              out
            
          
        
      
    
    
      
        (
        3
        )
      
    
  




The outgoing field of one object becomes incoming field for the other object. Using linearity of the inter-object transfer function and equation (10) in Section 4.4, we find the incoming field produced on B due to outgoing field of A





  
    
      
        
          
            
              P
              ^
            
            B
            in
          
          =
          
          ⁢
          
            
              g
              A
              B
            
            ⁡
            
              (
              
                
                  C
                  A
                  tr
                
                ⁢
                
                  Φ
                  A
                  out
                
              
              )
            
          
        
        ,
      
    
  
  
    
      
        =
        
        ⁢
        
          
            C
            A
            tr
          
          ⁢
          
            G
            A
            B
          
          ⁢
          
            Φ
            B
            in
          
        
      
    
  




Similarly, we find the incoming field produced on A due to the outgoing field of B as





  
    
      
        
          
            
              P
              ^
            
            A
            in
          
          =
          
          ⁢
          
            
              g
              B
              A
            
            ⁡
            
              (
              
                
                  C
                  B
                  tr
                
                ⁢
                
                  Φ
                  B
                  out
                
              
              )
            
          
        
        ,
      
    
  
  
    
      
        =
        
        ⁢
        
          
            C
            B
            tr
          
          ⁢
          
            G
            B
            A
          
          ⁢
          
            Φ
            A
            in
          
        
      
    
  




The total incoming field on object A is given by,





  
    
      
        
          
            
              
                P
                in
                A
              
              =
              
              ⁢
              
                
                  s
                  A
                  in
                
                +
                
                  
                    P
                    ^
                  
                  A
                  in
                
              
            
          
        
        
          
            
              =
              
              ⁢
              
                
                  
                    S
                    A
                    tr
                  
                  ⁢
                  
                    Φ
                    A
                    in
                  
                
                +
                
                  
                    C
                    B
                    tr
                  
                  ⁢
                  
                    G
                    B
                    A
                  
                  ⁢
                  
                    
                      Φ
                      A
                      in
                    
                    (
                    5
                    )
                  
                
              
            
          
        
      
    
    
      
        (
        4
        )
      
    
  




Similarly, for object B,





  
    
      
        
          
            
              
                P
                in
                B
              
              =
              
              ⁢
              
                
                  s
                  B
                  in
                
                +
                
                  
                    P
                    ^
                  
                  B
                  in
                
              
            
          
        
        
          
            
              =
              
              ⁢
              
                
                  
                    S
                    B
                    tr
                  
                  ⁢
                  
                    Φ
                    B
                    in
                  
                
                +
                
                  
                    C
                    A
                    tr
                  
                  ⁢
                  
                    G
                    A
                    B
                  
                  ⁢
                  
                    
                      Φ
                      B
                      in
                    
                    (
                    7
                    )
                  
                
              
            
          
        
      
    
    
      
        (
        6
        )
      
    
  




Applying linearity of per-object transfer function f and using equation (6) in section 4.3, we get outgoing pressure PoutA and PoutB due to the scattering of incoming fields by the objects as—





  
    
      
        
          
            
              
                
                  P
                  A
                  out
                
                =
                
                ⁢
                
                  f
                  ⁡
                  
                    (
                    
                      P
                      in
                      A
                    
                    )
                  
                
              
              ,
            
          
        
        
          
            
              
                
                  =
                  
                  ⁢
                  
                    
                      
                        S
                        A
                        tr
                      
                      ⁢
                      
                        T
                        A
                      
                    
                    +
                    
                      
                        C
                        B
                        tr
                      
                      ⁢
                      
                        G
                        B
                        A
                      
                      ⁢
                      
                        T
                        A
                      
                    
                  
                
                )
              
              ⁢
              
                Φ
                A
                out
              
            
          
        
      
    
    
      
        (
        8
        )
      
    
  
  
    
      
        
          
            
              
                
                  P
                  B
                  out
                
                =
                
                ⁢
                
                  f
                  ⁡
                  
                    (
                    
                      P
                      in
                      B
                    
                    )
                  
                
              
              ,
            
          
        
        
          
            
              
                
                  =
                  
                  ⁢
                  
                    
                      
                        S
                        B
                        tr
                      
                      ⁢
                      
                        T
                        B
                      
                    
                    +
                    
                      
                        C
                        A
                        tr
                      
                      ⁢
                      
                        G
                        A
                        B
                      
                      ⁢
                      
                        T
                        B
                      
                    
                  
                
                )
              
              ⁢
              
                Φ
                B
                out
              
            
          
        
      
    
    
      
        (
        9
        )
      
    
  




In steady state, this outgoing pressure should match the outgoing pressure we started with. Equating 8 with 2, we get—

CAtrΦAout=SAtrTA+CBtrGBATA)ΦAout 

CAtr=SAtrTA+CBtrGBATA)

Similarly, equating 9 with 3, we get

CBtr=SBtrTB+CAtrGABTB 

Combining above two equations into a single equation and rearranging, we get





  
    [
    
      
        
          
            C
            A
          
        
      
      
        
          
            C
            B
          
        
      
    
    ]
  
  =
  
    
      [
      
        
          
            
              T
              A
              tr
            
          
          
            0
          
        
        
          
            0
          
          
            
              T
              B
              tr
            
          
        
      
      ]
    
    ⁢
    
      (
      
        
          
            [
            
              
                
                  0
                
                
                  
                    
                      (
                      
                        G
                        B
                        A
                      
                      )
                    
                    tr
                  
                
              
              
                
                  
                    
                      (
                      
                        G
                        A
                        B
                      
                      )
                    
                    tr
                  
                
                
                  0
                
              
            
            ]
          
          ⁡
          
            [
            
              
                
                  
                    C
                    A
                  
                
              
              
                
                  
                    C
                    B
                  
                
              
            
            ]
          
        
        +
        
          [
          
            
              
                
                  S
                  A
                
              
            
            
              
                
                  S
                  B
                
              
            
          
          ]
        
      
      )
    
  




In other words,

{umlaut over (C)}={umlaut over (T)}({umlaut over (G)}{umlaut over (C)}+{umlaut over (S)})  (10)

Rearranging,

(I−{umlaut over (T)}{umlaut over (G)}){umlaut over (C)}={umlaut over (T)}{umlaut over (S)}  (10)

which is linear system Ax=b. At run-time, the outgoing scattered field at any listener position x is given by—

p(x)=CAtrΦAjout(x)+CBtrΦAjout(x)  (12)

The complete pressure field becomes

p(x)=CAtrΦAjout(x)+CBtrΦAjout(x)  (13)

A.3 Multiple Objects Steady State Field

For a scene with m objects, A1, A2, . . . , Am, equation (11) remains the same except the vectors and matrices are generalized for m objects,




  
    
      
        
          
            
              (
              
                I
                -
                
                  
                    T
                     ̈
                  
                  ⁢
                  
                    G
                     ̈
                  
                
              
              )
            
            ⁢
            
              C
               ̈
            
          
          =
          
            
              T
               ̈
            
            ⁢
            
              S
               ̈
            
          
        
        ⁢
        
          

        
        ⁢
        where
        ⁢
        
          

        
        ⁢
        
          
            
              S
               ̈
            
            =
            
              [
              
                
                  
                    
                      S
                      
                        A
                        1
                      
                    
                  
                
                
                  
                    
                      S
                      
                        A
                        2
                      
                    
                  
                
                
                  
                    ⋮
                  
                
                
                  
                    ⋮
                  
                
                
                  
                    
                      S
                      
                        A
                        m
                      
                    
                  
                
              
              ]
            
          
          ,
          
            
              C
               ̈
            
            =
            
              [
              
                
                  
                    
                      C
                      
                        A
                        1
                      
                    
                  
                
                
                  
                    
                      C
                      
                        A
                        2
                      
                    
                  
                
                
                  
                    ⋮
                  
                
                
                  
                    ⋮
                  
                
                
                  
                    
                      C
                      
                        A
                        m
                      
                    
                  
                
              
              ]
            
          
          ,
          
            

          
          ⁢
          
            
              T
               ̈
            
            =
            
              [
              
                
                  
                    
                      T
                      
                        A
                        1
                      
                      tr
                    
                  
                  
                    0
                  
                  
                    ⋮
                  
                  
                    ⋮
                  
                  
                    0
                  
                
                
                  
                    0
                  
                  
                    
                      T
                      
                        A
                        2
                      
                      tr
                    
                  
                  
                    0
                  
                  
                    ⋮
                  
                  
                    ⋮
                  
                
                
                  
                    ⋮
                  
                  
                    ⋮
                  
                  
                    ⋮
                  
                  
                    ⋮
                  
                  
                    ⋮
                  
                
                
                  
                    ⋮
                  
                  
                    ⋮
                  
                  
                    ⋮
                  
                  
                    0
                  
                  
                    
                      T
                      
                        A
                        m
                      
                      tr
                    
                  
                
              
              ]
            
          
        
        ⁢
        
          

        
        ⁢
        and
        ⁢
        
          

        
        ⁢
        
          
            G
             ̈
          
          =
          
            [
            
              
                
                  
                    (
                    0
                  
                
                
                  
                    
                  
                
                
                  
                    ⋮
                    ⁢
                    
                      
                    
                  
                
                
                  
                    
                      
                    
                    ⁢
                    ⋮
                  
                
                
                  
                    
                  
                
              
              
                
                  
                    
                      
                    
                    ⁢
                    
                      
                        (
                        
                          G
                          
                            A
                            1
                          
                          
                            A
                            2
                          
                        
                        )
                      
                      tr
                    
                  
                
                
                  
                    
                      (
                      
                        G
                        
                          A
                          2
                        
                        
                          A
                          1
                        
                      
                      )
                    
                    tr
                  
                
                
                  ⋮
                
                
                  ⋮
                
                
                  
                    
                      (
                      
                        G
                        
                          A
                          m
                        
                        
                          A
                          1
                        
                      
                      )
                    
                    tr
                  
                
              
              
                
                  ⋮
                
                
                  0
                
                
                  ⋮
                
                
                  ⋮
                
                
                  
                    
                      (
                      
                        G
                        
                          A
                          m
                        
                        
                          A
                          2
                        
                      
                      )
                    
                    tr
                  
                
              
              
                
                  
                    
                      
                        (
                        
                          G
                          
                            A
                            1
                          
                          
                            A
                            m
                          
                        
                        )
                      
                      
                        t
                        r
                      
                    
                    ⁢
                    
                      
                    
                  
                
                
                  
                    
                      (
                      
                        G
                        
                          A
                          2
                        
                        
                          A
                          m
                        
                      
                      )
                    
                    tr
                  
                
                
                  ⋮
                
                
                  ⋮
                
                
                  
                    ⋮
                    ⁢
                    
                      
                    
                  
                
              
              
                
                  
                    
                  
                
                
                  
                    
                  
                
                
                  
                    
                  
                
                
                  
                    
                  
                
                
                  0
                
              
            
            ]
          
        
      
    
    
      
        (
        14
        )
      
    
  




The outgoing field at point x is





  
    
      
        
          p
          ⁡
          
            (
            x
            )
          
        
        =
        
          
            ∑
            
              j
              =
              1
            
            m
          
          ⁢
          
            
          
          ⁢
          
            
              C
              
                A
                j
              
              tr
            
            ⁢
            
              
                Φ
                
                  A
                  j
                
                out
              
              ⁡
              
                (
                x
                )
              
            
          
        
      
    
    
      
        (
        15
        )
      
    
  




The complete pressure field becomes





  
    
      
        
          p
          ⁡
          
            (
            x
            )
          
        
        =
        
          
            
              ∑
              
                j
                =
                1
              
              m
            
            ⁢
            
              
            
            ⁢
            
              
                C
                
                  A
                  j
                
                tr
              
              ⁢
              
                
                  Φ
                  
                    A
                    j
                  
                  out
                
                ⁡
                
                  (
                  x
                  )
                
              
            
          
          +
          
            s
            ⁡
            
              (
              x
              )
            
          
        
      
    
    
      
        (
        16
        )
      
    
  




A.4 Computational Complexity

Consider a second with m objects. We have to computer the pressure at the listener position at regularly sampled set of frequencies in the range [vmin(usually 0), vmax] with a step of Δv. The total number of frequency samples become vmax/Δv. To simplify the analysis, we assume that all objects have the same number of offset surface samples n, incoming equivalent sources Q and outgoing equivalent sources P, at all frequencies. We also assume that all the objects have equal volume u.
Pre-Processing
Scattering matrix For each of the QM2 incoming multipoles of an object, wave simulations are performed and a dense least-squares system of size PN2×n is solved to find the object's scattering matrix. The cost for each simulation is u log u, and the cost of solving the least-squares system1 is nP2N4. Hence the total cost is O (mQM2(nP2N4+u log u)).

Interaction matrix For every pair of objects, PN2 linear systems of size QM2×n need to be solved for finding the interaction matrix. In total, we have m2 object pairs. The cost of evaluating analytical expressions for multipole pressure is O(1) each, and is dominated by the cost of solving the linear systems. Hence the total cost is O(m2PN2nQ2 M4).

Computing strengths. The size of the final linear system for finding outgoing equivalent source strengths for all objects in response to a sound source is mPN2×mPN2; solving it takes O(m3P3N6) time.

The above steps are performed for all the frequency samples. The total pre-processing cost thus scales as:

O((mQM2(nP2N4+μ log μ+mPN2nQM2)+m3P3N6)vmax/Δv)

Run-time At run-time, we evaluate equation (16) for all the frequencies, which takes O(mPN2vmax/Δv) time. The runtime memory requirement consists of positions (3 floats) and (complex-valued) strengths (2 floats) of equivalent source for all frequencies, which comes out to be m(3P+2PN2)vmax/Δv.

Since the computational cost and runtime memory requirement scales adversely with the multipole order, we limit equivalent sources to monopoles and dipoles, N=2, M=2.

BEM The storage requirements of BEM depends on the total surface area of the objects in the scene S and the number of frequency samples vmax/Δv. Assuming BEM places s samples per wavelength (usually s=10), the number of monopoles/dipoles placed by BEM on the object's surface at frequency sample vi=Ss2νi2/c2. The total number of monopoles/dipoles for all the frequency samples is equal to mSs2νmax3/(c2Δv) where each multipole is specified by its position (3 floats) and complex amplitude (2 floats). The total memory requirement of storing the simulation results becomes

5Ss2νmax3/(c2Δv)

ART and FDTD The runtime memory requirements of ARD and FDTD is equal to the number of grid cells in the spatial discretization of the entire volume of the scene and the number of timestops in the simulation. Assuming volume of the scene to be V, grid size h, maximum frequency vmax, speed of sound c, and number of samples per wavelength s (equal to 3 for ARD and 10 for FDTD), we can compute the number of grid cells equal (svmax/c)3V. The total number of time-samples to store is at least twice the number of samples in the frequency domain. The total memory requirement of storing the simulation results for these techniques is thus

2s2vmax4V/(c3Δv).

FIG. 8 is a block diagram of an exemplary system for simulating sound propagation within a scene in accordance with embodiments of the subject matter described herein. Referring to FIG. 8, computing platform 100 may include one or more processors 102. Computing platform 100 may also include memory 104. Memory 104 may be any non-transitory computer readable medium and may be operative to communicate with one or more of processors 102. Memory 104 may include scene decomposition module 106. In accordance with embodiments of the subject matter described herein, scene decomposition module 106 may be configured to cause processor(s) 102 to decompose a scene into disjoint objects. In some embodiments, scene decomposition module 106 may be configured to decompose the scene into the disjoint objects by computing localized regions around possible objects within the scene and classifying the possible objects as disjoint if their localized regions do not overlap.
Memory 104 may also include per-object transfer function generation module 108. In accordance with embodiments of the subject matter described herein, per-object transfer function generation module 108 may be configured to cause processor(s) 102 to generate per-object transfer functions for each of the disjoint objects, wherein each per-object transfer function maps an incoming sound field reaching an object to an outgoing sound field emanating from the object. In some embodiments, each of the per-object transfer functions maps an incoming sound field reaching its corresponding disjoint object to an outgoing sound field after accounting for sound propagation effects such as reflection, scattering, or diffraction due to the corresponding disjoint object. In some embodiments, the incoming and the outgoing sound field are expressed using equivalent sources. For example, the incoming sound field may be represented by placing the equivalent sources in an exterior region of the corresponding disjoint object and the outgoing sound field may be represented by placing the equivalent sources in an interior region of the corresponding disjoint object. In some embodiments, per-object transfer function generation module 108 may be configured to store at least one of the per-object transfer functions corresponding to one of the disjoint objects within the scene for future use in the simulation of a second scene that includes the disjoint object.
Memory 104 may further include inter-object transfer function generation module 110. In accordance with embodiments of the subject matter described herein, inter-object transfer function generation module 110 may be configured to cause processor(s) 102 to generate a plurality of inter-object transfer functions corresponding to pairs of the disjoint objects, wherein each inter-object transfer function maps an outgoing sound field emanating from one of the disjoint objects to an incoming sound filed of another of the disjoint objects. In some embodiments, each of the inter-object transfer functions maps an outgoing sound field of one of the disjoint objects to an incoming sound field of another of the disjoint objects. In some embodiments, both the incoming and the outgoing sound field are expressed in terms of equivalent sources. In some embodiments, inter-object transfer function generation module 110 may be configured to generate the plurality of inter-object transfer functions corresponding to pairs of the disjoint objects by generating an inter-object transfer function for each possible combination of the disjoint objects.
Memory 104 may further include simulation module 112. In accordance with embodiments of the subject matter described herein, simulation module 112 may be configured to cause processor(s) 102 to utilize the per-object transfer functions and the inter-object transfer functions to perform simulation of sound propagation within the scene and thereby determine a sound field for the scene. In some embodiments, simulation module 112 may be configured to utilize the per-object transfer functions and the inter-object transfer functions to perform simulation of sound propagation within the scene by computing an outgoing equivalent source strength for each of the disjoint objects within the scene. For example, simulation module 112 may be configured to utilize the outgoing equivalent source strengths for the disjoint objects to compute a pressure field corresponding to a listener position within the scene. In some embodiments, the simulation of sound propagation within the scene may be wave-based.
The subject matter described herein may be utilized for performing sound rendering or auditory displays which may augment graphical rendering and provide a user with an enhanced spatial sense of presence. For example, some of the driving applications of sound rendering include acoustic design of architectural models or outdoor scenes, walkthroughs of large computer aided design (CAD) models with sounds of machine parts or moving people, urban scenes with traffic, training systems, computer games, etc.
FIG. 9 is a flow chart of an exemplary system for sound propagation within a scene using equivalent sources according to an embodiment of the subject matter described herein. Referring to FIG. 9, in step 900, a scene is decomposed into disjoint objects. For example, as illustrated in FIG. 2, image (b), the scene may be divided into different objects. In step 902, per object transfer functions are generated for each of the disjoint objects. Each per object transfer function maps an incoming sounds field reaching an object to an outgoing sound field emanating from the object. The generation of a per object transfer function is described above in Section 4.3. In step 904, a plurality of inter-object transfer functions corresponding to pairs of the disjoint objects is generated. Each inner object transfer function maps an outgoing sound field emanating from one of the disjoint objects to an incoming sound field of another disjoint object. The generation of inter-object transfer functions is described above in Section 4.4. In step 906, the per object transfer functions and the inner object transfer functions are used to perform simulation of sound propagation within a scene and to thereby determine a sound field for the scene. As described in the exemplary implementation in Section 5 above, once the per object transfer functions and the inner object transfer functions are known, sound from different sources can be used to simulate sound propagation within a scene.
It will be understood that various details of the presently disclosed subject matter may be changed without departing from the scope of the presently disclosed subject matter. Furthermore, the foregoing description is for the purpose of illustration only, and not for the purpose of limitation.
REFERENCES
The disclosures of all of the references listed herein are hereby incorporated herein by reference in their entireties.

    [1] Abramowitz, M., and Stegun, I. 1964. Handbook of Mathematical Functions, fifth ed. Dover, N.Y.
    [2] ALLEN, J. B., AND BERKLEY, D. A. 1979. Image method for efficiently simulating small-room acoustics. J. Acoust. Soc. Am 65, 4, 943-950.
    [3] ANTANI, L., CHANDAK, A., TAYLOR, M., AND MANOCHA, D. 2012. Direct-to-indirect acoustic radiance transfer. IEEE Transactions on Visualization and Computer Graphics 18, 2, 261-269.
    [4] CHENG, A., AND CHENG, D. 2005. Heritage and early history of the boundary element method. Engineering Analysis with Boundary Elements 29, 3 (March), 268-302.
    [5] DOICU, A., EREMIN, Y. A., AND WRIEDT, T. 2000. Acoustic and Electromagnetic Scattering Analysis Using Discrete Sources, 1st ed. Academic Press, July.
    [6] FAIRWEATHER, G. 2003. The method of fundamental solutions for scattering and radiation problems. Engineering Analysis with Boundary Elements 27, 7 (July), 759-769.
    [7] FUNKHOUSER, T., CARLBOM, I., ELKO, G., PINGALI, G., SONDHI, M., AND WEST, J. 1998. A beam tracing approach to acoustic modeling for interactive virtual environments. In Proc. of ACM SIGGRAPH, 21-32.
    [8] GUMEROV, N. A., AND DURAISWAMI, R. 2009. A broadband fast multipole accelerated boundary element method for the three dimensional Helmholtz equation. The Journal of the Acoustical Society of America 125, 1, 191-205.
    [9] Hobson, E. W. 1955. The Theory of Spherical and Ellipsoidal Harmonics. Cambridge University Press, New York, N.Y., USA.
    [10] JAMES, D. L., BARBIC, J., AND PAL, D. K. 2006. Precomputed acoustic transfer: output-sensitive, accurate sound generation for geometrically complex vibration sources. ACM Transactions on Graphics 25, 3 (July), 987-995.
    [11] KROPP, W., AND SVENSSON, P. U. 1995. Application of the time domain formulation of the method of equivalent sources to radiation and scattering problems. Acta Acustica united with Acustica 81, 6, 528-543.
    [12] LENTZ, T., SCHRODER, D., VORLANDER, M., AND ASSENMACHER, I. 2007. Virtual reality system with integrated sound field simulation and reproduction. EURASIP J. Appl. Signal Process. 2007, 1, 187.
    [13] LIU, Y., SHEN, L., AND BAPAT, M. 2009. Development of the fast multipole boundary element method for acoustic wave problems. 287-303.
    [14] Liu, Q. H. 1997. The PSTD algorithm: A time-domain method combining the pseudospectral technique and perfectly matched layers. The Journal of the Acoustical Society of America 101, 5, 3182.
    [15] OCHMANN, M. 1995. The source simulation technique for acoustic radiation problems. Acustica 81, 512-527.
    [16] OCHMANN, M. 1999. The full-field equations for acoustic radiation and scattering. The Journal of the Acoustical Society of America 105, 5, 2574-2584.
    [17] PAVIC, G. 2006. A technique for the computation of sound radiation by vibrating bodies using multipole substitute sources. Ada Acustica united with Acustica 92, 112-126 (15).
    [18] PIERCE, A. D. 1989. Acoustics: An Introduction to Its Physical Principles and Applications. Acoustical Society of America.
    [19] RAGHUVANSHI, N., NARAIN, R., AND LIN, M. C. 2009. Efficient and Accurate Sound Propagation Using Adaptive Rectangular Decomposition. IEEE Transactions on Visualization and Computer Graphics 15, 5,789-801.
    [20] RAGHUVANSHI, N., SNYDER, J., MEHRA, R., LIN, M. C., AND GOVINDARAJO, N. K. 2010. Precomputed Wave Simulation for Real-Time Sound Propagation of Dynamic Sources in Complex Scenes. SIGGRAPH 2010 29, 3 (July).
    [21] SAKAMOTO, S., USHIYAMA, A., AND NAGATOMO, H. 2006. Numerical analysis of sound propagation in rooms using the finite difference time domain method. The Journal of the Acoustical Society of America 120, 5, 3008.
    [22] SAVIOJA, L. 2010. Real-Time 3D Finite-Difference Time-Domain Simulation of Mid-Frequency Room Acoustics. In 13th International Conference on Digital Audio Effects (DAFx-10).
    [23] SILTANEN, S., LOKK1, T., KIMINKI, S., AND SAVIOJA, L. 2007. The room acoustic rendering equation. The Journal of the Acoustical Society of America 122, 3 (September), 1624-1635.
    [24] SVENSSON, U. P., FRED, R. I., AND VANDERKOOY, J. 1999. An analytic secondary source model of edge diffraction impulse responses. Acoustical Society of America Journal 106 (November), 2331-2344.
    [25] TAFLOVE, A., AND HAGNESS, S. C. 2005. Computational Electrodynamics: The Finite-Difference Time-Domain Method, Third Edition, 3 ed. Artech House Publishers, June.
    [26] TAYLOR, M. T., CHANDAK, A., ANTANI, L., AND MANOCHA, D. 2009. RE-Sound: interactive sound rendering for dynamic virtual environments. In MM '09: Proceedings of the seventeen ACM international conference on Multimedia, ACM, New York, N.Y. USA, 271-280.
    [27] THOMPSON, L. L., AND PINSKY, P. M. 2004. Acoustics. John Wiley & Sons, Ltd.
    [28] THOMPSON, L. L. 2006. A review of finite-element methods for time-harmonic acoustics. The Journal of the Acoustical Society of America 119, 3, 1315-1330.
    [29] TSINGOS, N., AND GASCUEL, J. D. 1997. A general model for the simulation of room acoustics based on hierarchical radiosity. In ACM SIGGRAPH 97, ACM, New York, N.Y., USA, SIGGRAPH '97.
    [30] TSINGOS, N., FUNKHOUSER, T., NGAN, A., AND CARLBOM, I. 2001. Modeling acoustics in virtual environments using the uniform theory of diffraction. In SIGGRAPH '01, ACM, New York, N.Y., USA, 545-552.
    [31] TSINGOS, N., DACHSBACHER, C., LEFEBVRE, S., AND DELLEPIANE, M. 2007. Instant Sound Scattering. In Rendering Techniques (Proceedings of the Eurographics Symposium on Rendering).
    [32] TSINGOS, N. 2009. Pre-computing geometry-based reverberation effects for games. In 35th AES Conference on Audio for Games. 
    [33] VORLANDER, M. 1989. Simulation of the transient and steady-state sound propagation in rooms using a new combined ray-tracing/image-source algorithm. The Journal of the Acoustical Society of America 86, 1, 172-178.
    [34] WATERMAN, P. C. 2009. T-matrix methods in acoustic scattering. The Journal of the Acoustical Society of America 125, 1, 42-51.
    [35] YEE, K. 1966. Numerical solution of initial boundary value problems involving Maxwell's equations in isotropic media. IEEE Transactions on Antennas and Propagation 14, 3 (May), 302-307.
    [36] ZIENKIEWICZ, O. C., TAYLOR, R. L., AND NITHIARASU, P. 2006. The finite element method for fluid dynamics, 6 ed. Butterworth-Heinemann, Jan.

## Claims

1. A method for simulating sound propagation within a scene, the method comprising:
in a computing platform including a processor and a memory:
using a scene decomposition module embodied in the memory, causing the processor to decompose a scene into disjoint objects;
using a per-object transfer function generation module embodied in the memory, causing the processor to generate per-object transfer functions for each of the disjoint objects, wherein each per-object transfer function maps an incoming sound field reaching an object to an outgoing sound field emanating from the object after reflection, scattering, and diffraction due to the object itself, wherein generating the per-object transfer functions includes computing an outgoing scattered field for each object using a wave equation and a wave equation solver;
using an inter-object transfer function generation module embodied in the memory, causing the processor to generate a plurality of inter-object transfer functions corresponding to pairs of the disjoint objects, wherein each inter-object transfer function maps an outgoing sound field emanating from one of the disjoint objects to an incoming sound field of another of the disjoint objects;
causing the processor to compute, using the per-object transfer functions and the inter-object transfer functions, outgoing equivalent sound source strengths for each of the disjoint objects, where the outgoing equivalent sound source strengths represent a resultant sound strength emanating from an object caused by interaction of sound from a source in the scene with the object and all other objects in the scene;
storing the outgoing equivalent sound source strengths in the memory; and
using a simulation module embodied in the memory, causing the processor to utilize the stored outgoing equivalent sound source strengths to perform simulation of sound propagation within the scene and determine a sound pressure field for any listener position in the scene.

2. The method of claim 1 wherein decomposing the scene into the disjoint objects includes computing localized regions around possible objects within the scene and classifying the possible objects as disjoint if their localized regions do not overlap.

3. The method of claim 1 wherein each of the per-object transfer functions maps an incoming sound field reaching its corresponding disjoint object to an outgoing sound field after accounting for sound propagation effects such as reflection, scattering, or diffraction due to the corresponding disjoint object.

4. The method of claim 3 wherein both the incoming and the outgoing sound field are expressed using equivalent sources.

5. The method of claim 4 wherein the incoming sound field is represented by placing the equivalent sources in an exterior region of the corresponding disjoint object and the outgoing sound field is represented by placing the equivalent sources in an interior region of the corresponding disjoint object.

6. The method of claim 1 wherein each of the inter-object transfer functions maps an outgoing sound field of one of the disjoint objects to an incoming sound field of another of the disjoint objects.

7. The method of claim 6 wherein both the incoming and the outgoing sound field are expressed in terms of equivalent sources.

8. The method of claim 1 wherein generating the plurality of inter-object transfer functions corresponding to pairs of the disjoint objects includes generating an inter-object transfer function for each possible combination of the disjoint objects.

9. The method of claim 1 wherein the simulation of sound propagation within the scene is wave-based.

10. The method of claim 1 wherein at least one of the per-object transfer functions corresponding to one of the disjoint objects within the scene is stored for future use in the simulation of a second scene that includes the disjoint object.

11. A system for simulating sound propagation within a scene, the system comprising:
a computing platform comprising a memory and a processor;
a scene decomposition module embodied in the memory and configured to cause the processor to decompose a scene into disjoint objects;
a per-object transfer function generation module embodied in the memory and configured to cause the processor to generate per-object transfer functions for each of the disjoint objects, wherein each per-object transfer function maps an incoming sound field reaching an object to an outgoing sound field emanating from the object after reflection, scattering, and diffraction due to the object itself, wherein generating the per-object transfer functions includes computing an outgoing scattered field for each object using a wave equation and a wave equation solver;
an inter-object transfer function generation module embodied in the memory and configured to cause the processor to generate a plurality of inter-object transfer functions corresponding to pairs of the disjoint objects, wherein each inter-object transfer function maps an outgoing sound field emanating from one of the disjoint objects to an incoming sound field of another of the disjoint objects;
wherein the processor is configured to compute, using the per-object transfer functions and the inter-object transfer functions, outgoing equivalent sound source strengths for each of the disjoint objects, where the outgoing equivalent sound source strengths represent a resultant sound strength emanating from an object caused by interaction of sound from a source in the scene with the object and all other objects in the scene, and wherein the processor is configured to store the outgoing equivalent sound source strengths in the memory; and
a simulation module embodied in the memory and configured to cause the processor to utilize the stored outgoing equivalent sound source strengths to perform simulation of sound propagation within the scene and determine a sound pressure field for any listener position in the scene.

12. The system of claim 11 wherein the scene decomposition module is configured to decompose the scene into the disjoint objects by computing localized regions around possible objects within the scene and classifying the possible objects as disjoint if their localized regions do not overlap.

13. The system of claim 11 wherein each of the per-object transfer functions maps an incoming sound field reaching its corresponding disjoint object to an outgoing sound field after accounting for sound propagation effects such as reflection, scattering, or diffraction due to the corresponding disjoint object.

14. The system of claim 13 wherein both the incoming and the outgoing sound field are expressed using equivalent sources.

15. The system of claim 14 wherein the incoming sound field is represented by placing the equivalent sources in an exterior region of the corresponding disjoint object and the outgoing sound field is represented by placing the equivalent sources in an interior region of the corresponding disjoint object.

16. The system of claim 11 wherein each of the inter-object transfer functions maps an outgoing sound field of one of the disjoint objects to an incoming sound field of another of the disjoint objects.

17. The system of claim 16 wherein both the incoming and the outgoing sound field are expressed in terms of equivalent sources.

18. The system of claim 11 wherein the inter-object transfer function generation module is configured to generate the plurality of inter-object transfer functions corresponding to pairs of the disjoint objects by generating an inter-object transfer function for each possible combination of the disjoint objects.

19. The system of claim 11 wherein the simulation of sound propagation within the scene is wave-based.

20. The system of claim 11 wherein the per-object transfer function generation module is configured to store at least one of the per-object transfer functions corresponding to one of the disjoint objects within the scene for future use in the simulation of a second scene that includes the disjoint object.

21. A non-transitory computer readable medium comprising computer executable instructions that when executed by a processor of a computer control the computer to perform steps comprising:
using a scene decomposition module embodied in the non-transitory computer readable medium, causing the processor to decompose a scene into disjoint objects;
using a per-object transfer function generation module embodied in the non-transitory computer readable medium causing the processor to generate per-object transfer functions for each of the disjoint objects, wherein each per-object transfer function maps an incoming sound field reaching an object to an outgoing sound field emanating from the object after reflection, scattering, and diffraction due to the object itself, wherein generating the per-object transfer functions includes computing an outgoing scattered field for each object using a wave equation and a wave equation solver;
using an inter-object transfer function generation module embodied in the non-transitory computer readable medium, causing the processor to generate a plurality of inter-object transfer functions corresponding to pairs of the disjoint objects, wherein each inter-object transfer function maps an outgoing sound field emanating from one of the disjoint objects to an incoming sound field of another of the disjoint objects;
causing the processor to compute, using the per-object transfer functions and the inter-object transfer functions, outgoing equivalent sound source strengths for each of the disjoint objects, where the outgoing equivalent sound source strengths represent a resultant sound strength emanating from an object caused by interaction of sound from a source in the scene with the object and all other objects in the scene;
storing the outgoing equivalent sound source strengths in the non-transitory computer readable medium; and
using a simulation module embodied in the non-transitory computer readable medium, causing the processor to utilize the stored outgoing equivalent sound source strengths to perform simulation of sound propagation within the scene and determine a sound pressure field for any listener position in the scene.