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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
1202
たまhgimg3で透過画像にジャギがでるのですが・・・1未解決


たま

リンク

2014/12/2(Tue) 22:51:00|NO.66288

hgimg3でaddplate命令で作った板ポリゴンに透過PNGをテクスチャ登録する方法で
2つのスプライトを作ります。
このとき先に作ったスプライトが後に作ったスプライトの上に重なったとき、
重なりあった境界線にジャギが出ます。
(後に作ったスプライトが先に作ったスプライトの上に重なるときは問題なし)

なんとかできないでしょうか?


*サンプル
注)動作に必要なファイル
)#01.png 、 #02.png という名前の800*600透過PNGファイル
)アドベンチャーゲームの立ち絵のようなもの)

;-------------------------------------------
#include "hgimg3.as"

screen 0,640,380,1
cls

hgini
onexit *owari

;-----------------------------------
;スプライト 1

;画像は800*600のいわゆるアドベンチャーゲームなどの立ち絵
texload2 "#01.png",800,600 ; テクスチャの登録
id_1=stat
addplate model_1,1,8,8,0,0,800,600,id_1
regobj obj_1,model_1 ; BOXモデルをオブジェクトとして登録
setpos obj_1,-1,0,18


;-----------------------------------
;スプライト 2

;画像は800*600のいわゆるアドベンチャーゲームなどの立ち絵
texload2 "#02.png",800,600 ; テクスチャの登録
id_2=stat
addplate model_2,1,8,8,0,0,800,600,id_2 ;板(PLATE)モデルを作成

regobj obj_2,model_2 ; BOXモデルをオブジェクトとして登録
setpos obj_2,1,0,18

;-----------------------------------
;カメラ

selcpos
objsetf3 0.0f, 0.0f, 20.0f
gsel 0

;-----------------------------------
*main

hgdraw ; 描画処理
hgsync 10 ; 時間待ち

stick k,127

if k=512{;右クリックで操作スプライト変更

st++
if st>1 : st=0
}

if k&128 : goto *owari ; [ESC]で終了

if st=0{
if k&1 : addpos obj_1,-0.5,0,0
if k&2 : addpos obj_1,0,0,-0.5
if k&4 : addpos obj_1,0.5,0,0
if k&8 : addpos obj_1,0,0,0.5

}

if st=1{
if k&1 : addpos obj_2,-0.5,0,0
if k&2 : addpos obj_2,0,0,-0.5
if k&4 : addpos obj_2,0.5,0,0
if k&8 : addpos obj_2,0,0,0.5

}


goto *main

*owari
hgbye
end



この記事に返信する


暇人

リンク

2014/12/3(Wed) 21:06:36|NO.66295

縁を半透明合成してる事になるので
必ず奥からオブジェクトを描画する必要がある

regobjでモードOBJ_SORTを指定すればカメラから遠い順に描画される
が、これだけだと同じ距離の場合先に描画された物が優先されて重なる部分が描画されない
Zバッファに描画された距離が記録されて、そこ以上奥の場合描画を弾く処理がされる
なので、Z無視にする必要がある(カメラからの距離を少しずらすだけでも良い)
setefxでアルファ値設定を256以外にすれば良い

ただ、この方法を使ってXファイルのモデルと共存や立体物と重なる場合
前後関係が思うようにいかなくなるので
作ってる物によっては使えない・・・



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