icswim commented on slide_041 of Radiometry and Photometry ()

I'm a bit confused as to why we need to project $\Omega$ onto the plane. From what I understand, we project O onto the unit sphere in order to use our sterradian definition of radiance. However, if we're trying to calculate the irradiance from the uniform area source from the center point of the hemisphere, why do we care about Omega's projection?

Thanks so much!

kaj011 commented on slide_063 of Intro to Signal Processing ()

I think when there are a lot of pixels and kernel size is small, a filter by multiplication in the frequency domain is more efficient because it requires one multiplication whereas convolution requires a lot of mappings.

kaj011 commented on slide_047 of Accelerating Ray Tracing ()

This concept is very similar to most of the tree-based machine learning algorithms which try to minimize entropy which is a cost in a similar manner.

kaj011 commented on slide_009 of Intro to Ray Tracing ()

In the project, we convert image plane into a unit area. I still don't understand why we should do it. Could anyone please explain?

kaj011 commented on slide_007 of Intro to Ray Tracing ()

Regarding the discussion topics, I think if there are a lot of objects behind a big object, we don't need to check their visibility. So, in this case, ray casting is better because it only looks at the regions that are visible.

k-vent commented on slide_028 of Intro to Ray Tracing ()

Another test is if tmax < tmin

k-vent commented on slide_028 of Intro to Ray Tracing ()

If after taking the intersections we find tmin or tmax to be less than 0 or not on the planes, the ray misses the box.

tpdf usually depends on the illumination of the reflecting light ray. If tpdf is high, the light ray is still strong so we probably shouldn't stop. On the other hand, if illumination is zero, there is no point in casting another ray since the reflecting ray has run out of energy. We do not worry about infinite recursion because we also limit the maximum number of recursions with ray.depth

k-vent commented on slide_053 of Accelerating Ray Tracing ()

Here SAH is the ratio of the surface area of the primitives to the bounding box of their partition. A low cost correlates to an high ratio in both partitions.

VortexNerd commented on slide_027 of Intro to Ray Tracing ()

I think the slabs in this context are the "chunks" of the axes spanned by the box. So in 2D you have two slabs, the [x_min, x_max] slab and the [y_min, y_max] slab. This intersection just involves finding the ray intersection for each slab independently and taking their overlap. Extending this to 3D will just add one more slab.

I think there's an error in this slide. (random01() < tpdf) doesn't makes sense. For example, if the termination probability is one, this will always recurse. Another example: if the termination probability is zero, this will never recurse. Shouldn't it be something like (random01() < (1 - tpdf))

fluorine commented on slide_027 of Intro to Ray Tracing ()

3 pairs of slabs. Not just 3 slabs. 3 pairs of slabs is 6 faces.

sam commented on slide_049 of Radiometry and Photometry ()

I have trouble connecting the units of these terms with what the terms are actually useful for, so here's a stab at explaining them simply:

Suppose we have a point light source. Radiant Power (Flux) refers to the total amount of energy the light source emits per second. For example, if I compare two light bulbs, plugging in the one with more Radiant Power will cost me more on my electricity bill than the one with less.

Let's trace a single ray of light outward from the point source. Radiant Intensity refers to the power emitted by the light source along that line. So, if we add up the Intensities of all the possible outgoing rays, we get back the Radiant Power.

Now, let's suppose we have an area light source (eg. a computer monitor) rather than a point light source. We can treat that area light source as if it were a big grid of point sources. The Radiance refers to the power emitted by a particular point on this grid in a particular direction.

Finally, suppose we have a point on the ground and some light sources overhead. We can take draw a ray leaving the point and hitting one of the lights. That ray has some Radiance from the light source. If we add up all the radiances from all the possible outgoing rays, we get the Irradiance.

cs184-aby commented on slide_029 of Intro to Ray Tracing ()

the line p' is on is the line x = p'.x or in 3D the yz-plane x = p'.x .

cs184-abj commented on slide_029 of Intro to Ray Tracing ()

What is the line p' is on then? Is that the x-axis?

ikarlsson commented on slide_029 of Intro to Ray Tracing ()

In this case "perpendicular to x-axis" refers to that the line we are intersecting with is perpendicular to the x-axis. This simplifies the math a bit (the equation to the right of the diagram).

Edit: Just an added note, the line we are intersecting with can be a line attributed to some bounding box or bounding volume.

cs184-abj commented on slide_029 of Intro to Ray Tracing ()

Can someone help clarify the 'perpendicular to x-axis' picture for me? I'm a little confused as to what is perpendicular to where. Which plane is represented by the two vertical lines?

xiangzhengmao commented on slide_057 of Global Illumination 2 & Path Tracing ()

here tpdf is the probability of not terminating, so (1-tpdf) is the probability of terminating, but shouldn't it be the probability of not terminating? Otherwise we are not even allowing tpdf to be 1

jcai commented on slide_076 of Splines, Curves and Surfaces ()

For a Bezier surface of degree $(n,m)$, we have a control cage with $(n+1)(m+1)$ control points. Then the number of linear interpolations for the first stage is equal to $(n+1) * \dfrac{m(m+1)}{2}$---$n+1$ curves, each with $m+1$ points. The final interpolation for $n+1$ points would require $\dfrac{n(n+1)}{2}$ interpolations. In total, this turns out to be $(n+1) * \dfrac{m(m+1)}{2} + \dfrac{n(n+1)}{2}$ interpolations.

jcai commented on slide_052 of Splines, Curves and Surfaces ()

A Bezier curve of degree $n$ will require $n$ subsequent stages of interpolations, leading to $\dfrac{n(n+1)}{2}$ total linear interpolations.

Emmiemmie commented on slide_076 of Splines, Curves and Surfaces ()

This diagram is very helpful for project 2 (part 2).

carlosflrs commented on slide_013 of Splines, Curves and Surfaces ()

Here it was mentioned that the derivatives don't match at the end points. I'm not entirely sure what that means. I'm thinking that if the derivatives match at the end points that means that we have a smooth line through the two points. Hence we can generalize this to be able to correctly model a surface?

agarlin18 commented on slide_040 of Texture Mapping ()

What do s and t refer to?

provi commented on slide_040 of Texture Mapping ()

Instead of using floor(x)+1, you should use (int)(x+0.5) to find the nearest integer.

Edit: Sorry, was not reading correctly.

Edit2: http://www.tutorialized.com/tutorial/Bilinear-Filtering-101/42364 this link will help a lot.

provi commented on slide_027 of Texture Mapping ()

I'm a little confused here. Shouldn't the left image get clipped by the screen? Therefore, only the middle part of the texture space gets sampled?

htvu commented on slide_047 of Texture Mapping ()

Let $M_i$ denote the memory needed to store the level $i$ texture. Since each level is $\frac{1}{2} \times \frac{1}{2}$ downsampling of the previous level, we have $M_i = \frac{1}{4}M_{i - 1}$.

Thus, the total storage of $n$-level mipmap is: $\sum_{i = 0}^{n - 1}M_i$.

We can bound the total storage by assuming there is an infinite number of levels:

$$\lim_{n \rightarrow \infty}\sum_{i = 0}^{n - 1} M_i = \lim_{n \rightarrow \infty}M_0\sum_{i = 0}^{n - 1} \left(\frac{1}{4}\right)^i = \lim_{n \rightarrow \infty}M_0\left(\frac{1 - \left(\frac{1}{4}\right)^n}{1 - \frac{1}{4}}\right) = \frac{4}{3}M_0$$

Therefore, the storage overhead cannot exceed 33% of the original texture.

htvu commented on slide_019 of Transforms 1 ()

Shear parallel to $x$-axis (in the slide): $$\begin{bmatrix}x' \\ y'\end{bmatrix}= \begin{bmatrix}1 & s \\ 0 & 1\end{bmatrix} \begin{bmatrix}x \\ y\end{bmatrix}$$

Shear parallel to $y$-axis: $$\begin{bmatrix}x' \\ y'\end{bmatrix}= \begin{bmatrix}1 & 0 \\ s & 1\end{bmatrix} \begin{bmatrix}x \\ y\end{bmatrix}$$

htvu commented on slide_018 of Transforms 1 ()

$$\begin{bmatrix}x' \\ y'\end{bmatrix}= \begin{bmatrix}-1 & 0 \\ 0 & 1\end{bmatrix} \begin{bmatrix}x \\ y\end{bmatrix}$$

htvu commented on slide_110 of Intro to Signal Processing ()

For a $n \times n$ supersampling, the offsets are: $$\frac{2k - 1}{2n} \qquad k \in [1, n]$$ For example, in $3 \times 3$ supersampling, the offsets are $\frac{1}{6}, \frac{3}{6}, \frac{5}{6}$.

htvu commented on slide_048 of Digital Drawing ()

In the previous slide, we define the normal vector in the counter-clockwise direction: $N = (y_0 - y_1, x_1 - x_0)$ for the ray from $P_0$ to $P_1$. Thus, $L_i(x, y) > 0$ for all the points in the counter-clockwise half-plane divided by the line from $P_i$ to $P_{i + 1}$. Therefore, the positive test $(L_0 > 0 \wedge L_1 > 0 \wedge L_2 >0)$ only works if we list the points $P_0$, $P_1$, $P_2$ in counter-clockwise order. To account for the clockwise order case, we also need to do the negative test $(L_0 < 0 \wedge L_1 < 0 \wedge L_2 < 0)$.

fluorine commented on slide_053 of Splines, Curves and Surfaces ()

The discussion today (discussion 3) was super helpful in understanding this. This was also a pretty fun activity to do.

cs184-acd commented on slide_051 of Splines, Curves and Surfaces ()

I remember someone in lecture was asking about an intuitive way of thinking about recursive corner cutting; I tend to think of it as a sculptor chipping away at a block of marble. The first chips are likely to be quite large to quickly reduce a block into the desired general shape, but as the sculptor chips hard edges away, they get more and more refined to achieve smoother curves. Hopefully that's kind of the right idea!

sam commented on slide_044 of Splines, Curves and Surfaces ()

Once again, to clarify the notation used here:

Similar to the equation for the Catmull-Rom Curve (and other interpolation curves), $P(t)$ takes a value $t$ in $[0, 1]$ and computes the corresponding point on the Cubic Bezier curve. That curve interpolates between $p_0$ and $p_3$, so $P(0) = p_0$, $P(1) = p_3$, and $P(0.5)$ is the point halfway along the curve.

In addition, the $B_0^3(t)$ coefficients in the resulting equation has the same notation as a function applied three times but the 3 in the exponent simply means that this is a coefficient of a Cubic Bezier function. A quadratic Bezier function would have coefficients with a $2$ in the exponent.

Hope that helps!

sam commented on slide_039 of Splines, Curves and Surfaces ()

To clarify the notation used here:

$P(t)$ takes a value $t$ in $[0, 1]$ and computes the corresponding point on the Catmull-Rom curve. That curve interpolates between $p_1$ and $p_2$, so $P(0) = p_1$, $P(1) = p_2$ and $P(0.5)$ is somewhere in between. Hope that's helpful.

eli_lipsitz commented on slide_052 of Splines, Curves and Surfaces ()

A couple of years ago I made an interactive visualization of the de Casteljau Algorithm.

Instructions:

1. Click on the big rectangle to set control points (as many as you'd like -- it doesn't have to be a quadratic or cubic Bezier curve)

2. Press 'Go' to animate the drawing of the Bezier curve (along with the intermediate points/lines)

3. Drag the '%' slider to view any level of interpolation at any speed you want.

4. (press 'Clear' to start over -- you can't remove points individually)

brianchu commented on slide_093 of Intro to Signal Processing ()

Are we saying that a pixel corresponds to some range of x and y values in the domain of f(x,y)? E.g. pixel 0 might take on x-values [0,10] and y-values [0,10]

Felix commented on slide_052 of Texture Mapping ()

C = (D-?D?)C(D) + [?D?+1-D]C(D+1)

k-vent commented on slide_040 of Texture Mapping ()

This can also be seen as the four closest pixels to the uv coordinate.