作者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/m.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