• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
JohnnyCode

Projection matrix confusion

6 posts in this topic

Hello.

 

I have been studying the concept of projection matrix and I found something missing from it.

The projection matrix is supposed to move points into projection space which is enclosed in -1,1 centered at 0,0,0.

The column matrix of projection looks like this

S , 0 , 0 , 0

0 , S , 0 , 0

0 , 0 , Q , 1

0 , 0 , -Zn*Q , 0

 

It is supposed to transform points from large space of arbitrary world size into -1,1 space, yet, S is a constant and can be precisely 1 for certain angle. It seems that wheather transponed or not, this matrix will not touch the values of x and y, but the x and y are promissed to be in scale of -1,1. How come? This matrix will not translate large points's x and y into -1 , 1. Does projection matrix realy move points into projection space, or additional computaion on vector x and y is neccesary to have them -1,1 spaced? Thanks for clarification.

0

Share this post


Link to post
Share on other sites
You cannot use a matrix to project onto a box like that.
A projection matrix projects onto a linear subspace e.g. a plane.

edit: You should probably ignore this answer ... Edited by Inferiarum
0

Share this post


Link to post
Share on other sites

The matrix itself does not transform the vertices into the unit cube. That happens at the perspective division stage when the W-component is normalized.

 

The element -Zn*Q at (4,3) will copy and scale the Z-component of the vertex into the W-component. When the W-component is normalized, the X, Y and Z-coordinates are effectively divided by -Zn*Q*Z. That's where the perspective effect and your missing scaling comes from.

Edited by Brother Bob
2

Share this post


Link to post
Share on other sites

Thanks.

 

But as it comes to my understanding, the operation (x/(z*w),y/(z*w),w) provides perspective "transformation". I wrote "transformation" because it seems that this operation cannot be written in a matrix. Does rasterizer read every vertex for its z value to provide upper given result?

 

(x,y,z,w) to (x/(z*w),y/(z*w),w).

 

Is there no way to put this last operation into a matrix? Even by some gruesome aditions constants? Orthogonal projection simply ommits z komponent, and just to get pespective deformation I need to do nonlinear computations? I thought that verticies are transformed all by the same final transformation up into screen 2d space, is it really not so?

0

Share this post


Link to post
Share on other sites

Thanks.

 

But as it comes to my understanding, the operation (x/(z*w),y/(z*w),w) provides perspective "transformation". I wrote "transformation" because it seems that this operation cannot be written in a matrix. Does rasterizer read every vertex for its z value to provide upper given result?

 

(x,y,z,w) to (x/(z*w),y/(z*w),w).

Read up on "perspective correct interpolation" to see how this non-linearity interacts with rasterization.

 

Is there no way to put this last operation into a matrix? Even by some gruesome aditions constants?

A matrix multiplication is a linear operation; the division is a non-linear operation. In other words: no, you cannot do the division with a matrix.

 

Orthogonal projection simply ommits z komponent, and just to get pespective deformation I need to do nonlinear computations? I thought that verticies are transformed all by the same final transformation up into screen 2d space, is it really not so?

What do you mean, that some vertices are transformed differently than others? Every vertex, no matter what transformations or types of projection you have, all go through the same set of operations.

1

Share this post


Link to post
Share on other sites

What do you mean, that some vertices are transformed differently than others? Every vertex, no matter what transformations or types of projection you have, all go through the same set of operations.

I ment that with projection effect, you cannot tranform the vertexes all by the same transformation, thanks to the /w*z operation, thus every vertex is transformed by a different transformation. If you use orthogonal projection,  every vertex is proccesed by the same common transformation to the final clip result.

0

Share this post


Link to post
Share on other sites

I don't see how the division treats vertices differently. All vertices are multiplied by the matrix, and all vertices have their components normalized by their W-component. The fact that the perspective happens to have a non-linear transformation changes nothing; the non-linear transformation is the same for all vertices, and if you have a projection matrix without perspective, then the non-linear function simplifies to a linear function.

 

The transformation is just a function y=f(x), where x and y are vectors and f is the transforming function. Without perspective, the function is linear and can be implemented as a matrix multiplication. With perspective, the function is non-linear because it requires a division, and thus cannot be implemented as a pure matrix multiplication. But in the end, the function f is the same for all vertices.

Edited by Brother Bob
1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0