look at this, just figure that the arrow is pointing left instead of right


Code: Select all
vec3 worldPos = mix(FarLowerLeft,FarUpperRight,UV.xy)*linearDepth;
Code: Select all
virtual void irr::scene::ICameraSceneNode::bindTargetAndRotation ( bool bound ) [pure virtual]
Code: Select all
setRotation()Code: Select all
setTarget() Code: Select all
getTargetAndRotationBinding() Code: Select all
CameraPosition = TheDevice->getSceneManager()->getActiveCamera()->getAbsolutePosition();
CameraTarget = TheDevice->getSceneManager()->getActiveCamera()->getTarget();
// COULD PERHAPS BE DONE IN SHADERS BUT ALSO TESTED HERE (for GUI output)..
CamDeltaX = CameraTarget.X - CameraPosition.X;
CamDeltaY = CameraTarget.Y - CameraPosition.Y;
CamDeltaZ = CameraTarget.Z - CameraPosition.Z;
CamRadXZ = sqrt( ( CamDeltaX * CamDeltaX) + ( CamDeltaZ * CamDeltaZ));
CamRadZY = sqrt( ( CamDeltaZ * CamDeltaZ) + ( CamDeltaY * CamDeltaY));
// This Theta remains correct in terms of how Irrlicht deals with the Quadrants (dark and unclear)..
// They are correct however..
CamThetaXZ = asin (CamDeltaX / CamRadXZ) / 0.0174532;
CamThetaZY = asin (CamDeltaZ / CamRadZY) / 0.0174532;
// How The Thetas (as orthographically viewed on the XZ and ZY Planes) are "Fixed" depends on a few decisions..
if (CamDeltaX < 0.0 && CamDeltaZ > 0.0 ) {CamThetaXZ = 360.0 + CamThetaXZ;}
if (CamDeltaX > 0.0 && CamDeltaZ < 0.0 ) {CamThetaXZ = 180.0 - CamThetaXZ;}
if (CamDeltaX < 0.0 && CamDeltaZ < 0.0 ) {CamThetaXZ = 180.0 - CamThetaXZ;}
if (CamDeltaY < 0.0 && CamDeltaZ > 0.0 ) {CamThetaZY = 180.0 - CamThetaZY;}
if (CamDeltaY > 0.0 && CamDeltaZ < 0.0 ) {CamThetaZY = 360.0 + CamThetaZY;}
if (CamDeltaY < 0.0 && CamDeltaZ < 0.0 ) {CamThetaZY = 180.0 - CamThetaZY;}
CamTargVectorX = 1.0 * sin (CamThetaXZ * 0.0174532);
CamTargVectorY = 1.0 * cos (CamThetaZY * 0.0174532);
CamTargVectorZ = 1.0 * cos (CamThetaXZ * 0.0174532);
// At the end of the day this should always be 1.0
TargVectorLenTest = sqrt ((CamTargVectorX * CamTargVectorX) + ( CamTargVectorY * CamTargVectorY) + (CamTargVectorZ * CamTargVectorZ));
// Normalise the Vector..
CamTargVectorNORMEDX = CamTargVectorX;
CamTargVectorNORMEDY = CamTargVectorY;
CamTargVectorNORMEDZ = CamTargVectorZ;
CamTargVectorNORMEDX /= TargVectorLenTest;
CamTargVectorNORMEDY /= TargVectorLenTest;
CamTargVectorNORMEDZ /= TargVectorLenTest;
TargVectorLenTest = sqrt ((CamTargVectorNORMEDX * CamTargVectorNORMEDX)
+ ( CamTargVectorNORMEDY * CamTargVectorNORMEDY)
+ (CamTargVectorNORMEDZ * CamTargVectorNORMEDZ));


