- - PR -
スレッドの作成と実行
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-02-02 17:58
例えば、ブラウン管ではインタレースって言うんでしたっけ?走査線を交互に表示させる
という方法がありますよね。1秒間に全ての点を描画する、という固定観念を捨て、 人間が見ても違和感が無いレベルまで描画点数を少なくしてしまうのはどうでしょうか。 一生懸命頑張って描画しても、人間の認識できるスピードより早ければ骨折り損の くたびれ儲けになってしまいそうです | ||||
|
投稿日時: 2004-02-02 18:16
インギさんおばけさん返答ありがとうございます。
>for文で間に合わない処理ならスレッドに分けると >もっと遅くなりますのでやはり間に合いません。 これは知りませんでした。。 もうちょっと勉強してみます^^; みなさんご教授ありがとうございました。 とりあえず、実行できるレベルまで完成したらまた書き込みたいと思います | ||||
|
投稿日時: 2004-02-02 18:20
スレッド云々の前に、とりあえずアニメーションの表示方法について調べた方がよろしいかと思います。
おそらく、0.1秒(でなくてもよいでしょう)ごとに「画面内容を書き換えるメソッド」を呼び出すスレッドを作るだけで済みます。 | ||||
|
投稿日時: 2004-02-02 18:24
ちょっとソースに目を通したのですが、674本のスレッドというのは、それぞれがベストエフォートでGraphics#drawLine()を繰り返しコールし、1ピクセルずつを記述するという仕組みになっている、という構造であると理解してよいでしょうか?
例えば1コマあたり1/24秒(高品位なテレビアニメはこのくらいだったという覚えが…)とし、コマ間の差分を画面に書いていくようにすると良いのではないでしょうか?1/24秒毎に描画しなければならないパス情報の集合を、アニメーション開始前にあらかじめ生成しておいて、1/24秒ごとに一括で描画、というような仕組みにしてはいかがですか?1ピクセルごとに描画(画面に転送)するより、速度的にも有利かと思います。 java.awt.Shape、java.awt.geom.GeneralPathクラスあたりが助けになると思います。 参考になれば幸いです。 [ メッセージ編集済み 編集者: シュン 編集日時 2004-02-02 18:44 ] | ||||
|
投稿日時: 2004-02-02 18:27
詳しくは分かりませんが、リフレッシュレートの関係上、多くても1秒間に100回くらいで良いのでは無いでしょうか? | ||||
|
投稿日時: 2004-02-02 18:47
びしばしさん、ぼんさん、ぼんさんまとめて失礼します。
返答ありがとうございます。 アプレットの成功のイメージとしては http://www.enveng.titech.ac.jp/midorikawa/W70709.html このイメージのような感じなのですが、(直リンクで申し訳ない) 0.1秒というのは仕様になっているので変更が利かないもので^^; | ||||
|
投稿日時: 2004-02-02 19:49
リンク先を拝見しましたが、私のパソコンでは現実の世界で2秒か3秒ごとに
表示上0.1秒進んでいますね。 単にこの手のシュミレーションで0.1秒刻みで表示するだけでしたら、 本当に現実の世界の0.1秒に合わせて表示すれば、あっというまに過ぎ去って 何も見えないと思いますが。 もしスレッドをお使いになるのでしたら、グラフの表示で1スレッド、ユーザか らの入力待ちで1スレッド、場合によってはその他の表示用で1スレッドという 感じでスレッドを分けるのがよろしいのではないかと思います。 | ||||
|
投稿日時: 2004-02-02 20:12
どうも、Wataです。
私だったら、Appletのpaintをオーバーライドして、そこで普通に二重forループを使って、全てのピクセルを一括描画する処理を書きます。そして、ThreadまたはTimerをつかって、0.1秒ごとにrepaint()をコールし、次のデータを描画させるようにします。 というか、そうしないと、各ピクセルごとの描画の同期が取れないと思います。 つまり、Y座標ごとにスレッドを持つと、それぞれがばらばらに描画を行うので、あるY座標の線は、開始から2秒後の情報を表示しているのに、そのすぐ下はまだ、1秒後だったり、他の位置では既に終了しているかもしれなくなります。 (スレッドの機能を使って同期を取ることもできますが、そんなことすればますます遅くなります。)
0.1秒というのは描画するデータが0.1秒単位で実時間にあわせて描画するということですよね。実際にAppletでアニメーションが間に合うかどうかは、とりあえず作ってみるのがいいと思いますね。一括描画でVolatileImageを使えば、結構いけるのではないでしょうか? # 少しだけ試してみたところ、0.1秒レートはやっぱかなり無謀な気がしました... # なんて無責任発言だ (汗 [ メッセージ編集済み 編集者: Wata 編集日時 2004-02-02 20:45 ] | ||||
