HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0429
Mr.Yamadaフレームについて4未解決


Mr.Yamada

リンク

2006/4/29(Sat) 14:44:54|NO.532

突然ですが質問です
僕はHGIMGで
3Dモデルをプレビューするソフトを作っています
スペースキーなどで
1フレームずつ前に戻す方法が知りたいです
情報をください



この記事に返信する


PKK

リンク

2006/4/29(Sat) 19:16:19|NO.533

質問の書き方が悪い。もっと分かり易く詳しく書こうな。



Mr.Yamada

リンク

2006/4/30(Sun) 12:14:58|NO.536

どうもこんにちは
質問が分かりにくかったそうなので
サンプル(HSP付属サンプル)
を使って
説明します
下のサンプルを実行すると
AとBとC
の3Dオブジェクトがぐるぐる回ったり
フェードイン フェードアウト
が繰り返されます
僕が聞きたかったのは
ぐるぐるまわっている状態から
スペースキーを押すと
1フレームずつ戻っていく
(巻き戻し機能みたいなの)
をつけてみたかったのです

ぼくはこうやって文であらわすのは苦手なので
分からないことがあったら
指摘してくれるとうれしいです


; フェードイン・アウトサンプル ; randomize screen 0,640,480,0 cls 4 hgini ; テクスチャフォント表示の準備 ; setfont 16,16,12,1 ; font Tex select(cx,cy,px,mode) texload "fontchr.bmp" ; フォントテクスチャの登録 ; Xモデル登録 ; addxfile m_xmodel.0,"font_a.x" ; モデルを読み込む addxfile m_xmodel.1,"font_b.x" ; モデルを読み込む addxfile m_xmodel.2,"font_c.x" ; モデルを読み込む ; イベントリストを登録 ; newevent ev1 ; 新しいイベントIDを取得 event_setpos ev1, -20,-10,0,20,10,0 ; ランダムな位置を設定 event_efx ev1, 80, 0 ; 80フレーム後に透明度0% event_addang ev1, 0, 0.1, 0 ; Y角度を0.1づつ加算する event_wait ev1, 80 ; 80フレーム待つ event_prmset ev1,PRMSET_FLAG,0 ; 自分を消去する ; 表示の準備 ; clscolor $80 ; 背景色の設定 frame=0 scfade=0 scfadev=256 gosub *fadein *main gosub *alldraw stick key,$3ff if key&128 : goto *main2 if (frame&7)=0 { ; 8フレームごとに実行 regobj obj, m_xmodel.rnd(3) ; オブジェクトの登録 setevent obj,ev1 ; イベント適用 } ; カメラをカーソルキーで動かす ; if key&4 : addpos HGOBJ_CAMERA, -0.2, 0.0 if key&1 : addpos HGOBJ_CAMERA, 0.2, 0.0 if key&2 : addpos HGOBJ_CAMERA, 0.0, 0.2 if key&8 : addpos HGOBJ_CAMERA, 0.0, -0.2 goto *main *main2 gosub *fadeout repeat gosub *alldraw if scfadev=256 : break loop *owari end *alldraw ; フレーム描画のサブルーチン ; hgdraw ; 描画 fprt "Frame:"+frame,8,8 if scfade { ; フェード処理 scfadev += scfade if scfadev>255 : scfadev=256 if scfadev<1 : scfadev=0 : scfade=0 color 0,0,0:gmode 3,640,480,scfadev hgrect 320,240,0 } hgsync 15 ; 時間待ち frame++ return *fadein scfade=-4 return *fadeout scfade=4 return



HK

リンク

2006/4/30(Sun) 13:19:57|NO.537

1フレーム毎に巻き戻ししたいオブジェクトの角度を配列変数を使って記録して、
スペースが押されたら、それを読み出して逆に適用すればできる。

例)角度の記録
getang TEST,fx,fy,fz

フレーム1)   hairetux(1)=fx : hairetuy(1)=fy : hairetuz(1)=fz
カウンタみたいなものを作って、毎フレームごとに要素を1つづつ大きくする。

間違ってたらスマソ



Drip

リンク

2006/4/30(Sun) 14:45:12|NO.539

Dripです。

 Mr.Yamada さん、こんにちは。
フレームで巻き戻しを行うには、実装させたい機能によってやりかたが大きく異なって
きます。情報量に応じた、最適なプログラムを自分で考え、組み上げる必要があることを
理解しましょう。

 HKさんのやり方は、Windowsペイントなどで使われているアンドゥをフレームレベルで
行うものですね。汎用性のある良い例だと思います。
ただしHSP3の場合はメモリリークを起こさないように注意しないといけませんね。^^;

 Mr.Yamadaさんが作ろうとされているものは、3Dモデルのプレビューソフトということで、
なぜフェードアウトや回転が自動で行われ、しかもフレームバックできる必要があるのか
かなり謎なのですが、プレビューソフトならば、中央に物体が表示され、カメラワークが
実現されれば問題無いように思うのですが、奇抜なシステムを用いた質問の場合には、
詳しいシステム提示、場合によってはそのシステムにしようとした理由なども書かないと、
正しいアドバイスをもらえない場合があるので注意しましょう。



ONION software Copyright 1997-2023(c) All rights reserved.