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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0908
ガモウソフト(Easy3D) E3DCreateLine の使い方5解決


ガモウソフト

リンク

2008/9/8(Mon) 13:56:03|NO.19159

 こんにちは。
3D空間に線を描画する命令「E3DCreateLine」の使い方で、困っています。
3時間ほど 付属のヘルプや本を読んでるけど、表示されない…。
↓のソースの、どこが いけないんでしょうか?

; 線を描くための準備。
pointnum = 2 : maxpointnum = 2 ; 線に使う点の数は、2。
ddim pointpos, pointnum , 3 ; pointpos(点の番号,x〜z)に、座標を入れる。

pointpos(0,0)= 0.0 ; 点0番のx座標
pointpos(0,1)= 0.0 ; 点0番のy座標
pointpos(0,2)= 0.0 ; 点0番のz座標
;
pointpos(1,0)= 0.0 ; 点1番のx座標
pointpos(1,1)= 0.0 ; 点1番のy座標
pointpos(1,2)=5000.0 ; 点1番のz座標

E3DBeginScene ;-----シーンスタート


;線の描画をする
E3DCreateLine pointpos, pointnum, maxpointnum, 3, lineid ; 線を作成して、lineidを取得。
; そういえば、「線の種類」の意味も確かめてないな…

E3DSetLineColor lineid, 100, 0, 255, 0 ; 線に色を付ける。よくわからないので、透明度100。

E3DRender scid1, lineid,0, frameno1, 0 ; (線レンダー)。

E3DEndScene ;-----シーン終了
E3DPresent scid1 ;バックバッファの内容を、プライマリバッファに転送。描画する。


 線のすぐ近くのモデルは見えるのに、線が見えない。
背景が青いから(デフォルト?)、隠れて見えないのかな…?



この記事に返信する


sei

リンク

2008/9/8(Mon) 14:37:20|NO.19160

E3DAddPoint2Line
でポイントIDを追加

E3DSetPointPosOfLine
で反映されます。

描画されない件ですが、
E3DRenderの3番目の値withalphaを
1にする必要があるようで

あとカメラはラインのほうを向いていますか?



ガモウソフト

リンク

2008/9/8(Mon) 18:14:10|NO.19172

 うーん わからない。カメラの向きは正しいはずなのですが。


; 線を描くための準備。
pointnum = 2 : maxpointnum = 2 ; 線に使う点の数は、2。
ddim pointpos, pointnum , 3 ; pointpos(点の番号,x〜z)に、座標を入れる。

pointpos(0,0)= 0.0 ; 点0番のx座標
pointpos(0,1)= 0.0 ; 点0番のy座標
pointpos(0,2)= 0.0 ; 点0番のz座標
;
pointpos(1,0)= 0.0 ; 点1番のx座標
pointpos(1,1)= 0.0 ; 点1番のy座標
pointpos(1,2)=5000.0 ; 点1番のz座標

E3DBeginScene ;-----シーンスタート

;線の描画をする
E3DCreateLine pointpos, pointnum, maxpointnum, 3, lineid ; 線を作成して、lineidを取得。
; 点の座標, 点の初期数, 点の最大数, 線の種類, 線のID(出力)

E3DAddPoint2Line lineid, -1, pid ; 線に点を追加し、点のIDを取得。(-1:線の最後に新しい点を追加)

E3DSetPointPosOfLine LineID, pID, pointpos ; 線の中の 点の座標を、セットする。

E3DSetLineColor lineid, 100, 0, 255, 0 ; 線に色を付ける。透明度と色も指定。これって、一回使えばいいのかな?



;不透明部分の描画をする
E3DRender scid1, hsid0, 0, frameno0, 0 ;バックバッファにレンダリングする(地面描画)。3番目の"0"が、不透明部分の描画って事。
E3DRender scid1, hsid1, 0, frameno1, 0 ; (タコ描画)。5番目の"0"は、レンズ演出の有無。
E3DRender scid1, lineid,1, frameno1, 0 ;(線描画)。seiさんによれば、3番目の値を1にしなければいけない。

;半透明部分の描画をする
E3DRender scid1, hsid1, 1, frameno1, 0, 0, 0, 1 ; (タコ描画)。

E3DEndScene ;-----シーン終了
E3DPresent scid1 ;バックバッファの内容を、プライマリバッファに転送。描画する。

E3DSetBeforePos hsid1


あと、背景が青いのは、デフォルトでしたっけ?



ガモウソフト

リンク

2008/9/8(Mon) 18:16:26|NO.19174

連続投稿ですいません。
3D空間に線を引くための最短スクリプト、どなたか 教えていただけませんか?



sei

リンク

2008/9/8(Mon) 19:11:41|NO.19177

beginscene

endsceneの間にcreatelineが入っていますが、
常にlineidが生成されている状態で
これは意図通りではない可能性があります、

あと質問の色指定は最初のみ、
または常に指定可能です。

ちょっと敷居は高くなりますが、

おちゃっこLABで公開されているサンプル
e3dhsp_DrawLine.hspを参考にして
これをご自身でコンパクトに小さくしていって
勉強する事により参考になるかもしれません。



ガモウソフト

リンク

2008/9/8(Mon) 19:46:13|NO.19180

うーむ。
やはり、サンプルは本当に勉強になりますね。
頑張って 読み解いてみます。

本当に、ありがとうございました。



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