video morphing for slow motion!

Hello everyone. So I was (am) having this problem. I rendered some animation, but now i think i need to slow it down.
The problem is, rerendering everything and making everything twice as long is not an option, sins one frames rendering time is around an hour.
so i was thinking how to slow animation without rerendering… how to get more frames…
and then i remembered video morphing. So. first of all have to mention that the content of my animation is water surface.
Just water with waves. thats it. No characters or theyr faces.
So if anyone knows that this is already done, please let me know, i would like to try employ this technique in my work.
But the basick idea is, to write a script or separate program which tasks would be>
1. detect motion in frames. thats already possible in lots of software. think of motion tracking. the idea is we detect a part of video frame which is similar in next frame but its position changes. So this is already possible to do with lots of softwares. If i am not mistaken also it is part of mpeg video compression.
now step 2, would be to connect this automatic process with video morphing. You remember this “effect” when we have a photo of one person and it “nicely” “morphs”
to other person. So thats exactly what i was thinking to do.
To take two frames. detect “objects” using motion tracking.
and then user would need to say how many frames in between he wants to add. so lets say adding one frame would increase video time twice. two frames would make total time 3 times long.
and then in ideal case program or script would make inbetweens.
The problem here is that user usually has to “tell” program how the morphing is done. Usually user has to draw curves around object, then take that curve put it on next frame and  move points of to mach next object.
well if someone has a better descrotion, pls correct me :)
i hope its still kind of understandable.
ok ill try to find some links, which is hard if i dont whant to advertise any specifict software product :)

And other VIDEO
it shows how its done, i mean the curve drawing.



couple of hints for bloging.

first chek wiki. i forgot. thats a link.

but thats not a mistake. mistake is DO YOUR RESEARCH BEFOREU WRITE!

so, ofcource i am not a first to come up with this techniqe.

read this article!


implicit surfaces, aka blob mesh, and metaballs.

ok, its a long time. so some thoughts on implicit surfaces and their topology. so why do we talk about it in first place, its becouse of its ugly topology. metaballs are so cool, but hardly usable in animations and in other fields cos of irregular and ever chaging mesh topology, so what do we do? lets think.

first, a description of implicit surface as i understand it.

2.2.3 Implicit surfaces (Bloomenthal 1987)

Implicit surfaces are also known as “Metaballs”, “Blobbies” or “Soft objects”.

Implicit surface is a technique first introduced by Jim Blinn in 1980. The idea is to have control objects, which determine the resulting surface. Each control object generates a sphere around itself. When two or more controller objects are close together, the resulting surface will “melt” together. So instead of two spheres one will have two spheres which are connected and form a “blobby” single surface shape. How much the resulting surfaces blob together is a result of distances from controlling objects and of weights of these control objects. (Maestri. 1999 43-44)

so i had few ideas on the matter. pls look at a picture and tell me what u think.

ok. now as far as i understand the poligonization of such mathematical substance :) as metaball, it works like this (and pls correct me if i am wrong) the algorithm “checks” certain points in worldspace to see if that point is in or outside of this mathematical descriptio0n of metaballsurface. so basically, user determines “resolution” or level of detail he or she wants, and based on that, algorithm generates planes, to see where are boundaroes of this object in that particular plane. and planes are generated in x, y, and z. so pls look at picture beneath. so what i thought of is, why user is not able to determine how these planes are distributed and aligned? why dont we have such simple control as in uv ordinates, u know we would choose box, cilinder, sphere just like in uv layout (imagine box uv layout as a traditional plane distribution for imlicitsurfaces).

so people who have read, and understood, some of papers about implicit surfaces, including old john blinns texts, tell me do i bulshit or that could be a very small step towards better topology?

and some links to read more: here

and as usual link to my other website here

continuing posts on biological stuff which shuld be generated in 3d tree generators

Some trunks form a unique shape and architecture. Trunks of Ponderosa pine grow twisted. If the bark is removed, the spiral architecture of the trunk’s wood can be observed. There were many theories regarding reasons of such growth behavior. Seubpong Leelavanichkul and Andrej Cherkaev suggest, that the reasons could be mechanical, showing the strength of twisted and normal wood structures (Leelavanichkul and Cherkaev 2004). Regardless of the reason of such unusual wood architecture, it has a strong implications to be considered in the creation of visually interesting trees.

There are many insects, which feed or live in bark and tree trunks. Mainly these are insects from the beetle, to the moth and horntail wasp groups. Usually only weak or dead trees are attacked. The insects which attack healthy trees are called “primary invaders”. “Secondary invaders” are insects that start living in a tree only after the tree has already been strongly damaged by other hazards or diseases. Secondary invaders are of the previously mentioned species, but also include termites, carpenter bees and carpenter ants. Insects can not only harm a tree but also kill it. Usually the presence of such invaders is only noticeable after parts of tree start to tear off the main structure and tree starts to die. Many of such insects produce sawdust like particles which are excrements (Buss and Foltz 1993).


Fig 1. Wood-boring insect’s damage to Flat Headed Apple tree. Picture taken from:

Frank Hale. 2007. Drought and Wood-Boring Insects, Ornamental Pest and Desease Update, UT Extention.

It has been noted that weakened trees are sometimes heavily covered with moss. The reason for this is that such trees often loose big amounts of leaves, which allow for more light to reach the trunk and branches’ surfaces. The increased light makes moss grow very fast (Gilman 1991). While it is not a tree defect, it should be addressed when wanting to model visually appealing trees.

Trees can be severely injured by fire which could be a normal forest fire or a fire resulting from lightning. Bark serves as a protection layer. It is a low conductor of heat, and saves inner layers of wood from fire. Bark protection is different amongst different tree species. The Bark’s texture and shape also has an influence on its’ fire resistance. Cross sections show that trees after a fire with thicker bark, haven’t been badly injured, while thin barked Red Maples were more frequently and severely damaged. The majority of the trees survive fire damage, and only small fire wounds are left. Usually trees manage to grow new wood layers, and therefore hide burned wood. Well defined injury boundaries usually result from a successfully stopped decay. Small and well defined wounds usually are surrounded by healthy new layers of wood (Smith and Sutherland 2006).



Roots are the part of a plant which is usually beneath the ground, and serves as a food store, and mechanical support. Also, minerals and water are being absorbed by the tree through the roots. The shapes of roots vary. Oaks and Pines, when grown in sandy and dry soil, develop so called tap roots. Tap roots are roots which grow directly beneath the trunk. Usually, urban trees do not develop such roots, and they are not common if there is enough water in the ground (Perry 1982). Roots don’t follow a specific growth pattern rather, they grow where there are more minerals or water. Since roots also need oxygen, most of them do not grow very deep. Also, roots do not grow where the soil is very hard as they tend to avoid such areas. The area that the roots occupy is usually bigger than the size of the tree canopy, sometimes it may be as big as the height of the tree, but in many cases it grows 2 or 3 times bigger then the tree’s height in first 3 years of planting (Perry 1982).

In trees such as Oaks, there is a strong connection between the root’s position and its’ leaves. If the roots are injured the tree will drop its’ leaves at the same side where injury took place, while trees such as Maples loose leaves on random branches. The majority of tree roots are situated very close to the ground’s surface, which makes trees vulnerable (Gilman 1991).

A griding root is a common reason for a Maple’s decline. It is a root which grows around the main trunk. As the trunk and the roots grow bigger in diameter, it starts to strangle the trunk. This strangling disturbs the mineral and water flow from the root system to the leaves, and becomes problematic for the tree. It can eventually lead to a tree’s decline, or in some extreme cases, to its’ death. A griding root is not limited to but usually effects human planted trees, and it happens because of the way the seedling was planted. Therefore one should be careful in root positioning when planting a tree (Forest Resources Extension).

Another reason for a tree’s decline is a situation where the roots are visible above the ground. This is caused by erosion. This occurs most commonly when a tree is growing on a hill. Also in soil, which consists of clay based materials, a tree can be prone to erosion. Weather conditions also contribute to exposure of the tree’s roots. Trees with exposed roots are not so resistant to dry out periods which contribute to possible tree decay or death (McAuliffe et al. 2006).


You can visit my web page here

and see some “manually” modeled trees here

dont like english? u can (try) readig it in lithuanian or anny other language here! alternative, has no lithuanian :(

5.2 Prototype Comparison

ok, sorry for such long scilence.

i was away, abrod, home and so on…..


The following figures show some tree trunks generated with Vue6 personal learning edition and trunks generated with Xfrog 3.5 demo version which will be shown in comparison with some models generated with by the automatic tree generator which I propose in this thesis.

standard xfrog tree model

Fig 36. Trees generated in Xfrog

standart vue 6 trees

fig 37. trees in Vue6

tree trunk generator

Fig 38. tree trunks created with trunk generator prototype


You can visit my web page here

dont like english? u can (try) readig it in lithuanian or anny other language here! alternative, has no lithuanian :(

4.4.2 Hole Determination Based Upon Overall Tree Structure

4.4.2 Hole Determination Based Upon Overall Tree Structure

In this method a more advanced hole generator approach is used whereby holes are created at the intersection of big branches. The first potential place is the trunk and first branch intersection. The further the branching is from the trunk the less reason for a highly detailed model, therefore there should be a limit, and intersections between small branches should not generate holes and cracks. Another good position for possible holes could be the beginning of the roots whereby a hole is determined in an area where most of the vertices angles are low also in places where the roots meet the trunk’s surface.

Now that I have described the tools and two possible methods for hole detection I will provide the necessary steps for this process. The proposed process of hole generation is based on 3d studio max 9 work flow and tools, but could be easily implemented in any other 3d modeling application or created as a stand alone solution. For the sake of simplicity random vertices on a polygonal plane will be used, instead of vertices with low angular levels in tree trunk model.

The first step in hole generation is to select a candidate vertices group, which should form a hole. After the selection is done a chamfer tool is applied. The value which describes the distances where new vertices are created, could be half of an average edge length of selected vertices’. The next step would be to connect newly created vertices via the chamfer tool. The connection tool creates new edges between newly created vertices. Edge selection is converted to a polygon selection. See figure 33 where it describes the fourth step.

max hole

Fig 33. Proposals visualization.

Fig 33.first four steps in hole creation. The red dots represent selected vertices, red lines selected edges, and red shaded area represent selected polygons.

As Figure 33 shows the resulting polygon selection is not accurate. This is due to the fact that the edge selection conversion to a polygonal selection includes all neighboring

polygons. Polygonal selection should be shrunken to get the desired result.

max hole

Fig 34. Proposals visualization.

This is shown in Figure 34. The next step is to erase all selected polygons, and select the remaining edge outline and conduct an edge extrusion. The last step shown in Figure 34 represents a subdivision algorithm applied on a mesh.

The subdivision algorithm not only generates more detailed mesh structure, but also softens the edges of it. The steps I have described are rather easy to perform due to the ability of 3d studio max to remember the last used selection and convert vertices selections to edge or polygon selections. This process should be possible in any 3d modeling software, but it might include a different order of steps, or additional steps required to achieve the same result.

Figures 33 and 34 show steps which are very easily preformed manually. But the steps are also simple enough so that the actions could be automated. To manually create a hole as shown in Figures 33 and 34 it took around 5 minutes. But if a real trunk model was used with high mesh density and many holes to generate, this process could be very long.

My recommendations if implemented would decrease the amount of time involved in current tree generation.


You can visit my web page here

dont like english? u can (try) readig it in lithuanian or anny other language here! alternative, has no lithuanian :(

4.4 Recommended Methods for Hole Generation

4.4 Recommended Methods for Hole Generation

Two methods will be proposed to determine holes position in a tree trunk.

4.4.1 Hole’s Position Based Upon Complex Trunk Surface

This proposed method for the generation of a hole begins by creating a list of all vertices of a trunk model. In a standard 3d model each vertex is connected to the other vertex by an edge. Typically one vertex has three or four connections, meaning three or four edges are connecting it to the other vertex. If we have a list of vertexes and their spacial positions in a 3d coordinate system, we can calculate angles that makes those connections. In order to know the angle we have first to have two edges that directly connect to the vertex we are discussing. Now following the same procedure we can make a list in which all vertices would be sorted out by their edge angular values. The lowest values are a good candidate for the position of a crack in a tree surface or hole.

As figure 32 illustrates the angles are measured on the outside surface of a trunk. In this example angles are calculated only between horizontal edges and not vertical for sake of simplicity. A fully functional approach should be able to handle vertices which have only 3 or another irregular number of connections as opposed to four connections.


Fig 32. Proposals visualization.

The list of vertices and their edges value are sorted, according to their angular value. The lower the value the better a candidate for a hole vertex. In the example described in Figure 32, vertices 5 and 14 have the lowest angular values.

The next step is to determine groups of vertices with low angular values. According to this solution the closer two vertices with low angular values are the better candidates they are for a hole. Priority of a proposed algorithm would be not isolated vertices but instead groups of vertices with low angular values. This method would be one way to determine a possible crack and hole start position.

There are other situations when holes appear, and different methods are still to be found to determine the position of holes. The next section focuses not only on groups of vertices for hole generation but also on the location of these holes and where they might be more appropriate.


You can visit my web page here

dont like english? u can (try) readig it in lithuanian or anny other language here! alternative, has no lithuanian :(

4.3.1 Tools for Automatic Tree Hole Generator

here some tools will be presented which are in 3dmax. the same tools are probably in all 3d modeling programs but sins i am familiar with max, i will kind of talk in its terms.


In order to describe this aspect of hole generation as part of a proposal for an automatic tree generator it is important to introduce some tools related to this process.
These tools are available in almost all 3d modeling applications and are called insert polygon, connect, extrude and chamfer.
The Insert polygon tool shrinks a selected polygon along its plane, and adds four additional polygons. Using this strategy, there is an original polygon as a boundary, and five new polygons inside. The middle one has exactly the same outline as first one, onto which we applied the tool, and others are made by connecting edges of the original polygon and new one which is smaller. This tool works not only with quadrilaterals, but also with any given polygons or polygon groups. To better understand the way this tool works please look at figure 29

Fig 29. screenshots from 3d studio max.
The Chamfer tool works with vertices. This tool can be applied on a selected single vertex or multiple vertices. In order to understand the chamfer tool, imagine a situation where one vertex is connected to four other vertices by four edges. After the chamfer tool is applied four new vertices are created on edges connecting the first original vertex to its surrounding vertices’s. The distance is always specified by the user and then the newly created vertices are connected with new edges. The original vertex which was selected in a first place is
erased. For clarification see figure 30.

Fig 30. screenshots from 3d studio max.
fig 30. shows selected 4 vertices (top) and resulting mesh structure after chamfer operation (bottom)
The Connect tool connects selected vertices by creating new edges. The Extrude (Landrenau 2005) is a tool which moves a selected polygon or polygons along a normal and creates new polygons that form the sides of the extrusion, connecting the selection to the object. For clarification see figure 31.

Fig 31. Picture taken from: Eric Landrenau. 2005. Crystal-Like Geometric Modeling. Thesis of Master of Science. Texas A&M University

Now that you are familiar with the tools necessary for a proposed automatic hole generator, what follows will be two approaches for the detection of where a hole a could be generated. Once this is described the proposed steps for the generation of a hole will be outlined.

dont like english? u can (try) readig it in lithuanian or anny other language here! alternative, has no lithuanian :(

4.3 Hole Generation

4.3 Hole Generation

Overview: The Origin of “Holes” in Trees

It is rare to find a perfect tree in real life usually the older the tree the more defects it will have. Holes are a common attribute of trees found in the wild as well as trees planted by humans. Usually the holes are not that big and sometimes trees have much bigger empty parts inside the trunk or in big branches. The water collects there and makes a perfect situation for rotting. Also fungus or other animals make use of such holes, usually making them become bigger and bigger. Holes can appear as a result of humidity and dead leaves, which remain in same place for a long period of time. Holes are usually noticeable in tree “forks” this means where the trunk separates and two or more steams grow. This is evident in the connections of big branches, cracks and other complicated shapes of trunks. Usually the tree does not die just from rotting, but the rotting could destroy water circulation and that could lead to the long death of a tree which could take many years. If the wind tears a branch off or if other animals or insects injure the outer layers of tree, the fungus and other kind of bacteria start to live in these places, and that makes the tree rotten (Tree Holes).

Regarding the 3d generation of a hole it should begin by determining where are possible locations for a hole in a tree stem. Detection of possible locations could be done by determining where the trunk surface is not planar. The reason, is that holes in a trunk appear in positions where a tree is injured, or where the tree’s architecture is week. There are many biological reasons for a hole’s appearance, therefore there could be many solutions. So far I have described what a hole in a tree trunk is and I have also gone into details regarding how a hole appearance can be a result of a very old tree trunk injury. In the next section I present tools used as well as two proposals for an automatic hole generation tool which detects the best position of a hole utilizing two possible methods. The first method detects a possible hole’s position based upon a trees surface and where conditions are suitable for rotting to occur. The second method has more to do with the overall structure of a tree.


some pictures from tiergarten in berlin:

tree holes

you can also wisit my portfolio.
dont like english? u can (try) readig it in lithuanian or anny other language here! alternative, has no lithuanian :(

Recommendations for Trunk Generation, part II

4.2.2 Step Two: Circle Creation

As it has been already mentioned a tree trunk model is usually based on simple cylindrical shapes. In order to create a cylinder there must be a central axis, and a circle of a certain radius which would define its outer surface boundaries. Therefore the next step to creating a trunk model is to create circles, whose centers’ have positions where by each point is in line with a guiding curve as discussed above. As each point in this curve has different positions in space, so will the resulting circles.

4.2.3 Step Three: Shape Refinement Curves

The third step in the generation of a tree trunk is to copy a guiding curve. The number of copies can be defined by the user. In example shown in Figure 28 copies have already been made. Copied curves here will be called shape refinement curves. After copying them the shape refinement curves should be off set. Off set values are also definable by the user but the default value should be the same as the radius of circle which was created in step two. The refinement curves should be distributed equally along the circle’s perimeter. For

clarification please look at Figure 28 step 3

4.2.4 Step Four: Shape Refinement Circles

Step four in the trunk generation process is to create shape refinement circles which are generated for each point along the surface of the refinement curves. The radius of the refinement circles are definable by the user yet the default value is one third of first circles’ radius.

4.2.5 Step Five: Outline Generation

In step five the generator deletes all splines since they are no longer needed. Then each circle is combined with refinement circles and all intersections are removed leaving behind only an outline. At this stage the method takes advantage of Boolean operations (see Chapter 3 for further explanation). The shapes are then added together and intersecting parts are removed. The end result being an outline of the circle and refinement circles. For clarification of this step please look at Figure 28 step5.

4.2.6 Step Six: Surface Generation

The final step in the trunk generation process would be the creation of the trunk’s surface. In order to create a surface we need to know where each vertex of our polygon mesh will be located. To obtain this information we first will reduce the quality of the outlines generated in step 5. This means the algorithm for trunk generation has to approximate the outline shapes by describing curves using a pre- defined number of points. This means we would have a list of point positions, which define locations of vertices which could then construct a mesh model of the trunk. For clarification please refer to Figure 28.

So far improvements to overall trunk generation have been presented. What follows in this section will introduce another recommendation to do with the biological origins of a “hole” in a tree trunk and a proposal for this to be included in an automatic tree generator. As a part of this explanation possible tools for this approach will be outlined.

you can also wisit my portfolio.
dont like english? u can (try) readig it in lithuanian or anny other language here! alternative, has no lithuanian :(