ページ 1 / 1
3次元から2次元へ
Posted: 2012年7月17日(火) 23:00
by ヒューガ

DXライブラリです。
上の図で丸は3次元物体、四角は画面上を走って(?)丸と重なると「lockon」と出ます。
このようにするにはどうしたらいいでしょう?
Re: 3次元から2次元へ
Posted: 2012年7月17日(火) 23:51
by softya(ソフト屋)
前のトピックを放置しないでくださいね。
「角度からベクトル • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=11040
>上の図で丸は3次元物体、四角は画面上を走って(?)丸と重なると「lockon」と出ます。
ConvWorldPosToScreenPos、ConvScreenPosToWorldPosで出来ると思います。
Re: 3次元から2次元へ
Posted: 2012年7月18日(水) 00:40
by ヒューガ
放っておいてごめんなさい。
上記の関数で成功しました。ありがとうございました。
Re: 3次元から2次元へ
Posted: 2012年7月18日(水) 00:44
by softya(ソフト屋)
ヒューガ さんが書きました:放っておいてごめんなさい。
上記の関数で成功しました。ありがとうございました。
どう使ったのかも書いてくださいね。
Re: 3次元から2次元へ
Posted: 2012年7月18日(水) 00:56
by ヒューガ
コード:
void container_calc(){
for(int i=0;i<ENEMY_MAX;i++){
if(container[i].xy.x>=20&&container[i].xy.x<=620&&container[i].xy.y>=20&&container[i].xy.y<=460){
if(container[i].f==0){
container[i].f=1;
}
}else{
container[i].f=0;
}
}
}
コード:
void container_graph(){
for(int i=0;i<CONTAINER_MAX;i++){
container[i].xy=ConvWorldPosToScreenPos(enemy[0].xyz);
if(container[i].f==1){
SetDrawBright(0,255,255);
DrawRotaGraphF(container[i].xy.x,container[i].xy.y,1,0,frame,TRUE);
SetDrawBright(255,255,255);
}
}
}
問題が見つかりました。
目標が自分の後ろでもコンテナが映ります。
どうやって目標が前にあるか後ろにあるか判別できるのでしょう?
Re: 3次元から2次元へ
Posted: 2012年7月18日(水) 10:32
by softya(ソフト屋)
CheckCameraViewClipでチェックできると思います。
あまりリファレンスを見てないようですが、リファレンスを見た方が良いですよ。
http://homepage2.nifty.com/natupaji/DxL ... nc_3d.html
Re: 3次元から2次元へ
Posted: 2012年7月18日(水) 16:42
by ヒューガ
コード:
void container_graph(){
for(int i=0;i<CONTAINER_MAX;i++){
container[i].xy=ConvWorldPosToScreenPos(enemy[i].xyz);
if((container[i].f==1)&&(CheckCameraViewClip(enemy[i].xyz)==TRUE)){
SetDrawBright(0,255,255);
DrawRotaGraphF(container[i].xy.x,container[i].xy.y,1,0,frame,TRUE);
SetDrawBright(255,255,255);
}
}
}
CheckCameraViewClipが識別子が定義されてませんとなるのですが
どうすればいいのでしょう?
Re: 3次元から2次元へ
Posted: 2012年7月18日(水) 16:47
by softya(ソフト屋)
最新のDXLIBでしょうか?
日々変化しているので最新じゃないと存在しない関数かも知れません。
Re: 3次元から2次元へ
Posted: 2012年7月18日(水) 16:55
by ヒューガ
さっき更新しました。ver3.08cです。
でも識別子が定義されないとでます・・・
Re: 3次元から2次元へ
Posted: 2012年7月18日(水) 17:00
by softya(ソフト屋)
あれ?確かにないですね。
DXLIB作者さんの勘違いか名前が変わったかですね。
ちと調べてみます。
Re: 3次元から2次元へ
Posted: 2012年7月18日(水) 17:11
by ヒューガ
お願いします・・・
Re: 3次元から2次元へ
Posted: 2012年7月18日(水) 17:14
by softya(ソフト屋)
どうやら関数が行方不明のようです。3.07bで追加されたはずなのですが。
これは、DXLIB作者さんの掲示板で問い合わせされた方が良さそうです。
代替えの方法としては
(1) カメラのビューマトリクスを得る。GetCameraViewMatrix
(2) カメラの前か後ろか判定したい物体の座標を、VTransform()でビュー変換します。
(3) ビュー変換されたz値がプラスならカメラの前にあるはずです。
Re: 3次元から2次元へ
Posted: 2012年7月19日(木) 04:42
by ヒューガ
いつの間にか怒られなくなりました。
しかし前と変わりません。
上のコードで大丈夫ですよね?・・・
Re: 3次元から2次元へ
Posted: 2012年7月19日(木) 05:14
by ヒューガ
TRUEじゃなくてFALSEでしたwww
Re: 3次元から2次元へ
Posted: 2012年7月19日(木) 12:33
by softya(ソフト屋)
ヒューガ さんが書きました:TRUEじゃなくてFALSEでしたwww
結局解決したのでしょうか?
Re: 3次元から2次元へ
Posted: 2012年7月23日(月) 22:02
by ヒューガ
解決しました。コードは上のやつです。