Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Fast Simulation of Lightning for 3D Games Jeremy Bryan Advisor: Sudhanshu Semwal Overview Introduction Applications Previous Research Design Implementation Results Future Work Conclusion Introduction Realistic cloud-to-ground lightning strike 3D game emphasis Real-time requirement Cellular Automata implementation Introduction (cont.) Lightning Basics Strong electrical field Stepped leader Upward positive leader Attachment process Return stroke Applications 3D Games Movies Physical modeling ??? Previous Research Reed “Visual Simulation of Lightning” Emphasis on rendering with ray-tracing Simple 3D model generation Previous Research (cont.) Previous Research (cont.) Dobashi Identical modeling technique as Reed Takes scattering effect due to atmospheric particles and clouds into account Previous Research (cont.) Previous Research (cont.) UCCS Physics website r is a generated random number that represents atmospheric properties. E is the electric field and can be found by using Maxwell’s Equations. α controls the weight of E on r. Find largest breakdown number (X) α Cellular Automata Discreet lattice Discreet time-steps drive simulation Each cell has finite set of values Each cell evolves according to same set of rules Evolution of cell depends only upon local neighborhood interaction Design Complex Lightning Algorithm Ground up Assign values on the fly Random numbers for “r” Make the calculations Find largest breakdown number (X) α X=E r Segment length Design (cont.) Pseudocode Proc GenerateComplexLightning // Load the starting coordinates list.add target.coords while height <= MAX_ALTITUDE Assign r to 26 neighbor cells if they do not have one Calculate E for 26 neighbor cells if not done previously Find maximum X list.add maxE.coords end while for each voxel in list temp = rand() if temp < BRANCH_PROBABILITY then GenerateComplexBranch() end if end for end proc Design (cont.) Design (cont.) Complex Branch Algorithm Parent iteration Uniformly distributed probability function Recursive Random branch length Design (cont.) Pseudocode Proc GenerateComplexBranch BranchLength = rand() while (BranchHeight >= 0 And BranchLength >=0) Assign r to neighbor cells if they do not have one Calculate E for cells if not done previously Find maximum X BranchList.add maxE.coords end while for each coord in BranchList.coords if (rand() < BRANCH_PROBABILITY) then GenerateComplexBranch() end if end for end proc Implementation Object-Oriented Design Programming Languages Supporting packages HeightMap Tutorial Linked list library OpenGL car tutorial Implementation (cont.) Development model Class structures CCamera CVoxel Lightning Camera Target Car Explosion Implementation (cont.) Observations 1. 2. 3. Run-time dependent on max branch depth and probability of branching Large branch clusters detract from final product and are time intensive Number of voxels in a given dimension match map size. Increasing resolution would not enhance results. Results Results (cont.) Results (cont.) Survey Results (cont.) Glassner Mean Bryan Reed Dobashi 3.171875 2.25 2.28125 2.296875 Median 4 2 2.5 2 Mode 4 1 3 2 0.96863 1.140871 1.075982 1.03402 StdDev Sample Size = 64 Future Work Efficiency Support for light sources Branch modeling Control point support ??? Conclusion Aesthetically pleasing results No discernable lag-time 3D game environment