• 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

Height of a 3D triangle

2 posts in this topic

Let's say I have two triangles in a 3D space

The triangles are, of course, made from 3 coordinates (each coordinate an X/Y/Z set)

First Triangle:

X1 = 0, Y1 = 0, Z1 = Dynamic

X2 = 1, Y2 = 0, Z2 = Dynamic

X3 = 1, Y3 = 1, Z3 = Dynamic

Second Triangle:

X1 = 0, Y1 = 0, Z1 = Dynamic

X2 = 1, Y2 = 1, Z2 = Dynamic

X3 = 1, Y3 = 0, Z3 = Dynamic


... So, basically, a square that's cut through the middle (and bends on that cut)


Each Z value for each is known, but varies from instance to instance. And they vary independently.


If I have a position (Say, X=0.13,Y=0.73)

How would I calculcate what the Z of the triangle will be at that position?

(I'm hoping for an equation or pseudocode that will calculate the value without using raytracing or any expensive functions like that)

Edited by mcmonkey

Share this post

Link to post
Share on other sites
If the two triangles always lie on the same plane then you can calculate the plane the triangles lay on.

The equation for a plane is
Ax + By + Cz + D = 0;
<A, B, C> is the normal of the plane and D is the closest distance of the plane to the origin divided by the length of the normal. To calculate a plane from a triangle.

// the A, B, and C of the plane
normal = cross(P2 - P1, P3 - P1)
d = -dot(P1, normal) // you can dot the normal with any of the points in the triangle, it will yield the same d

where cross() is the cross product, dot() is the product, and Pn is a point on the triangle

Then use the equation of the plane to solve for x, y, or z when you have the other two. For example, to solve for z
Ax + By + Cz + D = 0
Cz = -Ax - By - D
z = -(Ax + By + D) / C
This will find the point on the same plane the point can lie on the outside of the triangles, so you will have to make sure you point lies inside the triangle. If you need help with that I can post a method for that, I just don't want to crowd up this post if you already have a way to do that.

This actually is the basics of how a ray tracer works. Casting an individual ray is actually quite fast. Ray tracing entire images however is costly because there are many rays being cast per pixel. Some rays are used to calculate shadows, others reflections, and other such things and the scenes are usually fairly complex. You should be able to cast dozens of rays in a simpler scene and still maintain a responsive frame rate. So unless you find your game isn't running fast enough and you have identified your "ray casting" as the bottleneck, I wouldn't spend much time making sure it is fast. Edited by HappyCoder

Share this post

Link to post
Share on other sites

Two edges of a given triangle span the plane containing that triangle. So you could try looking at what you want to calculate as a linear combination of these basis vectors and solve it that way. Because of the particular X, Y components of your triangle vertices, this might actually be cheap: b(1,1) - b(1,0) + a(1,0) = (a,b). 


Another way is to compute the plane equation: Ax + By + Cz = D and then solve for z.


The (X, Y) you gave is in either of the spanned planes, but not on either triangle, since it has a large Y component. I'm not sure if that was intentional. 


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