[過去ログ]
Delphiゲームプログラミング相談室 (976レス)
Delphiゲームプログラミング相談室 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
284: 名前は開発中のものです。 [sage] 03/05/19 01:16 ID:RdOoX7kJ きにすんな http://echo.5ch.net/test/read.cgi/gamedev/1006249204/284
285: 名前は開発中のものです。 [sage] 03/05/20 01:21 ID:mVYsvlCM Bitbltを使ってアニメーションをさせてるんですが、開始すると アニメーションは割と綺麗に動きますが、実行させてるFormが 非常に重たくなります。Formを移動させようとしようものなら、 かなりガクガクに動くように…(開発環境マシンはP42.53GHzです) 何方か対策をご教授願えれば幸いです。 // TimerのIntervalは500に設定してます。 procedure TForm1.Timer1Timer(Sender: TObject); begin image1.Picture.LoadFromFile('C:\001.bmp'); BitBlt(image2.Canvas.Handle,0,0,37,7
5,image1.Canvas.Handle,0,0,SRCCOPY); image2.Repaint; sleep (100); image1.Picture.LoadFromFile('C:\002.bmp'); BitBlt(image2.Canvas.Handle,0,0,37,75,image1.Canvas.Handle,0,0,SRCCOPY); image2.Repaint; sleep (100); . . . image1.Picture.LoadFromFile('C:\006.bmp'); BitBlt(image2.Canvas.Handle,0,0,37,75,image1.Canvas.Handle,0,0,SRCCOPY); image2.Repaint; end; http://echo.5ch.net/test/read.cgi/gamedev/1006249204/285
286: 名前は開発中のものです。 [sage] 03/05/20 02:17 ID:zL9Q18du >>285 sleep() でウェイトをかましているからでは。 WINのタスクを独り占めして文字通り眠ったようになりますから。 タイマーとカウンタを使うのはどうでしょう? TForm1.FormCreate の所で cnt を 1 に設定しておいてから、 procedure TForm1.Timer1Timer(Sender: TObject); begin image1.Picture.LoadFromFile('C:\00' + IntToStr(cnt) + '.bmp'); BitBlt(image2.Canvas.Handle,0,0,37,75,image1.Canvas.Handle,0,0,SRCCOPY); image2.Repaint; Inc(cnt); if cnt>6
then cnt:=1; end; というのは如何でしょう? あと、 bmp ファイルは最初にまとめて ImageList へ読み込ませては? http://echo.5ch.net/test/read.cgi/gamedev/1006249204/286
287: 名前は開発中のものです。 [sage] 03/05/20 13:06 ID:mVYsvlCM >>286 見事に軽くなりました(´ー`) ありがとうございますた。 ImageListコンポーネントは使ったことがないのですが、 ちょっと弄ってみることにします。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/287
288: 名前は開発中のものです。 [sage] 03/05/21 02:17 ID:yuA7Jdfb 質問です。 ■■■ ■□■ ■■■ (元絵:□が残したい部分・■が黒塗りつぶし) □□□ □■□ □□□ (マスク:□が白塗りつぶし・■が残したい部分の黒塗りつぶし) を、OR→AND演算で表示すれば半透明化出来ると思うのですが、 ↑のマスク画像無しで、半透明化するにはどうすればいいのでしょうか? # ADVなエロゲーを再現しようと思ってるのですが、画像を抜き出してみたところ、 # 手元のゲーム(VisualArts系やDOのゲーム等)では、各キャラクターの立ち絵に # マスク用
画像が用意されてなく、黒背景に立ち絵が描いてある画像しか # 入ってませんでした。これらは、何か別の画像と論理演算を行って # 半透明化させてるんでしょうか? http://echo.5ch.net/test/read.cgi/gamedev/1006249204/288
289: 名前は開発中のものです。 [sage] 03/05/21 02:49 ID:8zKfauhG マスク画像は実行時に作成しているか、 1ピクセルずつ合成してるんじゃないの? SRCANDやSRCPAINT以外にもたくさんの合成方法があるけど、 1回のBitBltで透過させる事は不可能だと思う。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/289
290: 名前は開発中のものです。 [sage] 03/05/21 03:36 ID:pDtj6lgc >>288 TBitmap の ScanLine を使って、>>289 さんの仰るとおり 1 pixel ごとに 処理するヨロシ。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/290
291: 名前は開発中のものです。 [sage] 03/05/23 14:57 ID:gD+lmxCD ttp://www.geocities.jp/buin2gou2/delphi/DelphiTABM.htm http://echo.5ch.net/test/read.cgi/gamedev/1006249204/291
292: 名前は開発中のものです。 [sage] 03/05/24 02:30 ID:LSDvOFkW 291は何なの!? 荒らしいらい? http://echo.5ch.net/test/read.cgi/gamedev/1006249204/292
293: 名前は開発中のものです。 [sage] 03/05/24 03:57 ID:o6GsTVdQ >>288 TImageのプロパティで出来るじゃん http://echo.5ch.net/test/read.cgi/gamedev/1006249204/293
294: 名前は開発中のものです。 [sage] 03/05/24 11:34 ID:FLU40T1i >>288 Doは知らんがVisualArts系にはマスク部分ある。確か立ち絵のファイルといっしょになってる。 画像抜くのに使ってるソフトによってはマスク部分が無視される。 というかあれのマスク部分考慮してる抜き出しソフト見たことない。あんまり需要無いしな。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/294
295: 288 [sage] 03/05/25 03:35 ID:OUd92QaS >>289 >>290 ttp://www.sm.rim.or.jp/~shishido/delmono.html とりあえず↑のサイトを参考に(というかほぼコピペ)作ってみますた。 ttp://www.geocities.co.jp/SiliconValley/1115/adv01.zip 1ピクセル単位で色を取得、黒だったら白に、それ以外の色だったら 黒にするという処理を行いました。ただ、問題点が2つほど… ・For文で回してる処理が非常に遅い(scanlineのせい?) ・残したいキャラに含まれている黒色までマスク化してしまう(目の黒など) この2つが非常に悩ませてくれま
す… 上はともかく、下は 見た目に非常に影響するので(;´д⊂ やはり、透明化したくない 部分の黒色だけ、塗りつぶさないような条件処理でしか 解決策はないんでしょうか? >>293 Transparentプロパティを使えば出来ますが、プログラムで再現したかったのでつ… >>294 とりあえず一番簡単な方法である、Susieにプラグイン入れて 画像抜き出しやってるんですが、マスク画像は入ってるのですね。 じゃぁDOの方も、立ち絵ファイルと一緒になってたりするのかしら… http://echo.5ch.net/test/read.cgi/gamedev/1006249204/295
296: 290 [sage] 03/05/25 17:23 ID:ll42N4KR >>295 ソース拝見いたしました。 > ・For文で回してる処理が非常に遅い(scanlineのせい?) マスクを作るプロシージャにて、パレットコードを String に変換している 為と思われます。 procedure TForm1.make_mask(sBmp:TBitmap); var i,j, x : Integer; p : PDWORD; mp : PBYTEArray; begin for i:=0 to sBmp.Height-1 do begin p := sBmp.ScanLine[i]; // ビットマップ座標(0,i)のポインタ mp := mask.ScanLine[i]; x :=0; for j:=0 to sBmp.Width-1 do begin if p^ = $00000000 then //if
str_mask = '000' then begin mp[x]:=$ff; mp[x+1]:=$ff; mp[x+2]:=$ff; // B=255 , G=255 , R=255 end else begin mp[x]:=$00; mp[x+1]:=$00; mp[x+2]:=$00; // B=0 , G=0 , R=0 end; Inc(p); Inc(x,3); end; end; end; ……と、いうのは如何でしょう?( PDWORD よりも PDCHARArray の方が わかりやすいでしょうか) http://echo.5ch.net/test/read.cgi/gamedev/1006249204/296
297: 290@続き [sage] 03/05/25 17:27 ID:ll42N4KR >>296 自己レス PDCHARArray って何やねん…。 PBYTEArray です。 >>295 > ・残したいキャラに含まれている黒色までマスク化してしまう(目の黒など) ペイントソフトを使って、マスク用のカラー(例 $ffff00 などの使わない色)で 抜きたい所を塗るのはどうですか? if p^ = $00000000 then の所は変更せねばなりませんが。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/297
298: 290 [sage] 03/05/25 17:41 ID:ll42N4KR 連続投稿すみません。 キャラ絵を見てみましたが、瞳の中や影にあたる部分に背景を透けさせる色 RGB(0,0,0) で塗られている部分があります。 この絵からマスクをつくると、目の部分が抜けてしまいますね。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/298
299: 名前は開発中のものです。 [sage] 03/05/26 17:01 ID:rwyNVs4A >>285 もう直したかもしれないけれど、LoadFromFile は、描画ごとに毎回やるには むちゃくちゃ遅いです。>>286のようにTImageかTImageListに、あらかじめ格納しておくに一票。 >>292 TAlphaBitmapっていうグラフィックエンジンの紹介かと >>298 普通はマスクの色は、使っていない色を使います。 でも、フルカラーとかハイカラーで書いていると面倒だよね。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/299
300: 名前は開発中のものです。 [sage] 03/05/29 18:32 ID:N4i9Vcx6 遅レスですまんが 0 1 2 3 4 1 2 3 4 5 2 2 3 4 5 3 3 4 5 6 移動条件を全マス上下左右+左上+右下に統一しておいて こうずらしたほうが良くない? 0 1 2 3 4 1 2 3 4 5 2 2 3 4 5 3 3 4 5 6 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/300
301: 名前は開発中のものです。 [sage] 03/05/29 23:33 ID:mpTwdvzD >>300 5 4 3 3 3 3 4 5 6 5 4 3 2 2 2 3 4 5 4 3 2 1 1 2 3 4 5 4 3 2 1 0 1 2 3 4 4 3 2 1 1 2 3 4 5 5 4 3 2 2 2 3 4 5 5 4 3 3 3 3 4 5 6 が、 5 4 3 3 3 3 4 5 6 5 4 3 2 2 2 3 4 5 4 3 2 1 1 2 3 4 5 4 3 2 1 0 1 2 3 4 4 3 2 1
1 2 3 4 5 5 4 3 2 2 2 3 4 5 5 4 3 3 3 3 4 5 6 になるということですか。 うーん、 >>282 のように(1,0)−(0,1)が2になりそうな予感…。 ソース、ぷりーず。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/301
302: 301 [sage] 03/05/29 23:44 ID:mpTwdvzD 301訂正。 「右上」だからこうですね。 5 4 3 3 3 3 4 5 6 5 4 3 2 2 2 3 4 5 4 3 2 1 1 2 3 4 5 4 3 2 1 0 1 2 3 4 4 3 2 1 1 2 3 4 5 5 4 3 2 2 2 3 4 5 5 4 3 3 3 3 4 5 6 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/302
303: 名前は開発中のものです。 [sage] 03/05/29 23:52 ID:vzkpDIV0 というか、>>277がそれだよね? http://echo.5ch.net/test/read.cgi/gamedev/1006249204/303
304: 名前は開発中のものです。 [sage] 03/05/30 07:58 ID:3BAmLi+J おおそうか、すでに既出だったか。 白い四角と黒い四角はNGワードに入れてたから見えなかったよ。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/304
305: 288 [sage] 03/06/03 20:41 ID:dV3uJJSo >>296 レス遅れましたが、ありがとうございました。 お陰で苦にならない速度で描画出来るように(´ー`) 現在、立ち絵やシナリオウィンドウにアンチエイリアスを かける処理を考えてるんですが、単純にぼかしをかけた マスク画像を用意して、それを重ねるのが一番簡単でしょうか? ぼかしをかけるサンプルを適当に拾って弄ってるんですが、 なんか実行時に使うと、やたらと時間がかかるので… http://echo.5ch.net/test/read.cgi/gamedev/1006249204/305
306: 296 [sage] 03/06/03 22:24 ID:VCAAEscw >>305 多少はお役に立ったようで何より。 アンチエイリアスですが……、私の知っている限りでは一枚絵ではちょっと 難しいと思います。 やはり仰る通り、アンチエイリアスのかかったマスクを、背景とαブレンドで 合成してから、立ち絵を描写した方がよろしいかと。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/306
307: 296 [sage] 03/06/04 01:33 ID:yTkfegdd >>305 ttp://forgamedev.zombie.jp/uploader/up2/img/012.lzh 酔いが醒めたので、ちょっとやってみました。 データは 288 さんの流用&マスク画像が綺麗でないのはご勘弁のほどを…。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/307
308: 296 [sage] 03/06/04 04:16 ID:yTkfegdd ttp://forgamedev.zombie.jp/uploader/up2/img/013.LZH >307 では立ち絵のラインが黒であることを前提にソース書いてしまったので、 あわてて訂正しました。 http://echo.5ch.net/test/read.cgi/gamedev/1006249204/308
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 668 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.027s