1 名前:デフォルトの名無しさん mailto:sage [2006/11/12(日) 03:17:59 ] Delphi用OpenGLライブラリGLSceneのためのスレッドです。 フリーの3Dコンポーネントでお気楽プログラミング。 とうとうGLScene正式版リリース glscene.sourceforge.net/index.php ヘルプはこっちで落とした方が良さそう。 GLScene Help Project caperaven.co.za/ ついでにGraphics32もあれば心強い www.graphics32.org/wiki/ Lazarus使いなら、これ。Lazarus with GLScene bundled www.skinhat.com/ 質問は出来る限り詳しく的確にお願いします。 日本語情報ほとんど無し。GLSceneマスター様、情報お願いします。 GLSceneの他にもこんなライブラリがあるという情報もおk。
92 名前:90 mailto:sage [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;
94 名前:91 mailto:age [2007/03/08(木) 22:53:10 ] >>90 俺もそのレス読んで思わずGLCadencerやGLTimeEventsMGRで色々と遊んでしまった。 GLCadencer自体、便利だね。ASAPを選べば余分な割り込みは発生しないし、かと言ってApplicationIdleも選べるし。 GLSceneを使う限りApplicationIdleを選択する必要は無いかもしれんが。 結局はプロパティはデフォルトのまま使えそう。 自前でタイマーのコードを書かなくて済むのが楽だね。
95 名前:デフォルトの名無しさん mailto:age [2007/03/12(月) 02:39:54 ] age 本家HP(glscene.org )のニュースより。 GLSceneライブラリの大幅なバグフィックス&拡張&最適化版のリリースが近々始まるそうです。 以前よりももっと良くなるらしいです。 (もしかして、これが去年夏頃から再開発を開始したGLSceneのver2かな?) 更に強力で更に早い!とのことで、リリースがとても楽しみです。
96 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 02:51:33 ] 俺もGLSceneを入れてみた。 ビジュアルコンポーネントになってて、こりゃ使いやすそうだわ。 3Dゲームプログラミングに関する限り、QuadrupleDよりも上かも知れんな。 誰か、日本語の詳しいヘルプを作ってくれ。
97 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 10:15:26 ] メッシュとかどうなの?
98 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 22:04:50 ] >>96 己が神になれるチャンスをなぜ人に振る?
99 名前:デフォルトの名無しさん [2007/03/12(月) 22:27:26 ] 流れ者です。 ttp://wiki.lazarus.freepascal.org/GLScene/ja DelphiとGLSceneで書いておけば、 Lazarusでのコンパイル(Linux,Mac)もそれほど難しいものではないかも。
100 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 23:20:44 ] おまえらGLSceneを使ってるサンプルソースでも集めてくださいよ
101 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 18:48:30 ] >>100 ほう。ぼちぼちサンプルでも作ってみるかな。
102 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 03:00:48 ] >>101 サンプルまだー?チンチン
103 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 16:26:53 ] >>102 分かりやすいサンプルを作るのは難しいな。 それにプログラムのアップとかはどうすりゃいいんだろとか いろいろ考えているうちに萎えた。 orz
104 名前:デフォルトの名無しさん [2007/04/13(金) 12:14:25 ] アプロタは、gamdev使えばいいよ。ゲームがらみなんだから。(つかなんで、この板にあるんだ?)
105 名前:デフォルトの名無しさん [2007/04/14(土) 18:21:34 ] gamdevってなんだろ?と思い、ググってみた。 もしかして、これのこと? ttp://gamdev.org/ おぉなんと、ゲムデブWikiのDelphiまとめというところにGLSceneという項目が! (ちょっと情報が古い感は否めないが・・・) Wikiは良く知らないんだけど、これって勝手に編集したりしても、いいの?
106 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 18:42:59 ] いいわけねぇだろww
107 名前:デフォルトの名無しさん [2007/04/14(土) 20:09:58 ] gamdevは、ゲ製作技術板 pc11.2ch.net/gamedev/ のサポートサイトで、ゲーム制作関係用にアプロダとかwikiは、 勝手に使っていいのです。 >>106 むしろ勝手に編集してください。
108 名前:デフォルトの名無しさん [2007/04/14(土) 20:12:40 ] ここだよね? GamDevPukiWiki - GLScene gamdev.org/w/?%5B%5BGLScene%5D%5D
109 名前:103 mailto:age [2007/05/14(月) 23:27:37 ] GamDevPukiWikiのDelphiまとめのGLSceneのところに、 リファレンスという項目を作ってみた。 ちと膨大な作業になりそうで、ひとりじゃ絶対無理なんで、 皆様も、追加&修正頼みます。
110 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 00:32:24 ] >>109 縦に長すぎて編集しづらい
111 名前:103 mailto:age [2007/05/16(水) 01:04:09 ] >>110 スマソ。慣れてないもんで・・・ もうちょっと分割したほうがいい?
112 名前:103 mailto:age [2007/05/16(水) 02:07:49 ] ちょこっと分割してみました。 こんなもんで、どうでっしゃろ?
113 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 02:35:44 ] GLScene良さそうだけど何から何までよくわかんないから wiki作成頑張ってくれ
114 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 20:45:56 ] >>109 これの翻訳元(?)ってどこよ
115 名前:103 mailto:sage [2007/05/17(木) 22:50:10 ] >>114 主にGLScene本家glscene.org のhelp→Reference Manualを基にしてます。 また一部、GLScene付属のヘルプを基にしたり、GLSceneのソースを解読したりして、 色々書き換えたりしてます。 既に書いたやつも、気が付いたら書き加えたり訂正したりしようと思っています。 私自身何かと忙しく、更新が遅れ気味にはなるとは思います・・・ 本当に一人じゃ不可能なんで、 皆様も、追加&修正頼みます。 何卒、ご協力お願いいたします。 m(__)m
116 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 08:53:50 ] お疲れ様です
117 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 20:56:56 ] これ使ってる凄いソフトなんかある?デモ的なものでもいいから機能がわかるやつ頼む
118 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 18:54:52 ] >>117 glscene.sourceforge.net/wikka/AdvancedDemos この中のAirBlastなんて、どう? 一応、ソース付きです。 他のAdvanced Demoは古いバージョン(Snapshot版)のGLSceneを使っているらしく、 ソース直して再コンパイルしないとまともに動かないと思う。
119 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/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;」を追加 AForm1.onCreateに、「sc:=TGLStateCache.Create;」を追加 BForm1.onCloseを作って「sc.Free;」と書く C全ての「InvertGLFrontFace;」を「sc.InvertGLFrontFace;」に変更する
122 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 22:40:18 ] って書いてるうちに、ソースの修正が終わったので、実行してみた。 このデモ、初めて見た。結構きれい。 でも・・・どうせ本家HPにデモを載せるなら、コードを修正してからの方が・・・ ボソッ
123 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 07:55:04 ] Delphi Doom www.geocities.com/jimmyvalavanis/applications/delphidoom.html
124 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 12:38:14 ] >>123 もしかして、これってGLScene(OpenGL)じゃなくDirectXでは?
125 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 17:39:18 ] 久々にGLSceneのNewsGroupをチェックしました。 GLScene用物理エンジンoxNewtonの新バージョン(Ver1.48)がもう少しでリリースされるようです。 そのバージョンで、「bsp loader」という新しいオブジェクトが追加されるようです。 Quake3形式のbspマップの読み込みと表示が出来るようになるようです。 表示テスト用 www.dave.serveusers.com/Basic_BSP.rar Quake3マップビュワー(25Mbもあるので要注意) www.badongo.com/file/2962824 スクリーンショット www.dave.serveusers.com/skyfix1.jpg www.dave.serveusers.com/skyfix2.jpg www.dave.serveusers.com/cuis1.jpg www.dave.serveusers.com/cuis2.jpg www.dave.serveusers.com/cuis3.jpg www.dave.serveusers.com/tts.jpg www.dave.serveusers.com/tts2.jpg www.dave.serveusers.com/tss3.jpg
126 名前:125 mailto:age [2007/06/17(日) 17:41:59 ] デモを見る限り、表示が速くて綺麗なのですが・・・ レベルエディタgtkRadiantで作ったマップデータは商用利用が禁止されているらしいですが、そもそもQuake3形式のbspマップの商用利用も、やはり禁止されているのでしょうか? だとしたら、もし商用利用したい場合は、 QuArk+OpenBSP しか方法は無いのでしょうか? 誰か教えてください。
127 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 20:15:20 ] 流石に他人のフンドシをモロに使うのはどうなんだろう。
128 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 22:54:53 ] >>127 >>128 レス、サンクスです。 シェアウエアを作る予定は今のところ無いのですが、 とにかくすっきりしました。
130 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 23:26:01 ] QuArkを入れてみたけど、表示がなんか変。 説明が難しいけどたぶん、壁や床が全く表示されてないんだと思う。 GeForce FX5200 WindowsXP
131 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 00:57:47 ] >>130 コントロールパネルから、地域と言語のオプションを選択 地域オプションタブの標準と形式のところを 「英語(米国)」 に変更してみて。多分、壁が表示される様になるから。 何故かは分からないけど。
132 名前:デフォルトの名無しさん [2007/06/18(月) 23:01:13 ] >>128 フォーマットに権利があるのか・・・ 最悪だなw id softwareもやるな
133 名前:デフォルトの名無しさん [2007/06/19(火) 22:28:49 ] 流れをぶった切った質問で申し訳ないのですが、GLCubeをいくつか表示 している時に、マウスが乗っかったのがどのGLCubeか判別するメソッドは ないでしょうか?
134 名前:デフォルトの名無しさん mailto:sage [2007/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 [2007/06/20(水) 16:02:34 ] >>134 ありがとうございます。とても分かりやすいご説明、感謝いたします。
136 名前:デフォルトの名無しさん mailto:age [2007/06/20(水) 23:15:34 ] >>131 おかげで、QuArkが正常に動くようになりました。 大変助かりました。サンクスです。 www.skinhat.com/ ここの「Quark for GLScene using OpenBSP」をインストールしました。 なかなか楽しい。こりゃ、QuArkの使い方も覚えないと・・・。 サンプルのsanom.exe、例の「Need at least OpenGL version 1.1」エラーが出るけど、 ソースを再コンパイルすれば無事動くようになりました。 OpenBSPって、もしかしてGLScene専用か?
137 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 23:41:01 ] >>132 日本の法律だとフォーマットは著作権によって保護されない。 製作者の主張に沿うように扱うべきなのかもしれないけどね ・・・ん?フォーマットに権利があるとしたらgtkRadiant以外で 作ったとしてもNGなんじゃない?
138 名前:デフォルトの名無しさん mailto:sage [2007/06/20(水) 23:57:06 ] 日本の法律だと大丈夫なの? id Softwareに従うとすれば・・・ gtkRadiant以外のエディタ、例えばQuArkでQuakeのBSPマップを作れば、商用はNGだと思う。 とりあえずGLSceneで使うなら、QuArkで作ったOpenBSPを使うのが無難な選択だろうね。 まあ、フリーウエアを作るなら、上記のどれを使おうが問題は無いのだろうが。
139 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 00:15:12 ] 「同人は商用ではありません。」っていう主張は果たして通用するのかが気になる。
140 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 00:19:46 ] うむぅ。。。実際には通用しないような・・・
141 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 00:20:43 ] するわけねーだろ馬鹿
142 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 08:50:31 ] クォータニオンを計算する関数は見つけたんですが、 クォータニオンからXYZの角度を算出する関数って無いですか? クォータニオン算出関数の中を見て、逆をやればと思ったのですが、 数学がへっぽこなので。・゚・(ノД`)・゚・。
144 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 09:12:14 ] これQuadrupleDと比べてなにが優れてるの?
145 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 01:41:04 ] 比べること自体間違ってる
146 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 19:31:22 ] ゲーム用のライブラリで3Dグラフィック表示・演算支援、入力支援などがあり 目的も機能も目指すところは同じように見えるんだが?
147 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 22:24:11 ] 目的も方向性もほぼ同じで比較は難しいが・・・・・ 3Dに関しては、GUIで確認できるGLSceneの方が敷居が低いと思う。
148 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 16:10:16 ] >>146 それぞれのベースとなってるOpenGLとDirectXで すでに違いがあるから、まずはそれを調べたら?
149 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 19:17:53 ] >>148 つまりどちらも薄いラッパーなのですか?
150 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 20:21:10 ] 2D表示をするにはどの命令を使えばいいですか?
151 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 06:55:28 ] >>150 2D表示命令は知らんが・・・ GLSceneオブジェクトでは、「HUD objects」や「GUI objects」というカテゴリーにあるのが2D座標専用オブジェクトだ。 非コンポーネントのクラスでは、TGLCanvasが物理座標(スクリーン座標)専用だ。 ビットマップを使うなら、TGLHUDSpriteが便利。 幾何学図形なら、機能は貧弱だがTGLCanvasが便利。
153 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 08:44:49 ] オレのメモ Genesis Device Engine www.genesisdevice.net/ SLG Core sourceforge.net/projects/ptisc/ Mondo 3DMMORPG engine sourceforge.net/projects/gamemundo/
154 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 20:43:10 ] >>152 GLSceneViewerの表面に、オブジェクトまでの距離を現すグラフを 書きたいんです。 TGLCanvasでたとえば、単純に対角線を引くにはどうするのでしょうか。
155 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 11:21:15 ] ありがとうございます。かけました。 GLDirectOpenGL1に書くと、シーンの 影響をうけないかどうか、見てみます。 Arcは必要ならEllipseなどをみて作ればいいんでしょうけども、 作ったら本家フィードバックしたほうがいいんでしょうか?
157 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 11:55:29 ] ありがとうございます。 3Dシーン上に、2Dのメータを書くのはGLSceneViewerの Buffer.WrapUpRendering のコールバックで書くようにしました。 (もちろんご指摘の方法でもOkでした) また質問で申し訳ないですが、TGLDirectGLで自分で書いた プリミティブや曲線を、マウスによる選択はどうすればいいんでしょうか。 >>133 には、GetPickedObjectの例がありましたが、何か実装する 場所がありますか?
159 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 13:48:13 ] ↑glPickMatrix等がいるかと思いましたが、 なにも実装しなくてもできました。スルーしてください。
160 名前:デフォルトの名無しさん mailto:sage [2007/07/17(火) 21:14:35 ] GetPickedObject、動的に生成したシーンオブジェクトを追加すると、 どこをピックしてもそのオブジェクトがかえってきます。 GLScene1.Objects.addChild( 〜 ) で追加するのはまずいのでしょうか。 #サンプルでもそうやって追加しているし、ピック以外は正常に動いている。
161 名前:デフォルトの名無しさん [2007/07/22(日) 08:55:29 ] お世話になります。 clothactorのデモでtrinityが動くのを見て、すごいなぁと思いました。 smdというファイル形式で保存されていますが、これはどのようなソフトで 作られたデータなのでしょうか。googleで探しても、Sega Mega Driveとか Jphoneの着メロばかり出てきてしまいます。 また、同時に何人もこんなのを動かしても普通に動くのでしょうか。
162 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 02:11:45 ] >>161 "smd形式 3D"でぐぐったらすぐ出てきたけど
163 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 18:01:06 ] マウスクリック位置が、GetPickedObjectでのオブジェクト上の どの位置かを知るにはどうしたら良いでしょうか。
164 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 21:15:55 ] Delphi用のNURBSライブラリ情報はないですか。
165 名前:デフォルトの名無しさん [2007/07/25(水) 17:50:40 ] >>163 functionGLSceneViewer.Buffer.ScreenToWorld(screenX, screenY):TVector3D を使えば、XY座標を3D座標に変換はできます。GetPickedObjectと組み合わせると 何とかなるんじゃない?
166 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 22:15:40 ] >161 smd(Half-Lifeのモデル形式)なら、「XSI Mod Tool」が無料で使えるみたい。 www.softimage.jp/mod/ www.c-sec.net/phpBB/viewtopic.php?t=640
167 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 20:57:04 ] >>165 ありがとうございます。 この関数をつかうとカメラの前の位置に変換されちゃうみたいですが、 たしかに組み合わせればなんとかなるでしょう... Rayなんとかっていうメソッドも自分で実装すればつかえそうですね。
168 名前:デフォルトの名無しさん [2007/07/30(月) 14:09:21 ] >>166 ありがとうございます。 XSI Mod Toolインストールしてみましたが、かなり熟練を要するソフトですね。 無料というのは助かりますが。これで開発するかまだ決心付きません。 google sketchupで3dsなどがexportできるといいですが、proじゃないと無理みたいですね。
169 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 20:57:28 ] CADのDXFファイルをGLSに読み込みたいんですが、 良い方法ござりませぬか?
170 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 22:04:40 ] dxfなんて大抵のソフトで読めるだろうから、適当なので>>22 の形式に変換すればよろし
171 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 22:06:29 ] もしくはテキストのDXFなら自分で読んで描画すればいいんじゃない? 仕様公開されてるんだし
172 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 22:47:00 ] あ、おれ、これならやったことあるぞ。 dxf読み込み→TGLCanvasで表示
173 名前:デフォルトの名無しさん [2007/08/07(火) 21:06:38 ] GLSceneを利用して、VCLのコンポーネント上に、NeHeとかのサンプルを実行するようなサンプルはないでしょうか? 本来ならば、GLSceneのオブジェクトモデルを利用した方がよいと思うのですけど、 すでにOpenGLの生APIを使ったプロジェクトがありまして、 それをVCL上である程度再現したいと考えています。 別の言い方をすると、GLSceneを使いながら、おいしいところだけをとって、 生APIを使えないかな?ということなのですが・・・
174 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 23:19:27 ] >>173 >>43
175 名前:デフォルトの名無しさん [2007/08/07(火) 23:41:33 ] わわわ。サンクソ 過去ログにありましたね。 OnRenderってのが難だけど、どうにかなるんかな・・・。 任意の時に描画命令発行したいので。 試してみるかぁ
176 名前:デフォルトの名無しさん [2007/08/08(水) 02:59:55 ] LBAAM lbbam.blog100.fc2.com/ 翻訳記事乙
177 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 03:22:43 ] >>178 本当に調べた?DXFは公式の仕様書もあるし第三者の解説だっていっぱいあるよ ひょっとして日本語で調べたいみたいな甘い考え?
180 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 16:40:14 ] ドイツ語や中国語でもいいのですが検索の仕方が悪いのか適当なページが見つかりませんでした。
181 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 17:30:10 ] >>180 "DXF format spec"でググればいくらでも出てくるじゃん。
182 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 19:28:21 ] 横レスで悪い、DXFって、中途半端に読むのは簡単だが、きちんと読むのは簡単じゃないと思う。 公式の仕様書といえるものは自動机俺様仕様書をかなりお金を出さないともらえない。 あとは全部非公式。だから、CAD間でもさほど互換性ない。 日本語の資料なら、日経BP 「新DXFリファレンスガイド R14対応 \3900」がある。 他にもあるかもしれん。オークションか古本屋で探すと吉。
183 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 20:08:31 ] >>178 はきちんと読む以前の問題だろ
184 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 00:29:52 ] どうも、>>177 です。いつのまにかDXFで盛り上がってるとは・・・ (^^;;; DXFフォーマットについては、AutoCADのヘルプにかなり詳しく載ってます(もちろん日本語で)。 とは言っても、>>178 氏がAutoCADを持っていないのなら参照しようが無いしなぁ。。。 ここのHPなんか、どう? hp.vector.co.jp/authors/VA020045/dxf/DXFR12.html んでも、ここの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 mailto:sage [2007/08/12(日) 09:45:29 ] 上でたしかにファイルは読めるけれど、 42=ふくらみ は、どういう意味か、どうすれば描画可能な情報に 展開できるか、という情報は、探してもなかなかない。 私の場合、昔のことだったので、ファイルと図形を 解析してやったが、ほかにも解決していなものは色々とある。 ググればいい=直線、円弧、安易な折れ線ポリライン ググってもわからん=スプライン、ちょっと複雑なポリライン、その他 だろうと思う。 私も分からない部分も多いが、回答できるものはするので、 もうちょっと質問を整理してみてはどうだろうか。
186 名前:182 mailto:sage [2007/08/12(日) 09:48:04 ] R14から、ポリラインは、LWPOLYLINEがデフォルトのようです。
187 名前:182 mailto:sage [2007/08/12(日) 10:00:03 ] >>178 , 184 日本語ではありませんが、スプラインのコードです。 www.autodesk.com/techpubs/autocad/acad2000/dxf/spline_dxf_06.htm DXFも同様なコードで出ていると思いますが、OpenGLで表示となると? その他のコードはこちらに。 www.autodesk.com/techpubs/autocad/acad2000/dxf/entities_section.htm
188 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 13:01:28 ] わざわざしゃしゃり出てくんな これ以上やりたいなら専用のスレに移動してやってくれ ここはGLSceneやその他の3Dライブラリのスレであって、3Dデータのスレじゃない
189 名前:デフォルトの名無しさん [2007/08/12(日) 14:34:03 ] 別にいいんでない? どうせそんなに話題もないのに
190 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 15:26:21 ] まあ難しいことは考えずに、>>170 が言っているとおりGLSceneで読める形式に変換すればいい話じゃない?
191 名前:デフォルトの名無しさん mailto:sage [2007/08/13(月) 22:24:19 ] tiffやdxfは仕様が大きすぎて最終的な成果物として扱うのは危険
192 名前:デフォルトの名無しさん mailto:sage [2007/08/14(火) 20:17:10 ] >>22 メジャーなモデラーならほとんどどれでも吐けるじゃないか ファイルフォーマット変換のためならmilkshape3d 個人的にはLightwave3dオススメ 国産モデラーはゲーム系フォーマットに弱いのが難点だな そもそも数があまり出てないけどさ ところでDXF形式なんて他のソフトへ持っていくとまともに読み込めないよね? (ひどい場合は書き込んだソフトですら読み込めない) 3dsかlwoを使ったほうがいい DXFは他に何も対応してなかった場合の最後の手段