How to visualise 10000 cell volume

1 次查看(过去 30 天)
I have tried to view this system in 3D using patch. It is very slow. I've seen other software do this much much faster, even with transparency. What am i missing?
  2 个评论
Fabio Freschi
Fabio Freschi 2019-9-25
Any data? I visualize easily millions of patches but it is difficult to help without a simple example of the data
Jan
Jan 2019-9-25
Please explain any details. How are the "10000 cell volume" represented? If you post code and data, it is likely, that the speed can be improved.

请先登录,再进行评论。

采纳的回答

Fabio Freschi
Fabio Freschi 2019-9-25
Load nodes and faces in a unique structure and plot all patches in a single command
tic
nodes = []; faces = [];
for i = 1:length(PatchWork)
faces = [faces; PatchWork{i}.FaceVertices+size(nodes,1)];
nodes = [nodes; PatchWork{i}.VertexXYZs.'];
end
figure
patch('Faces',double(faces),'Vertices',nodes,'FaceColor','red');
view([1 1 1]);
toc
>> Elapsed time is 1.018881 seconds.
  11 个评论
Fabio Freschi
Fabio Freschi 2019-10-11
The point is: if there are duplicated nodes, so that each face has its own set of nodes, so you won't have problems in using 'FaceVertexAlphaData'.
There is still the fact that you must address the specific property to the right node. and this may not be simple if your data are generated by an unknown software/function (like an independent mesh generator). I actually haven't check your data in details, but you may know what you really have as input.
I usually work with non-duplicated nodes, like in finite element meshes. In this case, for example, one of your corner nodes is hsared by three faces. Suppose that this corner node is the first node for all 3 faces: so you cannod specify different transparencies for these faces.
Pierre Lebel
Pierre Lebel 2019-10-11
Thanks again,
Those are several good points.
  • The first is that in my case, there are 10000 cells each with eight vertices and six faces. Vertices are [80000x3 double] and so, are independent for each cell. Faces are [60000x4] and point to the vertices. Each vertex is used three times (3-faces) and only in one cell.
  • Color and transparency are both assigned by face. The colors appear to be assigned correctly.
  • Your last point is good, but because I use duplicated nodes, not really applicable.
I think I should ask Mathworks about the 'FaceVertexAlphaData' feature, but your approach (above) will certainly work, although not quite as elegant or versatile as I would like.

请先登录,再进行评论。

更多回答(1 个)

Pierre Lebel
Pierre Lebel 2019-9-25
variable "PatchWork" attached,
code as follows:
for ib = 1:10000
zz(ib) = patch( app.UIAxes2 ...
, 'Faces',PatchWork{ib}.FaceVertices ...
, 'Vertices',PatchWork{ib}.VertexXYZs' ...
, 'FaceVertexCData', rand() ...
, 'FaceColor','flat');
end

类别

Help CenterFile Exchange 中查找有关 Graphics Object Programming 的更多信息

标签

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by