patchHandle: handle to patch object
texture: texture to map onto the surface defined via patch
Texture can be a grayscale or an RGB image
none - the texture is mapped onto the patch identified by
patchHandle by reading the image at the [x,y] coordinates
of the vertices of the patch. The vertex coordinates are
rescaled so that a maximum of the image can be read.
[xx,yy,zz] = ndgrid(-100:100,-100:100,-100:100);
img = xx.^2 + yy.^2 + zz.^2 < 99^2;
img = convn(img,ones(5,5,5)/(5*5*5));
p = isosurface(img,0.5);
ph = patch(p);
texture = imread('autumn.tif');
SEE ALSO patch, surface
Your documentation needs to be clearer. You are not doing actual texture mapping on the surface, you are just coloring each vertex (and linearly interpolating within a face) with the color retrieved from the texture. Very misleading
I tried your code on serveral images and it is not doing what it suppose to do. The patched region get filled completely with one color from the image.
Try this example:
clc; clear all; close all;
verts=[ 0 0;
faces= [ 1 2 3 4];
p = patch('Faces',faces,'Vertices',verts,.....
Fixed a bug due to a missing function (thanks Ken, for reporting!). Also, updated the function so that one texture can be applied to several patches at once.
Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.