全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:9325
推到 Plurk!
推到 Facebook!

[:D]我有幾個3ds,有沒有網友可以寫個delphi程序來使它旋轉、移動、翻滾呢?

答題得分者是:jow
nicolas
一般會員


發表:39
回覆:40
積分:15
註冊:2004-05-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-14 11:16:40 IP:61.219.xxx.xxx 未訂閱
我有幾個3ds,有沒有網友可以寫個delphi程序來使它旋轉、移動、翻滾呢? "> "> "> 發表人 - nicolas 於 2005/01/14 21:09:22
fatming
一般會員


發表:10
回覆:7
積分:3
註冊:2004-09-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-23 18:55:45 IP:218.162.xxx.xxx 未訂閱
在bcb上面執行可以嗎? delphi不熟-_-"
nicolas
一般會員


發表:39
回覆:40
積分:15
註冊:2004-05-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-24 08:51:51 IP:61.219.xxx.xxx 未訂閱
可以呀 謝謝
fatming
一般會員


發表:10
回覆:7
積分:3
註冊:2004-09-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-24 23:16:51 IP:218.162.xxx.xxx 未訂閱
大哥你的連結好像-_-|| 還是要有什麼特定的方法才能連到呢? 例如 沙米尼亞東之類的暗語........Orz....
nicolas
一般會員


發表:39
回覆:40
積分:15
註冊:2004-05-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-25 08:52:34 IP:61.219.xxx.xxx 未訂閱
http://delphi.ktop.com.tw/loadfile.php?TOPICID=19885216&CC=444724 http://delphi.ktop.com.tw/loadfile.php?TOPICID=19885529&CC=444731 http://delphi.ktop.com.tw/loadfile.php?TOPICID=19885842&CC=444738
billwillman
一般會員


發表:0
回覆:7
積分:1
註冊:2006-11-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2006-11-06 16:03:09 IP:222.40.xxx.xxx 訂閱
当然可以,我改写了Asphyre3DSOjbect.pas;可以读取材质信息,但还不能读取纹理信息,现在正在改进
下载地址:
http://www.afterwarp.net/forum/attachment.php?attachmentid=777&d=1162798551
------
想别人想不到的就是创新
只有想不到,没有做不到
billwillman
一般會員


發表:0
回覆:7
積分:1
註冊:2006-11-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2006-11-07 10:08:29 IP:222.40.xxx.xxx 訂閱
已经可以加载纹理了
------
想别人想不到的就是创新
只有想不到,没有做不到
dan59314
中階會員


發表:121
回覆:107
積分:86
註冊:2002-08-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-04-20 11:48:35 IP:220.130.xxx.xxx 訂閱
SmallBare
一般會員


發表:2
回覆:11
積分:2
註冊:2003-10-20

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-07-20 20:57:39 IP:211.76.xxx.xxx 訂閱
參考看看,使用GLScene元件

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, GLScene, GLVectorFileObjects, GLMisc, GLWin32Viewer,
GLTexture, GLObjects, StdCtrls,Math,VectorGeometry;

type
TForm1 = class(TForm)
GLSceneViewer1: TGLSceneViewer;
GLScene1: TGLScene;
GLMaterialLibrary1: TGLMaterialLibrary;
GLCamera1: TGLCamera;
GLDummyCube1: TGLDummyCube;
GLLightSource1: TGLLightSource;
OpenDialog1: TOpenDialog;
Button1: TButton;
GLFreeForm1: TGLFreeForm;
procedure Button1Click(Sender: TObject);
procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
procedure GLSceneViewer1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Procedure Selected(Var Scr:TGLSceneViewer;X,Y:Integer;
Var Obj:TGLBaseSceneObject;Var Vector:TVector);
Function MouseWorldPos(var scn:TGLSceneViewer;x, y : Integer) : TVector;
end;

var
Form1: TForm1;
PX,PY:Integer;
Targets:TGLBaseSceneObject;
Last:TVector;

implementation
uses GLFile3DS;
{$R *.dfm}
Procedure TForm1.Selected(Var Scr:TGLSceneViewer;X,Y:Integer;
Var Obj:TGLBaseSceneObject;Var Vector:TVector);
Begin
Obj:=GLSceneViewer1.Buffer.GetPickedObject(X,Y);
Vector:=MouseWorldPos(Scr,X, Y);
End;
function TForm1.MouseWorldPos(var scn:TGLSceneViewer;x, y : Integer) : TVector;
var
v : TVector;
begin
y:=Scn.Height-y;
if Assigned(Targets) then begin
SetVector(v, x, y, 0);
Scn.Buffer.ScreenVectorIntersectWithPlaneXY(v, Targets.Position.Z, Result);
end else SetVector(Result, NullVector);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
If OpenDialog1.Execute Then Begin
GLFreeForm1.LoadFromFile(OpenDialog1.FileName);
GLCamera1.ZoomAll;
End;
end;

procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
If ssLeft in Shift Then Begin
//視點繞物體旋轉
GLCamera1.MoveAroundTarget( (PY-Y) * 0.2,(PX-X) * 0.2 );
PX:=X; PY:=Y;
End;
If Not Assigned(Targets) Then Exit;
If (ssRight In Shift) Then Begin
//旋轉單件物體
GLCamera1.RotateObject(Targets,(PX-X)* 0.2,(PX-Y)* 0.2);
End;
end;

procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
//選擇物體
PX:=X; PY:=Y;
Selected(GLSceneViewer1,X,Y,Targets,Last);
end;

procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
//縮放視景
GLCamera1.AdjustDistanceToTarget( Power(1.1, WheelDelta/120) );
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
//有些3DS載入時會出現錯誤,需忽略
GLFreeForm1.IgnoreMissingTextures:=True;
end;

end.


PS.其實這些都還算蠻簡單的,在網路上查就可以找到ㄧ堆Demo,哪像我在找的Cad相關Sample找到哭死
最後得出結論-->圖形學,曲線演算......有點灰心了QQ
SmallBare
一般會員


發表:2
回覆:11
積分:2
註冊:2003-10-20

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-08-04 16:19:07 IP:220.130.xxx.xxx 訂閱
有找到ㄧ款專門處理3D幾何的函式庫,有興趣的可以研究研究
gts.sourceforge.net
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-08-09 17:42:54 IP:210.66.xxx.xxx 訂閱
[Delphi][發表] [發表] 我的 OpenGL 學習用的專案 2 - 使用 GLScene



這裡有我練習的實作...



切換到 Func_50, Func_51.

Func_51輸出畫面: 47010b164fe08_Func00051.PNG
編輯記錄
jow 重新編輯於 2007-08-09 19:24:29, 註解 無‧
jow 重新編輯於 2007-08-09 19:24:43, 註解 無‧
jow 重新編輯於 2007-10-01 23:01:20, 註解 無‧
系統時間:2024-04-24 7:09:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!