Jump to content

  • Log In with Google      Sign In   
  • Create Account

Awesome job so far everyone! Please give us your feedback on how our article efforts are going. We still need more finished articles for our May contest theme: Remake the Classics

dpadam450

Member Since 18 Nov 2005
Offline Last Active Yesterday, 07:34 PM
***--

#4963338 Cell Shading techniques to consider.

Posted by dpadam450 on 26 July 2012 - 09:55 AM

For direct cell shading control use a 1D texture of all the tones you want. Since dot product is in range 0 to 1, use that as a 1D UV coord into the texture. You can then at any time change from 2 tones to 4,8....and so on.

For outlines it depends how specific you want to outline. There is a case where say a camera is in front of you and you have your hand over your chest. You either want just the silhouette of the entire body, you want to draw outlines around the hand. (The hand is inside the silhoutte of the chest/body).

For just silhouette, draw your model 2x, once with GL_LINES and changing the GL_LINE_WIDTH bigger depending on your outline thickness.
For the second case of all outlines, just take the normal relative to the eye/screen. As it approaches 0, that means the normal is starting to point away from you.
if( dot(normal, vec3(0,0,1) < VALUE)
{
gl_FragColor = black;
}
Where value would be between 0 and maybe .3 depeding on how thick you want it to be.


#4961951 Lighting and glMultMatrixf problem

Posted by dpadam450 on 22 July 2012 - 10:39 AM

Thats because you have the light transformed exactly how your model is. Say your model has normals and lets treat the light as a normal as well.

If you rotate your model (and its normals) then you are rotating the light normal as well. Only call glLightfv() after you have applied the camera matrix only.
Identity()
cameramatrix()
glLight()

Identity()
ObjectMatrix()
Draw()


#4961868 Want to rewrite the pixel buffer

Posted by dpadam450 on 21 July 2012 - 11:19 PM

Dont do that. glRead and glDraw are slow.

Are you just fading to red? Draw a red quad and change the alpha. You can always use a texture with varying red/blood instead of just using pure red.

You have to call glRasterPos and glLoadIdentity to DrawPixels


#4961351 Fill distance with quads

Posted by dpadam450 on 20 July 2012 - 10:02 AM

Simple way without using a line drawing algorithm like Bresenham:

Create a 2D vector between start and end brush.
Find the length in pixels of that line using pythagorean theorem.
float timeStep = 1.0/length in pixels
float time = 0;
for(int i = 0; i < length in pixels; i++)
{
Vec2 fillPos = start +  time*brushvector;
time += timeStep;
}

When time = 1,  the fill pos is the endpoint
When time = .5, the fill pos is halfway to the endpoint


#4960952 Fill distance with quads

Posted by dpadam450 on 19 July 2012 - 08:46 AM

I cant't know where user will be drawing

Based on your drawing you are trying to fill the points between the last brush position and the current. So you know where the user is drawing.

The only way to fix this is to draw a brush for each pixel in between the circles. If you use a distance bigger than that you won't get a brush stroke, you will get more of a caterpillar looking brush, like the medium drawing you posted.


#4960613 Easy OpenGL Directional Lighting Question

Posted by dpadam450 on 18 July 2012 - 01:22 PM

So what I would suggest again, is instead of binding the shadow texture, Bind an image of a tree or anything and see if you can see any of the image at all noticeable.

The Shadow Mapping part works great at the bottom, but the top part seems to be screwing up somehow.

So you have shadows but not lighting? Post a pic.

You mentioned you have a 0 for the w coordinate but you are subtracting light position from world position as if it is a point light.


#4960588 Easy OpenGL Directional Lighting Question

Posted by dpadam450 on 18 July 2012 - 12:27 PM

So you are most likely doing it wrong because shadow mapping does not require a vector to the sun at all, and will have nothing to do with normalizing it either.

When learning shadow mapping, try projecting an image texture instead of a depth buffer, this way you can get the math part down and then just replace the image with a depth buffer, because sometimes you will user a depth buffer that is not what you thought it was.

I would post your shader or the shadow portion of it.


#4960491 Fill distance with quads

Posted by dpadam450 on 18 July 2012 - 08:47 AM

So I calculate distance between previous point and current point, and if its bigger than something I need to add more quads to that distance automatically.

Uh.....call your draw function for the space in between each brush...

You know how to draw quads. You know how to draw multiple quads. It sounds like you can draw a few more....


#4960319 Easy OpenGL Directional Lighting Question

Posted by dpadam450 on 17 July 2012 - 09:53 PM

Wouldn't to the west and up (as per my prior description) be (-1,0,1)

yes

Assuming that for whatever reason I had translated to some arbitrary point, making it the center (say, [x, y, z]), the resulting light would require the light direction to be (x -(-1), y, z - 1) => (x + 1, y, z -1), correct?

A light with w = 0, means it is directional and not effected by translation basically 0*translation is what the math comes out to be. If you want a positional light such as a lamp post then yea something like that.

I'm pretty sure the lights position is normalized if you use GL without shaders. The vector 1,0,1 is bigger than 1,0,0. If you don't know the Pythagorean theorem then thats what it is for.


#4959862 Easy OpenGL Directional Lighting Question

Posted by dpadam450 on 16 July 2012 - 10:23 PM

The direction in regards to lights is the direction pointing to the light. Not the direction the rays are coming.

Unless you have a modified coordinate system, openGL y-axis is up.


#4958822 Detect camera inside wall

Posted by dpadam450 on 13 July 2012 - 09:45 AM

This is a physics problem. You don't need to test every triangle but you can generalize things like say a statue as a box.


#4958052 Seriously don't understand WHY my framebuffer isn't rendering as a te...

Posted by dpadam450 on 11 July 2012 - 09:06 AM

Only thing I saw different from my code was
glFramebufferTexture vs glFramebufferTexture2D is what I use.


#4955103 Help please- Blender to Maya

Posted by dpadam450 on 02 July 2012 - 05:24 PM

Doesn't make a whole lot of sense that you need to learn Maya for an indie place. You can always export your models from blender and import into maya. Your question about learning it is pretty stupid though. What don't you specifically get? Edge loops? Uv-unwrap? Why can't you google those things for maya and read about it. You asked "I know blender so how do I learn maya." You learn maya, blender has nothing to do with it. Its not like someone here wrote a book called Blender to Maya, you just have to read about it and figure out hotkeys.


#4954716 Help! My directional light gets rotated along with my meshes :(

Posted by dpadam450 on 01 July 2012 - 06:39 PM

Oh duh, just re-read it:
float diffuse = max(dot(a_Normal, nSunVector), 0.0);  

You have to keep both vectors in the same space. Right now your sun vector is in the world, A_Normal is static/in object space. As the model rotates, you need to take a_normal and multiply it by the model matrix. This keeps it in world space.  If you put the view matrix in there as well then the normal is in view space relative to the viewer.

So multiply a_Normal by the model matrix and you are fine, or
multiply a_Normal by the modelviewmatrix and the sun by the view matrix to get them both into view space.


#4953678 Multitexturing and glBindTexture

Posted by dpadam450 on 28 June 2012 - 09:20 AM

We have told you several times, yes what you posted is safe, it is the same thing I posted in a different way. The textures always stay bound. In other words:
The textures always stay bound.

"Can I use them again by activating the texture and not re-binding the texture?"
Yes the textures always stay bound.




PARTNERS