Is direct MeshRenderer vertex mutation (or dynamic Mesh building) possible?


I’m building a visualizer in Unity and I’ve hit a little bit of an issue.

My idea is to draw a line that corresponds to the spectrum, and keep a history of the lines to draw into a sort of “grid” behind it, building a mesh out of the lines that I have previously made.
Something like this (I know it’s not a music visualizer, but it illustrates my point well):

alt text

Just like this, I’d like to be able to have an array of “lines” and build them into a connected sequence.

I’m able to get a single line on-screen by using the LineRenderer on my main camera, but I’m not entirely sure how to go about either
a) Making multiple LineRenderers without making a huge mess out of the project
b) Using MeshRenderer to create a Mesh on the fly.

Any more information on choice b would be the best, I would imagine. Is it possible to dynamically create meshes in this fashion (building from a list of vertices)?


Have you tried looking into the documentation to find a class that might be useful?

The Mesh class is propably what you’re after. It has many examples how to use it. Note that there are additional examples on the different properties. For example if you want to create a skinned mesh, look at the bindposes.

You can generate or modify meshes at runtime - take a look at this topic in the docs. There are also some examples in this project from Unity.

NOTE: You can get sound samples or the audio spectrum from any AudioSource or the AudioListener with GetOutputData or GetSpectrumData - take a look at this question.