Hi,<br><br>I have a vtk file, generated by the famous WriteToVtk.m file circulating in the web from a 3D matrix in Matlab.The format is kind of legacy vtk. I have tried to load the file in Paraview. The file loads but is transparent (I can just see the bounding box).<br>
<br>Can anyone help? What&#39;s the problem?<br><br>Best,<br>Negar <br><br>P.S: This is the mfile I am talking about:<br><div class="codecontainer"><pre class="matlab-code">function WriteToVTK(matrix, filename)
% WriteToVTK(matrix, filename)
%
% Writes a 3D matrix as a VTK file. View with paraview.
% The matrix must be 3D and is normalised (kind of).
%
% A sligthly old format is used because it is simpler.

% Example VTK file:
% # vtk DataFile Version 2.0
% Volume example
% ASCII
% DATASET STRUCTURED_POINTS
% DIMENSIONS 3 4 6
% ASPECT_RATIO 1 1 1
% ORIGIN 0 0 0
% POINT_DATA 72
% SCALARS volume_scalars char 1
% LOOKUP_TABLE default
% 0 0 0 0 0 0 0 0 0 0 0 0
% 0 5 10 15 20 25 25 20 15 10 5 0
% 0 10 20 30 40 50 50 40 30 20 10 0
% 0 10 20 30 40 50 50 40 30 20 10 0
% 0 5 10 15 20 25 25 20 15 10 5 0
% 0 0 0 0 0 0 0 0 0 0 0 0

% Get the matrix dimensions.
[N M O] = size(matrix);

% Get the maximum value for the normalisation.
mx = max(matrix(:));

% Open the file.
fid = fopen(filename, &#39;w&#39;);
if fid == -1
    error(&#39;Cannot open file for writing.&#39;);
end

% New line.
nl = sprintf(&#39;\n&#39;); % Stupid matlab doesn&#39;t interpret \n normally.

% Write the file header.
fwrite(fid, [&#39;# vtk DataFile Version 2.0&#39; nl &#39;Volume example&#39; nl &#39;ASCII&#39; nl ...
    &#39;DATASET STRUCTURED_POINTS&#39; nl &#39;DIMENSIONS &#39; ...
    num2str(N) &#39; &#39; num2str(M) &#39; &#39; num2str(O) nl &#39;ASPECT_RATIO 1 1 1&#39; nl ...
    &#39;ORIGIN 0 0 0&#39; nl &#39;POINT_DATA &#39; ...
    num2str(N*M*O) nl &#39;SCALARS volume_scalars char 1&#39; nl &#39;LOOKUP_TABLE default&#39; nl]);

for z = 1:O
    % Get this layer.
    v = matrix(:, :, z);
    % Scale it. This assumes there are no negative numbers. I&#39;m not sure
    % this is actually necessary.
    v = round(100 .* v(:) ./ mx);
    % Write the values as text numbers.
    fwrite(fid, num2str(v&#39;));
    % Newline.
    fwrite(fid, nl);
    
    % Display progress.
    disp([num2str(round(100*z/O)) &#39;%&#39;]);
end

% Close the file.
fclose(fid);

end</pre></div>
              
            
          
        
  


      
    
  
  


<p id="contactus"><a href="http://www.mathworks.com/matlabcentral/fileexchange/23416-writetovtk/content/WriteToVTK.m#" style="color:green;text-decoration:none;border-bottom:3px double" id="_GPLITA_0"></a><a href="mailto:files@mathworks.com"><br>
</a></p>

      

<div class="clearboth"> </div>