Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 03 Jul 2006
Offline Last Active Today, 04:05 AM

#5142534 Help with Plasticity formula.

Posted by on 27 March 2014 - 05:30 AM

That arrow is usually used when describing algorithms and represents an assignment, an update of the variable the arrow points to. ||Sp - I||2 is the spectral norm of the matrix Sp - I. The spectral norm of a matrix A is the square root of the maximum eigenvalue of AHA where AH is the conjugate transpose of A (the transpose if the matrix is real).

#5140930 Quaternions: convert between Left-Right handed without using Euler

Posted by on 21 March 2014 - 06:09 AM

Let M be the (3x3) transformation matrix between the Blender coordinate system and the Unity one. Then the axis is simply transformed using M and the angle should change sign (since M does not preserve the orientation). You thus have to negate the imaginary part and then apply M to it.



The transformation between Blender and Unity coordinate systems is, if I remember correctly, (x, y, z) -> (y, z, -x). If I thus have a quaternion q0 + q1*i + q2*j + q3*k, the corresponding quaternion should be q0 - q2*i - q3*j +q1*k.

#5140688 Inverse Proportion and Zero

Posted by on 20 March 2014 - 09:57 AM

I'm not sure I understood your post. Anyway, what about (10 - x)*25.5 ? It is equal to 255 when x is zero and equal to 0 when x is 10.

#5134720 This is what atan2() does if given two Vector2D points on 2D plane?

Posted by on 26 February 2014 - 05:07 AM

There is no need to convert these vectors to angles to compute a rotation matrix. All you need to compute a rotation matrix in 2D are the cosine and sine of the angle and you already have them encoded in the direction of the difference vector. You indeed simply have to normalize the difference vector:


(cos(angle), sin(angle) ) = normalize(P2 - P1).


If you think you have to compute the angle to compare them between different fingers positions, then it is not true again. If P3 and P4 are different positions of your fingers, then you can compute the cosine and sine of the rotation angle between the two vectors by simply using a complex division. If do not know complex numbers I suggest to learn about them, but you can implement the division using the following formula:


(a, b) / (c, d) = ( a*c + b*d, b*c - a*d ) / (c*c + d*d).

#5125823 .obj file loader

Posted by on 23 January 2014 - 03:30 AM

Is there any reason you are using (*model).GetIndices() instead of model->GetIndices() ? 

#5125637 Barycentric coordinates of circumcenter of tetrahedron

Posted by on 22 January 2014 - 08:10 AM

The steps in the derivation are very similar to the steps in the triangle case and you should get:


Dot(B-A,B-A)*s + Dot(B-A,C-A)*t + Dot(B-A,D-A)*u = (1/2)*Dot(B-A,B-A)
Dot(C-A,B-A)*s + Dot(C-A,C-A)*t + Dot(C-A,D-A)*u = (1/2)*Dot(C-A,C-A)

Dot(D-A,B-A)*s + Dot(D-A,C-A)*t + Dot(D-A,D-A)*u = (1/2)*Dot(D-A,D-A)


which you can then solve using Cramer's rule (or something else). 

#5125616 Mathematics for 3D programming - Exercises

Posted by on 22 January 2014 - 05:01 AM

Making a simple 3D game/tech demo or a ray tracer or .. is IMHO probably one of the best way to exercise those math skills.

#5123310 Need a design advice on a Mesh Class

Posted by on 13 January 2014 - 10:53 AM

If Context::CreateBuffer calls Mesh::CreateBuffer you have an infinite loop. This is in my opinion the main reason to avoid doing that.

#5123269 shadows in 2d

Posted by on 13 January 2014 - 07:18 AM

I guess it depends on the type of game you are working on (i.e. where is the camera and the relative positions of lights and objects) but it can be done. For example, this article on gamedev explains a technique to implement soft shadows in 2D. 

#5117517 Genetic algorithm in a game

Posted by on 17 December 2013 - 02:44 AM

You may find this paper interesting. The paper describes an experiment in which player weapons were procedurally generated at the beginning of each match. The players were able to choose between their current weapons and new procedurally generated one and their choices and performance were used to evolve the weapon generation algorithm.

#5115643 OpenGl as a blitter

Posted by on 09 December 2013 - 07:43 AM

The modern way of drawing stuffs using the GPU is to simply draw a set of textured quads. There is no reason to flush after each quad (it would be extremely slow) and it is usually easier to simply draw everything each frame. There are several ways to draw a quad in OpenGL: you can draw two triangles, you can use the GL_QUADS constant (in legacy versions of OpenGL), you can use point sprites, you can use a geometry shader, you can use instancing, etc. In a simple 2D game, the method used is probably not so important.

P.S. If you really want to learn about OpenGL, I suggest to start using the modern APIs. The programmable pipeline is now common in the mobile and Web world too.

#5114300 Using one instance of Behaviour Tree for many agents?

Posted by on 04 December 2013 - 07:07 AM

I think there was a video tutorial on AiGameDev.com discussing these topics. Probably this video.

#5114262 Quaternions and matrices

Posted by on 04 December 2013 - 03:14 AM

It is possible to send a quaternion to a shader and use it directly. This may be useful for skinning or to reduce memory requirements. For example you can see this presentation by Crytek as an example of quaternion use in shaders.

#5110747 question about quadratic bezier patch

Posted by on 20 November 2013 - 07:12 AM

It is a point on a curve, but that curve does not belongs to the surface.. The blue curve in cadjunkie post is not contained in the surface. It is the set of the middle control points of the isoparametric curves.

#5110713 question about quadratic bezier patch

Posted by on 20 November 2013 - 03:02 AM

Drawing and intuition are often useful, but sometimes they are an obstacle in seeing the truth. I suggest to write the general equation of a surface Bézier patch and follows the advices we have already given. When you fix one of the two coordinates, the corresponding Bernstein polynomials becomes constants and you can rewrite the terms of the sums to get the equation of a Bézier curve. The control points of this new curve are simply obtained evaluating the curves I have written in my last post. C(P(1,0), P(1,1), P(1,2), 0.7) is not contained in the surface.