# How to make Abstract EM Waves material in Cycles?

I found out a cool image on Internet, and I want to recreate a similar scene (or an animation) with Blender (using Cycle). But after all of my researches, I didnt find out a way to make this type of material. I also tried a lot of different node trees, but no sucess... I hope that someone have some tips, and I hope that you'll understand me :). Thanks for reading. - A.C

• It's similar to this blender.stackexchange.com/a/64978/29586 (see final image of answer) – Rich Sedman Apr 2 '17 at 22:02
• Is there a way to make a 3D mesh, and then apply this kind of texture on it ? (Blue/violet on the edges, and transparent at the center line of the mesh) It could give a better 3D result, instead of a simple 2d plane. – Alois Coissard Apr 2 '17 at 22:43
• Is this like a cloth sim with turbulent air flow? Change the cycles material to get the blue effect. – 3pointedit Apr 3 '17 at 3:18
• @Aloiscoissard The same principle would work in 3D but the maths is much more complicated. At some point in the future I'd like to revisit it from a 3D perspective. – Rich Sedman Apr 3 '17 at 7:17

This answer https://blender.stackexchange.com/a/64978/29586 created a wispy material in 2 dimensions only. The same principles can be extended to create a similar volumetric material.

Starting with the Generated coordinates we can create a volumetric horizontal 'plane' simply by controlling the emission based on the Z coordinate. This could be achieved using Maximum and Minimum nodes to control the emission at certain 'heights' in the volume. However, using a Power function and other Maths nodes allows the cutoff to be varied and 'focused' as desired.

The emissions is around the plane Z=0 with full emission at Z=0 and emission falling off at either side, controlled by varying the Focus and Intensity input nodes to produce the following effect.

Adding in some Noise - controllable via a Mapping node - makes it less regular. The individual X and Y Scale factors can be used to stretch the noise into ripples and/or adjust for the dimensions of the containing mesh if required. Note that the output of the Noise texture is reduced by 0.5 so that the noise is centered around 0.0 and it can then be multiplied by a scale factor to allow the noise to be varied dynamically (the Mapping node can't be driven directly by an input value).

Adding a twist to the plane is complicated by the fact that the Mapping node does not provide inputs to very the values within the material - instead, we need to manually apply rotation based on the Y coordinate using matrix multiplication as described here https://en.wikipedia.org/wiki/Rotation_matrix. ie,

X = x.cos(angle) + y.sin(angle)
Y = -x.sin(angle) + y.cos(angle)


This can be achieved as follows :

Also, add a Color Ramp to fade out at the edges to limit the 'plane' to the range -0.5 to 0.5 (otherwise the rotated 'plane' will extend out to the edges of the mesh as it twists (rather than staying the same width)).

To replicate the effect in the sample image you can adjust the Color Ramp so that the edges are more pronounced and with the centre darker than the edges and blending between the two colors. It's important that the far edges of the color ramp fade out to black to limit the outer edge of the 'wave'.

For additional variation, add some modulation of the rotation by using an additional Noise texture to vary the rotation.

The final material is as follows :

Adjust the various Input nodes, Color Ramp, Texture Node Scales, until you get the desired effect.

Blend file attached

For ease of re-use, the nodes can be placed in a Node Group.

Note that 'Phase' parameters have been added to allow the phase of the waves to be controlled.

Positioning multiple meshes and animating the waves can produce the following result :