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


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
0215
初心者d3moduleの使い方がよくわかりません7未解決


初心者

リンク

2018/2/15(Thu) 20:20:31|NO.82466

一応途中までのやつです。表示できないです。


screen 0,1280/2,720/2 #include "d3m.hsp" repeat clx = (mousex - ginfo_winx / 2) * 20 cly = (mousey - ginfo_winy / 2) * 20 d3setcam 50,10,50,clx,cly,clz,0 color ,,0 d3box 0,0,0,50,50,50 wait 1 loop

どう直したら表示されるのでしょうか、おしえてください!



この記事に返信する


リンク

2018/2/15(Thu) 21:40:42|NO.82467

物体の位置とカメラの位置、向きの設定がおかしいと思います

どういう表示をしたいのかが解らないので
とりあえず元ソースに近い形で表示できるようにするならば

screen 0,1280/2,720/2 #include "d3m.hsp" repeat redraw 0 color 255,255,255:boxf clx = (mousex - ginfo_winx / 2) * 20 cly = (mousey - ginfo_winy / 2) * 20 clz=0 d3setcam clx,cly,clz,50,10,50,1.0 color d3box 0,0,0,50,50,50 redraw 1 wait 1 loop



初心者

リンク

2018/3/4(Sun) 21:39:15|NO.82622

d3mはどのような表示の仕方をすればいいのでしょうか...
>>撃 さんのをじーんとみたけどわかりません^^;
教えてください!



あまら

リンク

2018/3/4(Sun) 23:37:38|NO.82623

3D系は言葉で説明するのが難しいんですよね。

例えば、自分が真っ直ぐ正面を向いているときに背後や真上にある物は見えませんよね?
このとき、鏡とか心眼とかトンチのような物は無い物として考えてください。


カメラというのは自分の視界だと思ってください。
・カメラの位置というのが自分のいる場所
・カメラのターゲット位置とか注視点とかベクトルとかいう物が自分の向いている方向
みたいに思ってください。


clx,clyの計算の意味がよくわかりませんが
初心者さんのソースではd3boxで作った立法体の内部にカメラがあって、
マウス座標によってカメラの向きを変えて
立方体の中から周りを見ようとしているということになるでしょうか。


撃さんの修正は、立方体の外から立方体の方向を向きつつ、
マウス座標によってカメラ位置を変えるという事になると思います。

2Dの場合はカメラという概念が無く
ウィンドウの中に入ったものが描画されますが、

3Dの場合にはどの位置からどの方向を見ていて、
何がどこにあるのかという点に注意しないといけません。
その上で視界に入った物だけが画面に表示されます。



GENKI

リンク

2018/3/4(Sun) 23:48:01|NO.82625

> d3mはどのような表示の仕方をすればいいのでしょうか...

d3box命令が実行された時にすでに描画されていますが…まずは描画の仕組みを理解されたほうがいいと思います。
ですのでそのあたりを少し…


redraw 0 color 255,255,255:boxf ・・・ redraw 1
ループ前後をこの処理で挟むのは画面をアニメーションさせる際によく使われるお決まりのパターンです。
前のループで書いた絵を全部白で塗りつぶしてから絵を描き直す処理をしています。
詳しくはこちらを参考にしてください。

HSP開発wiki - 基本的なスクリプトのパターン
https://wiki.hsp.moe/HSP%E8%AC%9B%E5%BA%A7%EF%BC%8F%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AE%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3.html


d3setcam clx,cly,clz,50,10,50,1.0
d3setcamはマニュアル(HDL)にある通り、カメラの位置を指定するものです。
カメラの位置が、clx,cly,clz
ターゲット位置が、50,10,50
カメラの位置にカメラを設置して、カメラのレンズをターゲット位置に向けます。
ターゲット位置にボックスが置かれてあれば、ボックスが表示されます。
撃さんのスクリプトはマウスの動きに応じてカメラの設置位置が変わるようになっています。近づけば大きく見え、ボックスのまわりをぐるぐる回るとボックスも回転して表示されます。

d3setcam 50,10,50,clx,cly,clz,0 color ,,0 d3box 0,0,0,50,50,50
こうすると、ボックス(d3box)の中にカメラを置いて、マウスの動きに応じてカメラの向きを変えるようになっています。
ボックス内にカメラがあるのでボックスが見えない(表示されない)わけです。



GENKI

リンク

2018/3/4(Sun) 23:59:37|NO.82626

> clx,clyの計算の意味がよくわかりませんが
ということなので補足。


clx = (mousex - ginfo_winx / 2) * 20 cly = (mousey - ginfo_winy / 2) * 20
この解説。

(mousex - ginfo_winx / 2) (mousey - ginfo_winy / 2)
この部分が、ウィンドウ中心からマウスまでの距離。
「 * 20」は小さすぎるので大きくして調整しているだけです。

カメラとターゲットの位置関係に困ったら、方眼紙などに実際に書いてみるとイメージしやすくなりますよ。



あまら

リンク

2018/3/5(Mon) 00:15:56|NO.82627

>この部分が、ウィンドウ中心からマウスまでの距離。
>「 * 20」は小さすぎるので大きくして調整しているだけです。
ああ、なるほど。
解説ありがとうございます。

除算が先に計算されるってことをすっかり忘れてました。
減算、というかHSP2時代の左から順に計算されるってイメージが強くて
ときどき変な勘違いをしてしまいます。



GENKI

リンク

2018/3/6(Tue) 23:37:38|NO.82653

> 除算が先に計算されるってことをすっかり忘れてました。
なるほど!そこでしたか。
これは「HSPあるある」。



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