06/11/12 05:27:46
とりあえず日本語でおk
3:デフォルトの名無しさん
06/11/13 18:10:55
GLSceneに付いているDelphiODEもおk
URLリンク(www.hypeskeptic.com)
4:デフォルトの名無しさん
06/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
06/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
06/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:デフォルトの名無しさん
06/12/06 22:53:33
スクリーンショットと導入手引きどこ?
8:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/12/13 11:44:56
OpenGL単体で扱うのに疲れてきたので、GLSceneつかってよかですか?
全画面にするのは、どうすればいいんだろ・・・
また、DirectDraw使うか・・・
10:デフォルトの名無しさん
06/12/13 11:52:31
今は、DirectSound使ってます。
しかし、サウンドの、FMODって、1タイトル最低$3000って高すぎるんですが(泣
11:デフォルトの名無しさん
06/12/13 11:54:29
BASS.dllも、Single Commercial license: ?950ヽ(`Д´)ノ ウワァァン!!
DirectSound使うか・・・
それともSDLか・・・
これと、SDLの組み合わせ使っている人います?
12:デフォルトの名無しさん
06/12/13 15:47:54
VB.NETでManaged DirectX使ったほうが簡単だね
13:デフォルトの名無しさん
06/12/13 16:39:12
>>12
Managed DirectXは死にましたけど・・・
14:デフォルトの名無しさん
06/12/13 17:50:02
>>13
まあ>>12のレベルはその程度だって事だ。
15:デフォルトの名無しさん
06/12/13 17:55:43
ん?Delphi自体初心者なんですけどDirect3Dなみに速いんですか?
3Dゲームとかつくれるんですか?
16:デフォルトの名無しさん
06/12/13 18:08:19
>>15
俺もいま、GLSceneは使おうかってところだけど、
GLSceneが使っているOpenGL自体は、ゲームにも使われている。
速度は、よほどのことしないかぎり、Direct3Dと変わらんよ。
3Dゲームは作れるよ。
17:15
06/12/13 19:06:09
>GLSceneが使っているOpenGL自体は、ゲームにも使われている。
つまりOpenGLのラッパーってやつですか?
18:デフォルトの名無しさん
06/12/13 19:30:22
>>17
そですね。
19:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/12/13 19:57:39
>>19
サンクス試してみます。
21:8
06/12/14 11:01:26
>>7
導入の補足
もし、Graphics32をインストールしているのなら、GLSceneでもGraphics32を使うようにしよう。
1.GLSceneのSourceフォルダに入っている「GLScene.inc」をメモ帳等で開く
2.以下の部分を変更
// Activate support for Alex Denissov's Graphics32 library (URLリンク(www.g32.org))
{.$DEFINE GLS_Graphics32_SUPPORT}
↑このドットを削除
{$DEFINE GLS_Graphics32_SUPPORT}にする。
Graphics32はTBitmapやGDI描画よりも比べ物にならないくらい早いので、導入しても損は無いです。
22:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/01/06 01:45:14
ライセンスが糞過ぎて使えない
24:デフォルトの名無しさん
07/01/06 01:57:32
>>23
ライセンスって MPL みたいだけど、MPL もウィルスよりも酷い GPL 並に最悪なライセンスなんだっけ?
25:デフォルトの名無しさん
07/01/07 00:12:37
>>24
確かにMPLは伝染性は高いですが、GPLやLGPLほどではありません。
>mozilla.orgのFAQ参照方
URLリンク(www.mozilla.org)
MPL ver1.1に従えば・・・
GLSceneを使ってソフトを作るときは、1.9項および3.7項あたりに相当すると思います。
簡単に言えば、もしMPL化されたコード(ここではGLSceneコンポーネント)を使った自作ソフトを作ったとき、GLSceneの入手先(HPアドレスでよい)さえどこかに明記すればよく、その他の自作ソースコードは別に公表する必要はありません。
ただし、GLSceneコンポーネントを改造して公表するときは、GPL並みの義務が生じます。
つまりコントリビュータ(貢献者)になる場合ですね。
(全部説明するのは面倒くさいんで、URLリンク(www.mozilla.org)を参照して下さい)
ちなみにGLSceneの作者はReadMeに堅苦しいことは書いておらず、以下の様に書いています。
(1)フリーウエア作ろうが商用ソフト作ろうが、GLSceneは無料でぇ~す!
(2)そのかわりどこかに「GLSceneつかってまーす。URLリンク(glscene.org)」って書いてね。
(3)もしGLSceneを改造してオープンソースにしようと思うんなら、全てのコードを公表する必要は無いけど、どこをどの様に変えたか明記してね。
ってな感じかな。
26:デフォルトの名無しさん
07/01/07 00:48:28
>>25
解説乙。でも、それじゃぁなんで >>23 はライセンスが糞って言ってんだろ? バカだから?
27:デフォルトの名無しさん
07/01/07 07:39:01
>>25
>(3)もしGLSceneを改造して
「改造」に「継承」は含まれないよね?
「継承」なら(2)になるんじゃないかと思うんだが…。間違ってる?
28:デフォルトの名無しさん
07/01/07 10:20:35
> 「改造」に「継承」は含まれないよね?
GLScene のユニットと分離すればいいんじゃね。
自分の所で、どう利用しようが勝手でしょ。
29:25
07/01/07 23:13:56
>>27
私も28氏の言うとおりだと思います。
GLSceneのユニットと分離してあれば何の問題もないし、そもそも継承とは、実際にはコードの再利用ということになるので、元のコードを改造しているわけではありませんね。
というわけで、「継承」は(2)に当たり、プロプラエタリ(非公開)アプリケーションにして販売しようが自由です。
30:デフォルトの名無しさん
07/01/11 19:44:07
これのチュートリアルみたいなものってないですか?
31:デフォルトの名無しさん
07/01/12 18:04:12
>>30
チュートリアルは一応ここにあるよ。全部英語だけど。
<本家>
URLリンク(glscene.sourceforge.net)
<GLScene Help Project>
URLリンク(caperaven.co.za)
<GLSceneのHelpフォルダ>
HelpフォルダのGLSceneTraining.chm
日本じゃ、Direct3D(現DirectX Graphics)が幅を利かせてるんで、
ましてOpenGL用のライブラリなんか日本語の解説ほとんどお目にかからないよね。
海外じゃOpenGLの市販3Dゲームとかあるのに。
32:デフォルトの名無しさん
07/01/12 21:09:02
>>31
サンクス。
みてみるす
33:デフォルトの名無しさん
07/01/12 23:46:25
GLSceneに大量のサンプルが付いているんで驚いた。
意外に少ないコードでも結構いろんなことが出来るみたい。
34:デフォルトの名無しさん
07/01/13 18:22:17
GLPolygonにテクスチャを適用したいけど、テクスチャが正常に表示されない
GLPlaneみたいにファイル設定するだけじゃ駄目なのか
35:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/01/14 22:54:32
試しに入れてみたけどデモ多くてワロタ
誰かこれでピンボール作ってくれ
37:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/01/15 05:23:17
もう少し低レベルなAPIを直に使いたいんだけどGLSceneでそういうのできる?
40:デフォルトの名無しさん
07/01/15 08:57:18
それならGLScene使う必要ないんじゃないの?
41:デフォルトの名無しさん
07/01/16 22:59:45
>>35
提示されたコードのおかげで原因が判りました
ポリゴンのサイズが大きすぎた(一辺50)のと、始点が(0,0,0)でなかったからみたい
もうちょっと根本から勉強が必要か…
42:デフォルトの名無しさん
07/01/16 23:52:34
試行錯誤も勉強のうちじゃない。いいことだ。
43:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/01/22 00:50:34
GLSceneオブジェクトの絶対座標は、どうやって割り出しゃいいんだろ
プロパティに無いんだけど、まさか、計算か
45:デフォルトの名無しさん
07/01/22 10:22:50
他にどうしろと
46:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/01/23 01:45:15
もしかしたら、市販ゲーで使うかもしれないage
ひと段落したら、素のOpenGLエンジン+Win32APIから、
これ+VCLに乗せ変えようと思っております。
しぇーだって、どれくらいのマシンで動いてくれるんだろうか・・・
48:デフォルトの名無しさん
07/01/23 05:18:16
BCBでも使えますか?
49:デフォルトの名無しさん
07/01/23 08:28:28
>>48
5と6で使える
50:デフォルトの名無しさん
07/01/23 11:44:36
>49
BDS版のBCBではムリ?
51:デフォルトの名無しさん
07/01/23 23:23:26
>>50
自 分 で 試 せ よ
52:デフォルトの名無しさん
07/01/24 12:38:05
俺はBCB持ってないんでなんとも言えないけど、
BCB6で試してみれば?
53:デフォルトの名無しさん
07/01/27 01:13:51
上の方でGLSceneと一緒に使えそうなサウンドの話が出てたけど、
OpenAL Unit(Delphi OpenAL)
URLリンク(www.noeska.com)
というのはどうなんでしょうか?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:デフォルトの名無しさん
07/01/27 02:30:34
>>53
俺は、音は、DirectSound+OggVorbis使ってるw
しかしOpenALって全然しらべても資料がないんだよな。
そこにつけて、Delphiっとなると・・・
って、お前よくそんなサイト見つけたなw
55:デフォルトの名無しさん
07/01/27 02:47:09
(´・∀・`)ヘー よく見つけたねー すごいねー
56:デフォルトの名無しさん
07/01/27 03:00:54
>>53
OggVorbis鳴らすサンプル動いたよ。
別途、OpenAL32.dllが必要。
これが、LGPLなんかな。
(2)Aの配布は、ソースコードつけなくていいよ。
ソース入手先(配布元)を書いておけばいい。
(3)Bのコードを改変した場合は、そのソースコードの開示義務が出る。
だけど、Cに静的リンクしているだけなら、改変とみなされないので、特に開示する必要ない。
ただ、著作表示は書く必要あったはず。
MPLは、あくまでそのものを改変した場合、つまり、ライブラリなら、それを改造した場合のみ適用される。
それを組み込んだ側、つまり使う側には、不都合な制限はうけないはず。
57:デフォルトの名無しさん
07/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
07/01/27 18:53:41
CVS版でも起こりますね・・・
困った
59:デフォルトの名無しさん
07/01/27 18:54:45
どうでもいいことだけどバージョンの付け方がうざすぎるよな
60:53
07/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
07/01/27 22:29:30
そっか、そちらでは、エラーでてないのですかー。
ドライバ更新してみっか・・・
62:57
07/01/27 23:11:19
だめだ、ドライバ更新したのに直らないや・・・
困った。
GeXCube RADEON 9600XT Game Buster
ドライバー: 2006/12/16 ver 8.33.0.0
他の環境でも試して見ます・・・。
63:53
07/01/27 23:42:49
>>57
やはり全く同じエラーが出ている人もいるようです。
URLリンク(www.wincustomize.com)
URLリンク(delphi.newswhat.com)
でも、原因も解決方法がわからないです。
もうちょっと調べてみます。
64:デフォルトの名無しさん
07/01/28 00:03:18
delphi入門
URLリンク(delphi-delphi.tripod.com)
65:57
07/01/28 00:29:31
素のOpenGL使ってるときには、起こらなかったから、
GLScene側の問題だとは思うのだが、環境によっておこらないとなるとねえ。
66:デフォルトの名無しさん
07/01/28 00:38:12
>>57
もしかして、標準のopengl32.dllとグラボのドライバとの相性が悪かったりして・・・
試しにMesa6.2 Win32を使ってみたらどうだろ?
(GLSceneのサイトからダウンロード出来る)
念のためWindows\System32\opengl32.dllをバックアップして、Mesaのopengl32.dllと入れ替えしてみて
67:57
07/01/28 00:46:51
newswhat.com [glscene.general]
URLリンク(delphi.newswhat.com)
ここにも、同じこと言っている人がいた。
同じビデオチップだ・・・
68:57
07/01/28 00:51:29
newswhat.com [glscene.general]
URLリンク(delphi.newswhat.com)
これ?が解決策だろうか?
69:57
07/01/28 01:00:03
>>66
MesaのOpenGL.dllをデモと同じディレクトリに置きました。
そっちを優先的に見ると思うので・・・
で、結果ですが、終了時のエラーは起きませんでした。
(ただ、fireのdemo自体はは正常に動いていませんが)
むふー。
70:53
07/01/28 01:01:36
「About Ati Context OnClose bug, quick solution」ってやつ?
viewerを開放するって、手動で開放するってことかな?
71:57
07/01/28 01:13:08
えーと、TForm.OnCloseに
Viewerの開放処理、つまり、
FreeAndNil(GLSceneViewer1);
を入れたら、エラーは出ませんでした。
72:53
07/01/28 01:14:30
>>57
もし、この英文どおりドライバのバグなら、Catalyst7.1を入れたらどうでしょうか?
URLリンク(ati.amd.com)
73:53
07/01/28 01:18:24
>>57
あ、一応解決ですね。
・・・と言う事は・・・
Radeon対策に、TGLSceneViewerの開放処理をしたほうが良さそうですね。
74:57
07/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
07/01/28 01:22:13
>>72
7.1は、先ほど、ドライバを最新に・・・と言われたときに入れました。
それでも同じでした。
76:57
07/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
07/01/28 02:12:02
僕も今、ソースを追ってみたのですが・・・
あ、頭が混乱してきた・・・
あー力不足。
>その中で、終了時なのに、GLContext.TGLContext.Activate呼び出して、
>wglMakeCurrentやってるんですよね・・・。
>なんか、奇妙だ。
なんでこんなとこでバインドする必要があるんだろ?本当に奇妙ですよね。
glGetString(GL_VENDOR)のため?・・・いや、関係ないか。
ぼちぼちもうちょっとソース追ってみようっと。
78:53
07/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:デフォルトの名無しさん
07/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
URLリンク(www.rage-game-engine.za.net)
とは言え、サンプルとかが多そうなGLSceneをしばらくは使ってみますが。
浮気するには、まだ早い!
80:デフォルトの名無しさん
07/02/04 00:51:00
Rage3D、インストールの仕方もわからんかった。
やはりGLSceneの方が良さそうか。
81:デフォルトの名無しさん
07/02/06 17:15:24
これ、使いやすくていいですね!
キューブにtexture画像を貼り付けると、自動的にstretchされるんですが、
tileにするにはどうすればよいか教えていただけませんか?
82:デフォルトの名無しさん
07/02/07 17:59:04
落としたファイルにライセンス条項が見当たらないのですが、
本家ページによればMPL相当らしいので、配布には、copyrightを書かねばいけませんよね?
copyrightは、どう書けばいいのですかな。
GLScene (c) GLScene Project
URLリンク(glscene.org)
83:デフォルトの名無しさん
07/02/07 18:02:10
GLScene, Delphi + OpenGL
URLリンク(caperaven.co.za)
ここのヘルプに書いてありますね。
GLScene (c) 2000-2001 Eric Grange
URLリンク(glscene.org)
でよいのかな・・・
84:デフォルトの名無しさん
07/02/07 18:36:54
思ったのですが、
VectorGeometryは、通常のFPUと、SSEと、3DNow!で、場合分けしますよね?
リプレイの実装で問題がでそうなので、OFFりたい、というか、FPUオンリーにしたいのですが、
initialization の CPU判別ルーチンをコメントアウトしておけば、
vSIMD:=0; が初期値なので、OKですよね。
85:デフォルトの名無しさん
07/02/10 23:33:18
>>81
マテリアルライブラリからなら、タイル状に貼れるぞ。
例えば、GLMaterialLibrary1の0番目に入っているテクスチャを貼りたい時、
GLMaterialLibrary1.Materials[0]のプロパティTextureScaleをいじってみてくれ。
たとえば5×5にするなら、X=5,Y=5だ。
86:デフォルトの名無しさん
07/02/12 09:54:17
>>85
サンキューです。できました。
簡単にできて、素晴らしいですね。直にOpenGLいじる気なくなりますね。
87:デフォルトの名無しさん
07/02/15 17:58:16
物理エンジンoxNewtonをインストールしてみました。
URLリンク(www.dave.serveusers.com)
TGLSceneが拡張されて、oxNewton用のGLSCeneObjectが追加されます。
何故か嬉しい事にOpenAL用コンポーネントも付いているようです。
また時間が空いているときにいじってみようと思います。
88:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/16 19:18:29
>>87
乙です。
・・・ということは、GLSceneでODE(Open Dynamics Engine)とNewtonと二つの物理エンジンが使えるってことだよね。
どっちがどう違うんだろ?
誰か知っている人います?
90:デフォルトの名無しさん
07/02/25 02:17:28
GLScene入れてみた。
殆どコード書かなくても3D的な事ができるな。こりゃ楽だ。
しかし.3dsかぁ。teapotを10000個出して動かしてみたけど、楽しくないや。
モデリングソフトはさっぱり知らんが、もっと手軽なフォーマットがないかな。
91:デフォルトの名無しさん
07/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
07/02/27 23:13:01
>>91
おぉ、すごい。ありがとう。今から見てきます。
今週末はタイマー周りで遊んでみた。
GLTimeEventsMGRがあるので、自前でタイマー処理を書かなくて済むし、
GLCadencerの設定変えれば描画スキップして10ms毎に確実にカウントできる処理とかもできるし。
これ便利だわ。
93:87
07/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;
94:91
07/03/08 22:53:10
>>90
俺もそのレス読んで思わずGLCadencerやGLTimeEventsMGRで色々と遊んでしまった。
GLCadencer自体、便利だね。ASAPを選べば余分な割り込みは発生しないし、かと言ってApplicationIdleも選べるし。
GLSceneを使う限りApplicationIdleを選択する必要は無いかもしれんが。
結局はプロパティはデフォルトのまま使えそう。
自前でタイマーのコードを書かなくて済むのが楽だね。
95:デフォルトの名無しさん
07/03/12 02:39:54
age
本家HP(URLリンク(glscene.org))のニュースより。
GLSceneライブラリの大幅なバグフィックス&拡張&最適化版のリリースが近々始まるそうです。
以前よりももっと良くなるらしいです。
(もしかして、これが去年夏頃から再開発を開始したGLSceneのver2かな?)
更に強力で更に早い!とのことで、リリースがとても楽しみです。
96:デフォルトの名無しさん
07/03/12 02:51:33
俺もGLSceneを入れてみた。
ビジュアルコンポーネントになってて、こりゃ使いやすそうだわ。
3Dゲームプログラミングに関する限り、QuadrupleDよりも上かも知れんな。
誰か、日本語の詳しいヘルプを作ってくれ。
97:デフォルトの名無しさん
07/03/12 10:15:26
メッシュとかどうなの?
98:デフォルトの名無しさん
07/03/12 22:04:50
>>96
己が神になれるチャンスをなぜ人に振る?
99:デフォルトの名無しさん
07/03/12 22:27:26
流れ者です。
URLリンク(wiki.lazarus.freepascal.org)
DelphiとGLSceneで書いておけば、
Lazarusでのコンパイル(Linux,Mac)もそれほど難しいものではないかも。
100:デフォルトの名無しさん
07/03/12 23:20:44
おまえらGLSceneを使ってるサンプルソースでも集めてくださいよ
101:デフォルトの名無しさん
07/03/13 18:48:30
>>100
ほう。ぼちぼちサンプルでも作ってみるかな。
102:デフォルトの名無しさん
07/04/11 03:00:48
>>101
サンプルまだー?チンチン
103:デフォルトの名無しさん
07/04/12 16:26:53
>>102
分かりやすいサンプルを作るのは難しいな。
それにプログラムのアップとかはどうすりゃいいんだろとか
いろいろ考えているうちに萎えた。
orz
104:デフォルトの名無しさん
07/04/13 12:14:25
アプロタは、gamdev使えばいいよ。ゲームがらみなんだから。(つかなんで、この板にあるんだ?)
105:デフォルトの名無しさん
07/04/14 18:21:34
gamdevってなんだろ?と思い、ググってみた。
もしかして、これのこと?
URLリンク(gamdev.org)
おぉなんと、ゲムデブWikiのDelphiまとめというところにGLSceneという項目が!
(ちょっと情報が古い感は否めないが・・・)
Wikiは良く知らないんだけど、これって勝手に編集したりしても、いいの?
106:デフォルトの名無しさん
07/04/14 18:42:59
いいわけねぇだろww
107:デフォルトの名無しさん
07/04/14 20:09:58
gamdevは、ゲ製作技術板 URLリンク(pc11.2ch.net)
のサポートサイトで、ゲーム制作関係用にアプロダとかwikiは、
勝手に使っていいのです。
>>106
むしろ勝手に編集してください。
108:デフォルトの名無しさん
07/04/14 20:12:40
ここだよね?
GamDevPukiWiki - GLScene
URLリンク(gamdev.org)
109:103
07/05/14 23:27:37
GamDevPukiWikiのDelphiまとめのGLSceneのところに、
リファレンスという項目を作ってみた。
ちと膨大な作業になりそうで、ひとりじゃ絶対無理なんで、
皆様も、追加&修正頼みます。
110:デフォルトの名無しさん
07/05/16 00:32:24
>>109
縦に長すぎて編集しづらい
111:103
07/05/16 01:04:09
>>110
スマソ。慣れてないもんで・・・
もうちょっと分割したほうがいい?
112:103
07/05/16 02:07:49
ちょこっと分割してみました。
こんなもんで、どうでっしゃろ?
113:デフォルトの名無しさん
07/05/16 02:35:44
GLScene良さそうだけど何から何までよくわかんないから
wiki作成頑張ってくれ
114:デフォルトの名無しさん
07/05/17 20:45:56
>>109
これの翻訳元(?)ってどこよ
115:103
07/05/17 22:50:10
>>114
主にGLScene本家URLリンク(glscene.org)のhelp→Reference Manualを基にしてます。
また一部、GLScene付属のヘルプを基にしたり、GLSceneのソースを解読したりして、
色々書き換えたりしてます。
既に書いたやつも、気が付いたら書き加えたり訂正したりしようと思っています。
私自身何かと忙しく、更新が遅れ気味にはなるとは思います・・・
本当に一人じゃ不可能なんで、 皆様も、追加&修正頼みます。
何卒、ご協力お願いいたします。
m(__)m
116:デフォルトの名無しさん
07/05/19 08:53:50
お疲れ様です
117:デフォルトの名無しさん
07/05/19 20:56:56
これ使ってる凄いソフトなんかある?デモ的なものでもいいから機能がわかるやつ頼む
118:デフォルトの名無しさん
07/05/20 18:54:52
>>117
URLリンク(glscene.sourceforge.net)
この中のAirBlastなんて、どう?
一応、ソース付きです。
他のAdvanced Demoは古いバージョン(Snapshot版)のGLSceneを使っているらしく、
ソース直して再コンパイルしないとまともに動かないと思う。
119:デフォルトの名無しさん
07/05/21 01:07:31
>>118
起動できない
---------------------------
Application Error
---------------------------
Exception EOpenGLError in module Archipelago.exe at 000802C9.
Need at least OpenGL version 1.1.
---------------------------
OK
---------------------------
120:デフォルトの名無しさん
07/05/21 23:21:54
>>119
あ、はい、、「Archipelago.exe」なら、まず最近のPCじゃ動かないと思います。
Advanced Demoの「Archipelago.exe」は、GLScene ver1.0より古いもの(SnapShot版か?)でコンパイルされていると思われます。
と言うのは、古いGLSceneの中にあるunit OpenGL12(OpenGL12.pas)のOpenGLのバージョンチェックにバグがあるのです。
具体的に言えば、OpenGLのver1.5までしか認識しないようです。
GLScene ver1.0からは「unit OpenGL12」は廃止になっていて、代わりに「unit OpenGL1x」を使ってくれ。。。
となっております。
そのため動かしたい場合は、ユニット名を変更して再コンパイルする必要があります。
その他、以前と変わっているユニット名は「Geometry」→「VectorGeometry」くらいか?
しかし・・・
更に古いベータバージョンは、クラス名や仕様の変更、メソッドの廃止・変更・追加など色々有ったようなので、
ちょっとした修正だけでは動かない可能性もあります。
「Archipelago.exe」のソースは確認していないので、動くかどうかは分かりません。
ベータバージョンが終了して公式バージョンのGLScene1.0がリリースされたは去年の7月なんで、ソフトウエアが出て来るのはまだまだこれからだと思います。
121:デフォルトの名無しさん
07/05/22 22:38:26
さっき「Archipelago.exe」のソースを見てみました。
このとき初めて知ったのですが、ベータバージョンのユニットGLMiscは、正式バージョンではGLMiscとGLStateとGLUtilsの3つに分かれたようです。
そしてInvertGLFrontFace手続きはGLMiscからGLStateに移動し、更にTGLStateCache型のクラスメソッドになったようです。
つまり、「Archipelago.exe」を再コンパイルするには、
ソースの以下の部分を変更する必要があります。
(1)ユニットGeometryをVectorGeometryへ名前を変更
(2)ユニットGLStateとGLUtilsを追加(多分GLUtilsはいらないが念のため)
(3)ユニットOpenGL12をOpenGL1xへ名前を変更
(4)クラスTGLStateCacheをインスタンス化して、InvertGLFrontFaceを呼び出ししている箇所(4ヶ所)をそのオブジェクトのメソッドに変更。
これでとりあえず動くはず・・・多分
(4)のやり方が分からない人は、以下のようにしてみてください。
①implementation部のuses節の後くらいに「var sc:TGLStateCache;」を追加
②Form1.onCreateに、「sc:=TGLStateCache.Create;」を追加
③Form1.onCloseを作って「sc.Free;」と書く
④全ての「InvertGLFrontFace;」を「sc.InvertGLFrontFace;」に変更する
122:デフォルトの名無しさん
07/05/22 22:40:18
って書いてるうちに、ソースの修正が終わったので、実行してみた。
このデモ、初めて見た。結構きれい。
でも・・・どうせ本家HPにデモを載せるなら、コードを修正してからの方が・・・
ボソッ
123:デフォルトの名無しさん
07/05/24 07:55:04
Delphi Doom
URLリンク(www.geocities.com)
124:デフォルトの名無しさん
07/05/25 12:38:14
>>123
もしかして、これってGLScene(OpenGL)じゃなくDirectXでは?
125:デフォルトの名無しさん
07/06/17 17:39:18
久々にGLSceneのNewsGroupをチェックしました。
GLScene用物理エンジンoxNewtonの新バージョン(Ver1.48)がもう少しでリリースされるようです。
そのバージョンで、「bsp loader」という新しいオブジェクトが追加されるようです。
Quake3形式のbspマップの読み込みと表示が出来るようになるようです。
表示テスト用
URLリンク(www.dave.serveusers.com)
Quake3マップビュワー(25Mbもあるので要注意)
URLリンク(www.badongo.com)
スクリーンショット
URLリンク(www.dave.serveusers.com)
URLリンク(www.dave.serveusers.com)
URLリンク(www.dave.serveusers.com)
URLリンク(www.dave.serveusers.com)
URLリンク(www.dave.serveusers.com)
URLリンク(www.dave.serveusers.com)
URLリンク(www.dave.serveusers.com)
URLリンク(www.dave.serveusers.com)
126:125
07/06/17 17:41:59
デモを見る限り、表示が速くて綺麗なのですが・・・
レベルエディタgtkRadiantで作ったマップデータは商用利用が禁止されているらしいですが、そもそもQuake3形式のbspマップの商用利用も、やはり禁止されているのでしょうか?
だとしたら、もし商用利用したい場合は、
QuArk+OpenBSP
しか方法は無いのでしょうか?
誰か教えてください。
127:デフォルトの名無しさん
07/06/17 20:15:20
流石に他人のフンドシをモロに使うのはどうなんだろう。
128:デフォルトの名無しさん
07/06/17 22:43:23
>>126
id SoftwareのHP内を色々見て回ったけど、それらしい文章は見つけられませんでした。
しかし、GLSceneのHPのHelp→ArticlesのOpenBSPの項の「Why use OpenBSP compared to normal BSP?」というところに、
If you use the IDSoft BSP format commercially you must pay a license fee of $US50000.
と書いてありました。
つまり、QuakeのBSPマップの商用利用は可能だが、その代わりライセンス料として5万ドル!支払う必要があるようですね。
だから、もしQuake形式のBSPマップを使う場合はフリーウエアに限定したほうが良いでしょうね。ちなみにこの形式のカスタムマップは、様々な人がフリーで公開しています。
「QuArk+OpenBSP」の方なら、現在のところ商用利用も問題なさそうですね。
129:デフォルトの名無しさん
07/06/17 22:54:53
>>127
>>128
レス、サンクスです。
シェアウエアを作る予定は今のところ無いのですが、
とにかくすっきりしました。
130:デフォルトの名無しさん
07/06/17 23:26:01
QuArkを入れてみたけど、表示がなんか変。
説明が難しいけどたぶん、壁や床が全く表示されてないんだと思う。
GeForce FX5200
WindowsXP
131:デフォルトの名無しさん
07/06/18 00:57:47
>>130
コントロールパネルから、地域と言語のオプションを選択
地域オプションタブの標準と形式のところを
「英語(米国)」
に変更してみて。多分、壁が表示される様になるから。
何故かは分からないけど。
132:デフォルトの名無しさん
07/06/18 23:01:13
>>128
フォーマットに権利があるのか・・・
最悪だなw id softwareもやるな
133:デフォルトの名無しさん
07/06/19 22:28:49
流れをぶった切った質問で申し訳ないのですが、GLCubeをいくつか表示
している時に、マウスが乗っかったのがどのGLCubeか判別するメソッドは
ないでしょうか?
134:デフォルトの名無しさん
07/06/20 00:13:01
>>133
メソッドありますよ。
TGLSceneViewerのBufferプロパティのGetPickedObjectメソッドを使えばいいです。
function GetPickedObject(x, y : Integer) : TGLBaseSceneObject;
例えばGLSceneViewerのonMouseMoveイベントで、
procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
pick : TGLBaseSceneObject;
s : String;
begin
pick:=GLSceneViewer1.Buffer.GetPickedObject(x, y);
if Assigned(pick) then begin
s:=pick.Name;
showmessage(s);
end;
end;
上記の様にNameプロパティを使って判別するのもよし、Tagで判別するのもよし・・・
デモのinterfaceフォルダの中のpickを参照してみてください。
135:133
07/06/20 16:02:34
>>134
ありがとうございます。とても分かりやすいご説明、感謝いたします。
136:デフォルトの名無しさん
07/06/20 23:15:34
>>131
おかげで、QuArkが正常に動くようになりました。
大変助かりました。サンクスです。
URLリンク(www.skinhat.com)
ここの「Quark for GLScene using OpenBSP」をインストールしました。
なかなか楽しい。こりゃ、QuArkの使い方も覚えないと・・・。
サンプルのsanom.exe、例の「Need at least OpenGL version 1.1」エラーが出るけど、
ソースを再コンパイルすれば無事動くようになりました。
OpenBSPって、もしかしてGLScene専用か?
137:デフォルトの名無しさん
07/06/20 23:41:01
>>132
日本の法律だとフォーマットは著作権によって保護されない。
製作者の主張に沿うように扱うべきなのかもしれないけどね
・・・ん?フォーマットに権利があるとしたらgtkRadiant以外で
作ったとしてもNGなんじゃない?
138:デフォルトの名無しさん
07/06/20 23:57:06
日本の法律だと大丈夫なの?
id Softwareに従うとすれば・・・
gtkRadiant以外のエディタ、例えばQuArkでQuakeのBSPマップを作れば、商用はNGだと思う。
とりあえずGLSceneで使うなら、QuArkで作ったOpenBSPを使うのが無難な選択だろうね。
まあ、フリーウエアを作るなら、上記のどれを使おうが問題は無いのだろうが。
139:デフォルトの名無しさん
07/06/21 00:15:12
「同人は商用ではありません。」っていう主張は果たして通用するのかが気になる。
140:デフォルトの名無しさん
07/06/21 00:19:46
うむぅ。。。実際には通用しないような・・・
141:デフォルトの名無しさん
07/06/21 00:20:43
するわけねーだろ馬鹿
142:デフォルトの名無しさん
07/06/21 00:21:34
id Softwareの*.bspフォーマットが商用不可だから、
OpenBSP(*.obsp)という商用可のフォーマットを作った、
ということじゃないのかな?
【以下はOpenBSPの開発コントリビューター達】
Eric Grange・・・GLSceneの開発リーダー
Igor T. (GWin)
Mike Lischke
Osman Turan・・・OpenBSPの開発リーダー
SkinHat・・・本家GLSceneのHelpの大半を書いてる人
143:デフォルトの名無しさん
07/07/02 08:50:31
クォータニオンを計算する関数は見つけたんですが、
クォータニオンからXYZの角度を算出する関数って無いですか?
クォータニオン算出関数の中を見て、逆をやればと思ったのですが、
数学がへっぽこなので。・゚・(ノД`)・゚・。
144:デフォルトの名無しさん
07/07/02 09:12:14
これQuadrupleDと比べてなにが優れてるの?
145:デフォルトの名無しさん
07/07/03 01:41:04
比べること自体間違ってる
146:デフォルトの名無しさん
07/07/03 19:31:22
ゲーム用のライブラリで3Dグラフィック表示・演算支援、入力支援などがあり
目的も機能も目指すところは同じように見えるんだが?
147:デフォルトの名無しさん
07/07/03 22:24:11
目的も方向性もほぼ同じで比較は難しいが・・・・・
3Dに関しては、GUIで確認できるGLSceneの方が敷居が低いと思う。
148:デフォルトの名無しさん
07/07/04 16:10:16
>>146
それぞれのベースとなってるOpenGLとDirectXで
すでに違いがあるから、まずはそれを調べたら?
149:デフォルトの名無しさん
07/07/05 19:17:53
>>148
つまりどちらも薄いラッパーなのですか?
150:デフォルトの名無しさん
07/07/05 20:21:10
2D表示をするにはどの命令を使えばいいですか?
151:デフォルトの名無しさん
07/07/06 22:38:47
>>149
私は<<146では無いのですが・・・
それは、GLScene(OpenGL)とQuadrupleD(DirectX)が薄いラッパーか?ってこと?
どちらも薄いラッパーではないと思います。
でも、
QuadrupleDはDirectXラッパー+αってかんじかな?
GLSceneはOpenGLラッパーはラッパーなんだけど、OpenGLの機能以外のものを充実してるって感じかな。
つまり、QuadrupleDを使う場合はDirectXを意識しないと使えません。少なくともDirectXのHelpは必須でしょう。(私の場合だけか?)
GLSceneの場合は、表示機能だけは内部でOpenGLを使ってますよ、と言う感じで、あまりOpenGLを使う意識をせずに使えてしまいます。OpenGLのことをあまり知らなくてもGLSceneは使えると思います。
・・・そういう意味では、GLSceneの方が濃いラッパーと言えるかもしれません。
152:デフォルトの名無しさん
07/07/07 06:55:28
>>150
2D表示命令は知らんが・・・
GLSceneオブジェクトでは、「HUD objects」や「GUI objects」というカテゴリーにあるのが2D座標専用オブジェクトだ。
非コンポーネントのクラスでは、TGLCanvasが物理座標(スクリーン座標)専用だ。
ビットマップを使うなら、TGLHUDSpriteが便利。
幾何学図形なら、機能は貧弱だがTGLCanvasが便利。
153:デフォルトの名無しさん
07/07/14 08:44:49
オレのメモ
Genesis Device Engine
URLリンク(www.genesisdevice.net)
SLG Core
URLリンク(sourceforge.net)
Mondo 3DMMORPG engine
URLリンク(sourceforge.net)
154:デフォルトの名無しさん
07/07/14 20:43:10
>>152
GLSceneViewerの表面に、オブジェクトまでの距離を現すグラフを
書きたいんです。
TGLCanvasでたとえば、単純に対角線を引くにはどうするのでしょうか。
155:デフォルトの名無しさん
07/07/15 00:15:49
>>154
とりあえずは、TGLCanvasの使用例を説明すればいいのかな?
GLSceneエディタで追加したカメラ名をGLSceneViewerのCamerasプロパティに設定する。
uses節にGLCanvasとGLTextureを追加する。
GLSceneエディタでDirect OpenGL(TGLDirectOpenGL)を追加する。
GLDirectOpenGL1のonRenderイベントに、次のようなコードを書く。
procedure TForm1.GLDirectOpenGL1Render(Sender: TObject; var rci: TRenderContextInfo);
var
glc:TGLCanvas;
begin
glc:=TGLCanvas.Create(GLSceneViewer1.Width,GLSceneViewer1.Height);
glc.PenColor:=clRed;
glc.PenWidth:=3;
glc.Line(0,0,glc.CanvasSizeX-1,glc.CanvasSizeY-1);
glc.Free;
end;
ラインは上記の様にLineで描くことも出来るし、TCanvasの様にMoveToやLineToで描くことも出来ます。
y軸を逆転させることも出来ます。→その場合は左下が(0,0)になる
その他の描画命令はヘルプを参照してください。・・・何故かArcが無い?
それと、付属のデモのbenchフォルダのcanvasを参照してみてください。
156:デフォルトの名無しさん
07/07/15 11:21:15
ありがとうございます。かけました。
GLDirectOpenGL1に書くと、シーンの
影響をうけないかどうか、見てみます。
Arcは必要ならEllipseなどをみて作ればいいんでしょうけども、
作ったら本家フィードバックしたほうがいいんでしょうか?
157:デフォルトの名無しさん
07/07/16 01:03:26
2D幾何学図形が高速で描けるのもGLSceneの利点ですね。
TCanvas(GDI)は遅すぎるし、QuadroupleD(DirectX)で幾何学図形を描くのは大変過ぎるし。
作ったら、コードの公開義務があるかどうかってこと?
それはMPL(Mozilla Public License)に従ってください・・・と返事するのはあまりにも冷たすぎると思うので・・・
Eric Grange氏はヘルプのライセンスのところで、改造したGLSceneを公開する場合について以下の様に書いています。
Modifications made to GLScene units must be made public (no need to publish the full code, only to state which parts were altered, and how), but feel welcome to open-source your code if you so wish.
つまり、要約すると・・・
改造したユニットの全てのコードを公開する必要は無いが、どこをどの様に変更したかを明記する義務があります。でも、その改造したコードをオープンソースにするのは歓迎しますよ。
ってな感じです。
改造したGLSceneを配布などをする場合は、その改造箇所を明記してくださいね。
それと義務では有りませんが、そのソースをオープンにしたり、本家へのフィードバックするのは喜ばれると思います。
ちなみに蛇足ながら、GLSceneを使って作ったソフトをクローズドソース(ソースコード非公開)にするのは使用者の自由です。
158:デフォルトの名無しさん
07/07/16 11:55:29
ありがとうございます。
3Dシーン上に、2Dのメータを書くのはGLSceneViewerの
Buffer.WrapUpRendering
のコールバックで書くようにしました。
(もちろんご指摘の方法でもOkでした)
また質問で申し訳ないですが、TGLDirectGLで自分で書いた
プリミティブや曲線を、マウスによる選択はどうすればいいんでしょうか。
>>133には、GetPickedObjectの例がありましたが、何か実装する
場所がありますか?
159:デフォルトの名無しさん
07/07/16 13:48:13
↑glPickMatrix等がいるかと思いましたが、
なにも実装しなくてもできました。スルーしてください。
160:デフォルトの名無しさん
07/07/17 21:14:35
GetPickedObject、動的に生成したシーンオブジェクトを追加すると、
どこをピックしてもそのオブジェクトがかえってきます。
GLScene1.Objects.addChild( ~ )
で追加するのはまずいのでしょうか。
#サンプルでもそうやって追加しているし、ピック以外は正常に動いている。
161:デフォルトの名無しさん
07/07/22 08:55:29
お世話になります。
clothactorのデモでtrinityが動くのを見て、すごいなぁと思いました。
smdというファイル形式で保存されていますが、これはどのようなソフトで
作られたデータなのでしょうか。googleで探しても、Sega Mega Driveとか
Jphoneの着メロばかり出てきてしまいます。
また、同時に何人もこんなのを動かしても普通に動くのでしょうか。
162:デフォルトの名無しさん
07/07/23 02:11:45
>>161
"smd形式 3D"でぐぐったらすぐ出てきたけど
163:デフォルトの名無しさん
07/07/23 18:01:06
マウスクリック位置が、GetPickedObjectでのオブジェクト上の
どの位置かを知るにはどうしたら良いでしょうか。
164:デフォルトの名無しさん
07/07/23 21:15:55
Delphi用のNURBSライブラリ情報はないですか。
165:デフォルトの名無しさん
07/07/25 17:50:40
>>163
functionGLSceneViewer.Buffer.ScreenToWorld(screenX, screenY):TVector3D
を使えば、XY座標を3D座標に変換はできます。GetPickedObjectと組み合わせると
何とかなるんじゃない?
166:デフォルトの名無しさん
07/07/25 22:15:40
>161
smd(Half-Lifeのモデル形式)なら、「XSI Mod Tool」が無料で使えるみたい。
URLリンク(www.softimage.jp)
URLリンク(www.c-sec.net)
167:デフォルトの名無しさん
07/07/26 20:57:04
>>165
ありがとうございます。
この関数をつかうとカメラの前の位置に変換されちゃうみたいですが、
たしかに組み合わせればなんとかなるでしょう...
Rayなんとかっていうメソッドも自分で実装すればつかえそうですね。
168:デフォルトの名無しさん
07/07/30 14:09:21
>>166
ありがとうございます。
XSI Mod Toolインストールしてみましたが、かなり熟練を要するソフトですね。
無料というのは助かりますが。これで開発するかまだ決心付きません。
google sketchupで3dsなどがexportできるといいですが、proじゃないと無理みたいですね。
169:デフォルトの名無しさん
07/08/06 20:57:28
CADのDXFファイルをGLSに読み込みたいんですが、
良い方法ござりませぬか?
170:デフォルトの名無しさん
07/08/06 22:04:40
dxfなんて大抵のソフトで読めるだろうから、適当なので>>22の形式に変換すればよろし
171:デフォルトの名無しさん
07/08/06 22:06:29
もしくはテキストのDXFなら自分で読んで描画すればいいんじゃない?
仕様公開されてるんだし
172:デフォルトの名無しさん
07/08/06 22:47:00
あ、おれ、これならやったことあるぞ。
dxf読み込み→TGLCanvasで表示
173:デフォルトの名無しさん
07/08/07 21:06:38
GLSceneを利用して、VCLのコンポーネント上に、NeHeとかのサンプルを実行するようなサンプルはないでしょうか?
本来ならば、GLSceneのオブジェクトモデルを利用した方がよいと思うのですけど、
すでにOpenGLの生APIを使ったプロジェクトがありまして、
それをVCL上である程度再現したいと考えています。
別の言い方をすると、GLSceneを使いながら、おいしいところだけをとって、
生APIを使えないかな?ということなのですが・・・
174:デフォルトの名無しさん
07/08/07 23:19:27
>>173
>>43
175:デフォルトの名無しさん
07/08/07 23:41:33
わわわ。サンクソ
過去ログにありましたね。
OnRenderってのが難だけど、どうにかなるんかな・・・。
任意の時に描画命令発行したいので。
試してみるかぁ
176:デフォルトの名無しさん
07/08/08 02:59:55
LBAAM
URLリンク(lbbam.blog100.fc2.com)
翻訳記事乙
177:デフォルトの名無しさん
07/08/09 18:59:12
>>160
亀レスごめん。状況をもうちょっと詳しく頼む。
私の場合、AddChildやAddNewChildで動的に追加したオブジェクトを正常にピック出来たんだが・・・
【AddChildで動的に追加したオブジェクトをピックする例】
Form1にGLSceneとGLSceneViewerとButtonをドロップし、GLSceneエディタでGLCameraとGLLightSourceを追加して、以下のプロパティをセットする。
GLSceneViewer1のCameraプロパティにGLCamera1をセットし、GLCamera1のPosition(X,Y,Z) を(0,0,10)にセットする。
usesにVectorGeometryを追加して、Button1のonClickイベントに以下のコードを書く。
procedure TForm1.Button1Click(Sender: TObject);
var
sphere:TGLSphere;
begin
sphere:=TGLSphere.Create(nil);
GLScene1.Objects.AddChild(sphere);
sphere.Position.AsVector:=PointMake(random(10)-5, random(10)-5, 0);
inc(count);
sphere.Tag:=count;
end;
※count:Integer;をどこかグローバルな所に設定しておいてください。
GLSceneViewerのonMouseDownイベントに以下のコードを書く
procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
pick : TGLBaseSceneObject;
i : Integer;
begin
pick:=GLSceneViewer1.Buffer.GetPickedObject(x, y);
if Assigned(pick) then begin
i:=pick.Tag;
ShowMessage(IntToStr(i));
end;
178:デフォルトの名無しさん
07/08/10 19:00:32
>>177
ありがとうございます。
あれから調べてみたところ、とりたいオブジェクトでないものを
Pickしていて、PickListで回したら、ちゃんと取れていました。
報告せずすんません。
またまた質問ですみませんが、ピックしたときに、ZバッファのNearと
FarがPickListに[0-1]ではいってかえってきます。
いまのところ、Farの値で
V[0]:=x;
V[1]:=Viewer.Height-y;
V[2]:= aFar
Viewer.Buffer.ScreenToWorld(V);
としてWorld座標が求まっているっぽいのですが、
XY平面をピックすると若干Z値がずれとるのが気になります。
(ま、強制的にZをいれてしまっています。)
ScreenToWorldのZ値はどういう値を入れるのが適当なんでしょうか?
GLSceneというよりOpenGL的質問ですみません。
あとDXFの質問は、DXFの線はなんとか読めますが、
そのほかスプラインやらインサートブロック、グループが、読めません。
LWPOLYLINEもよめません。
結構WEBで調べましたが、仕様がよくわからないです。
179:デフォルトの名無しさん
07/08/11 03:22:43
>>178
本当に調べた?DXFは公式の仕様書もあるし第三者の解説だっていっぱいあるよ
ひょっとして日本語で調べたいみたいな甘い考え?
180:デフォルトの名無しさん
07/08/11 16:40:14
ドイツ語や中国語でもいいのですが検索の仕方が悪いのか適当なページが見つかりませんでした。
181:デフォルトの名無しさん
07/08/11 17:30:10
>>180
"DXF format spec"でググればいくらでも出てくるじゃん。
182:デフォルトの名無しさん
07/08/11 19:28:21
横レスで悪い、DXFって、中途半端に読むのは簡単だが、きちんと読むのは簡単じゃないと思う。
公式の仕様書といえるものは自動机俺様仕様書をかなりお金を出さないともらえない。
あとは全部非公式。だから、CAD間でもさほど互換性ない。
日本語の資料なら、日経BP 「新DXFリファレンスガイド R14対応 \3900」がある。
他にもあるかもしれん。オークションか古本屋で探すと吉。
183:デフォルトの名無しさん
07/08/11 20:08:31
>>178はきちんと読む以前の問題だろ
184:デフォルトの名無しさん
07/08/12 00:29:52
どうも、>>177です。いつのまにかDXFで盛り上がってるとは・・・
(^^;;;
DXFフォーマットについては、AutoCADのヘルプにかなり詳しく載ってます(もちろん日本語で)。
とは言っても、>>178氏がAutoCADを持っていないのなら参照しようが無いしなぁ。。。
ここのHPなんか、どう?
URLリンク(hp.vector.co.jp)
んでも、ここのHP、LWPOLYLINEが載ってなさそうですね。まあポリラインはPOLYLINEの方で描く方が普通だし。
LWPOLYLINE
100=サブクラス マーカー(AcDbPolyline)
90=頂点の数
70=ポリライン フラグ(ビットコード)、既定値は0、1 = 閉じたポリライン、128 = PLINEGEN
40=開始幅、既定値は0。 一定幅(コード 43)が設定されている場合は無視。
41=終了幅、既定値 = 0。 一定幅(コード 43)が設定されている場合は無視。
43=一定幅(省略可能、既定値は 0)。
38=高度
39=厚さ
10=頂点の座標のX値。
20=頂点の座標の Y 値。
42=ふくらみ
210=押し出し方向のX値
220=押し出し方向のY値
230=押し出し方向のZ値
185:182
07/08/12 09:45:29
上でたしかにファイルは読めるけれど、
42=ふくらみ
は、どういう意味か、どうすれば描画可能な情報に
展開できるか、という情報は、探してもなかなかない。
私の場合、昔のことだったので、ファイルと図形を
解析してやったが、ほかにも解決していなものは色々とある。
ググればいい=直線、円弧、安易な折れ線ポリライン
ググってもわからん=スプライン、ちょっと複雑なポリライン、その他
だろうと思う。
私も分からない部分も多いが、回答できるものはするので、
もうちょっと質問を整理してみてはどうだろうか。
186:182
07/08/12 09:48:04
R14から、ポリラインは、LWPOLYLINEがデフォルトのようです。
187:182
07/08/12 10:00:03
>>178, 184
日本語ではありませんが、スプラインのコードです。
URLリンク(www.autodesk.com)
DXFも同様なコードで出ていると思いますが、OpenGLで表示となると?
その他のコードはこちらに。
URLリンク(www.autodesk.com)
188:デフォルトの名無しさん
07/08/12 13:01:28
わざわざしゃしゃり出てくんな
これ以上やりたいなら専用のスレに移動してやってくれ
ここはGLSceneやその他の3Dライブラリのスレであって、3Dデータのスレじゃない
189:デフォルトの名無しさん
07/08/12 14:34:03
別にいいんでない?
どうせそんなに話題もないのに
190:デフォルトの名無しさん
07/08/12 15:26:21
まあ難しいことは考えずに、>>170が言っているとおりGLSceneで読める形式に変換すればいい話じゃない?
191:デフォルトの名無しさん
07/08/13 22:24:19
tiffやdxfは仕様が大きすぎて最終的な成果物として扱うのは危険
192:デフォルトの名無しさん
07/08/14 20:17:10
>>22
メジャーなモデラーならほとんどどれでも吐けるじゃないか
ファイルフォーマット変換のためならmilkshape3d
個人的にはLightwave3dオススメ
国産モデラーはゲーム系フォーマットに弱いのが難点だな
そもそも数があまり出てないけどさ
ところでDXF形式なんて他のソフトへ持っていくとまともに読み込めないよね?
(ひどい場合は書き込んだソフトですら読み込めない)
3dsかlwoを使ったほうがいい
DXFは他に何も対応してなかった場合の最後の手段
193:デフォルトの名無しさん
07/08/14 23:17:37
>>192
Shadeで製作したデータをGLSceneで読み込むとしたら、どういう方法があるでしょうか。
milkが必要ってことでしょうか?
194:デフォルトの名無しさん
07/08/14 23:25:14
Shadeとは、またリアルタイムレンダリングにメチャメチャ不向きな物をw
195:デフォルトの名無しさん
07/08/14 23:36:56
>>193
プロ版なら3DSとLWO対応してるからどちらでもよい
それ以外ならまともに出力できる形式がないので諦める
何らかの方法で別モデラーにエクスポート出来たとしても
多少の修正は必要なのでmilkshape3dに魅力を感じなければ
他のモデラーのほうがいい
196:デフォルトの名無しさん
07/08/15 14:48:10
ShadeはPROじゃないのでobj形式でやってみました。
結果、アナボコだらけに。なんでだろ?
197:デフォルトの名無しさん
07/08/16 19:49:36
三角ポリゴンじゃないと駄目とか?
198:デフォルトの名無しさん
07/08/16 20:27:54
Shade側の出力を3角にしてもNGでした。両面にしてもNG。
GLSceneで落ちるところはきまっているので、単純なものにして
テストしてみます。
(あまり意味がなくなってくるけども)
199:デフォルトの名無しさん
07/09/23 04:43:34
ぽりごんせんしGL
200:デフォルトの名無しさん
07/09/23 17:41:27
>>198
ポリゴンの裏表が逆なんじゃね?
GLScene以外で表示してみて問題の切り分けしたほうがいい
おそらShade固有の問題で、GLSceneとは関係ない話だよ
一般論だけど出力する前にいくらか加工や設定することで回避できる場合もある
201:デフォルトの名無しさん
07/09/26 12:24:13
わいのところはShadeはないんで、ためしに、
URLリンク(www.cgdatabank.com)
でobj形式入力したんけど、読み込んでる最中に
ようわからん例外をスローして失敗。
Delphi6 + GLScene
202:デフォルトの名無しさん
07/10/08 14:36:04
違う質問で失礼します。
GLSceneで 画面上の(スクリーン座標?)点を、
シーンの中の「Z=0のXY平面」上の点に変換するには
どうしたらいいでしょうか。
#平面は描画していないので、フィードバックは使え
ない。カメラか何かで計算?
203:デフォルトの名無しさん
07/10/08 15:49:50
procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
v: TVector;
begin
GLSceneViewer1.Buffer.ScreenVectorIntersectWithPlaneXY(VectorMake(X, GLSceneViewer1.Height - Y, 0), 0, v);
GLTeapot1.Position.X := v[0];
GLTeapot1.Position.Y := v[1];
end;
こうじゃなくて?
204:デフォルトの名無しさん
07/10/12 17:18:18
いまごろむしかえしてアレですが・・・
Delphi 7(update済み)にGLSceneを入れました。
デモを開き(この時点では普通に開きます)、実行して終了しIDEへ戻り、ファイルを閉じようとするとIDEでエラー(例外ではない)が起きます。
--------------------------------
エラー
Context activation failed: C0070006;
--------------------------------
フォームを開かなければ例外はおきません。
エラー後はDelphiも終了できなくなります。
ダイアログを連打すると何回か後に
--------------------------------
エラー
モジュールrtl70.bplのアドレス40006318でアドレス0000000に対する読み込み違反が起きました。
--------------------------------
となりDelphiが落ちます。
\base\VectorGeometry.pas に{$define GEOMETRY_NO_ASM}を
設定して、パッケージを再構築してもやはり変わらずDeath。
Windows XP SP2
RADEON 9600(ドライバは本日更新してみました)
Delphi 7
理由がさっぱりです・・・どなたかおたすけを・・・
205:デフォルトの名無しさん
07/10/12 18:43:59
>>57-93にありますが、
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// ATI onclose context error fix
if assigned(GLSceneViewer1) then GLSceneViewer1.Free;
end;
入れたら、どうなりますか?
Radeon特有の問題っぽいです。
でも、他のOpenGLアプリやプログラムでは起きないんだよなあ・・・GLSceneのせいにしてもいいと思う
206:デフォルトの名無しさん
07/10/12 19:02:56
>>205
助言ありがとうございます。
最初はこのことを知らずエラーの嵐でしたが、
このスレを読んでいちおう対策済みです。
デバッグ終了時などの嵐はおさまったのですが・・・
途中の状況はさっぱりです。
コンパイルして単体で実行しても何かしらのエラーが出続けています。
クマッタ
207:デフォルトの名無しさん
07/10/13 12:39:09
対策してもだめか
そもそも、プログラムの影響で、IDEがエラーって状況は、近辺あったことがないな・・・
俺は。
IDEか、OSが壊れてるんじゃないのかな?
208:デフォルトの名無しさん
07/10/13 13:21:32
>>207
返信どもです。
Delphiとディスプレイドライバを再インスコしてみました。
が、ダメでした・・・
GLScene以外の設計では何も問題は出ないです。
新規アプリ作成で、GLSceneViewerのコンポを貼り付けてデバッグで起動、
終了してIDEに戻ったとたんにアプリケーションエラーとなってしまいます・・・
EGLContextがモジュールProject1.exeのxxxxで発生しました
Context activation failed: C0070006
です。このC0070006の部分はほとんど同じ数字が出ています。
209:デフォルトの名無しさん
07/10/13 13:25:33
>>208
208です。
ちょっと状況変化ありです。
さっきのエラーはOnCloseにGLSceneViewer1.freeを
書いてないからでした。(ボケですみません)
ただ「貼っただけ」のものではエラーは出ません。
しかし、Demoなどの、「GLSceneViewerにすでに何らかのデータが
入っている」アプリはIDE、実行時とも依然エラーが出ます。
ここらの処理をトレースしてみようと思います。
210:デフォルトの名無しさん
07/10/14 11:48:42
多分作りこんでいくとContext activation(deactivation) failed
は、いろんな場面で出る。
あてにならない経験からいうと、
OpenGL的にお行儀よく書いていない場合、GLSceneは
例外がでる場合(ATI系)や、
例外も出ずに描画もされない場合(S3/VIA系)がある。
GeForce系はお行儀わるくても割と安定している。
どういう場合にOpenGL的にお行儀が悪いかは、GLSceneの
構造上よくわからな部分もあるが、GLSceneでテクスチャや、rciを
直接つかう命令などは出やすい。
発生している場合、描画を手コーディングしている部分があれば、
同じような種類の命令はまとめること、
また、描画命令の順番を変えてみると直ることがある。
211:デフォルトの名無しさん
07/10/14 13:31:03
>>208
もしよかったら、エラーが起こる最小限のコードをうpしてみて下さい。
協力できるかも。
ただ、うちは、BDS2006なので、環境一緒じゃないけど・・・
アプロダは、
ゲムデヴあぷろだ
URLリンク(gamdev.org)
あたりで
212:デフォルトの名無しさん
07/10/15 09:15:37
GLSceneで2つのクオータニオンの差を求めるのってどうすればいいですか?
213:デフォルトの名無しさん
07/10/15 11:34:29
>>211
アドバイスありがとうございます。
>>211さん
うpしました。10317.zipです。よろしくです。
いちおう、Demosのほとんどのソースで同様のエラーがでます。
209に書いたようにViewerに「何か表示されている」場合はコンパイル、起動はできるものの、終了(アプリを閉じIDEに戻った)後、連続でエラーダイアログ、それを連打するとDelphiごとおちる状態です。
もし、IDEで戻った時点でエラーが出なくても、「ファイル→全てを閉じる」でフォームが閉じた後にエラーが出、落ちます。
感覚としてフォームインスタンスが閉じたのを「何かのコンポ」が察知できなくて、書き込みをしようとしているのでは?と思います。
214:デフォルトの名無しさん
07/10/15 11:35:59
>>210
アドバイスありがとうございます。
しかしまだ作りこむどころか、1個のオブジェクトを表示させるのでいっぱいです・・・
QuadrupleDの方がいいのかな~とも思い始めてます。
215:デフォルトの名無しさん
07/10/15 23:06:05
>>212
まずパソコンを窓から投げ捨てます
216:デフォルトの名無しさん
07/10/15 23:28:17
そんなこといわれなくてもやっとるわ!
217:デフォルトの名無しさん
07/10/16 09:01:01
インストールしてみたんだけど、メニューにFreePascalとDXP
ってのが追加されたんだけど、どうすれば除けますか?
218:217
07/10/16 09:01:45
サンプルデモって全部実行できます?
219:デフォルトの名無しさん
07/10/16 16:06:53
自分で試せよ
220:デフォルトの名無しさん
07/10/16 17:21:50
聞き方が悪かったね。
出来るやつ、出来ないやつが結構あって
みんなはどうかなと。
221:デフォルトの名無しさん
07/10/17 23:51:31
Delphiスレはなぜか情報交換を拒絶する風潮があるのはどうしてなの?
222:デフォルトの名無しさん
07/10/18 00:40:38
で?
223:デフォルトの名無しさん
07/10/18 01:13:23
自分以外はMSのスパイなのでは?と疑う魔法をかけられているからです。
224:デフォルトの名無しさん
07/10/23 11:20:00
>>213
試すのがおそくなりました。
10317.zipですが、結論から書きますと、こちらでは特に問題はないようです。
終了後も、IDEも問題なく動きます。
こちらの環境は、
BDS2006(Delphi2006)、WindowsXP SP2、VGA:RADEON X700
です。こんな単純なコードででますか・・・。
RADEONのドライバは、確か世代によって、最適なドライバのバージョンがあるから注意です。
一概に新しいのがいいとは限らない。
あと、ドライバは、必ず、DireverCleanerなどを使って、まっさらにしてから再インスコすること。
ちなみに、例によって、
FreeAndnil(GLSceneViewer1);
をとると、以下のエラーがでます。
EGLContext がモジュール Project1.exe の 00080781 で発生しました。
Context activation failed: C0070006, .
それはいいとして・・・
ドライバやVGAなどのせいにせずに、
いまの環境で、回避したいならば、
あくまで、例外なので、
Delphiのデバッガでどこで、EGLContext例外が起こっているか、確かめて、
原因を追究しないと無理だと思う。
225:デフォルトの名無しさん
07/10/24 11:49:08
>>224
テストありがとうございました!
やはり原因はその個体によるようですね。
友人のRadeon 9800XTでは同じテストで出ませんでした。
>DireverCleanerなどを使って、まっさらにしてから再インスコ
あ、これはやってない。
また時間があるときやってみます。
なかなか根が深い問題のようです。
また進展があったら書きます。
(技量的にすでに限界を超えているとも・・・)
226:デフォルトの名無しさん
07/10/27 00:44:43
一応確認したいけど、NeHeなどの、OpenGLのサンプルでエラーが起こらない
(というか、期待通り表示されるならば)
GLSceneのクセのようなものが出ていると思う。
上で出ていた、別の 終了時のEGLContext エラーもそうだけど、
GLSceneの組み方が、どうも、RADEON系との相性が悪いみたい。
227:デフォルトの名無しさん
07/10/27 00:45:29
> 一応確認したいけど、NeHeなどの、OpenGLのサンプルでエラーが起こらない
> (というか、期待通り表示されるならば)
一応確認したいけど、NeHeなどの、OpenGLのサンプルでエラーが起こらない
(というか、期待通り表示される) ならば、
間違いスマソ
228:デフォルトの名無しさん
07/10/30 10:46:41
>>226
NeHeは初めて聞きました。
ということで早速サンプルを実行してみました。
エラーはまったく出ません・・・
やはりGLSceneの実装の問題のようですね。
あきらめ寸前
229:デフォルトの名無しさん
07/11/06 14:58:35
クオータニオンからどれか一つの軸の傾きや
回転を知る関数ってありますか?
230:デフォルトの名無しさん
07/11/15 23:57:07
まとめページどこですか?
231:デフォルトの名無しさん
07/11/16 01:35:54
>>230
URLリンク(gamdev.org)
232:デフォルトの名無しさん
07/11/17 01:07:45
>>231
もっとちゃんとしたインストール手順書ない?
233:デフォルトの名無しさん
07/11/17 08:41:11
さいきんイジリはじめたんだが、マジで情報少ないな。結構よくできたライブラリだと思うんだがな。
234:eAbRYZExxTKnwl
07/11/17 16:29:36
Hi! Nice site! <a href=URLリンク(dthqlr.cn) >hi </a> [URL=URLリンク(dthqlr.cn) ] guys [/URL] URLリンク(dthqlr.cn)
235:デフォルトの名無しさん
07/11/19 22:56:17
これのライバルライブラリといえばどんなものがあるの?
236:デフォルトの名無しさん
07/11/20 00:41:50
簡単なサンプルを一から書いてみたんだが、
なぜか TGLTerrain のライト処理が変になる。
シーンに手をいっさい加えずにレンダリングすると設定した通りのライティングなんだが
ちょっとでもオブジェクトの座標をいじったりするとライトがヘンなところに当たってしまう。
しかも TGLTerrain 以外のオブジェクト(っていっても今の所箱一個だけだが)は指定どおりの光源処理になる。
早くもライブラリのバグにぶちあったったのか・・・
237:デフォルトの名無しさん
07/11/20 01:59:24
弄り方が悪かったんだろ
238:デフォルトの名無しさん
07/11/20 02:26:33
いまやってみたが座標どころか、Viewerを client に align して、ウィンドウをリサイズするだけで発生することがわかった。
バグじゃないとして、なにがマズいんだ? Light をパラレルにしてるのがまずいのか・・?
もうすこしいじってみる。
239:デフォルトの名無しさん
07/11/20 03:58:27
初期化未遂
240:デフォルトの名無しさん
07/11/20 20:14:51
これバグみつけたらどこに報告すりゃいいんだ?
241:デフォルトの名無しさん
07/11/21 08:12:13
Mailing List
242:デフォルトの名無しさん
07/12/21 13:30:54
guiのサンプル見てみたんだけど
これ日本語入力できる方法ないのかな~
243:デフォルトの名無しさん
07/12/22 01:52:35
1バイトで処理してるから表示されないだけで、入力は普通にできないか?
GLEdit1に日本語を入力して、中身を確認すると日本語そのまま入ってるし。
日本語を出そうとするとTGLCustomBitmapFont.RenderString周りの書き換えか…。
244:デフォルトの名無しさん
08/01/03 04:01:56
>>242
サンプルを変更して確認しようとしてみたんだが・・・
日本語以前にGLEditの位置を変えただけで入力されている文字が
表示されなかったりわけがわからん。
これってバグなのか?仕様なのか?
ネットワークゲーム系だとチャットは大事だから
この使い勝手じゃあ使い物にならんな。
245:デフォルトの名無しさん
08/01/05 23:43:35
>>244
BitmapFontを指定してないだけじゃない?
246:242
08/01/09 10:33:50
日本語入力に挑戦してみたのですが
Bitmapfontが英語の範囲しか対応していないみたいで
RenderStringの変更だけじゃ無理みたいなんですが;;
247:デフォルトの名無しさん
08/01/17 01:49:46
>>246
試しに描画させてみましたが、RenderStringを書きかえて漢字は出せました。
全漢字を含んだテクスチャを用意し、
漢字の時はRenderString内のGetCharTexCoords(currentChar, topLeft, bottomRight);を呼ばずに
topLeft, bottomRightを計算するだけ。
全文字を綺麗に出すにはもう少し工夫が必要ですが。
248:デフォルトの名無しさん
08/02/02 22:14:37
にゃは
249:242
08/02/06 18:54:28
質問ばかりですみません
>>全漢字を含んだテクスチャを用意
これどうしたらいいでしょうか・・・
250:デフォルトの名無しさん
08/02/06 19:30:50
gl_kanjiを参考にすればいいんじゃね?
251:デフォルトの名無しさん
08/03/29 09:33:49
初心者の質問ですみません...
お菓子(クッキー)を型抜きした物を表示したいんですが、
どうすればいいでしょうか?
回転体でクッキーをつくることはできました。
それを回転軸方向から、簡単な図形(星とか)で、
抜ければいいんですけど。
252:デフォルトの名無しさん
08/03/30 16:01:02
ヒント:ブーリアン
253:デフォルトの名無しさん
08/04/05 20:12:59
国土地理院の50mメッシュデータに、2500地形画像を貼り付けたいのだけど、
1枚の画像データ(TIFF)の平面の2次元座標指定でをメッシュデータ(3角か4角のポリゴンでよい)
に指定していく方法がわからない。
OPENGLならできるような気もするのだけど?GLSceneなら簡単にできないものですか?
画像をあらかじめ分割しておけばそりゃ出来るんだろうけど、ファイル数がめちゃくちゃ多くなるのであまりやりたくないです。
254:デフォルトの名無しさん
08/04/05 20:43:59
日本語でおk
255:デフォルトの名無しさん
08/04/05 23:12:22
>>253
国土地理院の50mメッシュデータ=ただの高さデータ
2500地形画像=ただのテクスチャ
よって、TGLHeightField使って高さを表現させ、
地形をテクスチャとして指定するだけで、お手軽に立体地図の完成。
俺が自分で遊んでたのはSRTM30でテクスチャ無し(高度で色変更)だが。
ただTGLHeightFieldは非常にクセが強い印象。
高さ表現できるクラスを自力で作るのがベストかもね。
256:255
08/04/06 10:27:48
>>253
読み直してみた。単に巨大画像を扱う方法を知りたいだけだったか。
3Dなら、GLSceneと言うかOpenGLだろうがDirect3Dだろうが、
分割して随時テクスチャとして管理するしかないよ。
2DならGraphics32でおk。
257:デフォルトの名無しさん
08/04/06 15:45:03
大きいサイズの画像が扱えないバグがVCLにあったハズだけどもう直った?
258:デフォルトの名無しさん
08/04/15 22:23:44
>>255
ご親切にありがとうございました。TGLHeightFieldでOKでした。
ただ、HeightFieldGetHeightの使い方がわからず、時間がかかりました。
どこかに、まともなリファレンスがないものか(見つかりませんでした)
リファレンスと簡易例文があれば、あっという間に出来てしまうのにね。
もったいない。
次の課題
1、2500画像、基本台形なのでリアルで正規化できないものか
2、がけのようなほぼ直角で落ちているような指定をどうするのか?(できないのか?)
3、手前のシーンがぼけるんだけど、ぼけないようにできないものか?
こつこつとやってみます。もしご存知でしたらヒントをお願いします。
259:デフォルトの名無しさん
08/04/16 00:24:40
>>258
地形を表現させるにはTGLTerrainRendererでもいけるぞ
260:デフォルトの名無しさん
08/04/20 08:46:56
>>252
ヒントありがとうございます。
ブーリアンを調べて、立体の積の元になる2つはGLScene上で
作ったのですが、これをどうやるとブーリアンができるのでしょうか。
261:デフォルトの名無しさん
08/04/20 22:51:45
日本語表示用のコンポーネントを作ってみました。
TGLCustomBitmapFontを継承してます。
DelphiまとめwikiのGLSceneのところにアップしてます。
・・・でも・・表示が非常に遅い・・・orz
>>247氏の方法を使ったほうがよかったかな?
だれか作り直してくれ。
262:261
08/04/29 00:10:40
そういうわけで、>>247氏の方法で試しにコンポーネントを作ってみました。
しかし・・・セカンドマシンでテストしてみたら、なんとメモリオーバー。
欲張ってunicodeの文字を全部準備したのがマズかったみたい・・・
Graphics32のTBitmap32Collection型を使って分割すれば良かったかも。
どちらにしろ、最初から作り直しだあ~><
もしこれが完成したら、先にアップしたやつは不満だらけなんで削除します・・・
263:261
08/05/22 23:38:31
またまたそういうわけで、結局Graphics32のTBitmap32と、GLSceneのTGLBitmap32の配列で対処しました。
現在動作テスト中ですが、今のところ問題はなさそうです。
・・・が、なんかGamDevが落ちているみたいでアクセスできないです。
コンポーネントのアップ、どうしよう・・・ふぅ~。
264:デフォルトの名無しさん
08/05/23 15:26:09
待っていればその内復活するんじゃね。コンポ期待待ち
265:デフォルトの名無しさん
08/05/26 12:05:04
GLSceneの座標って右手系?左手系?
266:デフォルトの名無しさん
08/05/26 18:50:46
ちょっとググるだけで分かることを何故あえてここで聞いたの?
267:デフォルトの名無しさん
08/05/27 22:09:39
OpenGLは右手系。っとマジレス。
DirectXの初期値とは逆なんで要注意。
268:デフォルトの名無しさん
08/05/28 00:59:46
GLScene 座標でググったんだが、右手とか出てこなかったんで
聞いてみた。
でも、今分かったよ。
右手系のことをグローバル座標系って言うんだね。
266,267ありがとう
269:デフォルトの名無しさん
08/05/28 06:50:08
何が分かったんだか…。
270:デフォルトの名無しさん
08/05/28 07:31:24
>>269
>何が分かったんだか…。
>何が分かったんだか…。
>何が分かったんだか…。
>何が分かったんだか…。
>何が分かったんだか…。
>何が分かったんだか…。
>何が分かったんだか…。
>何が分かったんだか…。
>何が分かったんだか…。
>何が分かったんだか…。
271:デフォルトの名無しさん
08/05/28 11:43:08
>>269-270
自演乙
272:デフォルトの名無しさん
08/06/10 18:50:29
厨房の宿題みたいな質問で申し訳ないんだけど、2点を結ぶ延長線とある1点を通る線が90度に交わる座標を求めたいんだけど、ググるキーワード教えてください。
273:デフォルトの名無しさん
08/06/10 19:04:57
ググるキーワードをググレカス
274:デフォルトの名無しさん
08/06/10 19:06:46
点と直線の距離
275:デフォルトの名無しさん
08/06/10 22:43:10
>272
垂線の足?
276:デフォルトの名無しさん
08/06/11 21:07:21
>>273,274,275
ありがと
277:デフォルトの名無しさん
08/06/19 09:36:51
GLSceneの説明を更新&追加していこうと思っているんですが、
ゲムデブwikiがまだ落ちてるみたい・・・
どうしたんだろ?
278:デフォルトの名無しさん
08/06/19 16:00:17
今はこっち
URLリンク(wiki.game-develop.com)
279:デフォルトの名無しさん
08/06/20 00:04:40
ありゃ~っ、禿しく変わっちゃったような気が・・・
・・・もしかして、今までの、全部クリア? orz
誰か、今までのバックアップしてない?
・・・やっぱり、一から入れなおすかしかないか・・・
280:デフォルトの名無しさん
08/06/20 01:35:08
すっきりや・・・かなしいほどに
281:デフォルトの名無しさん
08/06/20 01:47:11
これってGLSceneのことは、どこにのってるの?
まだ、のってないの?
282:デフォルトの名無しさん
08/06/20 20:00:15
再建されただけでもありがたいと思わないと
古いのはWebArchive参照
283:デフォルトの名無しさん
08/06/21 22:19:00
GLScene関連のリンク集ない?
284:デフォルトの名無しさん
08/06/22 23:52:51
URLリンク(glscene.sourceforge.net)
285:デフォルトの名無しさん
08/06/27 00:26:55
>>278
すっかり変わっちゃったね
今のうちに関連ページだけでもバックアップとりたいんだけど
WEBを丸ごとローカルに保存するツールない?
286:デフォルトの名無しさん
08/07/05 08:57:01
URLリンク(web.archive.org)
kokkara
287:デフォルトの名無しさん
08/07/05 08:57:47
>>285
更新とまってるけどおれはweboxを愛用
wgetという手も
288:デフォルトの名無しさん
08/11/17 15:26:27
まだ有るの?
289:デフォルトの名無しさん
08/11/17 16:56:15
あります
みんなのココロのなかに
290:デフォルトの名無しさん
08/11/19 23:05:59
だが、まだ俺のHDDのなかにもあるという事実
291:デフォルトの名無しさん
08/12/08 09:54:08
これ今更入れてみたがサーッパリわかんね。
敷居低くベンチマークやスクリーンセーバーみたいなの作れればいいやと思ってたが
それでもDBプログラマには敷居が高かったようだ。
で、チョイと質問ですが当面の目標にしたサイコロ作りに勤しんでいるんだが、
64*64の画像をアサインして正面向かせても描写サイズが64*64にならないんだけど
面の大きさをピクセルで正確に合わせるにはどうすれば良いんでしょ?
スケールとポジション弄ってるとなんとなく見た目の大きさが変化してるのは
分かるが、自分が見せたい大きさになってくれない。
292:デフォルトの名無しさん
08/12/08 16:59:44
そもそも3Dでピクセルを気にするという発想がおかしい
OpenGL入門サイトはいくらでもあるから、好きなの眺めて基礎知識つけた方がいいと思われ
293:デフォルトの名無しさん
08/12/09 06:30:18
>>292
あーそうなんだ
カメラのz軸固定?非ズームだと気にならんの?
まぁいろいろやってみるよ。
294:デフォルトの名無しさん
08/12/11 15:09:36
正射影つかうとか
295:デフォルトの名無しさん
08/12/12 21:49:12
GLFreeFormに3dsとmd2を読み込んだんですけど、表面材質は表示されないんですか
テクスチャー張らないで色つけたいんでけど
Material Editer だと全部同じ色になるみたいんで
モデラーみたいに表示してくれる方法ってありますか?
296:295
08/12/13 16:10:37
自己解決しました
297:デフォルトの名無しさん
08/12/14 06:19:48
事故解決したら、検索してきた人や後学などのためにも結果を書いておこうよ
298:295
08/12/14 10:06:52
ああ、ごめんなさい、簡単だから勉強の為にも自分で調べてくれと言う意味で
あえて誰も教えなかったと思って、書かない方が良いのかと思ったw
GLMaterialLibrary(色付きのキューブのアイコン)を追加して
GLFreeForm1 のプロパティーMaterialLibrary(+Material 内ではない)に
GLMaterialLibrary1を設定、これだけで出来た
ちなみにGLMaterialLibrary1をダブルクリックして新規追加とか色々出来るみたい
Demos\meshes\CSG とかで使ってるので誰か解る人、追加情報よろしく
299:デフォルトの名無しさん
09/01/05 07:36:08
299
300:デフォルトの名無しさん
09/01/05 07:36:44
300
301:デフォルトの名無しさん
09/02/01 16:51:10
WAVEOUTのACTIVEをtrueにしても、実行時 NO Active Sound Manager.
Make sure manager is created before emitter と表示されるんで
FMODに戻したら、こちらでも出る様になったんです。
以前には出なくてきちんと音が鳴ってたんですけど、こんな症状になった人居ますか。
もう全然音を使えなくなってしまって、どうにか直したいんで分る方お願いします。
302:301
09/02/01 17:29:25
GLscene Editerの方ではなくコードでSound emitterを設定すると
何も表示されずにきちんと音がなりました、でもWAVEOUTの方はやっぱり音が鳴りませんWAVEOUTってFMODと同じ方法では使えないんですか?
303:301
09/02/21 01:35:39
自己解決しました
304:デフォルトの名無しさん
09/02/21 08:42:29
事故解決したら、検索してきた人や後学などのためにも結果を書いておこうよ
305:デフォルトの名無しさん
09/02/21 20:36:58
お断りだ
306:デフォルトの名無しさん
09/02/22 19:26:25
認めぬ
307:デフォルトの名無しさん
09/03/19 20:22:08
またそういうことを
308:デフォルトの名無しさん
09/03/24 20:07:19
キーロガーといわれればそうですね。
でも、キーストロークを監視するのって
よくあることじゃない?
309:デフォルトの名無しさん
09/03/24 20:08:00
ごばーく
失礼!
310:デフォルトの名無しさん
09/04/08 01:03:15
ははは
311:デフォルトの名無しさん
09/04/19 14:33:13
902 名前は開発中のものです。 [] 2009/04/18(土) 03:19:08 ID:YxO4K2FJ
GLSceneのサイトが更新されている。
URLリンク(glscene.sourceforge.net)
GLScene for Delphi2009なんてのもあるぞ
URLリンク(sourceforge.net)