5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Delphi持ってるならGLSceneを使え

1 :デフォルトの名無しさん:2006/11/12(日) 03:17:59
Delphi用OpenGLライブラリGLSceneのためのスレッドです。
フリーの3Dコンポーネントでお気楽プログラミング。

とうとうGLScene正式版リリース
http://glscene.sourceforge.net/index.php

ヘルプはこっちで落とした方が良さそう。
GLScene Help Project
http://caperaven.co.za/

ついでにGraphics32もあれば心強い
http://www.graphics32.org/wiki/

Lazarus使いなら、これ。Lazarus with GLScene bundled
http://www.skinhat.com/

質問は出来る限り詳しく的確にお願いします。
日本語情報ほとんど無し。GLSceneマスター様、情報お願いします。
GLSceneの他にもこんなライブラリがあるという情報もおk。


2 :デフォルトの名無しさん:2006/11/12(日) 05:27:46
とりあえず日本語でおk

3 :デフォルトの名無しさん:2006/11/13(月) 18:10:55
GLSceneに付いているDelphiODEもおk
ttp://www.hypeskeptic.com/Mattias/DelphiODE/

4 :デフォルトの名無しさん:2006/11/13(月) 23:51:54
初めてGLSceneに触る方のために簡単チュートリアル。
Form1にGLSceneとGLSceneViewerとGLCadencerの3つをドロップする。
GLScene1をダブルクリックするとGLSceneエディタが立ち上がるから、Camerasにカメラを追加。
以下のプロパティをセットする。
GLSceneViewer1のCameraにGLCamera1
GLCadencerのSceneにGLScene1
以上で基本設定終了。
GLSceneエディタで上のアイコン「show Behavious/Effect」をクリックしておいてくだされ。


5 :4:2006/11/13(月) 23:53:42
ここからチュートリアル開始です。
GLSceneViewer1のBuffer.Background=clBlackにして背景を黒くしてください。
気が向いたらGLSceneViewer1のAlign=alClientにでもしておいてください。

GLSceneエディターで、GLLightSourceとDummyCubeとGLDodecahedron(正十二面体)を追加。
・・・別にGLDodecahedronじゃなくてもいいが
ツリー上で、GLDodecahedron1はDummyCube1の「子」にしておく

Camera1のプロパティPosition(X,Y,Z)=(0,2,6)
Camera1のプロパティTargetObject=DummyCube1
↑手前のちょっと上からDummyCube方向を見るってこと

GLDodecahedron1のプロパティPosition(X,Y,Z)=(2,0,0)
↑DummyCube1の子オブジェクトなので、DummyCube1の相対位置になる

ここでちょっと動きをつけてみましょう。
ここでは、DummyCube1(見えない立方体)を回転させます。
まずはuses節にGLBehavioursを追加。
GLSceneエディタで、DummyCube1を選択してBehaviousに「Simple Inertia」を追加。
Simple InertiaのプロパティTurnSpeed=30をセット
↑y軸を中心に30度/秒の速度で回転させるということ

んで、おもむろに実行!!!
DummyCubeを回転させれば、その子オブジェクトの十二面体も一緒に回転します。
ここでもっとDummyCubeを追加したり回転を加えたりすると、もっと複雑な動きが出来ます。
GLCadencerのOnProgressイベントにコードを書いたら、もっと複雑な動きもできます。

6 :4:2006/11/13(月) 23:55:17
<続き>
お次はエフェクトです。
GLFireFXManager(GLScene PFXタブ)をForm1にドロップ。
GLFireFXManager1のプロパティFireRadius=0.2くらいにしておきましょう。
GLSceneエディタで、GLDodecahedron1を選択してEffectsに「FireFX」を追加して、FireFXのプロパティManager=GLFireFXManager1にする。

はい、実行。
ををー、火が出た!!!

お次はGLThorFXManagerをForm1にドロップ。
プロパティCadencer=Cadencer1、Target(X,Y,Z)=(-2,0,0)
GLSceneエディタでGLDodecahedron1を選択してEffectsに「ThorFX」を追加して、ThorFXプロパティManager=GLThorFXManager1にする。

はい実行。イナズマだ!!!

ってな感じでパーティクル系のFXはいろいろ有るようです。


7 :デフォルトの名無しさん:2006/12/06(水) 22:53:33
スクリーンショットと導入手引きどこ?

8 :デフォルトの名無しさん:2006/12/12(火) 21:00:55
>7
スクリーンショットも導入の手引きも、公式にあるぞ。
・・・とは言っても、導入の仕方は詳しく書いていない。orz

導入の仕方は次の通り。
(1)GLSceneのsourceフォルダとその下のフォルダ全てにライブラリパスを通す
ライブラリパス通すのは結構面倒くさい。

(2)以下のdllファイルをシステム環境変数のPATHの通ったフォルダ(例:c:\Windows\system32)へコピーしておく。dllは実行ファイルと同じフォルダにあればokだけど、この方が便利。
SDL.dll・・・GameAPIs
ODE.dll・・・PhysicsAPIs
FMOD.dllとBASS.dll・・・SoundAPIs

(3)GLScene***.dpk(***は使用しているDelphiのバージョン)をダブルクリック。
ここからはDelphiのバージョンによって違う。古いバージョンのは忘れた。とにかくインストールを選択。
Delphi2006の場合はプロジェクトマネージャーを表示させて右クリックでインストールを選択。

(4)「GLS_ODE***.dpk」「GLS_SDL***.dpk」「GLSS_FMOD***.dpk」「GLSS_BASS***.dpk」も同じようにインストール

9 :デフォルトの名無しさん:2006/12/13(水) 11:44:56
OpenGL単体で扱うのに疲れてきたので、GLSceneつかってよかですか?

全画面にするのは、どうすればいいんだろ・・・
また、DirectDraw使うか・・・

10 :デフォルトの名無しさん:2006/12/13(水) 11:52:31
今は、DirectSound使ってます。

しかし、サウンドの、FMODって、1タイトル最低$3000って高すぎるんですが(泣

11 :デフォルトの名無しさん:2006/12/13(水) 11:54:29
BASS.dllも、Single Commercial license: ?950ヽ(`Д´)ノ ウワァァン!!

DirectSound使うか・・・
それともSDLか・・・

これと、SDLの組み合わせ使っている人います?

12 :デフォルトの名無しさん:2006/12/13(水) 15:47:54
VB.NETでManaged DirectX使ったほうが簡単だね

13 :デフォルトの名無しさん:2006/12/13(水) 16:39:12
>>12
Managed DirectXは死にましたけど・・・

14 :デフォルトの名無しさん:2006/12/13(水) 17:50:02
>>13
まあ>>12のレベルはその程度だって事だ。


15 :デフォルトの名無しさん:2006/12/13(水) 17:55:43
ん?Delphi自体初心者なんですけどDirect3Dなみに速いんですか?
3Dゲームとかつくれるんですか?

16 :デフォルトの名無しさん:2006/12/13(水) 18:08:19
>>15
俺もいま、GLSceneは使おうかってところだけど、
GLSceneが使っているOpenGL自体は、ゲームにも使われている。

速度は、よほどのことしないかぎり、Direct3Dと変わらんよ。
3Dゲームは作れるよ。

17 :15:2006/12/13(水) 19:06:09
>GLSceneが使っているOpenGL自体は、ゲームにも使われている。

つまりOpenGLのラッパーってやつですか?

18 :デフォルトの名無しさん:2006/12/13(水) 19:30:22
>>17
そですね。

19 :デフォルトの名無しさん:2006/12/13(水) 19:52:34
>>9
TGLScreenViewerの代わりにTGLFullScreenViewerを使えばいいよ。


procedure TForm1.FormClick(Sender: TObject);
begin
GLFullScreenViewer1.UseCurrentResolution;
GLFullScreenViewer1.Active:=True;
end;

procedure TForm1.GLFullScreenViewer1Click(Sender: TObject);
begin
GLFullScreenViewer1.Active:=False;
end;


20 :デフォルトの名無しさん:2006/12/13(水) 19:57:39
>>19
サンクス試してみます。

21 :8:2006/12/14(木) 11:01:26
>>7
導入の補足

もし、Graphics32をインストールしているのなら、GLSceneでもGraphics32を使うようにしよう。

1.GLSceneのSourceフォルダに入っている「GLScene.inc」をメモ帳等で開く

2.以下の部分を変更
// Activate support for Alex Denissov's Graphics32 library (http://www.g32.org)
{.$DEFINE GLS_Graphics32_SUPPORT}
↑このドットを削除
{$DEFINE GLS_Graphics32_SUPPORT}にする。

Graphics32はTBitmapやGDI描画よりも比べ物にならないくらい早いので、導入しても損は無いです。



22 :デフォルトの名無しさん:2007/01/06(土) 00:41:03
シーンオブジェクトのTGLFreeFormやTGLActorとかで読めるファイルフォーマットは沢山あるようですが、
3ds bsp gl2 gts lwo md2 md3 md5 mdc ms3d nmf nurbs obj oct ply smd stl tin vrml・・・
・・・大半は聞いたことが無いOTL

お勧めのモデラーとかあれば教えてください。

23 :デフォルトの名無しさん:2007/01/06(土) 01:45:14
ライセンスが糞過ぎて使えない

24 :デフォルトの名無しさん:2007/01/06(土) 01:57:32
>>23
ライセンスって MPL みたいだけど、MPL もウィルスよりも酷い GPL 並に最悪なライセンスなんだっけ?

25 :デフォルトの名無しさん:2007/01/07(日) 00:12:37
>>24
確かにMPLは伝染性は高いですが、GPLやLGPLほどではありません。
>mozilla.orgのFAQ参照方
http://www.mozilla.org/MPL/mpl-faq.html

MPL ver1.1に従えば・・・
GLSceneを使ってソフトを作るときは、1.9項および3.7項あたりに相当すると思います。
簡単に言えば、もしMPL化されたコード(ここではGLSceneコンポーネント)を使った自作ソフトを作ったとき、GLSceneの入手先(HPアドレスでよい)さえどこかに明記すればよく、その他の自作ソースコードは別に公表する必要はありません。

ただし、GLSceneコンポーネントを改造して公表するときは、GPL並みの義務が生じます。
つまりコントリビュータ(貢献者)になる場合ですね。
(全部説明するのは面倒くさいんで、http://www.mozilla.org/MPL/MPL-1.1.htmlを参照して下さい)

ちなみにGLSceneの作者はReadMeに堅苦しいことは書いておらず、以下の様に書いています。
(1)フリーウエア作ろうが商用ソフト作ろうが、GLSceneは無料でぇ〜す!
(2)そのかわりどこかに「GLSceneつかってまーす。http://glscene.org」って書いてね。
(3)もしGLSceneを改造してオープンソースにしようと思うんなら、全てのコードを公表する必要は無いけど、どこをどの様に変えたか明記してね。

ってな感じかな。

26 :デフォルトの名無しさん:2007/01/07(日) 00:48:28
>>25
解説乙。でも、それじゃぁなんで >>23 はライセンスが糞って言ってんだろ? バカだから?

27 :デフォルトの名無しさん:2007/01/07(日) 07:39:01
>>25
>(3)もしGLSceneを改造して
「改造」に「継承」は含まれないよね?
「継承」なら(2)になるんじゃないかと思うんだが…。間違ってる?

28 :デフォルトの名無しさん:2007/01/07(日) 10:20:35
> 「改造」に「継承」は含まれないよね?

GLScene のユニットと分離すればいいんじゃね。
自分の所で、どう利用しようが勝手でしょ。

29 :25:2007/01/07(日) 23:13:56
>>27
私も28氏の言うとおりだと思います。
GLSceneのユニットと分離してあれば何の問題もないし、そもそも継承とは、実際にはコードの再利用ということになるので、元のコードを改造しているわけではありませんね。
というわけで、「継承」は(2)に当たり、プロプラエタリ(非公開)アプリケーションにして販売しようが自由です。

30 :デフォルトの名無しさん:2007/01/11(木) 19:44:07
これのチュートリアルみたいなものってないですか?

31 :デフォルトの名無しさん:2007/01/12(金) 18:04:12
>>30
チュートリアルは一応ここにあるよ。全部英語だけど。
<本家>
http://glscene.sourceforge.net/wikka/UserTutorials
<GLScene Help Project>
http://caperaven.co.za
<GLSceneのHelpフォルダ>
HelpフォルダのGLSceneTraining.chm

日本じゃ、Direct3D(現DirectX Graphics)が幅を利かせてるんで、
ましてOpenGL用のライブラリなんか日本語の解説ほとんどお目にかからないよね。
海外じゃOpenGLの市販3Dゲームとかあるのに。

32 :デフォルトの名無しさん:2007/01/12(金) 21:09:02
>>31
サンクス。
みてみるす

33 :デフォルトの名無しさん:2007/01/12(金) 23:46:25
GLSceneに大量のサンプルが付いているんで驚いた。
意外に少ないコードでも結構いろんなことが出来るみたい。

34 :デフォルトの名無しさん:2007/01/13(土) 18:22:17
GLPolygonにテクスチャを適用したいけど、テクスチャが正常に表示されない
GLPlaneみたいにファイル設定するだけじゃ駄目なのか

35 :デフォルトの名無しさん:2007/01/14(日) 18:50:56
>>34状況をもっと詳しく頼む。
とりあえず静的に貼り付けてみた。

Form1にGLSceneとGLSceneViewerをドロップし、GLSceneエディタでGLCameraとGLPolygonを追加。
以下のプロパティをセットする。
GLSceneViewer1のCameraプロパティにGLCamera1をセット
GLCamera1のPosition(X,Y,Z) を(2,2,3)にセット
GLCamera1のTargetObjectにGLPolygon1をセット
GLPolygon1のNodesに、(0,0,0)(1,0,0)(0,1,0)をセット
お次にGLPolygonのMaterialで「・・・」ボタンを押してMaterial Editorを立ち上げる。
Textureを選択して、Imageに貼り付けたいテクスチャを選択する。Disabledのチェックを外して、OKを押す。

俺のは一応これで張り付いた。

36 :デフォルトの名無しさん:2007/01/14(日) 22:54:32
試しに入れてみたけどデモ多くてワロタ
誰かこれでピンボール作ってくれ

37 :デフォルトの名無しさん:2007/01/14(日) 23:09:04
GLSceneがどのくらいの速度か、簡単なベンチを作って比較してみました。
(直線を20万本描くだけ)

CPU:Pentium4 2.6GHz
Mobility Radeon9000

GLScene 1倍
Graphics32 3.2倍
DirectX7+GDI 28.6倍
TBitmap+GDI 51.1倍

「DirectX7+GDI」とは、単に俺がDirectXで直線の描き方を知らず、
DirectDrawサーフェスにGDIで描いちまった。

結局、GDIがどれだけ遅いかを示しただけのベンチになっちまった。
orz

38 :デフォルトの名無しさん:2007/01/15(月) 00:04:11
デモにGLSceneとGDIを比較するcanvasってのがあったよ。
Core2Duo X6800
GeForce7900GTで以下のスコア。
        GLScene:GDI (カッコ内はペンサイズ2)
直線2万     1:40 (1:180)
楕円2万     1:9.3 (1:30.1)
矩形2万     1:16 (1:16)
点20万      1:18.4 (1:18.0)
文字2万     1:1.2 (1:1.1)

まあGDIと比較するのがナンセンスだわな

39 :デフォルトの名無しさん:2007/01/15(月) 05:23:17
もう少し低レベルなAPIを直に使いたいんだけどGLSceneでそういうのできる?

40 :デフォルトの名無しさん:2007/01/15(月) 08:57:18
それならGLScene使う必要ないんじゃないの?

41 :デフォルトの名無しさん:2007/01/16(火) 22:59:45
>>35
提示されたコードのおかげで原因が判りました
ポリゴンのサイズが大きすぎた(一辺50)のと、始点が(0,0,0)でなかったからみたい
もうちょっと根本から勉強が必要か…

42 :デフォルトの名無しさん:2007/01/16(火) 23:52:34
試行錯誤も勉強のうちじゃない。いいことだ。

43 :デフォルトの名無しさん:2007/01/21(日) 01:56:24
>>39
低レベルなAPIって、こういうこと?
<< 以下、例 >>
Form1にGLSceneとGLSceneViewerをドロップし、GLSceneエディタでGLCameraとGLDirectOpenGLを追加。
GLSceneViewer1のCameraプロパティにGLCamera1をセット
GLCamera1のPosition(X,Y,Z) を(0,0,5)にセット
Usesに「GLTexture」と「OpenGL1x」を追加
GLDirectOpenGL1のOnRenderイベントに、次のようなOpenGLのコマンドを書く。

procedure TForm1.GLDirectOpenGL1Render(Sender: TObject; var rci: TRenderContextInfo);
begin
glMatrixMode(GL_MODELVIEW);
glPushMatrix;
glTranslatef(-1, 0, 0);
glDisable(GL_LIGHTING);
glEnable(GL_COLOR_MATERIAL);
glBegin(GL_TRIANGLES);
glColor3f(1.0,0.0,0.0);
glVertex3f( 0.0, 1.0, 0.0);
glColor3f(0.0,1.0,0.0);
glVertex3f(-1.0,-1.0, 0.0);
glColor3f(0.0,0.0,1.0);
glVertex3f( 1.0,-1.0, 0.0);
glEnd();
glDisable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);
glPopMatrix;
end;


44 :デフォルトの名無しさん:2007/01/22(月) 00:50:34
GLSceneオブジェクトの絶対座標は、どうやって割り出しゃいいんだろ
プロパティに無いんだけど、まさか、計算か

45 :デフォルトの名無しさん:2007/01/22(月) 10:22:50
他にどうしろと

46 :デフォルトの名無しさん:2007/01/23(火) 00:48:04
>>44
publishedじゃないけど、AbsolutePositionプロパティ(TVector型)があるよ。
TVector型は配列になっていて、
(X,Y,Z) = (AbsolutePosition[0], AbsolutePosition[1], AbsolutePosition[2])
となっています。
・・・以下、使用例。GLCube1の位置について、GLCube2からの相対座標を割り出す。

usesに「VectorGeometry」を追加(TVectorが定義されている)
//GLCube1の絶対座標をGLCube2の相対座標にする。
var
LocalPosition:TVector;
begin
LocalPosition:=GLCube2.AbsoluteToLocal(GLCube1.AbsolutePosition);
end;


47 :デフォルトの名無しさん:2007/01/23(火) 01:45:15
もしかしたら、市販ゲーで使うかもしれないage

ひと段落したら、素のOpenGLエンジン+Win32APIから、
これ+VCLに乗せ変えようと思っております。

しぇーだって、どれくらいのマシンで動いてくれるんだろうか・・・

48 :デフォルトの名無しさん:2007/01/23(火) 05:18:16
BCBでも使えますか?

49 :デフォルトの名無しさん:2007/01/23(火) 08:28:28
>>48
5と6で使える

50 :デフォルトの名無しさん:2007/01/23(火) 11:44:36
>49
BDS版のBCBではムリ?

51 :デフォルトの名無しさん:2007/01/23(火) 23:23:26
>>50
自 分 で 試 せ よ

52 :デフォルトの名無しさん:2007/01/24(水) 12:38:05
俺はBCB持ってないんでなんとも言えないけど、
BCB6で試してみれば?

53 :デフォルトの名無しさん:2007/01/27(土) 01:13:51
上の方でGLSceneと一緒に使えそうなサウンドの話が出てたけど、
OpenAL Unit(Delphi OpenAL)
http://www.noeska.com/doal/
というのはどうなんでしょうか?Ogg再生のチュートリアルがあるんで使えそうな気がするんですけど。

僕はライセンスのことは良くわからないけど、こんな感じ?
A・・・OpenAL(LGPL)
B・・・Delphi OpenAL(MPL)
C・・・オリジナルのプログラム
※AはBに動的リンクされて、BはCに静的リンクされる

(1)A,B,Cの配布は、有料・無料関係なく自由(フリー)
(2)Aを配布する場合は、ソースコードを添付しなけばならない。
(3)Bに静的リンクしているCは、コードを非公開にできる。ただしCのコード内にB(MPL)のコードが含まれるため、そのBのソースコードがどこで入手出来るかを明記しなければならない。

54 :デフォルトの名無しさん:2007/01/27(土) 02:30:34
>>53
俺は、音は、DirectSound+OggVorbis使ってるw

しかしOpenALって全然しらべても資料がないんだよな。
そこにつけて、Delphiっとなると・・・
って、お前よくそんなサイト見つけたなw



55 :デフォルトの名無しさん:2007/01/27(土) 02:47:09
(´・∀・`)ヘー よく見つけたねー すごいねー

56 :デフォルトの名無しさん:2007/01/27(土) 03:00:54
>>53
OggVorbis鳴らすサンプル動いたよ。

別途、OpenAL32.dllが必要。
これが、LGPLなんかな。

(2)Aの配布は、ソースコードつけなくていいよ。
ソース入手先(配布元)を書いておけばいい。
(3)Bのコードを改変した場合は、そのソースコードの開示義務が出る。
だけど、Cに静的リンクしているだけなら、改変とみなされないので、特に開示する必要ない。
ただ、著作表示は書く必要あったはず。

MPLは、あくまでそのものを改変した場合、つまり、ライブラリなら、それを改造した場合のみ適用される。
それを組み込んだ側、つまり使う側には、不都合な制限はうけないはず。


57 :デフォルトの名無しさん:2007/01/27(土) 17:53:58
GLScene使ってみたんだが、
アプリケーション終了時にエラーが起こる・・・。
なんとかならんのか?

---------------------------
デバッガ例外通知
---------------------------
プロジェクト fire.exe は例外クラス EGLContext (メッセージ 'Context activation failed: C0070006, ')を送出しました。
---------------------------
ブレーク(B) 継続(C) ヘルプ
---------------------------

と出て、無限にダイアログが出て終了できなくなる。
demoのFireでも起こったし、自作のアプリでも起こった。

Delphi2006
GLScene 1.0.0.0714


58 :57:2007/01/27(土) 18:53:41
CVS版でも起こりますね・・・
困った

59 :デフォルトの名無しさん:2007/01/27(土) 18:54:45
どうでもいいことだけどバージョンの付け方がうざすぎるよな

60 :53:2007/01/27(土) 22:04:24
>>54
ありゃりゃ、DirectSoundでもOgg使えたのか。
僕の勉強不足だったです。DirectSoundでOggが使えれば、ほとんど解決ですね。
mp3のライセンスが極悪なんで、Oggが使えるライブラリを探していたら、たまたまDelphiOpenALを見つけました。
>>56
サンクスです。LGPLへの動的リンクは、ソース入手先等を書いとけばいいのですね。
>>57
僕の場合は、GLScene付属のデモ(Fire含めて)も自作アプリも、そんなエラーは出たこと無いのですが・・・
TuboDelphi2006(10.0.2288.42451 Update 2) +GLScene 1.0.0.0714
ですので、ほとんど同じですね。
・・・・・・ということは、グラボのドライバが怪しい?

61 :57:2007/01/27(土) 22:29:30
そっか、そちらでは、エラーでてないのですかー。
ドライバ更新してみっか・・・

62 :57:2007/01/27(土) 23:11:19
だめだ、ドライバ更新したのに直らないや・・・
困った。

GeXCube RADEON 9600XT Game Buster
ドライバー: 2006/12/16 ver 8.33.0.0

他の環境でも試して見ます・・・。


63 :53:2007/01/27(土) 23:42:49
>>57
やはり全く同じエラーが出ている人もいるようです。
http://www.wincustomize.com/skins.aspx?skinid=171&libid=40
http://delphi.newswhat.com/geoxml/forumhistorythread?groupname=glscene.support&messageid=c7omik$cim$1@talkto.net
でも、原因も解決方法がわからないです。
もうちょっと調べてみます。

64 :デフォルトの名無しさん:2007/01/28(日) 00:03:18
delphi入門
http://delphi-delphi.tripod.com/delphi.html


65 :57:2007/01/28(日) 00:29:31
素のOpenGL使ってるときには、起こらなかったから、
GLScene側の問題だとは思うのだが、環境によっておこらないとなるとねえ。

66 :デフォルトの名無しさん:2007/01/28(日) 00:38:12
>>57
もしかして、標準のopengl32.dllとグラボのドライバとの相性が悪かったりして・・・
試しにMesa6.2 Win32を使ってみたらどうだろ?
(GLSceneのサイトからダウンロード出来る)
念のためWindows\System32\opengl32.dllをバックアップして、Mesaのopengl32.dllと入れ替えしてみて

67 :57:2007/01/28(日) 00:46:51
newswhat.com [glscene.general]
http://delphi.newswhat.com/geoxml/forumhistorythread?groupname=glscene.general&messageid=ed92mg$g4m$1@news.talkto.net

ここにも、同じこと言っている人がいた。
同じビデオチップだ・・・

68 :57:2007/01/28(日) 00:51:29
newswhat.com [glscene.general]
http://delphi.newswhat.com/geoxml/forumhistorythread?groupname=glscene.general&messageid=ecudnn$nd7$1@news.talkto.net

これ?が解決策だろうか?

69 :57:2007/01/28(日) 01:00:03
>>66
MesaのOpenGL.dllをデモと同じディレクトリに置きました。
そっちを優先的に見ると思うので・・・

で、結果ですが、終了時のエラーは起きませんでした。
(ただ、fireのdemo自体はは正常に動いていませんが)

むふー。

70 :53:2007/01/28(日) 01:01:36
「About Ati Context OnClose bug, quick solution」ってやつ?
viewerを開放するって、手動で開放するってことかな?

71 :57:2007/01/28(日) 01:13:08
えーと、TForm.OnCloseに
Viewerの開放処理、つまり、
FreeAndNil(GLSceneViewer1);
を入れたら、エラーは出ませんでした。


72 :53:2007/01/28(日) 01:14:30
>>57
もし、この英文どおりドライバのバグなら、Catalyst7.1を入れたらどうでしょうか?
http://ati.amd.com/index.html


73 :53:2007/01/28(日) 01:18:24
>>57
あ、一応解決ですね。
・・・と言う事は・・・
Radeon対策に、TGLSceneViewerの開放処理をしたほうが良さそうですね。

74 :57:2007/01/28(日) 01:20:09
これでも、まあいいのですが、
一応、エラーの原因は追究しておきたいと思います。

エラーというか、例外がおきているんですよ。
procedure TGLWin32Context.DoActivate;
内の
  if not wglMakeCurrent(Cardinal(FDC), Cardinal(FRC)) then
が、失敗し、次の行の
  raise EGLContext.Create(Format(cContextActivationFailed,
で、例外発生。


どうも、GLScene的に、WM_DESTROYをフックして(GLWin32Context.TrackHookProc)、
そのときに開放処理を行っているようなのですが、
その中で、終了時なのに、GLContext.TGLContext.Activate呼び出して、
wglMakeCurrentやってるんですよね・・・。
なんか、奇妙だ。

素でOpenGL使っていたときはやらなかったからなあ。


ソースが追えるところの、呼び出し履歴を張っておきます。

:7c812a5b kernel32.RaiseException + 0x52
GLWin32Context.TGLWin32Context.DoActivate
GLContext.TGLContext.Activate
GLContext.TGLContext.DestroyContext
GLWin32Context.TGLWin32Context.DestructionEarlyWarning(???)
GLWin32Context.TrackHookProc(0,0,1244640)


75 :57:2007/01/28(日) 01:22:13
>>72
7.1は、先ほど、ドライバを最新に・・・と言われたときに入れました。
それでも同じでした。

76 :57:2007/01/28(日) 01:45:17
> どうも、GLScene的に、WM_DESTROYをフックして(GLWin32Context.TrackHookProc)、

このタイミングがわるいのかと思い、フックしない設定
つまり、
GLWin32Context.vUseWindowTrackingHook := False;
とやったのですが、これでも起こりました。

GLWin32Context.TGLWin32Context.Destroyで普通におきる罠・・・


呼び出し履歴:

GLWin32Context.TGLWin32Context.DoActivate
GLContext.TGLContext.Activate
GLContext.TGLContext.DestroyContext
GLContext.TGLContext.Destroy
GLWin32Context.TGLWin32Context.Destroy
:00463cf9 TGLContext.Destroy + $1D
:00443106 TWinControl.WndProc + $49E
:0044288f TWinControl.MainWndProc + $2F

77 :53:2007/01/28(日) 02:12:02
僕も今、ソースを追ってみたのですが・・・
あ、頭が混乱してきた・・・
あー力不足。

>その中で、終了時なのに、GLContext.TGLContext.Activate呼び出して、
>wglMakeCurrentやってるんですよね・・・。
>なんか、奇妙だ。
なんでこんなとこでバインドする必要があるんだろ?本当に奇妙ですよね。
glGetString(GL_VENDOR)のため?・・・いや、関係ないか。

ぼちぼちもうちょっとソース追ってみようっと。



78 :53:2007/01/30(火) 00:09:32
ニュースグループにも、ATI Mobility X1300で同じ症状の人がいるみたいです。
(procedure TGLWin32Context.DoActivateのwglMakeCurrent(Cardinal(FDC), Cardinal(FRC))で例外発生)
「TForm.onDestroyでGLSceneViewer1.Buffer.DestroyRC;」しろ!とレスされてます。

でも・・・私のノートパソがATI Mobility X1400なので、もしかしてと思い、試してみたのですが・・・(fireデモ含んで)例外は発生しませんでした。
本当に何が原因なんだろ?

79 :デフォルトの名無しさん:2007/01/30(火) 03:26:10
Delphiで、3Dライブラリといったら、Rage3Dっつーのもあるんですね。
Google Code Searchふらついてたら見つけた。

Rage 3D Game Engine News - Open Source free game engine for commercial games and free game use
http://www.rage-game-engine.za.net/


とは言え、サンプルとかが多そうなGLSceneをしばらくは使ってみますが。
浮気するには、まだ早い!

80 :デフォルトの名無しさん:2007/02/04(日) 00:51:00
Rage3D、インストールの仕方もわからんかった。
やはりGLSceneの方が良さそうか。

81 :デフォルトの名無しさん:2007/02/06(火) 17:15:24
これ、使いやすくていいですね!
キューブにtexture画像を貼り付けると、自動的にstretchされるんですが、
tileにするにはどうすればよいか教えていただけませんか?

82 :デフォルトの名無しさん:2007/02/07(水) 17:59:04
落としたファイルにライセンス条項が見当たらないのですが、
本家ページによればMPL相当らしいので、配布には、copyrightを書かねばいけませんよね?
copyrightは、どう書けばいいのですかな。


GLScene (c) GLScene Project
http://glscene.org

83 :デフォルトの名無しさん:2007/02/07(水) 18:02:10
GLScene, Delphi + OpenGL
http://caperaven.co.za/

ここのヘルプに書いてありますね。

GLScene (c) 2000-2001 Eric Grange
http://glscene.org

でよいのかな・・・


84 :デフォルトの名無しさん:2007/02/07(水) 18:36:54
思ったのですが、
VectorGeometryは、通常のFPUと、SSEと、3DNow!で、場合分けしますよね?
リプレイの実装で問題がでそうなので、OFFりたい、というか、FPUオンリーにしたいのですが、

initialization の CPU判別ルーチンをコメントアウトしておけば、
vSIMD:=0; が初期値なので、OKですよね。


85 :デフォルトの名無しさん:2007/02/10(土) 23:33:18
>>81
マテリアルライブラリからなら、タイル状に貼れるぞ。
例えば、GLMaterialLibrary1の0番目に入っているテクスチャを貼りたい時、
GLMaterialLibrary1.Materials[0]のプロパティTextureScaleをいじってみてくれ。
たとえば5×5にするなら、X=5,Y=5だ。

86 :デフォルトの名無しさん:2007/02/12(月) 09:54:17
>>85
サンキューです。できました。
簡単にできて、素晴らしいですね。直にOpenGLいじる気なくなりますね。

87 :デフォルトの名無しさん:2007/02/15(木) 17:58:16
物理エンジンoxNewtonをインストールしてみました。
http://www.dave.serveusers.com/oxNewton.html

TGLSceneが拡張されて、oxNewton用のGLSCeneObjectが追加されます。
何故か嬉しい事にOpenAL用コンポーネントも付いているようです。
また時間が空いているときにいじってみようと思います。

88 :デフォルトの名無しさん:2007/02/15(木) 18:13:21
インストールに悩みました。同じ様に悩む人もいると思うので、やり方を書きます。

解凍後、GLSceneのフォルダにコピーする。
→GLVectorFileObjects.pasが上書きされる
oxNewtonフォルダのinstalldll.batを実行する。
→「Newton.dll」「oxNewton.dll」「OpenAL32.dll」「wrap_oal.dll」がsystem32にコピーされる
ライブラリパスに「\oxNewton」を追加する。
GLSceneのDelphi***.dpkをダブルクリックして、プロジェクトマネージャーを立ち上げる。フォルダDesignTimeにある「oxNewtonRegister.pas」をDelphi***.dpkに追加し、再構築&インストールする。

89 :デフォルトの名無しさん:2007/02/16(金) 19:18:29
>>87
乙です。
・・・ということは、GLSceneでODE(Open Dynamics Engine)とNewtonと二つの物理エンジンが使えるってことだよね。
どっちがどう違うんだろ?
誰か知っている人います?

90 :デフォルトの名無しさん:2007/02/25(日) 02:17:28
GLScene入れてみた。
殆どコード書かなくても3D的な事ができるな。こりゃ楽だ。
しかし.3dsかぁ。teapotを10000個出して動かしてみたけど、楽しくないや。
モデリングソフトはさっぱり知らんが、もっと手軽なフォーマットがないかな。

91 :デフォルトの名無しさん:2007/02/26(月) 22:50:54
>>90
有名どころのフリーのモデラーの出力形式をコピペしてみた。GLSceneが対応しているフォーマットは>>22が書いてるとおり。

【Blender】
3D Studio, AC3D, COLLADA, DEC Object File Format, DirectX, Lightwave, MD2, Motion Capture, Nendo, OpenFlight, PLY, Pro Engineer, Radiosity, Raw Triangle, Softimage, STL, TrueSpace, VideoScape, VRML, VRML97, Wavefront, X3D Extensible 3D, xfig export

【OpenFX】
3D Studio models(.3DS) , DXF models(.DXF) , STL Stereo Lithography(.STL) , VRML files(.WRL)

【Wings3D】
Nendo (NDO) , 3D Studio (3DS) , Wavefront (OBJ) , VRML (WRL) , Renderware (RWX) , FBX (on Windows and Mac OS X)

これからするとやはりフォーマットは、3dsがポピュラーっぽいね。


92 :90:2007/02/27(火) 23:13:01
>>91
おぉ、すごい。ありがとう。今から見てきます。

今週末はタイマー周りで遊んでみた。
GLTimeEventsMGRがあるので、自前でタイマー処理を書かなくて済むし、
GLCadencerの設定変えれば描画スキップして10ms毎に確実にカウントできる処理とかもできるし。
これ便利だわ。

93 :87:2007/02/28(水) 00:09:27
物理エンジンoxNewtonを試してみました。ヘルプが無いのが辛いです。まだまだわからない事ばかりですが簡単にまとめてみます。

・剛弾性体の運動および衝突をシミュレートしてアニメーション。
・TGLSceneの代わりにToxNewtonManager(TGLSceneから継承)を使用する。TGLCadencerは必須。
・ToxNewtonManagerで設定する必要のあるプロパティは以下のとおり
Cadencer←TGLCadencer、Cadencer側でもToxNewtonManagerを指定
WorldSizeMax,WorldSizeMin
WorldMaterialElasticity←弾性係数
WorldMaterialKineticFriction←動摩擦係数
WorldMaterialStaticFriction←静摩擦係数
WorldMaterialSoftness
WorldStepMode
・・・mdNormalStepの場合はWorldStepTimeで設定
・・・mdMultyplyStepの場合はWorldMultiplyTimeで設定
・・・mdCadencer 実時間?
Gravity←初期値は(0,0,-9.81)つまりz軸が上方向

・ToxNewtonManagerをダブルクリックしてGLSceneエディタを立ち上げて、oxNewtonオブジェクトを追加していく。
・Dynが付くのは動くオブジェクトで、Staが付くのは動かないオブジェクト(床や壁等)。
・弾性係数はMaterialElasticityプロパティで動摩擦係数はMaterialKineticFrictionプロパティ。
・oxNewtonManagerやoxNewtonオブジェクトやジョイントはフォームのonCreateイベントで初期化しておく。
・onNewtonには直接関係ないけど、GLSceneを使ったときは、フォームのonCloseイベントで以下のコードを追加しましょう。
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// ATI onclose context error fix
if assigned(GLSceneViewer1) then GLSceneViewer1.Free;
end;

34 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)