Animating fluids like water, smoke, and fire by physics-based simulation is increasingly important in visual effects and is starting to make an impact in real-time games. This course goes from the basics of 3D fluid flow to the state of the art in graphics. We will begin with an intuitive explanation of the important concepts in fluid simulation, and as we progress demonstrate how to implement an effective smoke and water simulation system, complete with irregular curved boundaries and surface tension. The last half of the course will cover advanced topics such as fire and explosions, adaptive grid methods, real-time-capable algorithms together with the latest technology in hardware acceleration, and non-Newtonian fluids like sand. Intuition and implementation details will be underscored throughout.
{"title":"Fluid simulation: SIGGRAPH 2007 course notesVideo files associated with this course are available from the citation page","authors":"R. Bridson, M. Müller-Fischer","doi":"10.1145/1281500.1281681","DOIUrl":"https://doi.org/10.1145/1281500.1281681","url":null,"abstract":"Animating fluids like water, smoke, and fire by physics-based simulation is increasingly important in visual effects and is starting to make an impact in real-time games. This course goes from the basics of 3D fluid flow to the state of the art in graphics. We will begin with an intuitive explanation of the important concepts in fluid simulation, and as we progress demonstrate how to implement an effective smoke and water simulation system, complete with irregular curved boundaries and surface tension. The last half of the course will cover advanced topics such as fire and explosions, adaptive grid methods, real-time-capable algorithms together with the latest technology in hardware acceleration, and non-Newtonian fluids like sand. Intuition and implementation details will be underscored throughout.","PeriodicalId":184610,"journal":{"name":"ACM SIGGRAPH 2007 courses","volume":"92 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-08-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127142767","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
In this chapter we do not present one specific algorithm; instead we try to describe the approaches the German company named Crytek took to find certain rendering algorithms that work well together. We believe this information is valuable for anyone that wants to implement similar rendering algorithms because often the implementation challenges arise when combining with other algorithms. We will also describe briefly the path to it as that covers alternative approaches you also might want to consider. This is not a complete description of everything that was done on the rendering side because for this chapter we picked certain areas that are of interest specifically for this audience and limited ourselves to a presentable extend. The work presented here takes significant advantage of research done by the graphics community in recent years and combines it with novel ideas developed within Crytek to realize implementations that efficiently map onto graphics hardware.
{"title":"Finding next gen: CryEngine 2","authors":"Martin Mittring","doi":"10.1145/1281500.1281671","DOIUrl":"https://doi.org/10.1145/1281500.1281671","url":null,"abstract":"In this chapter we do not present one specific algorithm; instead we try to describe the approaches the German company named Crytek took to find certain rendering algorithms that work well together. We believe this information is valuable for anyone that wants to implement similar rendering algorithms because often the implementation challenges arise when combining with other algorithms. We will also describe briefly the path to it as that covers alternative approaches you also might want to consider. This is not a complete description of everything that was done on the rendering side because for this chapter we picked certain areas that are of interest specifically for this audience and limited ourselves to a presentable extend. The work presented here takes significant advantage of research done by the graphics community in recent years and combines it with novel ideas developed within Crytek to realize implementations that efficiently map onto graphics hardware.","PeriodicalId":184610,"journal":{"name":"ACM SIGGRAPH 2007 courses","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-08-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122322207","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Particle systems ([Reeves83, Sims90, McAllister00]) have been the mainstay of video game effects for the past decade. They have been used to simulate everything from explosions ([Burg2000]) to swarms of insects ([Reynolds87]). As more and more processing power is becoming available on commodity graphics processors, many video game subsystems are now moving over to the GPU. Particle systems have moved with them, but in doing so, have lost some of their functionality in the move.
{"title":"Real-time particle systems on the GPU in dynamic environments","authors":"S. Drone","doi":"10.1145/1281500.1281670","DOIUrl":"https://doi.org/10.1145/1281500.1281670","url":null,"abstract":"Particle systems ([Reeves83, Sims90, McAllister00]) have been the mainstay of video game effects for the past decade. They have been used to simulate everything from explosions ([Burg2000]) to swarms of insects ([Reynolds87]). As more and more processing power is becoming available on commodity graphics processors, many video game subsystems are now moving over to the GPU. Particle systems have moved with them, but in doing so, have lost some of their functionality in the move.","PeriodicalId":184610,"journal":{"name":"ACM SIGGRAPH 2007 courses","volume":"59 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-08-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132247081","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Techniques for interactive deformation of unstructured polygon meshes are of fundamental importance to a host of applications. Most traditional approaches to this problem have emphasized precise control over the deformation being made. However, they are often cumbersome and unintuitive for non-expert users. In this paper, we present an interactive system for deforming unstructured polygon meshes that is very easy to use. The user interacts with the system by sketching curves in the image plane. A single stroke can define a free-form skeleton and the region of the model to be deformed. By sketching the desired deformation of this reference curve, the user can implicitly and intuitively control the deformation of an entire region of the surface. At the same time, the reference curve also provides a basis for controlling additional parameters, such as twist and scaling. We demonstrate that our system can be used to interactively edit a variety of unstructured mesh models with very little effort. We also show that our formulation of the deformation provides a natural way to interpolate between character poses, allowing generation of simple key framed animations.
{"title":"Sketching mesh deformations","authors":"Youngihn Kho, Michael Garland","doi":"10.1145/1281500.1281552","DOIUrl":"https://doi.org/10.1145/1281500.1281552","url":null,"abstract":"Techniques for interactive deformation of unstructured polygon meshes are of fundamental importance to a host of applications. Most traditional approaches to this problem have emphasized precise control over the deformation being made. However, they are often cumbersome and unintuitive for non-expert users. In this paper, we present an interactive system for deforming unstructured polygon meshes that is very easy to use. The user interacts with the system by sketching curves in the image plane. A single stroke can define a free-form skeleton and the region of the model to be deformed. By sketching the desired deformation of this reference curve, the user can implicitly and intuitively control the deformation of an entire region of the surface. At the same time, the reference curve also provides a basis for controlling additional parameters, such as twist and scaling. We demonstrate that our system can be used to interactively edit a variety of unstructured mesh models with very little effort. We also show that our formulation of the deformation provides a natural way to interpolate between character poses, allowing generation of simple key framed animations.","PeriodicalId":184610,"journal":{"name":"ACM SIGGRAPH 2007 courses","volume":"69 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-08-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116156326","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
W. Corrêa, James T. Klosowski, Christopher J. Morris, Thomas M. Jackmann
We present SPVN (Scalable Parallel Visual Networking), a new application framework for interactive visualization of large datasets. We designed SPVN with four main goals in mind. First, we wanted to make it easier for developers to write visualization applications that can handle massive datasets and deliver interactive frame rates. SPVN provides developers with efficient implementations of many optimization techniques such as spatialization, simplification, view-frustum culling, occlusion culling, multithreading, and prefetching. Second, we wanted developers to better leverage the performance and scalability of a cluster of inexpensive rendering servers, while insulating them from the complexities of distributed programming. SPVN provides implementations of sort-first rendering with dynamic load balancing, sort-last rendering with depth-order and binary-swap image compositing, and a distributed shared memory mechanism that gives programmers the illusion that all machines have all the data at all times. Third, we wanted to support multiple low-level rendering libraries. SPVN separates modeling from rendering so that the same scene can be rendered by different back-ends (e.g., OpenGL, DirectX, or ray tracing). Finally, we wanted SPVN to be easy to use and extend. SPVN uses the familiar concept of a scene graph, applies many well-established design patterns (e.g., smart pointers, factories, observers, and visitors), and allows for extensions of shape classes, rendering algorithms, and file formats using registry and plug-in mechanisms. We have used SPVN to develop both remote and immersive visualization applications, and found that SPVN reduces the amount of time and money it takes to write such applications.
{"title":"SPVN: a new application framework for interactive visualization of large datasets","authors":"W. Corrêa, James T. Klosowski, Christopher J. Morris, Thomas M. Jackmann","doi":"10.1145/1281500.1281566","DOIUrl":"https://doi.org/10.1145/1281500.1281566","url":null,"abstract":"We present SPVN (Scalable Parallel Visual Networking), a new application framework for interactive visualization of large datasets. We designed SPVN with four main goals in mind. First, we wanted to make it easier for developers to write visualization applications that can handle massive datasets and deliver interactive frame rates. SPVN provides developers with efficient implementations of many optimization techniques such as spatialization, simplification, view-frustum culling, occlusion culling, multithreading, and prefetching. Second, we wanted developers to better leverage the performance and scalability of a cluster of inexpensive rendering servers, while insulating them from the complexities of distributed programming. SPVN provides implementations of sort-first rendering with dynamic load balancing, sort-last rendering with depth-order and binary-swap image compositing, and a distributed shared memory mechanism that gives programmers the illusion that all machines have all the data at all times. Third, we wanted to support multiple low-level rendering libraries. SPVN separates modeling from rendering so that the same scene can be rendered by different back-ends (e.g., OpenGL, DirectX, or ray tracing). Finally, we wanted SPVN to be easy to use and extend. SPVN uses the familiar concept of a scene graph, applies many well-established design patterns (e.g., smart pointers, factories, observers, and visitors), and allows for extensions of shape classes, rendering algorithms, and file formats using registry and plug-in mechanisms. We have used SPVN to develop both remote and immersive visualization applications, and found that SPVN reduces the amount of time and money it takes to write such applications.","PeriodicalId":184610,"journal":{"name":"ACM SIGGRAPH 2007 courses","volume":"31 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-08-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123392966","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}