28. Skeletal Animation (based on the MD5 format)
1
rating
10480
views
Here is the second part of the lesson, animating the MD5 model. The MD5 format uses a skeletal system to do the animation (more specifically, joints), so we will be learning how to loop through the animation stored in the "md5anim" file and apply it to our model. Skeletal systems are nice because they take up less memory than storing keyframe animations, where its basically a new model for every frame of animation. The joint system (which we will be using) just stores the orientation and position of the bones at each frame. Bone systems are also cool when you want to do "rag-doll" physics! After this lesson, you should be able to load in skeletal animations from any model, and even be able to create your own animations or a rag-doll effect during runtime!
27. Loading An MD5 Model
0
rating
8197
views
MD5 models are split into two separate files; "md5mesh" and "md5anim". This is convenient since I was planning on splitting this lesson into two lessons anyway, one for loading the MD5 model, and one for animation. This lesson being the first of two, will teach you how to load the MD5 model from the "md5mesh" file and set up the vertex positions based on the layout of the joints. The next lesson will teach you how to load the animation for the model from the "md5anim" file and animate your model. In this lesson, we will cover the following:
- The "md5mesh" format
- A breif introduction to quaternions
- How "bones" work in skinned models
(You may be wondering why it's taken me so long to complete this lesson. The reason is because i'm so bad with creating 3D models, and I would like to have a decent looking model for this lesson, since we will be animating it and fun things like that ;)
26. Bounding Volume Collision Detection
0
rating
6899
views
We will learn how to detect a collision between two objects in this lesson. We will be learning how to use their bounding volumes to do the collision detection instead of the object themselves, as it is much more simpler, and much faster to compute than triangle to triangle collision detection.
In this lesson, we will build a pyramid of bottles or something, and "throw" a bottle when the mouse button is clicked. If the "thrown" bottle collides with one or more of the bottles in the pyramid, then they both just dissapear and the score is increased. I know, I know, not very realistic physics, but i've decided to skip all that extra stuff so we can just focus plainly on the actual collision detection methods.
Braynzar Soft Tutorials [Collection]
0
rating
8488
views
This is a collection of Braynzar Soft Tutorial collections
25. Bounding Volumes
0
rating
5175
views
Think if your scene has a couple thousand models in it, and each model has a couple thousand triangles. Now if you were to pick them using just the picking method from the lesson above, it might take 5 seconds just to finish that picking operation. 5 seconds on a single frame is just not acceptable, and this is where bounding volumes come into play.
We will be learning how to create and use a Bounding Box and a Bounding Sphere. The bounding box is usually more accurate than the bounding sphere, but it also takes a little more time to do the picking operation than the sphere takes.
We will use our High Resolution timer from an ealier lesson to time exactly how long the operation for each picking method takes.
24. Picking
0
rating
5588
views
This lesson builds directly off the last lesson, normal mapping.
Here we will learn how to turn the 2d screen position (in pixels) that the mouse cursor is at, into a 3d ray in world space. We can then check to see if that ray intersects with any of the objects on the screen. (The objects in this case are "supposed" to be bottles, but i've been recently told they look like urns...).
If the ray intersects with any of the bottles in this lesson, we will display the distance from the camera to that bottle, increase the score, and remove that bottle from being displayed any longer and from being checked if the ray picks it again.
23. Normal Mapping (Bump Mapping)
2
rating
11248
views
In this lesson, we will learn how to give a flat textured surface the appearance of depth. This technique is called normal mapping. We will actually be building directly from the last lesson, loading obj models. But instead of using the model from the last lesson (because I suck at modeling...), we will be using a more simple model which will be the ground, textured with grass.
The image to the left shows you the end result using normal mapping (left) compared to no normal mapping (right).
22. Loading Static 3D Models (.obj Format)
2
rating
12470
views
In this lesson we will learn how to load a static 3d model from an .obj file. .obj files are not usually what you will want to use in a game, as they don't contain animation, and they are in ascii format, so a bit larger than other formats such as .3ds, but they are a good starting point for learning how to load models.
This lesson will build directly off the last lesson, spotlights.
The upcoming lessons (Specular lighting, and Normal mapping. Probably others too) will use the code from this lesson as the starting point.
BTW, please go easy on me when making fun of my poor modeling skills...
21. Spotlights
0
rating
7652
views
Here we will learn how to impliment a spotlight, which we will use as a flashlight. Since spotlights are basically just point lights with a direction, we are able to build directly off code from the pointlight. This lesson will build directly off of lesson 18, first person camera. I figured a good example of spotlights would be a flashlight, so thats whats happening here!
20. Cube Mapping (Skybox)
2
rating
22037
views
In this lesson we will learn how to use a 3D texture to texture a sphere. This technique is called cube mapping, and we will learn how to make a skybox using this technique.
19. First Person Camera
0
rating
14821
views
Here we will look at how to impliment a simple first person vector camera, to make it look like you are walking around. We will also learn how to go fullscreen, and exit without getting errors.
18. Direct Input
1
rating
9536
views
We will learn how to take input from a user, through the keyboard, mouse, or even a joystick in this lesson. We will be learning how to impliment Direct Input in our games!
17. Point Lights
1
rating
8344
views
This lesson will build right off the last lesson. We will learn how to make a simple point light, which takes the position of the first cube and rotates around the second (center) cube.
16. Simple Lighting
2
rating
11506
views
There are four types of light, and three kinds of light sources. We will go over them in this lesson, and learn how to impliment simple lighting, using a "Directional" Light source. We will cover the other two types of light sources and specular lighting in a later lesson.
15. High Resolution Timer
2
rating
5790
views
In this lesson, we will learn how to make a high resolution timer in three functions, which we can use to make sure the speed of every moving thing in our scene is updated based on time. This means that no matter what our frames per second are, an object moving in our scene will cover exactly the same distance in one second, whether the fps is 3, 30, or 300, as the distance the object covers or how much it spins will be based on time, and not fps like we have been doing. I waited to have a font lesson before I did this one so we can display the fps, as thats always a nice thing to know when developing games.
14. Simple Font
0
rating
9454
views
I waited for this lesson until we have covered some things that need to be implimented in this lesson, such as blending and textures.
As you may or may not know already, font in direct3d 11 is a pain in the ass to say the least. I don't know what the developers were thinking exactly, but I believe they have taken out the ID3DXFont interface from direct3d in order to direct people to two new API's, Direct2D and DirectWrite. However, the worst part about this is that Direct2D is not "interopable" with D3D 11, meaning you can't use them together directly... (A big thumbs down for microsoft).
So anyway, enough complaining. There are a couple ways we can impliment font into D3D 11, and the one we will be learning about uses the two new API's microsoft wants us to use, because in fact, they could be very usefull and pretty cool, not to mention flexible (except for the fact we can't use them directly with a D3D 11 device...). Since we are not able to use them directly with a D3D 11, we will need to use them with a D3D 10.1 device, and swap between the two devices when rendering.
13. Pixel Clipping
0
rating
6327
views
This is a very short lesson on how to quickly and efficiently clip pixels from being drawn to the screen.
12. Blending
0
rating
13240
views
Here we will learn about a technique called "blending"! This will give us the ability to render "transparent" primitives.
This lesson builds off the last lesson "Textures". We will add blending to our lesson, so the two boxes will look like they are made of stained glass or something.
We will also learn about a problem when rendering transparent objects, where they are transparent to each other sometimes, and sometimes they are not transparent to each other at all.
11. Textures
2
rating
16138
views
Here's another pretty short lesson on how to load a texture from a file and map it onto geometry!
10. Render States
2
rating
11996
views
Here is a nice little lesson which will teach you about Direct3D's render states.