FireMonkey 載入 obj 圖形 |
尚未結案
|
noodlet
一般會員 發表:4 回覆:1 積分:1 註冊:2014-10-13 發送簡訊給我 |
在編輯程式時可以順便設定 obj 檔案位置,如:
http://docwiki.embarcadero.com/RADStudio/XE7/en/Importing_a_3D_Model_in_a_FireMonkey_Application 但若想建立按鈕讓使用者載入 obj 圖檔那該怎麼做? 在 Users\Public\Documents\RAD Studio\12.0\Samples\FireMonkey\Delphi\ModelViewer Delphi 範例中,使用 LoadFromFile() 可以載入圖檔, 但在BCB中卻無法如法炮製。 [code delphi] //範例程式碼 procedure TModel3DTest.spbLoadFromFileClick(Sender: TObject); var od : TOpenDialog; FileName : String; begin od := nil; try od := TOpenDialog.Create(self); od.Filter :='3D files|*.obj;*.dae;*.ase'; if od.Execute then begin lblStatus.Text := 'Loading... please wait'; Application.ProcessMessages; FModel3D.Clear; //<--FModel3D為什麼不是拉在介面上的元件?var FModel3D : TModel3D; FModel3D.RotationAngle.Vector := Vector3D(0,0,0); DummyX.RotationAngle.Vector := Vector3D(0,0,0); DummyY.RotationAngle.Vector := Vector3D(0,0,0); ClearMeshes(FModel3D); //<--這行副程式似乎也需要自己編寫? FileName := od.FileName; FModel3D.LoadFromFile(FileName); lblStatus.Text := 'Ready'; end; finally od.Free; end; end; [/code]
------
新手上路 |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
你好,看起來你對pascal的語法不熟。一般來說 c++ builder的人比較辛苦,要先學習delphi的語法,才能達到一定的水平。
建議你有時間看一些 delphi的書或網路上的資料。 至於你提的FModel3D,它被宣告成全域變數。然後在 crerate的事件上初始這個物件。所以他沒拉元件上。 ClearMeshes,對,你也要自己轉成 c ,參考delphi的實作來轉。 在對delphi語法不了解前,想要經易的轉換c builder是很難的。這是初學 c builder的痛呀! ===================引 用 noodlet 文 章=================== 在編輯程式時可以順便設定 obj 檔案位置,如: http://docwiki.embarcadero.com/RADStudio/XE7/en/Importing_a_3D_Model_in_a_FireMonkey_Application 但若想建立按鈕讓使用者載入 obj 圖檔那該怎麼做? 在 Users\Public\Documents\RAD Studio\12.0\Samples\FireMonkey\Delphi\ModelViewer Delphi 範例中,使用 LoadFromFile() 可以載入圖檔, 但在BCB中卻無法如法炮製。 [code delphi] //範例程式碼 procedure TModel3DTest.spbLoadFromFileClick(Sender: TObject); var od : TOpenDialog; FileName : String; begin od := nil; try od := TOpenDialog.Create(self); od.Filter :='3D files|*.obj;*.dae;*.ase'; if od.Execute then begin lblStatus.Text := 'Loading... please wait'; Application.ProcessMessages; FModel3D.Clear; //<--FModel3D為什麼不是拉在介面上的元件?var FModel3D : TModel3D; FModel3D.RotationAngle.Vector := Vector3D(0,0,0); DummyX.RotationAngle.Vector := Vector3D(0,0,0); DummyY.RotationAngle.Vector := Vector3D(0,0,0); ClearMeshes(FModel3D); //<--這行副程式似乎也需要自己編寫? FileName := od.FileName; FModel3D.LoadFromFile(FileName); lblStatus.Text := 'Ready'; end; finally od.Free; end; end; [/code]
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
noodlet
一般會員 發表:4 回覆:1 積分:1 註冊:2014-10-13 發送簡訊給我 |
首先感謝你的回覆,
比較好奇的一點是 ClearMeshes 按照字面上的意思是把先前的網格清除 而我試過把 Delphi 的 ClearMeshes 註解掉,結果編譯就不過了 (跟想像中有落差阿) 預期註解掉 ClearMeshes 會得到: 載入第一個 001.obj 檔,正常 載入第二個 002.obj 檔時會因為 001.obj 的網格沒有清除造成疊圖的現象。 ===================引 用 aftcast 文 章=================== 你好,看起來你對pascal的語法不熟。一般來說 c builder的人比較辛苦,要先學習delphi的語法,才能達到一定的水平。 建議你有時間看一些 delphi的書或網路上的資料。 至於你提的FModel3D,它被宣告成全域變數。然後在 crerate的事件上初始這個物件。所以他沒拉元件上。 ClearMeshes,對,你也要自己轉成 c ,參考delphi的實作來轉。 在對delphi語法不了解前,想要經易的轉換c builder是很難的。這是初學 c builder的痛呀!
------
新手上路 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |