主要内容

传热可视化

本示例演示了使用Simulink®3D动画™和MATLAB®接口来操作复杂对象。金宝app

在本例中,矩阵类型的数据在MATLAB和虚拟现实世界之间传输。使用此功能,您可以实现大量的颜色变化或变形。这对于可视化各种物理过程很有用。

我们使用预先计算的l形金属块中基于时间的温度分布数据,并将该数据发送到虚拟世界。这就形成了一个变化比较大的动画。

加载预计算数据

负载(“vrheat.mat”);

为VRML重塑对象

l型块的几何图形存储在'lblock'结构中。为了可视化的目的,块被细分为三角形面。Surface facet顶点坐标存储在'lblock.mesh中。P '域和三角形边由顶点数组的索引来描述。

Vert = lblock.mesh.p';

VRML中的一组facet被定义为一个顶点索引向量,其中facet以-1分隔,因此我们需要对顶点数组进行适当的转换。VRML中的索引是从零开始的,因此从最初存储在基于1的索引数组lblock.mesh.e中的所有索引值中减去1。

facet = lblock.mesh.e(1:3,:)-1;facet (4,:) = -1;F = facet;F = F (:);Facets = Facets ';

准备颜色图

现在我们准备一个颜色图来表示不同的温度等级。MATLAB内置的“jet”色图就是为这些目的而设计的。

Cmap = jet(192);

应用色彩图

“lblock.sol。u' field contains a matrix describing the temperatures of vertices as time passes. We have 41 precalculated phases (1 is initial) for 262 vertices. We need to scale the temperature values so that they map into the colormap.

U = lblock.sol.u;ucolor = (u-repmat (min (u)、大小(u, 1), 1))。*(大小(提出,1)1);Urange = max(u) - min(u);Urange (Urange == 0) = 1;Ucolor = round(uccolor ./repmat(urange,size(u,1),1));

我们将计算第一个动画帧,这样我们就有了一些开始。

uslice = ucolor (: 1);colind = 0(大小(方面));colind (:, 1:3) = uslice(: 1:3) + 1(方面);colind (:, 4) = 1;Ci =冷;Ci = Ci (:);

数据已经准备好,我们可以加载世界。

World = vrworld(“vrheat.x3d”);打开(世界);

让我们启动查看器。一个多维数据集应该出现在查看器窗口中。

FIG = view(world,“内部”);vrdrawnow;

现在我们准备l型块。我们加载的VRML世界包含一个基本的立方形式,我们可以通过设置它的“point”和“coordIndex”字段来重塑成我们想要的任何形式,这表示顶点数组中的顶点坐标和索引。我们还将通过设置'color'和'colorIndex'字段来设置颜色。

我们首先设置颜色,颜色索引,顶点,然后顶点索引。顺序不是强制性的,但通常这样更好,因为我们可以确保当顶点比颜色多或索引比值多时,不会出现临时状态,这会导致一些顶点具有未定义的颜色或一些索引指向不存在的值。

world.IFS_Colormap。Color = cmap;world.IFS.colorIndex = ci;world.IFS_Coords。点=垂直;world.IFS.coordIndex = f;

使用VRML文本对象

文本注释也可以设置为合理的内容。

world.TEXT.string = {'时间= 0'};vrdrawnow;

动画场景

现在我们可以开始制作动画了。在查看器中查看。您可以在对象周围移动,或尝试设置其他呈现模式。例如,显示l块如何细分的线框模式。

I = 1:大小(u,2)暂停(0.2);Uslice = uccolor (:,i);Colind =零(大小(切面));Colind (:,1:3) = uslice(facets(:,1:3)+1);Colind (:,4) = -1;ci = colind ';ci = ci (:);world.IFS.colorIndex = ci;world.TEXT.string = {sprintf(“时间= %g”lblock.sol.tlist(我))};vrdrawnow;结束

在MATLAB®工作区中保存虚拟世界对象

当你处理完一个VRWORLD对象后,有必要关闭并删除它。这是通过使用CLOSE和DELETE命令来完成的。

关闭(世界);删除(世界);

但是,我们在这里不做。相反,我们让世界保持开放,以便您可以进一步玩它。我们将只清除使用的全局变量。

清晰的ci厘米提出colindf方面lblocknhuucolor;清晰的urangeuslicev绿色