Step by Step Skeletal Animation in C++ and OpenGL, Using COLLADA PART 1

Level: Beginner to Intermediate

Introduction: Hi I am waZim and welcome to my first tutorial(s) on Skeletal Animation. This series of tutorials consists of two parts.

1)     Reading and Understanding COLLADA. (high level overview of COLLADA documents)

2)     Actual Implementations in C++ using OpenGL, of what we learn in Part 1.

These two parts are further broken down into sub categories or parts which will be explained as we progress through the tutorials.

Who should read these tutorials?

This tutorial is written for those programmers (Not artists) who want to implement Skeletal Animations in General and Skeletal Animations using COLLADA in Specific, Using C++ and OpenGL, in their (Game) Engines. It is also helpful to programmers who want to learn how to load static 3D COLLADA models in their engines;

What we will and will not cover?

In this set of tutorials I will try to explain step by step how to read Geometry, Skeleton and Animation Data from COLLADA documents and how to implement and animate your characters using skeletal animations, in C++ and OpenGL. We will not be covering EVERY aspect of COLLADA; rather we will take some assumptions which will help us to understand the COLLADA document format easily.

We will also not discuss things like shaders and FX using COLLADA.

What you need to know, to get the Most out of these tutorials?

Any-one who wants to get the most benefit out of these tutorials should have solid knowledge of programming in general and C++ programming in particular. Advanced OpenGL programming is not required although it is a plus. You should know what a vector is and what a texture coordinate is, how geometry and animation is represented, what an XML format is and so on. For the rest, I hope you will learn everything you need here.

What you need to have, to learn and read through these tutorials?

You need a C++ compiler with OpenGL Support and working drivers for OpenGL.

Some COLLADA example documents. Which you can find on www.COLLADA.org , find model bank, or in downloads section of this website (www.wazim.com).

A good Text Editor like Notepad++

Background and Motivation:

Over the years when I first started graphics programming, I was already tired of writing geometry by hand and drawing everything vertex by vertex :). Then the time came when I saw some simple demos over the internet, reading Geometry data from ASCII files in OpenGL, like .OBJ file format etc.. After some time, I wanted to animate the models so I found MD2 Demos. When I started creating my own MD2 files, it was really hard to find a robust importer for MD2 files for my own engine. In the end, I decided to forget about all those formats and read Autodesk Maya (.ma) or Autodesk Studio Max (.max) files. But reading Geometry and animation data from those two files are not recommended by the authors of those two Authoring softwares. I don’t know much about Maya .mb or .ma files but I love Studio Max and .max files and yet they are unfortunately poorly documented. And even if you start to write an exporter for any of these files it’s really hard to port your models from Maya to Max or vice versa. There is always something missing when you import those files into other software.

The solution that I found was COLLADA. COLLADA documents are cross platform because they are stored in UTF-8 format using XML schema. I think you already know something about COLLADA that is why you are here! So let’s not waste any time and jump straight to the implementation. If you want to read more about COLLADA documents then go visit (www.COLLADA.org) and keep reading the COLLADA wiki and COLLADA forums.

So after I have found COLLADA the solution to my problems I have been working with COLLADA. There are many implementations of COLLADA which are too generic, for example the first thing I saw was the COLLADA DOM which is available on COLLADA.org. And you can write your own code on top of DOM to extract all the information from COLLADA document which is loaded in DOM and export it to your Custom Format. This is the easy way to go but still you need to understand the COLLADA format and then DOM has its own problems. You might find it very hard to get what you really need and what you don’t need. What I found annoying with DOM was that it can read Texture Coordinates with (s,t) two components while can’t read (s,t,p) type of Texture coordinates which are default to Studio Max COLLADA Exporter. So at the end I decided to write my own exporter and it’s really not that hard as it seems.

When I started reading about COLLADA I was unable to find a step by step tutorial, so the purpose of this tutorial is to give you the COLLADA document format in easy to learn chunks and C++ code to implement, with step by step explanation.

Part 1:

Reading and Understanding COLLADA documents

As we have discussed in the introduction part, this tutorial is split in to two parts, first one general introduction to COLLADA documents which is irrespective of any programming language. So if you want to skip this part and directly jump to the implementation part, it is quite possible that you will find it hard to understand what is going on. So it’s highly recommended, for those who know nothing or very little about COLLADA documents, to read this part before moving to the next part.

Enough Ranting :), let’s start working.

COLLADA documents

Before we dig into COLLADA documents I would like you to download the example file which we will be using through out the tutorial. It’s available in the COLLADA Model Bank and is also shipped with COLLADA DOM. It’s called “astroBoy_walk.dae” if you can’t find this file anywhere then its available in downloads section of this tutorial’s website, and you can find it there.

Like we discussed earlier (in case you read the intro part) COLLADA documents are stored in XML format. If you open astroBoy_walk.dae, which I will call example file from now on, in your favorite text editor, you can see a root node called “COLLADA” and if your text editor supports expanding or collapsing XML nodes (if you are using Notepad++ you can set the language type to XML from the “language” menu to get XML Editing enabled) then you can click on the (-) sign in front of <COLLADA> tag to Collapse it to one line, there you will see that the whole file is Collapsed to one line and that’s all the COLLADA document is about.

Figure 1: COLLADA document in short

Within this <COLLADA> node which is the root of this .dae or .xml file, you will find many other libraries which are used for storing different types of information like <library_geometries> is used to store geometry data and <library_lights> is used to store Lights in the scene. Refer to figure 1. See it’s not rocket science 🙂 and then within those libraries you will find the actual data. For example a geometry library will have <geometry> nodes and a lights library can have <light> nodes, which means those libraries are used to store more then one lights or geometries in your scene. Now let’s analyze all of those libraries one by one by increasing importance to the tutorial and our COLLADA exporter, in their corresponding sections.

First of all let’s make things easier for us. Just like I said in the beginning we will not be discussing COLLADA documents from all aspects; rather we will be taking some assumptions, to remove complexities.

List of Assumptions:

1)     Although COLLADA documents exported from Max or Maya Should be the same but in some cases they are different. We will only talk about COLLADA document exported from Studio Max, which of course does not mean that this tutorial might not help those who work in Maya. Because I am still positive that COLLADA documents exported from Maya should be the same, if we export them with backed matrices and triangulate options checked, from the COLLADA Exporter Options dialog. But I have never worked with Maya and don’t know where my exporter might fail.

2)     The COLLADA document must have at least and at most a mesh, which means, anything in the asset’s Max file, should be attached. So we must not have more then one <mesh> in the <library_geometries> in the COLLADA document. If we are able to read one <mesh> then we can read a 10000 too.

3)     Geometry in COLLADA should be triangulated, since that’s the better (If not best) option, we can provide OpenGL, so we let the triangulation work done by Max.

4)     Later in the implementations part we will assume our Model which was exported to COLLADA document has only One Texture file.

5)     Animations in COLLADA must have at least or at most one Skeleton, with only one Root Bone (Typical). And I think that’s why we are here, to implement skeletal animation.

6)     Animation exported to COLLADA must be baked in matrices, which essentially in some cases makes 1 channel of animation and in others 16 channels of animation (Now what is channel? It should be explained later).

7)     Animations can only be valid if the channel targets the “Transform” of the targeted entity, just to keep things clear and easy. When you will bake matrices, then you will have this automatically, so don’t need to worry about that.

8)     Animations can’t have nested animations.

9)     Only Skeletal Animation is supported (No baked animation yet).

10)  Every bone in the hierarchy must be attached as effecter on the skin. In other words, it must be added to the skin.

Keeping those assumptions in mind all the times, let’s start explaining different libraries in their related sections. You might also find it easy and handy to switch to Implementation part for each section immediately, when you read that section, before you finish reading the first part completely. The link to the implementation of each section is given at the end of that section.

Reading Geometry Data from COLLADA document

<library_geometries>

This is by far the most important library of all of the COLLADA libraries; if you have a character to animate we need its geometric data, which is provided in <library_geometries>.

This library contains <geometry> type nodes which contain separate geometries in the scene, keep in mind COLLADA is not just an asset file format rather you can put a complete scene and many scenes in them. Like we assumed we are only concerned with one <geometry> node which will have one <mesh> node. So if so far you have found that node lets analyze it.

<mesh>

Mesh is the node where we will find our geometry data. If you try to analyze the node you will see further at least 1 or 2 <source> nodes, which, depending on its type, gives information about Vertices, Normals and Texture Coordinates etc. In the example file (if you have downloaded from COLLADA.org, it will not have backed animation in it, so you have to import it in Max and then export it back with Backed Matrices and “triangulate” checkbox checked as shown in figure 2), you will find 3 <source> nodes and we are lucky that each source node is defined in the same way in COLLADA.

Figure 2: Export Options from COLLADAMax

<souce>

Remember all these XML nodes discussed so far have an ID associated with them which is used for locating the Node in COLLADA document when referred from any place. And Source Nodes are not any exception to that. Now <source> can have many children nodes but the most important ones are <float_array> or <NAME_array> and <technique_common>.

As the names suggests <float_array> contains floats which can be used for different purposes which are described by <technique_common> of that source and the difference between <float_array> and <NAME_array> is that, the former contains floats and the later contains strings.

Now we use the <technique_common>’s <accessor> child node to specify what kind of data is in those arrays <float_array>, <NAME_array> or any other type of many types of arrays. <accessor> node has a “source” attribute which says “What kind of “array” are we talking about?”. And a “count” attribute says how many elements we have in the “array”. The “stride” attribute says after how many values the next element starts.

I hope I am not talking Chinese but let’s explain it with a figure and example COLLADA source.

<source id="vertices_source" name="Vertices">

<float_array id="values" count="6"> 0.3 0.5 0.7 0.2 0.4 0.6 </float_array>

<technique_common>

<accessor source="#values" count="2" stride="3">

<param name="X" type="float"/>

<param name="Y" type="float"/>

<param name="Z" type="float"/>

</accessor>

</technique_common>

</source>
Figure 3: Structure of a source

As you can see in figure 3, there are float array’s (count=”6″) values which are 3 (x, y, z) float components of <accessor>’s (count=”2″) number of vertices. And when we have 3 <param> child nodes in <accessor> then we have 3 (x, y, z) components in each Vertex (3D vertex) (it can also be 3 Components of Normal, or 3 Components of Texture Coordinates). This information is very important since I can’t find it in COLLADA Specifications and it took me a lot of time to understand this concept (may be I am dumb) 🙁 So if you don’t understand, please read again.

In short, this source says, “I have 2 vertices with 3 components each, which are saved in <floats_array> as 6 float values”. Components are called “X”, “Y” and “Z”. And they are float type values. If we had a <source> which saves texture coordinates, then those components would be “S”, “T” and “P”.

So that’s all a source is about. Now as we discussed before there are 3 <source> nodes in the example COLLADA document. And as you might have guessed already, the other two sources are for Normals and Texture Coordinates, if you have exported your Model with other attributes then you will have more <source> nodes, like bitangents and tangets etc.

Now when we are able to decode <source>s, we still can’t just decide on the order of those sources which one is Vertices and which one is Normals etc. we have to read one other child of <mesh> which is called <vertices> to find the vertices source, although I really don’t understand the reason why they do this in COLLADA but for the sake of completeness you have to read this Node it has at least one Child node called <input> with a semantic attribute of “POSITIONS” value, which references the vertices <source> with another source name/id. And then you refer to this ID when ever you need the vertices source. If you don’t understand these sections then skip to the next section and you hopefully will understand.

<triangles>

Now as we have assumed we are only considering COLLADA documents triangulated so you will only see <triangles> types nodes as children of <mesh> otherwise you might see <polylist> etc nodes, which we are least concerned with.

This <triangles> node tells all the information we need to make a triangle out of those 3 sources (in this case) which we read earlier. A <triangles> node says how many triangles we have in this <triangles> node with a “count” attribute and also lists “material” attribute which is used to find the material from the <library_material> and that material is used to render the list of triangles from this <triangles> node. So you might see many triangle groups in one Mesh, which are separated by Materials. So we have to read all the <triangles> nodes.

To decode <triangles> nodes we have to read its children in which <input> and <p> are the most important. The number of <input> nodes says the number of attributes per vertex. And <p> has the indices of those attributes in their corresponding <source> nodes. Let’s see an example.

<mesh>

<source id="position"/>

<source id="normal"/>

<source id="textureCoords"/>

 

<vertices id="verts">

<input semantic="POSITION" source="#position"/>

</vertices>

<triangles count="2" material="Bricks">

<input semantic="VERTEX" source="#verts" offset="0"/>

<input semantic="NORMAL" source="#normal" offset="1"/>

<input semantic="TEXCOORD" source="#textureCoords" offset="2" set="1" />

<p>

0 0 1 3 2 1

0 0 2 1 3 2

</p>

</triangles>

</mesh>

Figure 4: Structure of a Triangle

As you can see from the above example <vertices> node is renaming the “position” source with “verts” and then defining the triangles vertices source with “verts” name. So this is why we need to read <vertices> node to find the real position <source> from the <source>s.

If you read the Children of <triangles> node you can see that it has 3 <input> nodes with values of “VERTEX” “NORMAL” and “TEXCOORD” for its semantic attribute. This essentially means that our triangles have 3 attributes per vertex, first Vertex Position, second Vertex Normal and third Vertex Texture Coordinate.

And how we know which one is first in the list of indices in <p>? We can see that

<input> node with semantic = “VERTEX” has offset = “0”,

<input> node with semantic = “NORMAL” has offset = “1” and

<input> node with semantic = “TEXCOORD” has offset = “2”.

So when ever we will read values from <p> for each triangle’s each vertex,

The first one will be the Index of “VERTEX” Position from the “positions” <source>,

The second one will be the index of the “NORMAL” from the “normal” <source> and

The third one is the index of “TEXCOORD” from the “textureCoords” <source>.

Now one thing I would like to make clear here is, that all these values we read from <p> are “indices” not actual values. And all the data for all the triangles are saved as indexed data to save space in case of repetitions of attributes data. To find the real data we have to refer to the corresponding <source>s and pick the corresponding data at that particular index.

Making Triangles is very easy now. All you have to do is keep on reading 3 * (Number of Input Nodes in <triangles>) values from <p> and read the corresponding attribute values from the corresponding <source>s. If we have only one attribute per vertex for any number of triangles then we will have the following <triangles> Node, with only one <input> child. In this case all you have to do to read the triangle is to keep on reading 3 values from <p> and read the corresponding vertex values from the corresponding “verts” source.

<triangles count="2" material="Bricks">

<input semantic="VERTEX" source="#verts" offset="0"/>

<p>

0 3 2

0 2 1

</p>

</triangles>

One thing we still need to know is the “material” attribute of a <triangles> node. This attribute references the material used from the “library_materials> which will we discuss later in the tutorial.

That’s all for the geometry data. If you understand this part correctly I hope you will have no problems going on from here onwards. Other wise go back and read again until you understand completely. Now if you directly want to jump to the implementation part (part 2) of the tutorial, you should be able to read and display static 3D objects in your engine. And if you want to render them with Materials and texture maps as well as animate them, you will have to keep on reading this part of the tutorial completely.

Click here to go to: Implementation section in Part 2 for this section of Part 1
Reading Texture filename from COLLADA document

As you know we took some assumptions in the beginning, one of which was only one texture file can be used in the COLLADA document. This will make finding the file name very easy.

All we have to do is to read the <library_images> and read the “id” attribute of the “Only” <image> node in it. Usually that will be the file name of the texture file used in COLLADA. But it might not be correct file name, and COLLADA might create that ID different then the file name. So, to correctly read the file name we must read the <init_from> child node of <image> node, which gives the whole path, with file name. For our export purposes I am only interested in the file name, not the whole path, so I will tokenize the full path and save the file name only.

Click here to go to: Implementation section in Part 2 for this section of Part 1
Reading Materials from COLLADA document

We discussed in the section “Reading Geometry Data from COLLADA document” that each triangle group is separated by a “material” and the Material ID is the value of the “material” attribute in <triangles> node. Now to find those materials with those IDs we have to read <library_materials>. In <library_materials> you will find <material> nodes with those IDs which were referenced from <triangles> nodes. But unfortunately those <material> nodes have only one type of child named <instance_effect> which has one attributes called “url”. All what its saying is that this specific <material> node is referring to an effect from the <library_effects>, which in turn defines the material completely.

So we take the value of this “url” attribute for this specific <material> and find it in <library_effects>, now unfortunately this library <library_effects> is the most complicated library of COLLADA as much as I know. It can get very complicated when shaders and what not is included in the COLLADA document. But since I promised to keep things clear and easy, we will only read the data that we desperately need for defining a material.

Once we have found the <effect> node with id of the value of the “url” attribute for any material, we have to find either <phong> or <blin> node in <profile_COMMON> child node of the <effects> node. <phong> or <blin> are usually inside <technique> child node of <profile_COMMON>. Once we have found either <phong> or <blin> keep looking for all the parameters of the Material we are looking for, like “ambient” “diffuse” “specular” “emission” “shininess” and “transparency” etc. what ever you need for the material to look good. Usually “diffuse” “shininess” and “transparency” is enough to create a good looking material.

How can we read the data from those nodes is very easy? Usually ambient, emission, diffuse and specular nodes has 4 float values, inside a <color> child node, which corresponds to “RGBA” components of that particular material’s property, while reflectivity and transparency etc have 1 float value.

<ambient>

<color>1.0 1.0 1.0 1.0</color>

</ambient>

 

<transparency>

<float>0.5</float>

</transparency>

If we have placed a texture map on the diffuse color of the material then <diffuse> will not have a <color> child, rather that texture image. But for the sake of ease we will not worry about this and assume the texture map is always applied on the <diffuse> component of the material, which means we will not be reading <diffuse> values from COLLADA. But we will be using a default value for diffuse inside our OpenGL implementation.

That’s all what we need for any static geometry. So if you are only interested in reading Static geometry from COLLADA you can stop reading this part and jump to the implementation. Other wise keep on reading for extracting animation data from COLLADA documents.

Click here to go to: Implementation section in Part 2 for this section of Part 1
Reading Skeleton from COLLADA document

We assumed that we will only read COLLADA documents with skeletal animations, and not those with backed animations, so we have to read the skeleton from the COLLADA document. By skeleton, I mean reading the Joints (Bones) information. We also have to read the hierarchy of the Joints. This will tell us, who are the child of whom! And who is the parent of a joint etc. In the following figure all these terminologies are explained. Remember that Bones and Joints are One and the same thing, they are just convenience names, and the data that we read from COLLADA is actually a Joint, a Bone is an imaginary line connecting two Joints.

Figure 5: Skeleton Terminologies

In the following figure you can see the skeleton of our example file and the Skin attached to it.

Figure 6: Complete Character in one pose of animation

The red circles on the left in figure 5 are the joints we read from COLLADA and the lines connecting those circles are the imaginary bones, which are used to animate the skin. On the right you can see the skin attached to the skeleton in another frame.

You might remember we took some assumptions, one of which was that, all the joints are added to the skin, which will make your <library_visual_scenes> very simple to read. All you have to do is find the root Joint (bone) <node> of the skeleton in the visual scene and then read the whole tree of joints. One of the disadvantages with this is that you will have a lot of joints considered affecting the skin, but in real they will not have any effect on the skin. And if you don’t add all the bones to the skin, then you will see <node>s of type = “JOINT” and type =”NODE” mixed in the hierarchy. But if you add every bone to skin you will have full tree of type=”JOINT”s only. This is also the default behavior for many engine exporters. When you have <node>s with type=”JOINT” and type=”NODE” mixed in the hierarchy then you have to read <instance_controller> from <library_visual_scenes> and then read <skeleton> each time you have to read a joint. Those <node>s which are not of type=”JOINT” are still Joints but they are not effectors, which means they are not effecting the skin. And that’s why we assumed everything must be attached to the skin, to keep things easy and simple.

To read the hierarchy of the bones, you need to have a data structure which can hold a number of children and a parent of its own kind. (This will get clear in the implementation part). You might also need to save the “SID” attribute of <node>s. Once we have the data structure setup, we will find the root and start reading its children and then their children and so on (recursively) and keep saving them in the data structure. At the end of the whole read process your whole data structure should be able to answer questions like, which joint is the child of whom? And who is the parent of a joint.

Now how can we find the root joint of the skeleton? Since we know we only have one model in the COLLADA document so we don’t have to read the <scene> node to find where the scene is instanced from. We directly go to <library_visual_scenes> and for all the direct (immediate) children of the only <visual_scene> we have to find the <node> who has a children of type <instance_controller>, read the <skeleton> child of this <instance_controller> and that will give you the ID of the root node. Since we have added all the bones to the skin, we will only have one <skeleton> child of <instance_controller>. Now this node is our root of the skeleton and everything connected to this <node> is part of the skeleton.

If you see the structure of this <node> in COLLADA document you will see most of the nodes have <matrix> as the first child. And this <matrix> contains 16 float values, which makes the Joint Matrix of the bone. This is also called the local bone transformation matrix. When we connect all the joints we have to multiply the World Matrix of the parent to the child’s Joint Matrix and save it as world bone transformation matrix for the child. For the root Joint, who doesn’t have a parent, the Joint Matrix becomes the World transformation matrix.

By now you should be able to read the skeleton and derive the bind pose of the skeleton from the Joint matrices you read for each <node>. In the next section we read the skinning information which connects this skeleton with the skin.

Click here to go to: Implementation section in Part 2 for this section of Part 1
Reading Skinning information from COLLADA document

So far we have read the geometry (vertices attributes information, materials, texture filename) as well as skeleton of the model. What we need to know now is how this skeleton is connected to the skin (Geometry). We have read many Joints in the skeleton. But we still don’t know which Joint influence which vertex. Some of the joints might not even influence any vertex at all. But if you remember we took an assumption that all the Joints must be added to the skin. In that case every joint must be influencing the skin theoretically.

To properly connect the skin (geometry) to the skeleton we need skinning information, and this section will try to help you understand, where we can find skinning information in COLLADA?

There is one other thing I would like to explain before we go further. If we have a character who’s each vertex is connected to only one Joint. When ever that Joint moves the vertex connected to it must also move. And you will see very rigid animation. But this is not how things work. Almost every vertex is connected to more then one Joint. And we specify the influence of each joint on that vertex with the help of vertex weights. Each joint influences that particular vertex some percentage of the total influence which totals to 1. So vertex weights are very important part of the skinning information.

<library_controllers>

<library_controllers> contains all the influences (joints) and their connectivity through vertex weights for the whole model. According to our assumptions we only have one mesh and one skeleton. So we will have only one <controller> node in the list of children of <library_controllers>. Once we have found the one and only <controller> node, we have to find its child node <skin>. In the <skin> node, find the <source> whose attribute’s “name”s value is “JOINT” in the <param> child node of the <accessor> child of the <technique_common>, (I will not explain all this again since we have already decoded <source> nodes when we were reading Geometry data) and the <NAME_array> will give you the Names of all the joints in the skeleton. Now you know that you can find the number of bones used from the “count” attribute of the <NAME_array> node in this source. An example <source> is given as follows.

<source id="boyShape-skin-skin-joints">

<NAME_array id="skin-joints-array" count="5">Bone1 Bone2 Bone3 Bone4 Bone5<NAME_array />

<technique_common>

<acessor source="#skin-joints-array" count="5" stride="1">

                        <param name="JOINT" type="Name" />

</acessor>

</technique_common>

</source>

And if you go back and see your skeleton <node>s from <library_visual_scene>, you will see that all these names of Joints you read from <NAME_array> are actually the SID’s of these <node>s.

To properly read the skinning data, we first need to read the Bind shape matrix of the skin to the skeleton, which is usually the first child of <skin> node, if it’s not the first child we will iterate through all the children and find and save it. And then we start reading from the node called <vertex_weights> who’s “count” attribute’s value gives the number of weights, as far as I know this count must be equal to number of vertices in the model which we read earlier when we were reading Geometry data because we have to define the vertex weights for each and every vertex at least and at most once.

If you see the structure of the <vertex_weights> node you will see at least 2 <input> nodes, one with attribute semantic=”JOINT” and second with semantic=”WEIGHT”, One <vcount> node and one <v> node.

When we have to read the weights for each vertex we iterate <vertex_weight>’s attribute “count” number of times into the <vcount> node values. And each value from the <vcount> is the number of Joints affecting that particular vertex, on which we are currently iterating. So we iterate nested for that specific value in the <vcount> (number of joints time) and read pairs of indices from <v> (Here I assume we have only two <input> nodes in <vertex_weight>).

The first one index the “JOINT” name in the “JOINT” <source>’s <NAME_array> (Here I assume that the value of “offset” attribute of the <input> who’s semantic=”JOINT” is “0”), we mentioned how to find this source earlier as well, but here you can get the ID of this source from the “source” attribute of the <input> child of the <vertex_weight> node with semantic=”JOINT”.

And the second one index the weight value from the <source> who’s ID you can get from the “source” attribute of the <input> child of the <vertex_weight> node with semantic=”WEIGHT” (Here I assume that the value of “offset” attribute of the <input> who’s semantic=”WEIGHT” is “1”).

<vertex_weights count="4">

<input semantic="JOINT" source="#joints" offset="0"/>

<input semantic="WEIGHT" source="#weights" offset="1"/>

<vcount>3 2 2 3</vcount>

<v>

1 0 0 1 1 2

1 3 1 4

1 3 2 4

1 0 3 1 2 2

</v>

</vertex_weights>

In this example you can see that this <vertex_weight> node is defining weights (influences) for 4 vertices, first vertex has 3 influences, First vertex’s first influence’s joint index is 1 which is the index from the JOINTS <source>s <NAME_array> values. And its weight index in the <float_array> of the <source> of weights is 0.

There is one other very important child of <skin> node which is called <joints> and it usually have two <input> nodes, the first one with attribute semantic=”JOINT” references the <source> node with Joint names, through the “source” attribute. And the second <input> with semantic=”INV_BIND_MATRIX” references the source with inverse bind matrices for each Joint through the attribute “source”. The source with inverse bind matrices contains (Joints_count * 16) values which makes Joints_count inverse bind matrices. These inverse bind matrices are needed for skinning. And will be clear when we read the implementation part.

Once we have completely read the <controller> node we should have one Bind shape matrix, a number of Joints and their Inverse bind matrices, and we have read their Joint matrices from the <visual_scene> earlier. Each vertex must be influenced by one or more then one bone (Remember this is contrary to Each Joint must be influencing at least one or more Vertex, which is not true, since their might be Joints, influencing no vertices). And we must have their weights accordingly.

Now if you have come this far, you should be able to read the geometry data, as well as the skeleton and skinning data from COLLADA documents. And you should be able to draw the model in raw triangles, as well as draw the skeleton. Although I haven’t discussed how you can accumulate the world matrices for each joint and then draw in world coordinates for debugging purposes but I think I gave a hint that we have to multiply parent joint’s world matrix with current joint’s Joint matrix and save the result in current joint’s world matrix. We have to start this process from the root bone. So that we don’t have dirty world matrices from parents, and the root Joint’s world matrix becomes the Joint matrix, since root don’t have any parent. If you are also reading the COLLADA specification version 1.5 you can find the skinning equation so you should also be able to put the model in bind shape. How can we animate this model is still not covered and will be covered in the following sections.

Click here to go to: Implementation section in Part 2 for this section of Part 1
Reading Animation data from COLLADA document

So far we are able to read every thing related to the static pose of the character, the only thing we still have to understand and read is the animation data part. Animation is not very strong in COLLADA and is still in its infancy, as time passes and COLLADA gets mature this will get better. But for our purposes we have a lot to worry about :).

<library_animations>

In this library we have all the animations data saved. For each joint animated you will see an <animation> node which further have the animation data for that specific Joint. Remember that an <animation> channel replaces the transform of the target on which it applies, which in this case will be joints.

You will see three types of children nodes in <animation>, first one as usual will be <source>s of data, second one is called <sampler> and the third one is <channel>. You need <sampler> and <channel> nodes to define the target on which the animation data is applied.

From <channel> node you pick the target which gives you the ID of the Object on which the Animation data will be applied. And you also get the Sampler ID from where you will pick the sources from which you will pick the animation Data.

Remember the example I am presenting here is a case which will never occur in our example COLLADA documents, because of our assumption of backing matrices. But this is an easy example to understand.

Example:

<source id="astroBoy-input">

<float_array id="astroBoy-input-array" count="2">0 1.16667</float_array>

< technique_common>

<accessor source="#astroBoy-input-array" count="2" stride="1">

<param name="TIME" type="float"/>

</accessor>

</technique_common >

</source>

<source id="astroBoy-output">

<float_array id="astroBoy-output-array" count="2">2.2 3.5</float_array>

<technique_common>

<accessor source="#astroBoy-output-array" count="2" stride="1">

<param name="TRANSFORM" type="float"/>

</accessor>

</technique_common>

</source>

<source id="astroBoy-interpolations">

<NAME_array id="astroBoy-interpolations-array" count="2">LINEAR LINEAR</NAME_array>

<technique_common>

< accessor source="#astroBoy-interpolations-array" count="2" stride="1">

<param name="INTERPOLATION" type="float"/>

</accessor >

</technique_common>

</source>

<sampler id="astroBoy_Skeleton-sampler">

<input semantic="INPUT" source="#astroBoy-input"/>

<input semantic="OUTPUT" source="#astroBoy-output"/>

<input semantic="INTERPOLATION" source="#astroBoy-interpolations"/>

</sampler>

<channel source="#astroSkeleton-sampler" target="astroBoy_Skeleton/trans.X"/
 

Now Lets read from the Bottom <channel> node.

This says that there is one Entity (in our case will be Joint) called “astroBoy_Skeleton” in the scene who’s “X translation values” is being animated by the sampler “astroSkeleton-sampler”.

So we need to know how “astroSkeleton-sampler” animated that “X translation value”, we read <sampler> which says.

There are three types of inputs you must read to read the animation data.

First <intput> node is: INPUT

Second <intput> node is: OUTPUT

Third <intput> node is: INTERPOLATION

When we start reading the <input>s from the <sampler>,

The “input” with attribute semantic = “INPUT” gives you the input <source> for the animation

The “input” with attribute semantic = “OUTPUT” gives you the output <source> for the animation

The “input” with attribute semantic = “INTERPOLATON” gives you the interpolation <source> for the animation

Now when we go and read those <source>s, we see that the source who was referred to semantic = “INPUT” by the sampler has name=”TIME” in <param> child of <accessor> child of the <technique_common> child of that <source>, in short it says this sources has time values of the animation in floats.

The source who was referred to semantic = “OUTPUT” by the sampler has name=”TRANSFORM” in <param> child of <accessor> child of the <technique_common> child of that <source>, which says this sources has “X translation” values in floats for those times which we read from the previous source.

The source who was referred to semantic = “INTERPOLATION” by the sampler has name=”INTERPOLATION” in <param> child of <accessor> child of the <technique_common> child of that <source>, which says this sources has the interpolation values in Strings for those OUTPUTS which we read from the previous source. (In studio max those interpolation values are usually “LINEAR” so we will not read this source and assume they are all “LINEAR”)

What this last source means is that, if you see the <source>s, you are given OUTPUT values for two values of time. What happens if we want to run the animation on a time which falls in between those two time values? Then we apply interpolation to find the middle OUTPUT value for the in-between time value. And in this case it’s LINEAR interpolated.

Now if you see the TIME Source, that’s actually your key frames. And the OUTPUT one is the key frames data for the “X translation” of the Entity (joint).

So you pick the corresponding OUTPUT value for any time and apply that to the “X translation factor” of that entity in your code and the entity will be animated. To calculate the in-between values for more smooth animation you use the LINEAR interpolation.

Click here to go to: Implementation section in Part 2 for this section of Part 1

What interpolation means?

Interpolation means calculating any in-between value between (among) two (or more) values.

Let’s say we have “X” and “Y” values, to calculate the “Middle” value in between those two values we can use an interpolation factor of “0.5” which we call “T”. And to find the 3-Quater value in-between “X” and “Y” we use “T = 0.75” and so on.

You can run a loop on “T” from lets say 0.0 to 1.0 have any increment i.e 0.001, 0.01, 0.05 etc and you can get “Loop” many in-between values.

Now Linear Interpolation is a simple form of Interpolations. And the formula is as follows

float Interpolate( float a_Value1, float a_Value2, float a_T)

{

return ((a_Value2 * a_T) + ((1 - a_T) * a_Value1));

}          

If you see the code it says that if “a_T” is “Zero” then give me a_Value1, and if it’s “One” then give me a_Value2. And if it’s in-between “Zero and One” then it will give you value in-between a_Value1 and a_Value2.

Now there are other forms of Interpolations as well. Like Bezier, cubic etc. They have further complicated formulas. And they also consider more then two values to interpolate in-between. But we will only be using linear interpolations for the sake of simplicity.

Now as we discussed before. This is not the case which we will ever have in our example COLLADA documents. So let’s see what we will have?

Keeping our assumptions in mind, we will only have two types of <animation> nodes. We will either have 16 * 3 = 48 <source>s, 16 <sampler>s and 16 <channel> nodes or we will have 3 <source>s, 1 <sampler> and 1 <channel> node. In the first case the “target” attribute will have “transform (X) (Y)” after the last “/” in its value and in the second case the “target” attribute will have “transform” after the last “/” in its value.

Either             <channel source="#astroSkeleton-sampler" target="astroBoy_Skeleton/transform (0) (0)"/>

Or                    <channel source="#astroSkeleton-sampler" target="astroBoy_Skeleton/transform"/>

In the second form the values of the matrix which we backed in, are given in one <source> out of those 3 <source>s, just like the one <source> we read in reading inverse bind matrices from controller. While in the first form values of each component of the 4 x 4 matrix are given in different <source>s. And we have to combine them in one matrix when we read the data.

Now if you remember we read the Joint matrices for each joint from the <visual_scene> node. These values (which will be matrices, since we backed matrices) which we read from <animation> nodes for those joints, which are targeted through the “target” attribute of the <channel> of that <animation> will replace the Joint matrices, we read earlier from <visual_scene> for each key frame defined in the animation. And to calculate the world transformation matrix for each joint we will have to take this new Joint Matrix and multiply it with the parent Joint’s world transformation matrix.

And that’s all pretty much it. If you have read the whole tutorial from start to end, I guess you should be able to write your own exporter for COLLADA documents now. And you are ready to start reading the next part if you haven’t read in between the implementation sections.

1,547 thoughts on “Collada Tutorial

  1. Otto Figueiras

    I’m amazed, I have to admit. Seldom do I encounter a blog that’s equally educative and engaging, and let me tell you, you’ve hit the nail on the head. The problem is something too few folks are speaking intelligently about. Now i’m very happy that I found this in my search for something concerning this.

    Reply
  2. Weight Gurus Scale review

    Please let me know if you’re looking for a article writer for your weblog. You have some really great posts and I think I would be a good asset. If you ever want to take some of the load off, I’d love to write some content for your blog in exchange for a link back to mine. Please blast me an email if interested. Thanks!

    Reply
  3. Maggie Dapinto

    Hello, I do believe your web site could be having browser compatibility issues. Whenever I take a look at your site in Safari, it looks fine but when opening in I.E., it’s got some overlapping issues. I simply wanted to give you a quick heads up! Apart from that, great site!

    Reply
  4. RogerCrorb

    mexico viagra generic generic viagra price comparison cheapest generic viagra australia
    generic viagra scam generic viagra cialis walgreens generic viagra price
    buy generic viagra online india generic viagra price comparison is generic viagra good
    what is the brand name for the generic drug for viagra in canada generic viagra from india buy generic viagra online no prescription
    manforce 50mg generic viagra marley drugs generic viagra order generic viagra online canada
    when will generic viagra be available in the us generic viagra overnight generic viagra vs viagra

    Reply
  5. DouglasBib

    best place to buy cialis online forum buy cialis generic online buy cialis online reddit
    buy cialis online using paypal where can you buy cialis over the counter best place to buy cialis
    best place to buy generic cialis online were can i buy cialis where can i buy cialis on line
    sildenafil generic viagra reviews is viagra available in generic generic viagra availability
    guaranteed payday loans online payday loans in maryland money tree payday loans
    boat loans for bad credit bad credit loans guaranteed approval direct lenders

    Reply
  6. RogerCrorb

    levitra cialis viagra generic how to buy generic viagra can i buy generic viagra
    walmart generic viagra approved generic viagra generic viagra 2017
    generic viagra india pharmacy where to buy generic viagra online cheapest generic viagra canada
    purchase generic viagra online generic viagra available in us generic viagra no perscription
    what is name of the generic viagra best place to buy generic viagra online the facts about generic viagra
    cost of generic viagra in india generic viagra sildenafil citrate 50 mg generic viagra super active

    Reply
  7. RogerCrorb

    how long does generic viagra last generic viagra india generic viagra online overnight delivery
    130mg generic viagra can you buy generic viagra over the counter generic viagra prices walmart pharmacy
    marley drugs generic viagra buy generic viagra online reviews lowest price on generic viagra
    canada pharmacy online no script generic viagra generic viagra review generic viagra canada
    teva generic viagra canada is there a generic viagra available? cheap generic viagra sales uk
    generic viagra be available teva pharmaceuticals generic viagra is there a new and inexpensive generic viagra type drug

    Reply
  8. RogerCrorb

    generic viagra cialis and levitra canada buy teva generic viagra buy generic viagra from canada
    generic viagra is it the same as viagra generic viagra cost walgreens generic viagra pills
    generic viagra in us shelf life of generic viagra why no generic viagra yet
    viagra generic release date marley drugs generic viagra sodafelt viagra generic
    generic viagra roman reviews generic viagra online usa thomas drugs-generic viagra
    generic viagra next day delivery why is there no generic viagra generic viagra

    Reply
  9. RogerCrorb

    when will there be generic viagra why is generic viagra so expensive generic viagra cialis levitra
    north carolina generic viagra online pharmacy generic viagra for men generic viagra price at walmart
    when is generic viagra does medicare cover generic viagra valspar generic viagra
    generic viagra $5 consultation generic viagra cost generic viagra walmart cost
    why is viagra 20 mg generic side effects of generic viagra cheap generic viagra next day delivery
    generic viagra usa cipla generic viagra generic viagra prices walmart pharmacy

    Reply
  10. RogerCrorb

    when will generic viagra be available and price purchase generic viagra ia generic viagra available at walmart
    generic viagra costco best place to buy generic viagra generic viagra sildenafil citrate on ebay
    grant pharmacy cheap generic viagra india generic viagra online pharmacy discount generic viagra
    what is name of the generic viagra generic viagra usa get generic viagra prescription online
    when would viagra generic be available generic viagra without prescription name for generic viagra
    generic viagra hard generic viagra 150 mg pills cheap generic viagra reviews

    Reply
  11. Preston

    Right now it seems like Movable Type is the best blogging platform out there right now. (from what I’ve read) Is that what you are using on your blog?

    Reply
  12. RogerCrorb

    buy viagra generic online generic viagra review how to order generic viagra
    name of generic viagra why is there no generic viagra online prescription for generic viagra
    best place to buy generic viagra price of generic viagra at walmart generic viagra for sale cheap walmart
    where to buy generic viagra without a prescription? generic viagra usa can i buy generic viagra in the us
    generic viagra 5 dollar first month generic viagra revatio best site for generic viagra
    purchase generic viagra online generic viagra reviews does medicare cover generic viagra

    Reply
  13. Bay Area SEO

    Sweet blog! I found it while searching on Yahoo News. Do you have any suggestions on how to get listed in Yahoo News? I’ve been trying for a while but I never seem to get there! Many thanks

    Reply
  14. TimothyAmath

    what is the best ed drug: ed meds online without doctor prescription and drugs without doctor prescription and generic drugs best ed drug
    http://www.meganlowerealtor.com/home.php?mod=space&uid=28953 best treatment for ed or http://toupiao2.625555.net/home.php?mod=space&uid=1349261 cheap pet meds without vet prescription or http://kfgvo.net/home.php?mod=space&uid=6477 treatment with drugs or http://pauleburns.com/__media__/js/netsoltrademark.php?d=jilir.org ed medications over the counter

    Reply
  15. RogerCrorb

    cheapest viagra generic canada what do generic viagra pills look like need prescription for generic viagra
    generic viagra patent generic viagra us how to buy generic viagra safely online
    legit ed generic viagra price generic viagra generic viagra lowest prices
    pricing for generic viagra best generic viagra websites cheap generic viagra lowest prices
    generic viagra costs generic viagra north carolina does cvs sell generic viagra
    generic viagra from canada canadian generic viagra review will teladoc prescribe viagra generic

    Reply
  16. Bay Area SEO

    Howdy I am so excited I found your site, I really found you by accident, while I was looking on Yahoo for something else, Regardless I am here now and would just like to say thanks a lot for a incredible post and a all round thrilling blog (I also love the theme/design), I don’t have time to go through it all at the moment but I have bookmarked it and also included your RSS feeds, so when I have time I will be back to read more, Please do keep up the superb job.

    Reply
  17. RogerCrorb

    is there a generic for viagra or cialis north carolina generic viagra what is generic for viagra
    buy cheap generic viagra cheap generic viagra generic viagra online canadian pharmacy
    next day generic viagra reliable generic viagra side effects of generic viagra
    buy generic viagra from india buy cheapest generic viagra online generic viagra from india review
    generic viagra soft gel capsule when will there be generic viagra viagra generic prescription
    generic viagra philippines hims generic viagra buy generic viagra online paypal

    Reply
  18. RogerCrorb

    generic viagra shipped to home teva pharmaceuticals generic viagra safe generic viagra
    generic viagra sildenafil citrate 100mg legitimate generic viagra usda approved india generic viagra
    why dont generic viagra work like the name brand generic viagra dosages cheapest generic viagra
    generic viagra on ebay amazon best place to buy generic viagra forum generic alternative for viagra
    generic viagra online overnight delivery how much does generic viagra cost generic viagra 100mg cheapest price
    viagra generic names is generic viagra effective best online canadian pharmacy for generic viagra requires prescription

    Reply
  19. DouglasBib

    how to buy cialis without a prescription cialis buy where to buy cialis online forum
    can i buy cialis in mexico were can i buy cialis buy cialis generic tadalafil
    buy generic cialis online uk buy cialis pro buy cialis online without a prescription
    generic viagra and cialis without a doctor’s prescription is generic viagra sildenafil trichet very effective over the counter generic viagra carson city nv menu
    scott tucker payday loans loans till payday payday loans bad credit online
    is bad credit loans legit direct lender bad credit loans

    Reply
  20. RogerCrorb

    generic viagra dosage generic viagra soft 100 mg generic viagra
    walgreens generic viagra price generic viagra soft tabs over the counter generic viagra carson city nv menu guide
    hims generic viagra best generic viagra generic viagra online canada
    generic viagra online overnight delivery is viagra available in generic generic viagra in stores
    cheapest generic viagra cheapest viagra generic uses for generic viagra
    generic viagra reviews generic viagra price in india pharmacy global rx generic viagra from india safe

    Reply
  21. RogerCrorb

    generic viagra white pills name of generic viagra coupons for generic viagra
    generic viagra walmart cost roman generic viagra cheapest generic viagra no prescription
    cheapest generic viagra prices legitimate generic viagra generic viagra made in canada
    cost of generic viagra in canada generic viagra usa pharmacy teva generic viagra
    does walgreens sell generic viagra generic viagra buy generic female viagra pills over the counter walmart pharmacy
    best prices for generic viagra at us pharmacies generic viagra safe where is generic viagra made

    Reply
  22. RogerCrorb

    for mens generic viagra purple generic viagra female generic viagra
    pfizer viagra generic generic viagra online teva pharmaceuticals generic viagra cost
    generic viagra 50 mg is it safe generic viagra for men why is viagra 20 mg generic perscribed
    viagra generic name revatio for erectile 100 mg generic viagra generic viagra without a doctor prescription india
    vbb generic viagra cheap generic viagra overnight delivery generic viagra pills
    usa price for generic viagra is there generic viagra when will teva sell generic viagra in us

    Reply
  23. RogerCrorb

    is viagra available in generic form yet cheap viagra generic discount generic viagra canada
    150mg generic viagra otc generic viagra viagra generic cost cvs
    buy generic viagra 50mg online generic viagra soft tabs 100mg how much generic viagra should i take
    2020 generic viagra prices does generic viagra work is generic viagra available in usa?
    generic viagra is it the same as iagra? best site to buy generic viagra generic viagra 10 meg costs at walmarts
    bulk generic viagra what is the cost of generic viagra? when will generic viagra be available in the u.s

    Reply
  24. Marshall

    An impressive share! I’ve just forwarded this onto a friend who has been doing a little homework on this.
    And he in fact ordered me lunch simply because I discovered it for him…
    lol. So allow me to reword this…. Thank YOU for the meal!!

    But yeah, thanx for soending the time to discuss this subject here on your blog.

    http://pierresdusouvenir.com/__media__/js/netsoltrademark.php?d=forum.plastic-surgeon.com.ua
    Marshall https://www.titanmotors.net/uncategorized/hello-world/

    Reply
  25. Stevenwinia

    medexpressrx generic viagra generic viagra price generic viagra samples
    generic viagra extra dosage recommendations how much is generic viagra at walmart teva pharmaceuticals generic viagra cost
    teva viagra generic order generic viagra mylan generic viagra from us pharmacy
    where to buy real generic viagra generic viagra us release date best places to buy generic viagra online
    generic viagra where to buy near me generic viagra uk order generic viagra online
    teva generic viagra cost price of generic viagra at walmart does meijer pharmacy have generic for viagra

    Reply
  26. BryanSal

    medicine for erectile: Without Doctor Prescription and ed meds online without doctor prescription and ed meds online without doctor prescription prescription drugs without doctor approval
    http://www.hkxgzl.com/home.php?mod=space&uid=42102 natural treatment for ed or http://globaliptv.cn/home.php?mod=space&uid=115157 natural ed pills or http://bbs.mcrst.com/home.php?mod=space&uid=2003850 ed dysfunction or http://www.kixdatest.com/home.php?mod=space&uid=59753 how to cure ed

    Reply
  27. Stevenwinia

    non perscription generic viagra generic viagra review generic viagra canada lowest price online
    50 mg viagra generic is there a generic viagra available safe buy generic viagra online
    generic viagra walmart pharmacy generic viagra name cheap generic viagra co uk index
    buy generic viagra in the usa generic viagra otc for mens generic viagra radio advertisement
    generic viagra sample buy generic viagra online canada is there a generic viagra available?
    where can i get generic viagra generic viagra accept paypal compare generic viagra prices

    Reply
  28. Stevenwinia

    viagra vs generic sildenafil side effects of generic viagra american pharmacy generic viagra
    generic viagra what is it called generic viagra at cvs manufacturers that make generic viagra in india
    lowest price for generic viagra what is the cost of generic viagra? korean generic viagra
    cheapest cialis generic viagra generic viagra doesnt work fda approved generic viagra
    best generic viagra online pharmacy generic viagra us over the counter generic viagra
    what is the generic drug for viagra generic viagra at walmart generic viagra from india reviews

    Reply
  29. DouglasBib

    can you buy cialis in mexico buy cialis over the counter usa where to buy cialis over the counter
    buy cialis online no prescription cialis buy where to buy cialis online safely
    buy cialis online with prescription buy cialis overseas buy cialis online india
    local generic viagra www generic viagra prices cost of generic viagra at walmart pharmacy
    payday loans that accept netspend accounts fast payday loans, inc. jacksonville, fl online payday loans oregon
    student loans without cosigner bad credit apply for loans bad credit

    Reply
  30. Stevenwinia

    why is viagra 20 mg generic canadian pharmacy generic viagra generic viagra no pres
    cipla generic viagra sildenafil is there a generic viagra available? buy generic viagra india
    us generic viagra new generic viagra what is generic viagra called
    kamagra vs generic viagra generic viagra cost generic viagra over counter
    cost of generic viagra at walmart pharmacy india generic viagra cost for teva generic viagra
    viagra generic name generic viagra wholesale generic viagra sildenafil citrate on ebay

    Reply
  31. Stevenwinia

    canadian pharmacy for generic viagra generic viagra 50mg approved generic viagra
    does generic viagra sildenafil citrate work generic viagra price at walmart trusted generic viagra reviews
    viagra going generic? cipla generic viagra cost of generic viagra without insurance
    generic viagra cost at walmart generic viagra for sale online medexpressrx generic viagra
    buy cheapest generic viagra is generic viagra available generic viagra pay with paypal
    what is the cost of generic viagra? generic viagra us release date generic viagra price

    Reply
  32. Stevenwinia

    india generic viagra fda approved generic viagra marlee generic viagra
    is there a viagra generic is there a generic viagra available? order generic viagra canada
    generic viagra no presciptionneeded what does generic viagra look like generic viagra dosage recommendations onw hour before
    does generic viagra work as well best generic viagra review generic viagra by phone
    generic viagra online canadian pharmacy generic viagra trusted pharmacy lowesr priced generic viagra
    best prices for generic viagra at us pharmacies generic viagra without a prescription generic viagra patent

    Reply
  33. Stevenwinia

    generic viagra from canada pharmacy generic viagra 150 mg pills best generic viagra online
    which generic viagra is best generic viagra mexico discount generic viagra
    when will teva sell generic viagra in us lowest price on generic viagra generic viagra for sale in the usa
    number of companies that sell generic viagra generic viagra revatio generic viagra brands
    free generic viagra when will there be generic viagra cheap generic viagra online pharmacy
    is viagra available in generic order generic viagra online viagra generic soft

    Reply
  34. Stevenwinia

    is there generic viagra generic viagra reviews trusted generic viagra
    generic viagra online reviews best generic viagra reviews generic viagra no prescription
    is there a generic for viagra generic viagra cost walgreens ia generic viagra available at walmart
    us based generic viagra where to get generic viagra generic viagra online paypal
    cialis generic 5mg taken with viagra generic viagra online india does generic viagra work the same
    generic viagra amazon viagra generic name do generic viagra pills work

    Reply
  35. morgancards.com

    I don’t know whether it’s just me or if perhaps everyone else
    experiencing problems with your website. It appears as though some of the written text in your posts are
    running off the screen. Can someone else please comment and let me know if this is happening to them as well?

    This might be a problem with my internet browser because
    I’ve had this happen previously. Cheers XXX ADULT (morgancards.com)

    Reply
  36. Stevenwinia

    mexico generic viagra canadian generic viagra review does walmart sell generic viagra?
    buy generic viagra online safely generic viagra brands raymeds generic viagra
    is viagra available in generic generic viagra dosage sildenafil citrate (generic viagra)
    review generic viagra generic viagra fast delivery generic viagra available in us pharmacies
    canada pharmacy viagra generic buy generic viagra news about generic viagra
    canadian generic viagra cheap generic viagra consumer reports generic viagra

    Reply
  37. Stevenwinia

    generic viagra pills online generic viagra tablets canada pharmacy viagra generic
    is kamagra better than generic viagra? cvs generic viagra teva viagra generic
    where is generic viagra manufactured buying generic viagra discount viagra generic best price
    uncle hank generic viagra generic viagra price comparison generic viagra without prescription
    brand viagra vs generic viagra do you need a prescription for generic viagra generic viagra dosage recommendations
    mylan generic viagra 2017 teva viagra generic do they make generic viagra

    Reply
  38. Carpet Cleaning Brentwood CA

    Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point. You definitely know what youre talking about, why throw away your intelligence on just posting videos to your blog when you could be giving us something enlightening to read?

    Reply
  39. Stevenwinia

    www generic viagra prices how to get generic viagra where to buy generic viagra without a perscription?
    mylan generic viagra from us pharmacy best places to buy generic viagra when will there be a generic viagra
    viagra packs generic when will there be a generic viagra generic viagra near me
    ordering generic viagra from india reviews when will generic viagra be available generic+for+viagra
    generic viagra quick delivery generic viagra online without prescription news on generic viagra
    buy generic viagra online australia lowest price generic viagra 100mg cvs generic viagra price

    Reply
  40. Stevenwinia

    generic viagra on-line 5 day shipping when will generic viagra be available in us coupon for generic viagra
    nail city coshocton viagra generic generic viagra us pharmacy generic viagra on-line 5 day shipping
    generic female viagra pills over the counter walmart pharmacy generic viagra soft viagra 100mg generic viagra fda approved
    is generic viagra from canada safe viagra generic release date real viagra vs generic viagra
    low cost generic viagra generic viagra dosages cheap generic viagra 100mg
    north carolina generic viagra online pharmacy generic viagra white pill cheap generic viagra co uk french kamagra

    Reply
  41. my company Weight Gurus Wifi Smart Scale Review

    Hey just wanted to give you a quick heads up. The text in your post seem to be running off the screen in Opera. I’m not sure if this is a format issue or something to do with internet browser compatibility but I thought I’d post to let you know. The style and design look great though! Hope you get the issue solved soon. Kudos

    Reply
  42. Stevenwinia

    best online canadian pharmacy for generic viagra requires prescription buy generic viagra online fast shipping pharmacy global rx generic viagra from india safe
    is there now generic viagra ? 150mg generic viagra over the counter 25 mg viagra generic
    american generic viagra buy online generic viagra is generic viagra safe and effective
    what are the names for generic viagra ia in india cheap generic viagra online pictures of generic viagra
    generic viagra quick delivery generic viagra prices generic viagra online india
    cvs generic viagra cost is generic viagra available in the united states generic viagra from india delhi

    Reply
  43. Stevenwinia

    generic viagra cheapest price generic viagra cost when can i buy generic viagra
    why is teva generic viagra not available non prescription generic viagra 130mg generic viagra
    generic sildenafil vs viagra buy generic viagra online free shipping generic female viagra pills over the counter walmart pharmacy
    viagra generic 100mg what is the name of generic viagra buying generic viagra online reviews
    how to order generic viagra best online pharmacy for generic viagra generic viagra soft chews
    generic vs real viagra buy generic viagra online usa generic viagra vs brand viagra

    Reply
  44. Carpet Cleaning Brentwood CA

    Thank you for sharing superb informations. Your site is very cool. I am impressed by the details that you’ve on this website. It reveals how nicely you perceive this subject. Bookmarked this website page, will come back for extra articles. You, my pal, ROCK! I found just the information I already searched everywhere and just could not come across. What a great website.

    Reply
  45. DouglasBib

    buy discount cialis were can i buy cialis buy cialis in usa
    buy cialis non prescription where to buy cheap cialis online buy cialis online overnight
    buy cialis without a prescription can you buy cialis over the counter at walmart cheapest way to buy cialis
    difference between 57 and 57 xl ink cartridge at best price buy generic viagra in usa generic viagra trusted pharmacy generic viagra soft tabs 100mg
    payday loans deposited on prepaid debit card tribal payday loans online payday loans indiana
    bad credit auto repair loans direct lender installment loans for bad credit

    Reply
  46. Stevenwinia

    generic viagra 100 mg north carolina generic viagra buy generic viagra walmart
    pharmacy global rx generic viagra best price generic viagra generic chewable viagra
    generic drug for viagra in canada walmart generic viagra price need prescription for generic viagra
    generic viagra canada free shipping generic viagra 100 mg generic viagra sildenafil citrate and alcohol
    best website to buy generic viagra generic viagra order generic viagra best place to buy
    generic viagra from canada online generic viagra teva generic viagra for sale in cape coral florida

    Reply
  47. Stevenwinia

    order generic viagra usa no prescription generic viagra india 100mg online pharmacy generic viagra
    cipla pharmaceuticals generic viagra is there a generic for viagra generic viagra trusted pharmacy in canada
    over the counter generic viagra safe generic viagra generic viagra 200mg tablets
    generic viagra 200mg tablets generic viagra price non generic viagra online
    female viagra generic is generic viagra available yet is there a generic viagra pill
    best price on 200 mg generic viagra generic viagra otc viagra v/s generic viagra

    Reply
  48. Stevenwinia

    generic viagra cost per pill generic viagra 100mg best generic viagra websites
    generic viagra 100 mg when will generic viagra be available in us generic viagra at cvs
    is there a generic viagra available? generic viagra cialis generic viagra houston
    viagra generic for sale generic viagra price comparison generic viagra for cheap
    when can you buy generic viagra in us dec 2017 generic viagra on ebay generic viagra professional sildenafil 100mg
    does walgreens carry generic viagra generic viagra for sale online lowest price generic viagra 100mg

    Reply
  49. Stevenwinia

    is generic viagra available yet india generic viagra canadian pharmacy for generic viagra
    what is a generic viagra cost of generic viagra at cvs is viagra available as a generic
    is there a generic viagra? sildenafil citrate generic viagra 100mg generic viagra
    compare generic viagra prices generic viagra soft generic viagra overnight delivery
    cheap overnight generic viagra when will generic viagra be available generic viagra online pharmacy usa
    generic viagra online overnight delivery viagra pills generic kamagra vs generic viagra

    Reply
  50. Stevenwinia

    has viagra gone generic yet 2018 generic viagra online canada where is generic viagra manufactured
    generic viagra hard buy cheapest generic viagra online generic viagra starting today
    50 mg generic viagra generic viagra walmart ligit generic viagra sites
    online pharmacy generic viagra when will generic viagra be available in the us generic viagra in stores
    canada pharmacy viagra generic is generic viagra available over the counter when will generic viagra be available and price
    manforce 50mg generic viagra generic viagra mexico local pharmacy generic viagra

    Reply
  51. Stevenwinia

    generic viagra on line generic viagra online canada safe generic viagra online
    when is generic viagra available in us generic viagra fastest shipping coupon for generic viagra
    viagra generic cost generic viagra india 100mg generic female viagra pills
    fastest way to get generic viagra generic viagra on line chewable generic viagra
    cheapest generic viagra canada buy generic viagra canada price generic viagra for sale in mexico united states
    raymeds generic viagra generic viagra at walmart can you get generic viagra

    Reply
  52. Stevenwinia

    100 mg generic viagra why is generic viagra so expensive price of teva generic viagra
    pfizer viagra vs generic viagra buying generic viagra online reviews when will generic viagra be available in the u.s
    norman ok pharmacy that offers generic viagra purple generic viagra generic viagra super active sildenafil citrate
    what is the generic viagra best online pharmacy for generic viagra teva generic viagra canada
    generic viagra sildenafil citrate on ebay generic viagra images generic viagra no perscription
    side effects of generic viagra is generic viagra available teva viagra generic

    Reply
  53. Stevenwinia

    generic viagra 100mg pills generic viagra not working buy cipla generic viagra
    thomas drugs-generic viagra is generic viagra available is there a legal generic viagra
    wholesale generic viagra generic viagra for men best place to buy generic viagra review
    generic viagra a walmart is generic viagra available in the us when if ever will they authorize generic viagra
    generic viagra order how much is generic viagra at walmart generic viagra cialis and levitra
    buy generic viagra online from canada teva generic viagra cost free generic viagra samples

    Reply
  54. Carpet Cleaning Company

    I actually wanted to send a small word so as to express gratitude to you for those great guidelines you are writing at this website. My time intensive internet look up has at the end been paid with beneficial facts to go over with my companions. I ‘d believe that most of us readers are undeniably lucky to live in a very good community with so many special people with useful strategies. I feel very much lucky to have encountered your entire webpages and look forward to so many more fabulous minutes reading here. Thank you again for everything.

    Reply
  55. Stevenwinia

    why is viagra 20 mg generic perscribed is there a generic viagra pill generic viagra made in canada
    generic female viagra pills for women generic viagra reviews price of teva generic viagra
    how much generic viagra should i take reliable generic viagra radio commercial about generic viagra
    generic viagra doesnt work when does generic viagra come out buy teva generic viagra
    cheapest generic viagra 100mg teva generic viagra generic female viagra pills for women over 60
    where is the best place to buy generic viagra online name for generic viagra cost of generic viagra in india

    Reply
  56. bloom booster browse this site

    Do you have a spam issue on this blog; I also am a blogger, and I was curious about your situation; many of us have developed some nice methods and we are looking to trade strategies with others, please shoot me an email if interested.

    Reply
  57. Anker all-round portable power powerhouse II 400

    With havin so much written content do you ever run into any problems of plagorism or copyright violation? My blog has a lot of unique content I’ve either created myself or outsourced but it looks like a lot of it is popping it up all over the internet without my permission. Do you know any techniques to help stop content from being stolen? I’d definitely appreciate it.

    Reply
  58. Marty Crowden

    Oh my goodness! Incredible article dude! Thank you so much, However I am encountering difficulties with your RSS. I don’t know the reason why I cannot subscribe to it. Is there anyone else having identical RSS problems? Anyone that knows the solution can you kindly respond? Thanks!!

    Reply
  59. How much does the power legs cost

    Please let me know if you’re looking for a writer for your site. You have some really good posts and I think I would be a good asset. If you ever want to take some of the load off, I’d absolutely love to write some content for your blog in exchange for a link back to mine. Please send me an email if interested. Thank you!

    Reply
  60. Power legs foot massager

    It’s a pity you don’t have a donate button! I’d most certainly donate to this fantastic blog! I guess for now i’ll settle for bookmarking and adding your RSS feed to my Google account. I look forward to brand new updates and will talk about this site with my Facebook group. Chat soon!

    Reply
  61. 바카라사이트

    Wow that was odd. I just wrote an really long comment but after I
    clicked submit my comment didn’t appear. Grrrr…

    well I’m not writing all that over again. Regardless, just wanted to say wonderful blog!

    Reply
  62. Loria Mccann

    Hi, I do think this is a great website. I stumbledupon it 😉 I’m going to come back yet again since i have saved as a favorite it. Money and freedom is the greatest way to change, may you be rich and continue to guide others.

    Reply
  63. hersheylatinamerica.com

    You really make it appear really easy with your presentation but I
    in finding this matter to be actually something that I think I would by no means understand.

    It seems too complicated and extremely broad for
    me. I’m taking a look forward on your subsequent post, I’ll attempt to get the
    hold of it! Photo SEX, hersheylatinamerica.com,

    Reply
  64. East Bay News

    I’m really enjoying the design and layout of your site. It’s a very easy on the eyes which makes it much more enjoyable for me to come here and visit more often. Did you hire out a developer to create your theme? Fantastic work!

    Reply
  65. Survivor Male Enhancement

    Hey! I just wanted to ask if you ever have any problems with hackers? My last blog (wordpress) was hacked and I ended up losing a few months of hard work due to no backup. Do you have any methods to prevent hackers?

    Reply
  66. Trudie Glomb

    When I initially commented I seem to have clicked on the -Notify me when new comments are added- checkbox and now whenever a comment is added I recieve four emails with the same comment. Perhaps there is an easy method you are able to remove me from that service? Thanks a lot!

    Reply
  67. this content

    I enjoy you because of your own efforts on this website. My daughter really loves getting into investigations and it’s really easy to see why. A lot of people learn all of the lively ways you offer sensible things on your blog and therefore strongly encourage participation from others about this matter then my girl is always learning a whole lot. Enjoy the remaining portion of the new year. You are always doing a very good job.

    Reply
  68. 바카라사이트

    I love your blog.. very nice colors & theme. Did you
    design this website yourself or did you hire someone to do it for
    you? Plz respond as I’m looking to create my own blog and would like to
    find out where u got this from. many thanks

    Reply
  69. penis enlargement extender

    Hello! I just wanted to ask if you ever have any issues with hackers? My last blog (wordpress) was hacked and I ended up losing several weeks of hard work due to no back up. Do you have any solutions to prevent hackers?

    Reply
  70. Gerardo Giannitti

    Can I simply say what a relief to uncover someone that truly understands what they are talking about on the net. You certainly understand how to bring an issue to light and make it important. More and more people ought to check this out and understand this side of the story. I can’t believe you’re not more popular because you definitely possess the gift.

    Reply
  71. Nova Stickney

    You’re so interesting! I don’t suppose I’ve truly read through anything like that before. So nice to find another person with genuine thoughts on this issue. Really.. thanks for starting this up. This web site is one thing that is required on the internet, someone with some originality!

    Reply
  72. 바카라사이트

    Simply want to say your article is as astonishing.
    The clearness in your post is simply excellent and i could
    assume you are an expert on this subject. Well with your permission allow me to
    grab your feed to keep up to date with forthcoming post.
    Thanks a million and please continue the rewarding work.

    Reply
  73. StacyCop

    where can you buy cialis over the counter buy cialis cheap online buy cialis pro
    buy cialis online no prescription buy cialis online safely how to buy cialis from canada
    buy cialis no prescription buy cialis in usa buy cialis online reddit
    generic viagra available at walmart is generic viagra safe generic viagra pharmacy approved
    online payday loans bad credit texas payday loans no credit check define payday loans
    loans for those with bad credit name private loans for bad credit

    Reply
  74. RichardGrola

    buy viagra cialis online cialis buy online can you buy cialis over the counter in canada
    where can i buy viagra or cialis buy cialis generic tadalafil buy cheap cialis
    how to buy cialis without prescription is it legal to buy cialis online how to buy cialis online
    is generic viagra available in the united states local pharmacy generic viagra when will generic viagra be available in the us
    payday loans maryland ez payday loans locations legitimate payday loans online no credit check
    do credit unions give loans to bad credit student loans for bad credit

    Reply
  75. DanielMum

    buy cheap cialis online genericcialisonline1.com buy generic cialis in canada
    buy discount cialis online genericcialisonline2.com how to buy cialis online
    is it safe to buy cialis online genericcialisonline3 buy liquid cialis online
    generic viagra without a doctor prescription genericviagraonline.us.com viagra generic december 2017
    moneytree payday loans paydayloans03 payday loans maine
    home loans for disabled veterans with bad credit badcreditloans03

    Reply
  76. RichardGrola

    buy cialis in usa buy cialis canada pharmacy where can i buy cialis in canada
    buy cialis india buy cialis online cheapest place to buy cialis
    is it legal to buy cialis online were can i buy cialis buy cialis online with paypal
    why doesn’t generic viagra work as well what is phyzer’s generic viagra news about generic viagra
    low interest payday loans indian payday loans payday loans maryland
    best bad credit auto loans cash loans for bad credit online

    Reply
  77. Willie Scharbrough

    What’s Taking place i’m new to this, I stumbled upon this I’ve found It absolutely useful and it has helped me out loads. I hope to give a contribution & aid different users like its aided me. Great job.

    Reply
  78. Jessevax

    buy real cialis online can i buy cialis over the counter buy liquid cialis
    buy cialis and viagra online where to buy cialis generic buy cialis from mexico
    buy cialis 5mg daily use buy cialis canadian where to buy cheap cialis online
    generic viagra on-line 5 day shipping marley generic viagra cheapest site to buy generic viagra
    payday loans in arizona are payday loans legal in ny legit online payday loans
    very bad credit home loans bad credit motorcycle loans

    Reply
  79. college application essay writing service

    Have you ever considered about including a little biit more than just your articles?
    I mean, what you say is important and all. However think about if you addded some great
    pictures or videos to give your posts more, “pop”!
    Your content iis excellent but withh piccs and videos, this website cohld definitely be one of the
    most beneficial iin its niche. Excellent blog!
    https://collegeapplicationessaywritingservice.info
    college application essay writing service
    college application essay writing service
    https://collegeapplicationessaywritingservice.info https://collegeapplicationessaywritingservice.info/

    Reply
  80. RichardGrola

    buy cialis on ebay buy cialis online cheap cialis buy online usa
    is it safe to buy cialis online can you buy cialis over the counter in spain can you buy cialis without a prescription
    do you need a prescription to buy cialis buy generic cialis buy cialis canada
    generic viagra names viagra no prescription medicine shoppe generic viagra
    payday loans tulsa payday loans online online payday loans florida
    auto loans for people with bad credit banks that offer loans for bad credit

    Reply
  81. Jessevax

    where can i buy cialis cheap where can i buy cialis online safely where can you buy cialis
    buy cialis australia buy cialis canadian buy cialis india
    buy cialis super active buy cialis online usa cheapest place to buy cialis
    cheapest generic viagra from india non-prescription generic viagra and cialis generic viagra best buy
    instant online payday loans payday loans with bad credit payday loans without a checking account
    bad credit small loans business loans for bad credit

    Reply
  82. how to write essays

    I loved as much ass you will receive carried out right here.
    Thhe sketch is attractive, your authored subject matter stylish.
    nonetheless, you command get bought an nervousness ovesr that
    you wish be delivering the following. unwell unquestionably come more formerly again since exactly the ssame
    nearly ver often insidce case you shield this increase.

    https://essayserviceusukua.com
    how to write essays
    how too wrfite essays
    https://essayserviceusukua.com https://essayserviceusukua.com

    Reply
  83. RichardGrola

    buy viagra and cialis online buy generic cialis online buy cialis cheap online
    buy cialis online canadian pharmacy buy cialis online in usa buy cialis next day delivery
    where to buy generic cialis buy cialis cheap buy cialis canada online
    buy generic viagra sildenafil citrate cheap viagra price does the generic viagra work
    payday loans store locations payday loans poor credit loans till payday
    best car loans for bad credit unsecured loans for bad credit

    Reply
  84. 바카라

    I think this is among the so much important information for
    me. And i am glad studying your article. But wanna commentary on some common issues, The site taste is ideal, the articles is truly nice :
    D. Excellent activity, cheers

    Reply
  85. DanielMum

    buy cheap cialis online genericcialisonline1 how to buy cialis from canada
    where can i buy cialis online genericcialisonline2 buy generic cialis in canada
    where to buy liquid cialis genericcialisonline3 buy cialis generic tadalafil
    generic viagra without the prescription genericviagraonline generic viagra without a doctor prescription from canada
    no credit check payday loans online paydayloans03 amg services payday loans
    home improvement loans for bad credit badcreditloans03.com

    Reply
  86. Jessevax

    can you buy cialis over the counter buy cialis online safely buy cialis online canada
    buy cheapest cialis buy cialis canadian where can i buy cialis pills
    buy cialis online without prescription buy cialis online overnight shipping buy cheap generic cialis online
    price teva will charge for generic viagra generic viagra without subscription walmart generic viagra soft tabs 100mg
    online payday loans for bad credit direct lenders payday loans boise payday loans maryland
    bad credit pay day loans unsecured startup business loans bad credit

    Reply
  87. Thomaskency

    buy cialis online in usa where can i buy cialis buy cialis on ebay
    can you buy cialis over the counter in spain where to buy cialis online buy cialis canadian pharmacy
    buy cialis with paypal buy cialis online how to buy cialis online
    how much does generic viagra cost buy generic viagra online pharmacy indian generic viagra
    payday loans virginia payday loans direct lender payday loans az
    home mortgage loans with bad credit loans for people with bad credit

    Reply
  88. DanielMab

    buy online generic cialis genericcialisonline1.com safe place to buy cialis online
    best place to buy generic cialis online genericcialisonline2.com best place to buy cialis online without script
    where to buy liquid cialis genericcialisonline3.com where can i buy cialis cheap
    pfizer generic viagra genericviagraonline generic viagra arizona
    payday loans online direct lenders instant approval paydayloans03.com online payday loans indiana
    small business loans with bad credit badcreditloans03.com

    Reply
  89. Williamjeasy

    buy cialis online reddit where to buy liquid cialis can you buy cialis over the counter
    where can i buy cialis on line buy generic cialis online where to buy cialis over the counter
    buy cialis online mexico buy cialis cheap where to buy cheap cialis online
    buy viagra from canada mrs beasley generic viagra generic viagra release date
    payday loans boise payday loans near me open now utah payday loans
    loans for students with bad credit tribal loans bad credit

    Reply
  90. Thomaskency

    buy cialis 10mg can i buy cialis without a prescription where can i buy cialis pills
    buy cialis in canada buy cialis online usa buy cheap generic cialis online
    buy generic cialis online canada how to buy cialis where can i buy cialis without a prescription
    cheap generic viagra reviews is there a generic viagra generic viagra pill
    100 guaranteed approval on payday loans online payday loans texas fast payday loans, inc. jacksonville, fl
    who will give loans with bad credit installment loans for bad credit

    Reply
  91. DanielMab

    buy cialis online india genericcialisonline1 where can you buy cialis
    buy cialis australia genericcialisonline2 can you buy cialis over the counter?
    buy cialis 5mg daily use genericcialisonline3.com can you buy cialis over the counter in canada
    over the counter generic viagra carson city nv menu guide list genericviagraonline fast shipping generic viagra
    guaranteed payday loans no teletrack paydayloans03.com payday loans tucson
    payday loans for bad credit online badcreditloans03

    Reply
  92. Williamjeasy

    buy cialis in usa buy cialis online in usa buy cialis pro
    buy cialis non prescription buy cialis online without script where to buy cialis without a prescription
    buy cialis in mexico buy cialis cheap buy cheap generic cialis online
    cheap generic viagra online buy generic viagra online pharmacy discover card purchase of generic viagra online
    guaranteed payday loans no teletrack online payday loans for bad credit are there any guaranteed payday loans
    best online loans for bad credit loans for really bad credit

    Reply
  93. www.phonotica.com

    Wonderful goods from you, man. I have take into accout your stuff prior to and you’re simply extremely
    great. I actually like what you’ve received here, certainly
    like what you’re saying and the way in which in which
    you are saying it. You’re making it enjoyable and you continue to take care of to stay it sensible.

    I can’t wait to learn far more from you. That is really a wonderful site. Porn Videos (http://www.phonotica.com)

    Reply
  94. Thomaskency

    buy cialis super active can i buy cialis over the counter at walgreens buy cialis online canada
    buy cialis 20mg online where to buy cialis online forum buy cialis online in usa
    how can i buy cialis buy cialis viagra buy cialis with prescription
    generic viagra 20 mg over counter generic viagra generic for viagra 100mg
    fast auto and payday loans usa payday loans payday loans near me no bank account
    personal loans for bad credit in michigan bad credit home loans

    Reply
  95. Williamjeasy

    where can i buy cialis online cialis buy can you buy cialis in mexico
    buy cialis 5mg buy cialis cheap prices fast delivery cheapest way to buy cialis
    buy cialis from mexico were can i buy cialis best place to buy cialis online forum
    what is generic viagra generic viagra without subscription walmart places to buy viagra online
    long term payday loans fast payday loans advance payday loans online
    debt consolidation loans with bad credit best installment loans for bad credit

    Reply
  96. Thomaskency

    where can you buy cialis buy cialis online buy viagra and cialis online
    buy cialis generic tadalafil buy cialis and viagra online best place to buy cialis online forum
    where can i buy cialis over the counter buy cialis professional best way to buy cialis
    how to legally buy viagra safe site to order viagra where to get low cost generic viagra
    payday loans uk payday loans online same day how many payday loans can you have
    loans for very bad credit bad credit personal loans guaranteed approval

    Reply
  97. Candice

    Do you mind if I quote a few of your posts as long as I provide credit and sources back to your weblog?

    My blog site is in the exact same area of interest as yours
    and my visitors would genuinely benefit from a lot of the information you provide here.
    Please let me know if this okay with you. Thanks a lot! Fucking Porn Girls (Candice)

    Reply
  98. DanielMab

    buy viagra and cialis online genericcialisonline1 can i buy cialis over the counter at walgreens?
    buy cialis without a prescription genericcialisonline2.com buy cialis 5mg daily use
    buy cialis online using paypal genericcialisonline3 can you buy cialis over the counter at walmart
    cost of generic viagra at walmart genericviagraonline how to buy teva sob for viagra in canada
    payday loans reno paydayloans03.com guaranteed approval payday loans no telecheck
    private loans for bad credit badcreditloans03.com

    Reply
  99. Transtape

    I’m not that much of a internet reader to be honest but your blogs really nice, keep it up! I’ll go ahead and bookmark your site to come back later. Cheers

    Reply
  100. Williamjeasy

    cheapest place to buy cialis where can i buy cialis buy cialis usa
    buy cialis cheap prices fast delivery can you buy cialis over the counter in spain buy real cialis online
    can i buy cialis online buy cialis online without script can you buy cialis without a prescription
    generic viagra in norman oklahoma viagra pills generic cheap viagra with bitcoin
    top payday loans most trusted payday loans online local payday loans
    low income bad credit loans installment loans online for bad credit

    Reply
  101. Thomaskency

    buy cialis 5mg online buy cialis pill buy cialis from india
    buy cialis no prescription buy generic cialis online safely buy cialis usa
    can you buy cialis over the counter? buy cialis online cheap where to buy cialis generic
    generic viagra canada lowest price online what are the names for generic viagra ia in india cheap viagra online usa
    nevada title and payday loans, inc. las vegas, nv same day online payday loans payday loans online direct lenders instant approval
    guaranteed tribal loans bad credit payday loans with bad credit

    Reply
  102. Williamjeasy

    buy cialis on ebay buy cialis canadian where can i buy generic cialis
    buy cialis generic online how can i buy cialis buy cheap cialis
    is it safe to buy cialis online buy generic cialis buy cialis online overnight
    generic viagra no perscription generic viagra available in usa cheap alternatives to viagra
    payday loans bad credit online direct lender payday loans payday loans with no credit check
    start up business loans for bad credit guaranteed student loans for bad credit

    Reply
  103. RodneytoK

    where to buy liquid cialis genericcialisonline1 can i buy cialis over the counter
    buy cialis 5 mg genericcialisonline2.com buy cialis overnight delivery
    can you buy cialis over the counter genericcialisonline3.com buy cialis from mexico
    is generic viagra available in the united states wikipedia genericviagraonline.us.com viagra generic on amazon
    installment loans for bad credit no payday loans paydayloans03 payday loans no credit checks
    loans for really bad credit lenders only badcreditloans03.com

    Reply
  104. Rickyfug

    buy cialis overnight delivery buy cialis canada online buy cialis from mexico
    buy cialis canada online how can i buy cialis online buy cialis online overnight
    where to buy cialis online forum buy cialis online without script buy online cialis
    viagra generic walmart generic viagra trusted pharmacy where is the cheapeset drug store to buy viagra
    why are payday loans bad quick payday loans payday loans with monthly payments
    private investor loans bad credit startup business loans bad credit no collateral

    Reply
  105. Knee relieve review

    I needed to compose you a bit of note to finally thank you so much over again relating to the amazing pointers you’ve provided in this case. It was quite pretty open-handed with you to convey unreservedly just what many individuals could have made available as an e book to make some bucks on their own, mostly since you could have done it if you ever desired. These tactics likewise acted to be the good way to comprehend other people online have a similar passion similar to my own to know good deal more on the subject of this condition. Certainly there are several more pleasurable situations ahead for individuals who examine your website.

    Reply
  106. Knee relieve review

    Hi there I am so delighted I found your blog, I really found you by mistake, while I was searching on Aol for something else, Anyways I am here now and would just like to say thanks a lot for a fantastic post and a all round entertaining blog (I also love the theme/design), I dont have time to browse it all at the moment but I have book-marked it and also added in your RSS feeds, so when I have time I will be back to read much more, Please do keep up the great work.

    Reply
  107. Knee relief reviews

    I’m also writing to let you understand what a incredible experience our child had reading your blog. She realized several details, not to mention what it’s like to possess a marvelous giving spirit to make other folks easily know various complex matters. You actually exceeded our own expectations. I appreciate you for producing those priceless, healthy, revealing and in addition easy tips about that topic to Ethel.

    Reply
  108. Timothyalini

    where to buy cialis over the counter genericcialisonline1 can i buy cialis in mexico
    buy cialis usa genericcialisonline2.com buy cialis cheap prices fast delivery
    can you buy cialis over the counter in spain genericcialisonline3.com buy cialis professional
    how can i buy viagra over-the-counter genericviagraonline.us.com when does generic viagra come out
    online payday loans with bad credit paydayloans03.com guaranteed payday loans no matter what direct lender
    low interest auto loans for bad credit badcreditloans03

    Reply
  109. Rickyfug

    buy cheap cialis online buy generic cialis online uk buy generic cialis no prescription
    buy cialis generic online cheap buy cialis online without a prescription can i buy cialis in canada
    buy cialis pro buy cialis buy cialis overseas
    generic viagra sold in stores generic viagra 100mg generic viagra order canada
    payday loans maryland no teletrack payday loans utah payday loans
    bad credit mobile home loans guaranteed approval bad credit loans direct lenders

    Reply
  110. Rickyfug

    buy cialis 20mg online buy cialis canadian buy cialis no prescription
    where can i buy cialis over the counter at walmart where to buy cialis buy cialis with prescription
    buy cialis online canadian pharmacy can i buy cialis without a prescription buy cialis in usa
    sildenafil generic for viagra price teva will charge for generic viagra 100mg is generic viagra available in usa?
    payday loans columbus ohio payday loans augusta ga guaranteed approval payday loans no telecheck
    unsecured loans bad credit used car loans bad credit

    Reply
  111. http://firstdateideas.com/__media__/js/netsoltrademark.php?d=funkytube.topcategoryshaved

    It is appropriate time to make a few plans for the future and it’s time
    to be happy. I have read this post and if I could I wish to
    counsel you some attention-grabbing things or tips.
    Perhaps you can write next articles relating to this article.
    I wish to read even more issues about it! Photo ONLINE (http://firstdateideas.com/__media__/js/netsoltrademark.php?d=funkytube.top%2Fcategory%2Fshaved%2F)

    Reply
  112. Ilene Dripps

    Hi there, just became aware of your blog through Google, and found that it’s really informative. I’m going to watch out for brussels. I will appreciate if you continue this in future. A lot of people will be benefited from your writing. Cheers!

    Reply
  113. Danika Mcclenty

    Thank you, I’ve just been looking for info about this topic for ages and yours is the greatest I have discovered so far. But, what about the bottom line? Are you sure about the source?

    Reply
  114. Timothyalini

    where can i buy cialis in canada genericcialisonline1 buy cialis non prescription
    where to buy cialis without prescription genericcialisonline2.com buy cialis online with paypal
    buy cialis on line genericcialisonline3.com do you need a prescription to buy cialis
    cheap generic viagra reviews genericviagraonline buy viagra online cheap
    payday loans springfield mo paydayloans03.com quick and easy payday loans
    direct lenders for bad credit loans badcreditloans03.com

    Reply
  115. Tandy

    Greetings from Colorado! I’m bored to death at work so I decided to check
    out your website on my iphone during lunch break. I really
    like the info you provide here and can’t wait to take a look when I get home.
    I’m amazed at how fast your blog loaded on my phone ..
    I’m not even using WIFI, just 3G .. Anyways, amazing site! Fucking Hot Porn Pics (Tandy)

    Reply
  116. Rickyfug

    buy discount cialis best place to buy generic cialis online best place to buy cialis
    buy cialis online canada buy cialis without prescription buy generic cialis online canada
    buy cialis usa how to buy cialis can u buy cialis over the counter
    the facts about generic viagra cost of generic viagra cheap viagra “no prescription” kamagra
    arizona payday loans payday loans no credit check no employment verification direct lender payday loans georgia
    best auto loans for bad credit home mortgage loans with bad credit

    Reply
  117. write my essay

    I’m really impressed with your writing abilities as smardtly as with thhe layout forr your
    blog. Is ths a paid subject or did you customize it
    yourself? Either way keep up the nice high quality writing,
    it is uncommon to look a nice blog like this one tyese days..

    https://howtowrite5paragraphessay557.blogspot.com/2020/10/custom-term-paper-writing-service.html
    write myy essay
    write my essay
    https://elementsofessaywriting643.blogspot.com/2020/10/best-custom-research-paper-writing.html

    Reply
  118. Marc Theam

    Great web site you have here.. It’s difficult to find high-quality writing like yours nowadays. I seriously appreciate individuals like you! Take care!!

    Reply
  119. Kary Boor

    I really like your blog.. very nice colors & theme. Did you design this website yourself or did you hire someone to do it for you? Plz answer back as I’m looking to construct my own blog and would like to know where u got this from. thank you

    Reply
  120. Rickyfug

    how to buy cialis without a prescription where can i buy cialis buy cialis pro
    buy cheap cialis online where can i buy cialis cheap buy cialis professional
    buy cialis generic tadalafil buy cialis uk buy cialis canada online
    cialis viagra levitra cheap generic viagra trusted pharmacy generic viagra samples
    how many payday loans can you have in florida payday loans that accept netspend accounts payday loans online no credit check
    loans for bad credit ny unsecured startup business loans bad credit

    Reply
  121. Brianspoth

    buy cialis online in usa genericcialisonline1.com where to buy cialis in canada
    buy cialis canadian pharmacy genericcialisonline2.com where to buy cialis online safely
    how to buy cialis over the counter genericcialisonline3 how to buy cialis without a prescription
    generic for viagra genericviagraonline walmart pharmacy price check generic viagra
    payday loans with no credit check paydayloans03.com payday loans direct lenders
    bad credit installment loans direct lenders badcreditloans03.com

    Reply
  122. Robert Rameres

    Today, I went to the beach front with my children. I found a sea shell and gave it to my 4 year old daughter and said “You can hear the ocean if you put this to your ear.” She placed the shell to her ear and screamed. There was a hermit crab inside and it pinched her ear. She never wants to go back! LoL I know this is entirely off topic but I had to tell someone!

    Reply
  123. Santa Barbara SEO

    It is the best time to make a few plans for the future and it is time to be happy. I have read this post and if I may just I wish to counsel you few interesting things or advice. Perhaps you could write subsequent articles relating to this article. I desire to learn more issues approximately it!

    Reply
  124. Rickyfug

    where can i buy generic cialis buy cialis without prescription how to buy cialis cheap
    buy viagra and cialis online buy online generic cialis buy cialis with paypal
    buy cialis from canada buy cialis pills online buy cialis pills online
    is viagra now available in generic form generic viagra cost at walmart generic viagra in usa
    payday loans tucson payday loans with bad credit payday loans reno
    legit loans for bad credit debt consolidation loans bad credit

    Reply
  125. Walnut Creek SEO

    My brother recommended I might like this blog. He was totally right. This post actually made my day. You cann’t imagine just how much time I had spent for this info! Thanks!

    Reply
  126. Rickyfug

    can you buy cialis over the counter? cialis where to buy where can i buy generic cialis
    can you buy cialis over the counter at walmart buy cheap cialis where can you buy cialis over the counter
    how to buy cialis over the counter buy cialis on ebay buy cialis online in usa
    do you need prescription for generic viagra viagra 100mg generic viagra fda approved generic viagra soft
    payday loans bad credit online payday loans direct lender first payday loans
    home improvement loans for bad credit installment loans for bad credit direct lenders

    Reply
  127. Lorna Budworth

    Hi there I am so happy I found your blog page, I really found you by error, while I was searching on Bing for something else, Nonetheless I am here now and would just like to say cheers for a marvelous post and a all round entertaining blog (I also love the theme/design), I don’t have time to look over it all at the moment but I have book-marked it and also added in your RSS feeds, so when I have time I will be back to read more, Please do keep up the excellent work.

    Reply
  128. http://www.mataxi.com

    Hello, i read your blog from time to time and i own a similar one and i was just wondering if you get a lot of
    spam responses? If so how do you prevent it, any plugin or anything you can advise?
    I get so much lately it’s driving me crazy so any support is very much appreciated. Gape Sex Pics [http://www.mataxi.com]

    Reply
  129. carpet cleaning brentwood ca

    I do agree with all the ideas you’ve presented in your post. They are very convincing and will certainly work. Still, the posts are very short for beginners. Could you please extend them a bit from next time? Thanks for the post.

    Reply
  130. www.paymentcardinfo.com

    Thanks for your marvelous posting! I quite enjoyed reading it, you might be a great author.I will be sure to bookmark your blog and will come back from now on. I want to encourage continue your great job, have a nice morning!

    Reply
  131. Tylervob

    where to buy cheap cialis online buy cialis online without script buy cialis over the counter
    safe place to buy cialis online buy cialis on line buy viagra and cialis online
    buy cialis super active buy cialis online do you need a prescription to buy cialis
    generic viagra lowest prices generic viagra india 100mg buy viagra
    payday loans salem oregon fast payday loans online payday loans no checking account or savings account
    bad credit cash loans private student loans for bad credit

    Reply
  132. WilliamSoype

    best way to buy cialis buy cialis non prescription buy generic cialis online safely
    buy real cialis buy cialis online overnight shipping buy cialis india
    buy cialis online canada buy generic cialis online how to buy cialis from canada
    generic viagra c89 pill sildenafil citrate generic viagra 100mg teva generic viagra online
    easiest payday loans to get approved for guaranteed payday loans online payday loans california
    best loans with bad credit car loans with bad credit no money down

    Reply
  133. WilliamSoype

    buy cialis online no prescription cialis buy online buy cialis 5mg daily use
    cheapest way to buy cialis buy cialis on ebay buy discount cialis online
    buy cialis non prescription buy cialis professional buy liquid cialis
    what is the brand name for the generic drug for viagra in canada generic viagra extra dosage recommendations no prescription generic viagra 150 mg
    fast payday loans no credit check payday loans owasso payday loans mn
    government small business loans for bad credit student loans with bad credit

    Reply
  134. fluidassist.com

    Appreciating the dedication you put into your blog and in depth information you present.
    It’s awesome to come across a blog every once in a while that isn’t the same unwanted rehashed material.
    Fantastic read! I’ve bookmarked your site and I’m including your RSS feeds to my Google account. Porn Videos; fluidassist.com,

    Reply
  135. Mi Hotek

    Heya i am for the first time here. I found this board and I find It truly useful & it helped me out much. I hope to give something back and help others like you aided me.

    Reply