作者Ricey (Shovel Bum)
看板LaTeX
标题Re: [问题] 投影片如何嵌入3D物件(.u3d档)?
时间Fri Jul 14 14:57:03 2017
原文恕删~~
自己的问题自己答!
来个简单的教学文。
虽然大部份来这个版的人应该都是要制作可以印出来的PDF或是比较简单的简报,
会需要用到把3D物件嵌在PDF内的人应该是极少数吧。
----------- 缘 ----------- 起 ----------- 废 ----------- 言 -----------
最开始,我是想要把3D模组分享给没有安装特定软体的老板看,所以才把脑筋动
到了3DPDF上。当时没有成功,只能等老板出现的时候,直接拿我的电脑给他看。
後来事情演变到了需要在简报的时候展示,而会场的电脑是不太可能有装3D软体。
如果要在报告前搞这些,我想会麻烦到太多人,报告的时候转换软体也会影响报告
的流畅性。
目前PowerPoint好像已经支援3D物件的嵌入,但是我个人没有这套软体,所以不
知道好不好用。
个人使用的是Libreoffice,而里面的Impress简报软体虽然也号称支援3D物件,
但是,--非--常--难--用--
首先,它可以支援3D档案格式有3种:json, dae以及kmz. 如果是用sketchup建
立3D物件(kmz),我想应该没有什麽太大的问题吧。但是我用的是从立体扫描还原
的3D物件,而我只会用meshlab把obj转成dae或json。
Impress的3D物件置入也很好操作,只是不知道为什麽,我用的时候就是会莫名其
妙的一直狂当(可能跟笔电效能有关)。
但,如果只是这样也就算了。有时候还会置入失败。所以我觉得用这样太冒险。
所以还是乾脆用pdf格式比较安全。毕竟Libreoffice还可能有转成ppt格式後排版
跑掉的风险。
如果也有人遇到制作3DPDF的需求,可以参考一下我用LaTeX制作3DPDF的说
明。
----------- 正 ----------- 文 ----------- 开 ----------- 始 -----------
不管是用什麽软体制作3DPDF,前提就是要嵌入的3D物件必须是特定的格式:
u3d或是prc。但是大部份的3D物件都是obj、ply这类的格式,所以要先解决
格式问题,也就是要转档。
前者可以用免费的3D软体:meshlab去转(export mesh as,下拉格式的地方选
u3d)。但是後者好像就需要用asympotote这类程式去绘制。
有趣的是,meshlab可以把档案格式转成u3d,但是却没有办法开启u3d档。
这一点让我在遇到LaTex出现要我确认u3d是否有效的错误提示的时候非常头痛。
(啊就没有软体可以开,是要怎麽确认啦)。
如果你手边的3D物件还不是u3d格式,请先用软体转好,然後放在要制作pdf的
同一个资料夹中(跟内嵌图片一样)。下面说明我会先用网路上找得到的u3d档, 方
便大家练习。
因为这里只是简单教学,所以我就直接说明怎麽用TeXworks里的pdfLaTeX压成
单一pdf。
如果是有做简报需求的人,我之前是用Beamer(一样用TeXworks里的XeLaTex)
来写。原则上语法没有什麽差别,所以就自己尝试看看罗。有问题再问吧。
因为是土法炼钢,所以参考了一些不同的写法。还有待版上神人修改。
制作3DPDF是一个两阶段的程序,所以要写两个tex档。(你也可用第一阶段就好)
之所以需要两个阶段是因为在将3D物件放进PDF前,你必须要先算好视角(观看的
角度)。所以有需要先写一个PDF来调整跟计算最佳视角的座标。当然,如果你的
3D物件已经设好视角(应该是可以在3D软体中先设好),你就可以直接置入(下详)。
我的方法需要用到media9这个套件(请先下载)。先前找到的movie15套件教学也
因为这个套件已经完全被media9取代了,所以也不需要再研究了(虽然我之前还是
先会用movie15才转用media9)。
这里我先用网路上可以找到的u3d档来进行说明(dice.u3d), 如果自己有u3d档就用
自己的,虽然我想这个档应该是人畜无害,但是网路上还是小心点好。没有u3d档,
有想要练习的人,可从下列网址取得dice.u3d:
http://www.filewatcher.com/m/dice.u3d.160672-1.html ),或者自己google看看
有没有可用的u3d档。
测试视角的pdf脚本如下:
\documentclass{article} %%文件的格式没有限定。
\usepackage{media9} %% 导入media9套件。
%% 如果内文要有中文就自己再加套件。
\title{3DPDF Preparation: Viewing Angle} %% 给个标题(非必要)
\begin{document}
\date{} %% 日期跟作者那些的也都可以不用。
\maketitle
\begin{figure}[h]
\centering %% 图像置中
\includemedia[ %% 开始置入
width=0.5\linewidth,height=0.5\linewidth, %% 设定物件显示大小
activate=pageopen, %% 指定3D模组启动的条件[注1]
3Dtoolbar, %% 显示3D工具列(建议使用)
3Dmenu %% 在右键选单中新增3个功能(计算视角必要)
]{}{dice.u3d} %% 用完整的档案名
\end{figure}
\end{document}
[注一]: 这个选项一共有3个,“onclick”就是点击後启动,“pageopen”跟
“pagevisible”则是开启即启动,而如果3D物件不是在第一页,原作者建议
使用“pagevisible”。
跑完後,一定要用外部的pdf阅读软体开,我是用Adobe Acrobat Reader DC。
(确认一下自己用的软体版本是否支援3DPDF)。DC的预设是先停用3D内容,
问你是否信任此文件,你可以选择仅信任一次或永远信任。如果要重复使用就可
以选永远信任,不然它每次都会问。
如果用的是dice.u3d档的话,打开档案後应该就会看到一个大黄点。那是骰子上
的一点。如果是用自己的档案,你看到的可能不是你熟悉的视角。它可能是你之
前存档的视角,也有可能什麽都看不到(视角过近或过偏)。
这时就要按右键让选单出现。之前因为加入了“3Dmenu”这个选项,所以选单中
会多出3个英文的选项。其中我们会用到的是第一个:Generate Default View。
点选後,DC会跳出一个视窗。如果我们先不管这个视窗,直接把它关掉的话,你
会发现你的3D物件已经自动调成正常的视角了。(当然,或许可能不是你要的视角)
如果你不介意每次开档案都要重复上述动作的话,那麽你就可以在上述的基础上去
建立自己的文件。
不过,我会建议还是在原始码中把视角固定下来。也就是制作的第二阶段。
固定视角,一来可以免除每次开档後要做很多重复的动作,
二来,自动产生的视角不见的是你要的。
要固定成预设视角,就在上个步骤跳出视窗後,把视窗下半出现的原始码复制到脚
本中(建议另外开一个脚本档)。
这里会给你2个视角座标数据,3Dc2c和3Droo以及一个光线的选项(3Dlights)。
如果想要特定视角,则可以先调整好後,再用右键选单中的第二个新选项“Get
Current View”显示调整过的视角座标。(你也许会注意到,如果把下半的原始码往上
拉到头,还是可以看到一样的预设视角座标数据)。通常调整过的视角座标会多一组
“3Droll”,但其它就都一样了。
固定视角的原始码跟刚才一样就是:
%% 上面省略 %%
\includemedia[ %% 开始置入
width=0.5\linewidth,height=0.5\linewidth, %% 设定物件显示大小
activate=pageopen, %% 指定3D模组启动的条件
3Dtoolbar, %% 显示3D工具列(建议使用)
3Dc2c=0.008148513734340668 -0.9987651109695435 -0.04900982975959778,
3Droo=26.768520991804422, %% 这里就直接贴上数据就好了
3Dlights=Headlamp %% 光线的调整可以参考说明书
]{}{dice.u3d}
%% 下面省略 %%
----------- 正 ----------- 文 ----------- 结 ----------- 束 -----------
原则上,整个编码并不是特别复杂,我一开始应该是卡在视角跟新、旧指令的转换上。
现在回头看media9作者写的说明书,就会发现一开始真的走太多冤枉路。
对了,给要做简报的人一点小建议:
3D档太大的时候,最好还是先把档案缩小,不然会跑很久。
写LaTeX的时候也先把别的部份写好,不然每次都要跑一阵子。
简报之前要多练习,因为翻到3D的那一页会delay。最好先按,不然要听众跟你一起
等3D物件启动,会很尴尬。
希望这个简单的说明对於大家有帮助。
谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.63.212.253
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/LaTeX/M.1500015431.A.EB3.html
※ 编辑: Ricey (210.63.212.253), 07/14/2017 14:59:42
1F:推 andrew43: 推! 07/14 19:00
2F:推 sppmg: 详细推, 07/15 13:40