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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0508
としあきHGIMGとHGIMG3の違い。3解決


としあき

リンク

2007/5/8(Tue) 21:54:44|NO.8144

「12歳からはじめる、わくわくHSP 3Dゲームプログラミング教室」を読んで3Dに挑戦していますが、うまくHGIMG3仕様に出来ず、第4章の頭で止まっています。
「12歳〜」のhgimgのサンプルをHSP3で動かすとちゃんと動くのに、「#include "igimg3.as"」としただけで、表示画面が変わってしまいます。
特に、箱に張るテクスチャが、HGIMGとHGIMG3ではまったく同じ文章なのに、表示が違っています。
もしよろしければ、HGIMGをHGIMG3に直すときのコツ等がありましたら、どうか教えてください。

ちなみに、現在のHGIMG3の理解力は、「HSP3プログラミング入門」や「HSPファンブック」の3Dのページを読んで、箱を作って、テクスチャをはり、カメラの位置を指定するような、基本的なことです。



この記事に返信する


不如帰

リンク

2007/5/10(Thu) 18:38:42|NO.8173

HGIMG及びHGIMGXはHSP2用です。
そのため、浮動小数が使えません。
なので、小数には最後にF(Float)をつけて、判別させないといけないこと。
それと、位置指定などが、MOCのみです。
HSP3版のHGIMG3は、MOC以外にも、Set系列の命令で、直接指定が出来ます。
また、小数点にFをつける必要がありません。
なので、HGIMGより、MGIMG3を推奨します(僕としては)



Drip

リンク

2007/5/10(Thu) 22:33:39|NO.8177

Dripです。

 としあきさん、こんにちは。
hgimg3とhgimgは内部処理が根本的に異なるものです。

不如帰さんの説明はほぼ全て間違っています。

>小数について

 HSP2から使用できるHGIMG、HGIMGXでは、浮動小数が使用可能です。
但し、HSP2シリーズにはfloat型、double型等の変数の型がないため、
HSP2で使用する場合は、hgimgプラグイン内で整数型変数を内部的に小数として処理します。
この場合、変数を小数として認識させるために、数値の後にfを指定します。(0.25f 等)
但し、HSP3からhgimgを呼び出す場合、fの指定はいりません。普通に小数を記述できます。

//HSP3でhgimgを使用するサンプル #include "hgimg.as" hgini:setsizef 1.5,1.5:addbox b:modelshade b,1 regobj b,b:selcpos:objset3 0,0,3:selang b repeat objaddf3 0.01,0.01 //fの小数識別子は不要 hgdraw:hgsync 16 loop
>MOC値について

 hgimg3では、オブジェクトの座標、拡大率、アングル等は、全てMOC値により
管理しています。hgimg3から使用可能になったset〜系の命令(setang,setpos等)では、
selang等で操作先MOC値をあらかじめ指定しなくても、1つの命令でMOC値を設定することも
できるようになりました。
(例えばselposで位置設定状態にしておきながら、setangでアングルを操作したりできます。)
hsp2でもhsp3でもhgimgでもhgimg3でもMOC値の仕様に変化はありません。
なのでset〜系の命令はMOC以外の値を指定するわけではありません。

//hgimg3のset〜系の命令でmoc値を設定する #include "hgimg3.as" hgini:addbox b,1,1:regobj b,b setang b,1,1:selang b:objgetfv fv mes "setangでmoc値を指定し、角度のmoc値を表示" mes fv(0) mes fv(1) mes fv(2)
■hgimg3とhgimgの違いについて

hgimg3は過去のhgimgとhgimgxの後継プラグインです。
描画能力や扱い易さ、機能面から見て、非常に強化されたものになっています。
しかしその進化の過程上、命令の記述の仕方や仕様がところどころ変化し、プログラムの
互換性が失われつつあります。そのためhgimgの参考書の記載されているプログラムは、
hgimg3上では動作しないものが多いかと思います。
 ですが、そのスクリプトをhgimg3用に改変すれば、より簡潔でわかりやすいプログラムが
書けます。そのためには、プログラムの応用力と仕様を理解する学力が必要です。
hgimgの後継バージョンなので、仕様さえ理解すれば改変そのものは苦労しないはずです。

■hgimgの強み

 hgimg3とhgimgの根本的な違いは、hgimg3はDirectXを使用して描画するプラグインになった
ことです。これにより高速かつ美しい画面がDirect3Dにより描画されるのですが、
hgimgが持っていた「プラグインを一切使用しない独自描画」という最大の利点が
失われてしまいました。つまりhgimgでは、Windows95ピュアインストール状態から、
マシン環境に左右されず、正常に3Dが描画できるという素晴らしい能力を持っていたのですが、
hgimg3ではDirectX8以上がインストールされたマシン上、ハードウェアがDirect3Dをサポートし、
正常に動作する環境でしか動作できなくなってしまいました。
 画質や描画速度より互換性を重視するならばhgimgを、互換性を犠牲にして描画速度、美しさを
重視するならばhgimg3を使用するようにしてみてください。

 hgimg3がどんどんバージョンアップされる裏腹、現在hgimgのバージョンアップは全く
されておらず、完全に単独で3D描画を可能にする素晴らしいこのプラグインが、
いつHSPから外されてしまうか考えると不安でなりません。
余談でした。



としあき

リンク

2007/5/11(Fri) 00:37:10|NO.8181

みなさん、返答ありがとうございます。参考になりました。

Dripさんの書き込みで、hgimg3とhgimgの内部処理が違うことが分かりました。
HGIMGのサンプルを、自分ではちゃんとHGIMG3用に直したのですが、オブジェクトの表示位置が微妙に異なるのはそのためかもしれません。

3Dモデルの大きさや、オブジェクトの配置などはHGIMG3用に考えて設定したほうが良いかもしれませんが、まだ始めたばかりなので、3D空間での位置関係がまだうまくつかめません。
時間をかけて、「HSP3プログラミング入門」や「HSPファンブック」の3Dページを読み返し、少しづつですが、理解して行こうと思います。

今回どうもありまとうございます。


p.s
自分としては、このシリーズのファンでもあるため、「12歳からはじめる、わくわくHSP3.1 3Dゲームプログラミング教室」の発売を強く希望します。



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