This submission is inspired by a newsgroup thread here:
The input is a m x n X-Y grid (equal intervals along both axes) with the value of Z(x,y) computed at each point as an input to the function. The output is a elevation.wrl VRML file that creates a ElevationGrid node with the appropriate coordinates.
Launch the startmeup.m file to do the conversion. Several surfaces are provided as example.
Since this is a version 1.0, several limitations exist and is open to improvement from the community:
1. The number of polygons are not optimized for the VRML. It simply operates on the same number of points provided.
2. The mesh grid defining the X-Y plane in MATLAB need to have equispaced intervals.
3. Z(x,y) needs to be computed by scanning along row X first and then for row Y.
4. No coloring information.
Note that the orientation of the reference frame in MATLAB needs to undergo change to conform to the VRML reference frame. (X->x, Z->y, Y->z)
Use the Scale node in the Tranform node of the VRML file to increase/decrease the size of the elevation grid. You can also texture it with an image to create landscapes.
You will need V-Realm Builder that ships with Simulink 3D Animation to view and edit the VRML file.
More information on the VRML ElevationGrid is here:
Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.