Path: chuka.playstation.co.uk!news1.scei.co.jp!usenet From: "Yuu" Newsgroups: playstation.ny.program.questions Subject: =?iso-2022-jp?B?UmU6IFRNRBskQiVVJSkhPCVeJUMlSCRLJEQkJCRGGyhC?= Date: Fri, 6 Feb 1998 21:24:56 +0900 Organization: PlayStation Net Yarouze Lines: 36 Message-ID: <6bevqt$osi@news1.scei.co.jp> References: <34D355B4.7E30@ka2.so-net.or.jp> <6b0rhj$8bf@news1.scei.co.jp> <34D5BEC7.6118@ka2.so-net.or.jp> <34d743f8pb171@base.minoru.isl.intec.co.jp> NNTP-Posting-Host: 202.217.99.51 Mime-Version: 1.0 Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit X-Newsreader: Microsoft Outlook Express 4.71.1712.3 X-MimeOLE: Produced By Microsoft MimeOLE V4.71.1712.3 >>略 >> となるとあとは3D→2Dの座標を直接得る方法を >>調べるわけですけど・・・。どんな方法がベストでしょうか?    MOSSADAPE > >3D に 2D の効果をかけようとする(大砲の煙硝を表現するとか)と、 >こういう問題がでるんですよね。 >ApplyMatrix() でローカル・スクリーンマトリックスを作用させるのが >正道なんだと思いますが、うまくいくかな? >--- ang02668のYuuです。 3D→2D変換は、ApplyMatrixとその他若干の操作でできます。と書くとソニーのサ ンプルの解説になってしましますが。コード載せときます。 ちなみに-G0オプションを付けて下さい。 *viが入力、*voが出力ベクトルです。 VECTOR vt; //LW PushMatrix(); ApplyMatrixLV(&GsWSMATRIX,vi,&vt); vt.vx+=GsWSMATRIX.t[0]; vt.vy+=GsWSMATRIX.t[1]; vt.vz+=GsWSMATRIX.t[2]; PopMatrix(); if(vt.vz < 300/2){ //適当な近クリップ return 0; } //WS vo->vx = vt.vx*projection / vt.vz; vo->vy = vt.vy*projection / vt.vz; vo->vz = vt.vz; //これはどうでもいいな・・・ 以上です。 Yuu(seryu@ba.mbn.or.jp)