@jamesfong1 How is magnitude shown in these figures? Is it through the color or the length of the vectors?
@jamesfong1 How is magnitude shown in these figures? Is it through the color or the length of the vectors?
How will different interpolation methods impact the visual effect of walking?
@daniel-man -- thanks for responding to #degaliang, and you're right that C represents the diameter of the circle of confusion.
However, I should caution that a larger C will not always indicate that the defocused object is closer than the world focal plane. That is just the situation in this example photo. You can convince yourself of this by looking at the equations, and reasoning about what would happen if the foreground lights were closer to the focal plane -- C will decrease. The intuition is that the lights will be less blurred and have smaller C, the closer they are to the plane of focus.
@mylinhvu11 -- zi is the distance between the lens and optical image of the object in the world. The equations for zi here come directly from the thin lens equation on the previous slides, rearranging to solve for zi as a function of f and zo. In this problem, we are given that f = 50mm is the focal length of the lens, and we are analyzing the circles of confusion for two objects in the world -- lights in the foreground and lights in the background. For the lights in the foreground, zo = 0.3m = 300mm is the distance from the lens to those lights. For the lights in the background, zo = 10m = 10,000mm.
Does this help?
The reason we do not store the fluid state throughout the grid is not necessarily because of an "indexing" issue, but more that in our aim of trying to calculate gradients and other "difference" quantities it is better to use this "staggered" approach in order to not run into strange checkerboard "decoupled" calculations that result from just directly storing the value of these quantities in the middle of our cells.
An unstable solution would likely lead to a simulation that can quickly get out of hand - where small perturbations calculated with our equations can lead to large variations, breaking down the "realism." A stable solution would allow us to maintain within the approximate area even with perturbations, making it smoother.
An interesting thing about this "boids" approach that made it stand out was that unlike traditional "flock" approaches, this was decentralized and did not have a "centralized" control structure.
Also, more additions have been made to this since the initial boids, adding things like fear and emotion as factors to the motion of the birds.
Generally being more numerically stable would mean that it would not necessarily converge and can oscillate to larger and larger variations. This is ultimately not desirable, so many times in explicit methods we must constrain our variables to a heavy degree in order to limit this behavior, thus showing a large benefit of implicit methods.
If we have, say, a current, or wave coming in from outside and to the left of our field, do we simply add a constant gradient over the whole region? Or do we add it over the lefthand side of the region and let future iterations take care of dispersing the current/wave?
In the lecture the professor mentioned that the pressure wave could move at something like 1000 m/s, so any slower frame rate that doesn't capture that movement could result in instability
That's quite interesting! I'm not sure, but my guess is that the surface might become less resistant (relative to every other) to really small wrinkling since there's now no direct force keeping points that are two apart close together. So I wouldn't be surprised if larger wrinkles/bends were a bit harder to create than without any red springs, there would still be mini-bends at each point. I can't really think of a material that would be well modeled by this, but maybe it's good for something that shrivels up in a weird fashion.
In practice, I can imagine that accounting for folding makes the number of forces increase rapidly. For example, if we folded a paper multiple times and then unfolded it and pulled on opposite corners, there are a lot of different forces resisting the pull. Moreover, if you pull hard enough, the paper becomes completely flat. In practice, do we actually calculate each of these forces, or do we ignore the small forces, ones that we determine don't matter (or does this make simulation look bad)? For example, if we made a very soft crease as opposed to a very hard crease, or maybe ignoring the folds altogether when the paper is flat and the main force is the paper resisting tearing.
In a vector field, the divergence represents the amount of vector field flow that originates from or converges towards a given point. While the divergence itself is a scalar quantity, it is often visualized using a vector plot where each vector represents the direction and magnitude of the flow at a specific point in the field. The direction of the vectors indicates the direction of the flow, while the length of the vectors represents the magnitude of the flow. When the vectors are close together or pointing towards a central point, it indicates a high degree of convergence or compression, resulting in a positive divergence value.
Question: I know that hair or fur should be difficult to render but I'm wondering how do artist usually do when creating the "backbone" of these hair before rendering? Do they typically draw it piece by piece?
Modeling fabric with a spring structure can be done in a variety of ways, depending on the level of detail and complexity required for the specific application. A simple 2D mesh can be used to model the behavior of a fabric under normal loading conditions, where the fabric is primarily subjected to tensile stresses. The springs in the mesh can be arranged in a regular pattern to represent the weave of the fabric, with different spring constants used to model the different types of yarns or fibers in the fabric.
Yes, the structure of a spring is determined by the type of material being used. Different materials have different properties that affect how they behave under stress and strain, and this in turn affects how a spring made from that material moves.
@tilenull I think you're right that rubber just happens to be stretchy and bouncy like springs are, whereas the behavior of cloth is more complex so it can't be modeled as realistically with spring systems.
I wonder what impact adding the red springs in a different configuration would have, such as connecting them over every two points instead of every other point.
Is this lagrangian V-T (potential minus kinetic energy)? If so, can deriving the hamiltonian of naiver-stokes provide more computationally efficient solutions? In a hamiltonian's graphical representation we can view its phase space to understand how the system will evolve given initial conditions. Hamiltonian space would also give a quantitative measurement for Δt that is a heuristic for efficient simulation in euler's method.
Just for fun and better understanding. 3B1B has a bunch of videos visualizing fields or fluid flows like this one:https://www.youtube.com/watch?v=rB83DpBJQsE.
Another resource for a similar phenomenon is boids which simulates the flight of birds in 3D space. I think 3D crowds would be more complex than 2D crows because 3D is an exponentially larger space.
For those kinds of simulation tests, how do they know the simulation matches the actual forces? It seems like most of this is modeling the general form and appearance but isn't as concerned with whether the forces are really accurate.
I think the idea is that since divergence represents net fluid flow, if divergence is zero, that means the rate of fluid that enters a given volume is the same as the rate that leaves. So then you can't store an increasing amount of fluid in the same space, i.e. you can't compress it. Also, I believe gases are considered fluids and would be an example of a compressible fluid. There was another comment from sberkun a few slides ago that mentioned most liquids are incompressible.
Another view to hack the problem: Any part of a spring should be affected by the same force. Hence, the different force assumption should be fake.
Then, for detailed explanation: Think about the equation for the bottom end of the spring:F=kΔl. Then, we furtherly analyse the middle point of the spring, we have F=ktop halfΔxmiddle=21ktop halfΔl. Since the "same force" theorem, ktop half=2k
In fluid simulations, adaptive techniques can be used to dynamically change the grid resolution, focusing on areas with high levels of activity or turbulence. This allows for efficient simulations without sacrificing accuracy in crucial areas.
@mylinhvu11, of course you can. Fourier transform can be applied on any systems with similar mathematical form. In fact, since the good quality of ex, it should be a powerful tool when solving any differential equation.
I think we would need the red springs and the other springs from the previous slides since it looks like we're supposed to implement it in the project. I think it's necessary to give a realistic form to the fabric when interacting with other forces.
To optimize rendering performance, LOD (level of detail) techniques are used to reduce the complexity of hair models depending on the distance from the camera. When a character is far away from the camera, their hair will be rendered with fewer individual strands, while close-up shots will have more detailed hair. (Very similar to the idea of Mipmaps!)
I think before without those springs, the sheet could just fold over without encountering any resistance from the springs. But with the red springs, if it tries to fold/bend, either the red springs get stretched or squished, which resists the movement.
Yes, the damping coefficient is ditermined by the material and the environment(temperature, atmosphere, etc).
Divergencecan represent the rate of change per unit volume when the fluid is in motion. Simply put, the area where the fluid is concentrated in motion is the spoke, and the area where it is dispersed in motion is the divergence. A negative divergence value is an irradiation
I think we can't see angle in the view of point, but the shape.You can see in the slides there are several white points in the body part. I think it may define the body shape and angle in a bigger perspective. Points are only needed to simulate the body.
By using PCA, we can know which movement is most important and which movement can be ignored. It is a good way to simplify our system and point out the important part.
How do we determine what damping coefficient to use? Is it determined from measurements of the actual material?
@ShaamerKumar pretty much! More formally, an ideal fluid has no resistance to flow. So, when you apply a stress to it, it deforms perfectly linearly with respect to the stress applied. However, unlike a perfect solid, when the stress stops, fluid cannot, on its own, revert back to its original state (like a foam cube could). Thus, the deformation is permanent. You can read more about the math here: https://geo.libretexts.org/Courses/University_of_California_Davis/GEL_056%3A_Introduction_to_Geophysics/Geophysics_is_everywhere_in_geology.../01%3A_Rheology_of_Rocks/1.05%3A_Viscous_Deformation
To add onto the comments about sand and viscous fluids, sand doesn't have a shape it reverts to in the sense that it has a specific "steady state" shape like a solid. You can really just think of sand as a particle model of fluid like in the previous lecture, but with much larger particle size. With regards to viscosity, you can simulate this by just checking locations within some radius around each location to see if there is material there, and then do some fancy physics calculations.
With the Euler's Method numerical integration method we are using, we will over-estimate the acceleration a little bit for every timestep and also underestimate the deceleration. As a result, the speed of the particle will continue to be greatly over estimated. I believe this is what the professor means when he says the system will blow up.
@william-fei One common thing that particle-based fluid simulations can be used for is testing dams or coastal defense against floods. This is important for hydrologic response and sediment transfer too.
The Navier-Stokes equations model acceleration of a fluid by adding together all the active internal and external forces acting on the matter.
The advection term represents that in the grid simulation at a point the fluid that is flowing will move and be replaced by some other fluid. The replacement fluid could potentially have some different velocity than what was originally there so the advection term captures this effect. This is a change in apparent velocity that is not due to the actions of the active forces.
As an interesting side note, these equations are listed among the $1 million Millennium Problems for proving that a unique smooth solution exists (or doesn't exist) for any initial conditions.
I found this article explaining what exactly light field photography is and how it works! https://www.makeuseof.com/what-is-light-field-photography/
Really cool application to astronomy again! So there are two main types of optical telescopes: refractive and reflective telescopes. Refractive telescopes have lenses, and therefore have this issue where, as light travels through the atmosphere, the image becomes blurred due to aberrations in the lens. There are even errors in the color due to chromatic aberrations. Today, there are complex dynamic optical aberration-corrective systems to counter this effect. Reflective telescopes avoid this problem as they have mirrors instead of lenses!
Some intuition for indexes of refraction: the higher the index, the slower that light travels through the medium, and thus the more bent it gets as it travels through the medium.
What is the realistic camera model used in industry (i.e. gaming, animation,etc.) today?
Exposure time is super important for applications like astrophotography. Longer integration times per photo mean that you’re able to collect more light on the CCD’s pixels, allowing you to get brighter images. However, taking longer photos means you get more blurring from the movement of the Earth. To fix this, you can take multiple photos with short exposure times and add up (and normalize) their pixel brightnesses. Not only can you “see farther” into space, these normalized images have far less noise than the original image!
I found a cool link that explains this model, and compares it to Blinn Phong shading and the Kajiya model: https://ephere.com/plugins/autodesk/max/ornatrix/docs/7/Marschner_Shader.html#Marschner-Shader
To answer @madssnake, the index of refraction n = c/v, where c is the speed of light in vacuum and v is the speed of light in that particular material.
In lecture there was a lot of emphasis placed on how this datastructure can get tricky when it comes to indexing. I assume a solution to this would just to have a normal grid and then store a stuct inside each entry that has all the values, that way there is no problem with indexing. Is there a reason we don't do this? I assume it might be a bit slower given the extra structures, but is it so much slower that it really wouldn't be worth it?
Could I get some clarification on what separates a stable fluid versus an unstable fluid? The simulation does well to simulate the liquid motions, but I'm curious what would happen if it was unstable. Do unstable animations just not render?
I'm curious how to implement how much motion occurs within the liquid and also how to activate the color changes into white to illustrate the crashes of the waves. It's pretty neat how it moves around the lighthouse and stays within the bounds of the animation.
What variables do we implement into a render to determine how a specific material moves in an environment? In the reflective, microfacet materials, the alpha and k values determined the metal and how much it reflected. How can we translate that into animation and physical movement?
This equation is the same as we're learning in Systems and Signaling to translate between frequency responses. I'm curious if these signals will relate and convert to the Fourier transform to take out each point of the mesh and determine its specific movements in some way. It might help in combining and separating the movements from the different springs.
The professor mentioned a benefit of Eulerian formulations being that you don’t need to have an explicit shape which is the case with the fluid water. But how does this work with sand (which the Prof also said can be modeled as a fluid in a previous slide) which does have a shape that it reverts to (despite being very small grains)?
I think the easiest way to think of this is by imagining in your head what it would like like when the two points are pulled. The corner points will go from being in a square configuration to being diamond shaped, meaning they will be longer in one direction. More specifically the distance between the two pairs of opposite corners in the rectangle will be greater than and less than root 2. This holds for the whole mesh, since the springs are all linked up together.
what even is an incompressible fluid? wouldn't they just turn into gas or something. What is it's applications
what about viscous fluids that hold onto each other? I know they don't remember their shape but they bond together, and thicker liquids can create ribons when you disturb them or even peaks
What causes the bumps near the top left surface of the mirrored sphere on the left? Is this just due to the corners of the walls? Also, why do we see such a harsh glare on the shadow of the right sphere and on the right wall?
Responding to the above comment: Maybe in applications like games or visual rendering, you’d decide this based on the aesthetics of the image you’re trying to render. In reality, light bounces infinitely, and this can be handled in code with a Russian Roulette, as described later.
Monte Carlo simulations are used a lot in systems with many particles since, as later mentioned in the lecture, they provide an unbiased way of representing the system. I use Monte Carlo simulations in tandem with machine learning to simulate high energy particle events in my research!
Responding to the comment above: I would guess that you’d have to balance out rendering time with the smoothness of the image that you want, and that this would vary from application to application. If you were simply testing a certain type of sampling method, less sampling rays would be appropriate. If you were, on the other hand, rendering a high-quality image, you may want to invest more time in rendering with more rays.
If the 6 sides of a cube (3D) implemented this string structure, would this cube be able to resist shearing as well? Or, will there need to be spring supports through the middle of volume of the cube?
@Sicheng-Pan I would imagine that this varies a lot based on the problem we are trying to solve, but ideally we would minimize the error while maximizing efficiency. Through sampling for the same issue multiple times, it probably isn't too difficult to find an ideal step size for a particular problem, but I don't think (afaik) there is some global estimate for what the 'best' step size is.
For anyone confused about the instability that this can cause, a good example that really solidified my understanding of this was the code attached to the most recent discussion. Using that example, we are able to see that regardless of what parameters we change (like increasing the timestep), we are never really able to recover fully from a diverged answer, since each position is computed using the previous values. In an example we did in my discussion, we saw that even increasing delta(t)by a factor of 100x made the rope only temporarily stable, until it diverged and we eventually saw the instability of forward Eulers.
@bbcd0921 the benefits were mentioned, but it is important to note that there are some tradeoffs when using inverse kinematics. Though it speeds up computation, the method is unstable and can result in getting no answers or multiple answers which is typically undesirable.
Just check the dimension. nabla^2 p is a scalar, while u* and u+ are vectors.
why does the algorithm still work even though we don't rotate our vector values based on flow? wouldn't we trace in wrong directions?
Curious what an example of the rules becoming unstable would look like, hard to imagine since they could be arbitrarily set anyways.
The professor mentioned hierarchical methods for this by clumping groups of stars together which kind of reminded me of BVH and KD trees, wondering if the method is similar.
I believe it should be nabla squared. If we look at two slides ago, we are solving for nabla dot u* which contains the nabla squared term on the other side. We then use that equation to solve for pressure.
what is the inspiration behind constrain divergence to be zero by projection? I'm struggling to understand this. Does this capture the "incompressible" property?
Are the unique ways that different materials shatter also due to plastic deformation?
I was curious about this as well, is it because of how stretchy and bouncy rubber can be compared to actual cloth?
Might be a random question, but I was looking at all the comments and just realized that "human hair" really cannot be represented by a single model because of how much it varies under different conditions. Wet hair behaves very differently from dry hair, dirty hair from clean hair, etc. I wonder if there has been efforts to model hair under these variety of conditions? And if so what are the challenges presented by them?
For "better" cameras, the sensors can have more pixels which can capture more light and provide better image quality at higher ISOs.
@adityasingh7311 I think that term is referring to splitting the radiance evaluation within each recursive call. So you don't recurse on the direct lighting, and you do recurse on the indirect lighting
@vhlee7, it seems like those terms are primarily used for hair and fiber modeling! I did some digging and couldn't find applications for other areas.
The forward (explicit) method is unstable for large step sizes. The proof basically just involves some algebra and bounding the growth of the forward method by some function, and then showing that the growth factor results in exponential error if your step size is too large. See: http://www.math.iit.edu/~fass/478578_Chapter_4.pdf. However, by using the backwards method, we no longer have the stability issue, see: https://en.wikipedia.org/wiki/Backward_Euler_method. However, this comes at the cost of increased computational complexity.
Generally, you likely wouldn't be able to check if your motion model is absolutely correct without just rendering it, as there really isn't any easy way to tell what your model will do without just simulating it. However, this is why you oftentimes see really coarse subdivision surfaces with no shading during the motion stage of animation as it will render quickly so you can afford to just render the scene to see if you are correct. I'm sure there is also a fancy formal verification/ML model that can prove the correctness of your numerical animation model, but that might be a bit overengineered.
Is the viscosity term in this equation? On slide 20, the viscosity term was ρv∇2u, but I don't see it here. Is it already ommitted?
Alpha is the plastic flow rate, or the ease of flow of a plastic material. Gamma is the plastic yield point, or the point of stress at which a material begins to deforms plastically.
Viscoelasticity is a very important feature part of many automobile bumpers. Viscoelastic materials are mainly used there to help prevent electrc shock. They are also used in computer drivers to protect from mechanical shock, and also for shoe insoles where they protect from impact transmitted to a person's skeleton.
One cool application of the semi-lagrangian advection method is with shallow water equations as shown in this article https://journals.ametsoc.org/view/journals/mwre/116/8/1520-0493_1988_116_1587_aotslm_2_0_co_2.xml. It talks of how using the method with grid-point numerical weather prediction models allows for much larger time steps.
One of the coolest uses of simple motion damping is with the suspension system of an automobile. An automobile will have a shock absorber attached to the main suspension spring of a car. These shock absorbers introduce the damping forces which reduce the vibrations.
The left image here reminds of how in different parts of game design, adaptive simulation is the way different video games, especially sports game use to simulate character movement. It's used a lot in games like Fifa, NBA 2k, and other sports game to simulate player movement.
We can simulate the velocities of the fluid on the fluid gird, so how can we convert this to actual renderings of fluid? For the other approaches mentioned here the rendering mechanisms are fairly straight forward.
Since the divergence is a scalar, what does the vectors in the corresponding graph means and how are the directions and magnitudes of the vectors relate to the divergence?
I remember earlier how rendering hair was very difficult for movies like tangled, I wonder how they have optimised this
this is so cool, I wonder how large scale implementations are made efficient
what do the gamma and alpha values adjust here! I wonder if there are more parameters to add to make this more intricate
"Problem: Pressure waves move fast so this explicit method must use very small timesteps or go unstable." Why is this a problem? How small could the timesteps be that it becomes an issue? I feel like the fluid simulations I've watched were at such high FPS already
@orenazad Thank you for sharing this video! There's a crazy amount of detail that goes into these simulations. So satisfying to hear all the factors they had to consider then see it all finally come together. This video makes me excited to go deeper into this stuff
Thanks -- to clarify you mean more numerically stable? Like they won't blow up to infinity or 0 when hitting a wall or a sudden physical obstacle that obstructs movement?
Is this the same formula we would use to calculate gradient descent? It's the algorithm I learned in data 100 that traverses down the gradient until finding the bottom-most point.
How would particle-based fluids be used in other fields beyond computer graphics such as in scientific or engineering simulations? I remember seeing something like this in a civ-e elective
@rsha256 Yes, explicit methods are generally more simple and easy to compute. We would more likely use explicit methods when we don't need perfect precision. But implicit methods are more accurate - and they're stable
why is it that for ideal fluids deformations are permanent? is this the idea of fluids filling any container i.e cannot take any shape it wants?
How do we know what threshold to use? Also this method still accumulate errors, and this might be a problem for many numerical methods.
How does the added red springs help to resist out of plane bending?
Adding to @prannaypradeep999, I think that is why phone camera lens are often super wide-angle. Because only this way, the phone camera would have a reasonable 35mm equivalent focal length
@yzliu567 my understanding is this term describes reflection, and the half vector is the vector that light is reflected on.
https://photographylife.com/autofocus-modes#phase-detection-af-vs-contrast-detection-af-vs-hybrid-af
Interesting article here that covers some of the pros and cons to phase vs contrast autofocus. Because Phase detection AF doesn't have to 'probe' the image to find the best spot, it is much faster than contrast AF. However, it appears contrast AF works much better in low light situations. Most modern cameras seem to have a hybrid mode that combines both and also lets you switch between them.
Comments