Java-Gaming.org Java4K winners: [ by our judges | by the community ]         
Featured games (67)
games approved by the League of Dukes
Games in Showcase (∞)
games submitted by our members



News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  Print  
  Perspective calculation  (Read 994 times)
0 Members and 2 Guests are viewing this topic.
Offline DavidYazel

Sr. Member
**

Posts: 265


Java games rock!


« on: 2003-08-03 00:16:22 »


I am not using GLU for perspective calculation because I need to do my frustum culling with the exact matrix that we use to render.  But I am doing something wrong as it is slightly squishing my perspective from top to bottom.

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
    public void perspective(float fovx, float aspect, float zNear, float zFar)
    {

        float sine, cotangent, deltaZ;
        float radians = fovx / 2 * (float)Math.PI / 180;

        deltaZ = zNear - zFar;
        sine = (float)Math.sin(radians);
        if ((deltaZ == 0) || (sine == 0) || (aspect == 0)) {
            return;
        }
        cotangent = (float)Math.cos(radians) / sine;

        setZero();
        matrix.m00 = cotangent / aspect;
        matrix.m11 = cotangent;
        matrix.m22 = (zFar + zNear) / deltaZ;
        matrix.m23 = -1;
        matrix.m32 = 2 * zNear * zFar / deltaZ;

           }


Any transformation wizards out there that could point out my mistake?

David Yazel
Xith3D Project Founder
http://xith3d.dev.java.net

It may look complicated, but in the end it is just a bunch of triangles
Offline Markus_Persson

JGO Kernel
*****

Posts: 2092
Medals: 10


Mojang Specifications


« Reply #1 on: 2003-08-03 04:48:58 »

Wild guess; your aspect is inversed? =)

Play Minecraft!
Offline NVaidya

Jr. Member
**

Posts: 95


Java games rock!


« Reply #2 on: 2003-08-03 05:23:53 »


A fleeting look at my own stuff shows that
if you replace fovX with fovY and treat
aspect ratio as width / height, then your equations
look alright.

Actually, you could just compute w and h and call
glFrustum(...).

HTH

Gravity Sucks !
Games published by our own members! Go get 'em!
Offline Orangy Tang

JGO Kernel
*****

Posts: 2960
Medals: 37


Monkey for a head


« Reply #3 on: 2003-08-04 02:00:50 »

Quote

I am not using GLU for perspective calculation because I need to do my frustum culling with the exact matrix that we use to render.


GLU for the most part is simply a set of convinience methods and wrappers that operate on GL. Its perfectly ok to use something like gluPerspective, since it will create the same GL state as if you'd done it manually. glGet will return the same matricies regardless of how you set it up.

You could use gluPerspective with the same numbers and compare the results to see if you're doing it correctly. I'd guess your aspect is wrong. Often an aspect of 1 looks more correct than a properly calculated one..

[ TriangularPixels.com - Play Growth Spurt, Rescue Squad and Snowman Village ] [ Rebirth - game resource library ]
Pages: [1]
  Print  
 
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Page created in 0.085 seconds with 20 queries.