0

ゲームで魚眼のカリングを行いたいと考えています。したがって、描画するためにリストされている各オブジェクトについて、カメラの円錐台にあるかどうかを確認したいと思います。私はこのようにします:

D3DXVECTOR3 cameraPos;
D3DXVECTOR3 pos;
D3DXVECTOR3 cameraVector;//where camera is looking( camera->eye() - camera->pos() )
D3DXVECTOR3 direction = pos - cameraPos;
normalize( &direction );
normalize( &cameraVector );
float dot = cameraVector.x * direction.x + cameraVector.y * direction.y + cameraVector.z * direction.z;

//float cosvalue = cos( dot ); // i was calculatin cos of cos :)
float cosvalue = dot;
float angle = acos (cosvalue) * 180.0f / PI;

if( angle < 45.0f ) draw();

しかし、奇妙な結果が得られます。たとえば、( angle < 50.0f) はどこにでも描画しますが、必要な場所には描画しないため、魚眼は空です。!(angle < 50.0f) 欲しいものを描きます。しかし、(角度<40)は何も描画しません:(それが私の角度計算なのか、フロートの問題なのかはわかりません:(誰か?

4

1 に答える 1