
Repeat steps 5–7 for your fourth prediction and observation, using all three mirrors.Repeat steps 5–7 for your third prediction and observation, using two mirrors.Remember to take a picture if you are using a digital camera, or making a drawing.Do you see more, the same, or fewer reflections than you did with zero mirrors? Record your observations in the second row of the data table.Look into the kaleidoscope, which now has one mirror exposed.Write down your prediction in the second row of your data table.When you look into the kaleidoscope with one mirror, do you think you will see more, the same, or fewer reflections than you did with zero mirrors?.

Remove the kaleidoscope's eyepiece and pull out one piece of paper, uncovering a mirror.If you do not have a camera, you can make a drawing of what you see. If you are using a digital camera, get an adult to help you take a picture through the kaleidoscope's eyepiece.Do you see any reflections? Write down your observation in the first row of your data table.It will help if you aim the kaleidoscope at a plain background, like a wall or a piece of paper. Write down your prediction in the first row of your data table.When you look into the kaleidoscope, do you think you will see any reflections? Don't look just yet!.Now you are ready to make your first prediction.Push a piece of black cardstock into the tube, lengthwise, until it completely covers one mirror. In the next article, we’ll make an exciting leap and explore how Lucas Pope created the unique dithering aesthetic for Return of the Obra Dinn.Figure 9. We can use polar coordinates to deal with the radial symmetries that kaleidoscopes rely on far easier than we can with traditional coordinate systems. Kaleidoscopes are often used as a novelty toy, but they can be used to create striking effects. Or with three segments, you can sort of create an abstract Unity logo: If you plug in Effects/Kaleidoscope and fiddle around with the number of segments, you can create all kinds of effects, like a six-segment star: Now we can see what the effect looks like. private int segments = 4 // Find the Kaleidoscope shader source. We’ll do the inverse of all the transformations we made previously - we’ll use cos and sin on the angle to get back the x and y components of the float2 respectively, multiply by the radius to place them at the correct position, and add 0.5 to put the origin point back where it belongs. We haven’t sampled the image yet - to do that, we’ll need our UVs back in the classic Cartesian format. Now we can convert back to Cartesian coordinates. Using the min function, we’ll keep the angle unchanged if it is less than halfway through a segment, otherwise we’ll mirror it across the centre of the segment by subtracting it from segmentAngle. Therefore, each segment must reflect itself through the middle. If we converted back to Cartesian coordinates now, then the kaleidoscope won’t look right - there won’t be any reflection.
MAKE KALEIDOSCOPE IMAGE REFLECT ON WALL FULL
The full image will look like a single segment copy-pasted in a circle, where each segment is a wedge shape. Now that we know our position relative to a single segment, let’s talk about what one image segment looks like. The love and symbolism of colours reflect in a beautiful range of vibrant, rich and expressive designs to tell the story. Each segment in this context will contain a single reflection - so we’ll end up with two times _SegmentCount image fragments.Īngle = min ( angle, segmentAngle - angle ) We’ll only need to pass in one additional variable to our shader to denote the number of reflections we want - I’ve called it _SegmentCount.

Let’s jump into the shader, found at Resources/Shaders/Kaleidoscope.shader.

By converting an image represented by a traditional Cartesian coordinate system into polar coordinates, it becomes much easier to pick out a radial image segment and reflect it across the virtual mirrors. Because of the angles of each mirror, the images self-reflect, resulting in radial symmetry. Why is this helpful for us?Ī kaleidoscope reflects images across one or two mirrors. The point (1, 1) in the Cartesian system can be represented as and in the polar coordinate system. An alternative two-dimensional system, called polar coordinates, instead represents points by a distance, r, from the origin point and an angle, from a reference direction. You’re likely most familiar with the Cartesian coordinate system, where points are defined relative to two or more perpendicular axes which meet at an origin point. In geometry, there are many ways to represent coordinates. In today’s short article, we’ll create a shader that mimics the behaviour of a kaleidoscope by making use of polar coordinates. When looking through a kaleidoscope, it is often possible to rotate the portion containing the mirrors so that the image and its reflections shift. Kaleidoscopes work by reflecting light in at least two angled mirrors to form symmetrical patterns.
