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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0803
真夏のストーブhgrotateの上にモデルを表示するには?3解決


真夏のストーブ

リンク

2015/8/3(Mon) 04:44:35|NO.70423

hgrotateで作った背景の上に適当なモデル(ここでは箱モデル)を配置したいと考えています。
しかし、現状ではhgrotateで作った背景しか表示されません。

それぞれ単体では表示できるようになっています。
・箱モデル

#include "hgimg3.as" screen 0,256,256 hgini setcolor 0,255,255 addbox model,4,4 regobj box,model,0 setpos box,0,0,0 setangr box,16,32,0 setpos HGOBJ_CAMERA,0,0,10 repeat gsel 0 hgdraw hgsync 16 loop
・背景(サンプルのsettex.hspを流用)

#include "hgimg3.as" screen 0,256,256 hgini buffer 1,256,256 settex 256,256,0,-1 ; テクスチャ登録 mest = stat rot=0.0 repeat gsel 0 hgdraw gmode 0,256,256 pos 128,128 hgrotate mest,0,0,rot,256,256 hgsync 16 rot+=0.01 gsel 1 color 255,255,255:boxf color 0,0,0:pos 0,0 mes "HSPの画面です。("+rot+")" settex 256,256,0,mest loop
ここでhgrotateの上に箱モデルを表示させようと思い、以下のように記述しましたが、
箱モデルが描かれないようです。

#include "hgimg3.as" screen 0,256,256 hgini setcolor 0,255,255 addbox model,4,4 regobj box,model,0 setpos box,0,0,0 setangr box,16,32,0 setpos HGOBJ_CAMERA,0,0,10 buffer 1,256,256 settex 256,256,0,-1 mest = stat rot=0.0 repeat gsel 0 hgdraw gmode 0,256,256 pos 128,128 hgrotate mest,0,0,rot,256,256 setpos box,0,0,0 setangr box,16,32,0 hgsync 16 stick k,127 if k&128 : break rot+=0.01 gsel 1 color 255,255,255:boxf color 0,0,0:pos 0,0 mes "HSPの画面です。("+rot+")" settex 256,256,0,mest loop end
自分の予想していた結果としては、buffer1の画面が回転していながら、
水色の箱がドンと配置されている画面が表示されている、という感じでしたが、
実行してみると水色の箱がなく、単にbuffer1の画面が回転しているだけでした。

どうすれば予想通りの結果になったのでしょうか。
ご回答をよろしくお願いします。



この記事に返信する


ZAP

リンク

2015/8/3(Mon) 18:47:08|NO.70434

hgrotateなどの2D命令が描画されるレイヤーは3D空間より前面にあると思います。

背景として奥に表示したいのであれば、例えば板ポリゴンにテクスチャとして貼り付けて、
箱より奥に配置する必要があるのではないでしょうか?



暇人

リンク

2015/8/3(Mon) 19:55:08|NO.70438

根本的に勘違いしてる
3Dブジェクトの描画はhgdrawが行っている
hgsyncは既に描画された物を見えるようにしてるだけ
だからhgdrawの後にhgrotateすれば3Dオブジェクトが見えなくなって当然

解決方法としてはhgdrawには画面初期化しないや3Dオブジェクト描画しないなどの設定があるので
hgdrawで画面初期化(Z値クリアする必要があるので必要)だけしてオブジェクト描画OFF
hgrotateで描画
hgdrawで画面初期化せずにオブジェクトを描画
って言う流れにする

#include "hgimg3.as" screen 0,256,256 hgini setcolor 0,255,255 addbox model,4,4 regobj box,model,0 setpos box,0,0,0 setangr box,16,32,0 setpos HGOBJ_CAMERA,0,0,10 buffer 1,256,256 settex 256,256,0,-1 mest = stat rot=0.0 repeat gsel 0 hgdraw 2 gmode 0,256,256 pos 128,128 hgrotate mest,0,0,rot,256,256 setpos box,0,0,0 setangr box,16,32,0 hgdraw 4 hgsync 16 stick k,127 if k&128 : break rot+=0.01 gsel 1 color 255,255,255:boxf color 0,0,0:pos 0,0 mes "HSPの画面です。("+rot+")" settex 256,256,0,mest loop end



真夏のストーブ

リンク

2015/8/3(Mon) 22:49:16|NO.70449

できました。ありがとうございます。

> 板ポリゴンにテクスチャとして貼り付け
最初はこの方法も考えていたのですが、
自分が考えた方法ではdelobjで消してはaddplateで作っての更新しか思いつく方法がなく、
これではなんだかあまりにも無駄であることや、
実際に動かしてみようとするとなんだかうまく動作しなかったので諦めていました。

> hgdrawには画面初期化しないや3Dオブジェクト描画しないなどの設定がある
サンプルを流用して動かしていただけだったので、ここは調べていませんでした。
調査不足で申し訳ありません。今後はサンプルもよく調べてから質問しようと思います。



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