图片缩略图

Matlab网格PDF与3D交互对象

version 1.5.0.0 (11.2 MB) by 亚历山大Gramfort
导出三角网格到pdf与3D交互对象。
4.6
14评级

34下载

更新2010年1月10日

视图版本历史

查看许可协议

导出三角网格到pdf与一个3D对象。用matlab代码将matlab网格转换为IDTF。IDTF文件通过外部二进制文件转换为u3d。u3d文件可以通过pdflatex和movie15包嵌入到pdf文件中。用户可以与网格交互(缩放,旋转等)从adobe reader。该包包含演示数据和输出示例。

可以获得IDTF到U3D转换器的代码:http://sourceforge.net/projects/u3d/
或者重新包装的版本http://sourceforge.net/projects/mathgl/files/
感谢Michail Vidiassov。

该工具箱已在mac英特尔,linux和windows上进行了测试。

要测试运行脚本:demo_mesh2pdf.m

引用作为

亚历山大Gramfort(2021)。Matlab网格PDF与3D交互对象(//www.tatmou.com/matlabcentral/fileexchange/25383-matlab-mesh-to-pdf-with-3d-interactive-object),matlab中央文件exchange。检索到

评论和评级(37

Prateek Raj Gautam.

在mesh_normals(点,脸)
get(wp.'vertesNormals')返回[]在matlab 2020空矩阵,所以我编辑编码找到法单位向量如下。

我=“MESH_NORMALS”;

如果nargin == 0
eval((“帮助”,降低(我)))
返回
结束

高频=图(“可见”、“关闭”);
惠普=补丁(“顶点”,点“面孔”,脸);

i = 1:长度(脸)
=面临(我:);
B =点(一个“:);
a = b(1,:);
b = b (2:);
c = B (3);

ab = a - b;
ac =得了;

规范=交叉(ab、交流);
normMag =√和常态。^ 2));
法线(i,:) = norm / nammag;
结束

% normals = get(hp,'VertexNormals');
%关闭(高频);
%%使得正常单位规范
%norms = sqrt(总和(法线)。*结合(法线),2));
% gidx = find(规范);
%法线(gidx:) = -法线(gidx:)。/ repmat(规范(gidx), 1, 3);

也在mesh_to_latex文件中

我得到了错误
Face_vertex_data = 0.7* Face_vertex_data + 0.3*repmat(sum(max(normals*[ones(3,3), -ones(3,3)],0),2),1,3).* Face_vertex_data;
作为
face_vertex_data的维数小于nfaces,所以我重复相同的值

a = repmat(face_vertex_data,2,1);
一个= (1:nfaces,:);
face_vertex_data = a;

nicholasAWwright

Scott Sands的回应修正了脚本。

为了响应Ruksana,你必须打开这个脚本运行的文件夹:
//www.tatmou.com/matlabcentral/answers/313241-invalid-file-ider-use-fopen-to-generation-a-valid-file-iderifier#answer_349385.

Sadek Kouz.

错误使用。/
矩阵维度必须同意。
我怎么使用它??

特拉维斯耶格尔

错误使用。/
矩阵维度必须同意。

mesh_normals错误(第32行)
法线(gidx,:) = -法线(gidx,:) ./
Repmat(Norms(GIDX),1,3);

Siwei.

固化。/ IDTFConverter.sh“/ home / siwei /文件/ MATLAB /流量/ myfig。idtf”与产出“/ home / siwei /文件/ MATLAB /流量/ myfig.u3d”
退出码= 80000003

使用idtf2u3d出错(第111行)
IDTFConverter可执行文件返回错误。

我也得到了这个错误,有解决方法吗?金宝搏官方网站

Ruksana Giurda

我做不到。首先,我和马库斯有同样的问题。我按照斯科特·桑兹建议的方法解决了。但现在我遇到了和Merlethe一样的问题
错误使用流
文件标识符无效。使用Fopen生成有效的文件标识符。
save_idtf错误(第229行)
fprintf(fid,str_with_colors,nfaces,npoints,nface_vertex_data_unique,strfaces, ..
mesh_to_latex错误(第46行)
save_idtf (idtffile,点,面孔,face_vertex_data);

有人设法解决了吗?

亚历山大·杜蒙特

亚历山大·杜蒙特

梦幻般的工作!但是,我确实有一个问题。我有一个3D切片情节,我正在尝试在ppt中导入,我正在使用你的函数来制作一个交互式pdf。一切都与一些微小的变化有效。但是,我的3D绘图显示为2D图像,我可以旋转很好。这已经是一个巨大的优势,但我很好奇为什么我无法得到3D对象?

亲爱的所有,
我做了代码运行的Matlab冲浪!谢谢,pdf格式看起来不错。
然而,我有一个问题。
我想要一个。fig它是由surf生成的同时也有R3上的点和线。
这在你的代码中是可能的吗?取一张图像。fig并创建点、面和face_vertex_data?
最好的
朱利安

斯科特金沙

再保险:马库斯·克鲁格。我有同样的问题,并在mesh_normals中添加了以下内容。让这个工作:
法线= get(hp,'顶点');%原始代码,然后:
如果是谬误(法线)
FV.vertices =点;FV.faces =脸;
法线= patchnormals(艘);
结束
% patchnormals的地方。M和另一个相关的M文件在//www.tatmou.com/matlabcentral/fileexchange/24330-patch-normals.
希望这有助于

帕维尔Betleni

马库斯·克鲁格

我无法运行演示脚本。它停止了:
错误使用。/
矩阵维度必须同意。

mesh_normals错误(第32行)
法线(gidx:) = -法线(gidx:)。/ repmat(规范(gidx), 1, 3);

mesh_to_latex错误(第30行)
法线= mesh_normals(points,faces);

demo_mesh2pdf错误(第13行)
mesh_to_latex(文件名,点,面孔,face_vertex_data);

用于计算的可变法线似乎是空的,我猜这是导致麻烦的原因

Merlethe

这就跟你问声好!
我改变了演示文件指向正确的目录为MiKTeX 2.9,我认为我做了指示放置二进制文件和添加到路径使用addpath(genpath('C:/Program Files (x86)/MATLAB\R2013a学生/fig2u3d-1.0.1')),但我不能让它工作。我得到;

NB颜色:17
错误使用流
文件标识符无效。使用Fopen生成有效的文件标识符。

save_idtf错误(第229行)
数=
流(支撑材、str_with_colors nfaces、npoints nface_vertex_data_unique, strfaces,
...

mesh_to_latex错误(第46行)
save_idtf (idtffile,点,面孔,face_vertex_data);

demo_mesh2pdf错误(第13行)
mesh_to_latex(文件名,点,面孔,face_vertex_data);


我错过了其他东西吗?

Merlethe

这就跟你问声好!
我更改了演示文件以指向MiKTeX 2.9的正确目录,我想我按照指示放置了二进制文件等,但我不能让它工作。我得到;

NB颜色:17
错误使用流
文件标识符无效。使用Fopen生成有效的文件标识符。

save_idtf错误(第229行)
数=
流(支撑材、str_with_colors nfaces、npoints nface_vertex_data_unique, strfaces,
...

mesh_to_latex错误(第46行)
save_idtf (idtffile,点,面孔,face_vertex_data);

demo_mesh2pdf错误(第13行)
mesh_to_latex(文件名,点,面孔,face_vertex_data);


我错过了其他东西吗?

罗兰

嘿,伙计们!

在IDTFConverter上也有问题。它以'Exit code = 80000003'退出。也尝试从终端。

可能有人有解决办法吗?
: p

谢谢!

我正在用MatlabR2013a(64位)在Ubuntu 12.04上工作

问候
罗兰

砂光机

这是一个非常有用的项目。表面整齐地输出。然而,当我绘制线时,IDTF到U3D转换器给出了一个错误。有什么建议吗?

阿Alexiou

好工作! !

Nuen-tsang

嗨,珀斯,

关于你在mesh2pdf上发的帖子,你说

“经过一些麻烦大喊,我修正了我的第一个“问题”:)输入字符串在Matlab中没有工作(正确)。”

你什么意思?我研究了一段时间的代码,我仍然不能得到u3d文件。顺便说一下,

我从论坛上得到了下载链接(上一篇,2012-4-12)
http://sourceforge.net/projects/u3d/forums/forum/557102/topic/3424219

下载链接:http://www2.iaas.msu.ru/tmp/u3d/u3d-1.2.852.tgz

不知怎的,我无法安装通用3D样本软件http://sourceforge.net/projects/u3d/在我的MAC上,(Lion, 10.7.5)通过论坛上的链接,我可以使用cmake。使;Make install安装它。我不知道这是正确的安装方式。我应该保留我从论坛下载的原始文件吗?

谢谢。

马特

奇Jadhav

我尝试了demo_mesh2pdf。m,下载MikTex后,它工作。唯一的问题是,它产生了字母大小的pdf。我想创建一个屏幕大小的pdf,以便它可以用作演示幻灯片。我尝试将MikTex设置中的默认纸张格式更改为屏幕格式,但输出的pdf文件是信函格式。有人想出改变纸张大小的办法了吗?
否则,优秀的工具。

吊杆AMBROISE

大家好,

我和杰伦有同样的问题:我想在一个图中合并多个网格,但我只有最后一个网格。你能帮我吗?

谢谢你!

Jeroen.

你好再次,

经过一些麻烦大喊我修正了我的第一个“问题”:)输入字符串在Matlab中没有工作(正确)。

我现在有另一个问题:是否有可能在1个数字中包含多个网格?是否有可能包含位于网状物上的几个“独立”3D(x,y,z,)点(如大脑上的电极)?

提前谢谢!

Jeroen.

大家好,

我在max os x上运行脚本,得到与“bee”相同的退出代码。没有创建或保存。u3d文件,因此文件无法在Latex中加载。这是在使用.m文件或终端时。

可能是什么问题?你是什​​么意思是“自己编译了U3D转换器”蜜蜂?

蜜蜂

Hej igen,

我现在自己编译了u3d转换器,现在它突然工作了!
:)

蜜蜂

谢谢你的回答,但是仍然不起作用。我试着在终点站运行,结果

>> ./IDTFConverter—输入网格。idft与产出。u3d -debuglevel 0

输入文件名= mesh.idft
输出文件名= mesh.u3d
形象= 0
比例因子= 1.000000
调试级别= 0
职位质量= 1000
纹理坐标质量= 1000
正常质量= 1000
漫反射颜色质量= 1000
镜面颜色质量= 1000
几何默认质量= 1000
纹理质量= 100
动画质量= 1000
移除零区域面=启用
零面积面公差= 0.000012
排除正常= FALSE
导出选项标志= ffff
纹理大小限制= 0

退出码= 80000003

网。idtfis created with your code, I have not changes anything, only MACI to MACI64.

感谢您的支持!金宝app
伊曼纽尔

亚历山大Gramfort

我也使用mac os x lion,运行良好。在mesh2pdf文件夹中,运行demo_mes2pdf。它应该工作。

蜜蜂

嘿,我有个问题。
我试着在mac64上运行你的程序。不幸的是,该程序存在以下语句:
NB颜色:17
".../ mesh2pdf_2 / mesh2pdf / bin /》/ IDTFConverter“固化”特克斯…/ mesh2pdf_2 / mesh2pdf / /网格。idtf“与产出”特克斯…/ mesh2pdf_2 / mesh2pdf / / mesh.u3d”
退出码= 80000003

进一步,我想如果我想导出slice和contourslice?

提前谢谢!

马太福音

哦,另一个有用的提示:

如果你想使acrobat模型测量工具(所以观众可以用尺子测量模型的点之间的距离),你应该打开使用adobe acrobat pdf pro,并使用“高级”- >“阅读器扩展功能”菜单项,使额外的选项在最后的pdf。

非常感谢作者为这个非常有用的文件交换提交!

这需要相当多的努力使这个提交工作,但它确实工作。我在下面列出了详细的步骤,以便为其他人简化这个过程。演示结果并不漂亮,但至少可以从matlab生成一个3D pdf。

我发现的另一种制作3D pdf的方法是使用meshlab(免费)将STL转换为U3D文件,然后adobe acrobat 9 pro将U3D作为3D对象插入。然而,这只允许1网格层,是真的很难看(你也需要acrobat pro)。

让这个在我的系统(Windows Vista Ultimate, Matlab R2011a)上工作的步骤:
1.下载/解包存档mesh2pdf。
2.下载/安装MiKTeK 2.8 (http://miktex.org/2.8/setup
3.打开mesh2pdf_2.0 \ mesh2pdf \ demo_mesh2pdf。M在matlab编辑器。
4.更新第16-23行以指向安装MiKTeK的目录。注意:您可能需要包含引号以允许在路径中有空格。例如……
pdflatex_cmp = ['"C:\程序文件MiKTeX 2.8\ MiKTeX \bin\pdflatex.exe"'];

5.转到MiKTeK目录,让当前windows用户可以编辑所有文件。(右键点击MiKTeK 2.8文件夹,选择权限->选择当前用户->检查“允许”为所有权限->点击应用)
6.运行Mesh2pdf_2.0 \ mesh2pdf \ miktex-update.exe以更新包。
7.为MiKTeK安装movie15包。运行mesh2pdf_2.0\mesh2pdf\mpm.exe,滚动到movie15,右键单击movie15项目并选择'+install'。(也看到http://docs.miktex.org/faq/packages.html更多信息)
8.将matlab的工作目录(当前文件夹)设置为mesh2pdf_2.0\mesh2pdf目录,运行demo_mesh2pdf。m脚本。它将调用3次pdflatex命令并生成一个带有3D模型的pdf文件(我认为它是一个大脑)。演示pdf将在mesh2pdf_2.0\mesh2pdf\tex目录中。

Roland Pfister

丹尼尔

切赫了”

你好,
3D PDF与此对象看起来很棒。我想从Matlab应用自己的网格模型。但是,当我在demo_mesh2pdf.m和目录中更改“示例数据”时,生成的PDF中没有任何更改。什么应该改变?

谢谢,对不起我的英语:-)

斯坦Durrleman

工作很好。但你必须在命令行模式下运行Matlab,并事先检查你有权限运行脚本(IDTFConverter在文件夹'u3d'): chmod是你的朋友…

克里斯蒂安·维

嗯…终于它! !

要添加软件包(在Movie15之后,应用程序询问其他人)是要解压缩目录上的所有zips,然后转到Miktex设置,然后在“root”选项上,添加zip未包装的目录,单击接受和之后这些程序很棒。

阅读pdf文件是必要的,你需要至少有一个acrobat9.0…

克里斯蒂安·维

好的,我在安装这个工具上有了一些进展。我已经安装了MikTex 2.8,并添加了' MikTex \bin'到路径。
程序向我要电影套餐。
我去找MikTex的包经理,试着安装它。但是,我的工作连接到互联网被过滤,我不能从互联网安装包,所以我尝试做它的选择(在MikTex)。“软件库必须从目录中安装”,我选择了一个我已经下载了movie15.zip (537kb)的目录。应用程序返回“目录似乎是一个本地包存储库”。
我如何安装movie15包?我的包裹是对的吗?为什么MixTex包管理器不能识别zip?
谢谢。
问候,
克里斯蒂安

亚历山大Gramfort

这意味着演示脚本无法找到pdflatex.exe命令。

我的窗户上有mitex 2.8。因此,请更新演示脚本中的路径或安装MikTeX 2.8

克里斯蒂安·维

我应该使用acrobat的什么versión ?我有v8专业的和你的程序不工作。我收到以下错误:

Warning: Name is nonexistent or not a directory: C:\Program Files\MiKTeX2.8\miktex\bin.
>在路径110处
addpath在87处
在demo_mesh2pdf在21
"pdflatex.exe"不允许对内部和外部进行修改,程序或档案文件不可撤销。

MATLAB版本兼容性
创建R14
兼容任何释放
平台的兼容性
窗户 macOS Linux
类别

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!