DirectX C# vol.1
■ このスレッドは過去ログ倉庫に格納されています
0717708
NGNG一応C++のサンプルを見ながら次のようにしてみました
Vector3 vPickRayDir;
Vector3 vPickRayOrig;
Matrix matProj;
Surface surface = this.D3DParam.device.GetBackBuffer( 0,0,BackBufferType.Mono );
SurfaceDescription m_d3sdBackBuffer = surface.Description;
matProj = this.D3DParam.device.GetTransform(TransformType.Projection);
Point pt = new Point(e.X,e.Y);
// Compute the vector of the pick ray in screen space
Vector3 v;
v.X = ( ( ( 2.0f * e.X ) / m_d3sdBackBuffer.Width ) - 1 ) / matProj.M11;
v.Y = ( ( ( 2.0f * e.Y ) / m_d3sdBackBuffer.Height ) - 1 ) / matProj.M22;
v.Z = 1.0f;
Matrix m/*matView*/;
m = this.D3DParam.device.GetTransform(TransformType.View);
m.Invert();
// Transform the screen space pick ray into 3D space
vPickRayDir.X = v.X*m.M11 + v.Y*m.M21 + v.Z*m.M31;
vPickRayDir.Y = v.X*m.M12 + v.Y*m.M22 + v.Z*m.M32;
vPickRayDir.Z = v.X*m.M13 + v.Y*m.M23 + v.Z*m.M33;
vPickRayOrig.X = m.M41;
vPickRayOrig.Y = m.M42;
vPickRayOrig.Z = m.M43;
これでクリックしたときのRayが取得できたとは思うのですが、
どうやって交点を求めたらよいのでしょうか?
教えてクンですいません。
自分でも頑張って考えていくつもりではあるのですが..
■ このスレッドは過去ログ倉庫に格納されています