| Current Research | Projects | Publications | Collaborators | Curriculum Vitae |
Texture Re-mapping
The texture re-mapping project was intended to assist in the simplification of high detail meshes. Mesh decimation algorithms may be used to simplify polygonal meshes with a large number of faces. If the original high detail mesh has a texture attached to the mesh geometry it is non-trivial to map the texture onto the simplified geometry. This problem was solved, and the texture re-mapping process augmented to simulate the lost geometrical detail from the source model.
The following model of an ammonite, courtesy of 3D Scanners, has 61794 faces.
![]()
The following model is a decimated mesh derived from the 61794 face model using software developed by Laurence Bourn. It has only 859 faces. Various mesh decimation strategies have been designed, generally aiming to preserve geometrical characteristics of the original mesh while reducing the number of faces. The model below has the same general shape as the original model despite having almost 100 times fewer faces.
![]()
Since the decimated model above is shaded according to the angle of each face to the view point, each face is clearly identifiable. In fact the first model is shaded in the same way, but there is such a density of faces that the individual faces form an apparent surface texture.
Conventionally, an image is used to simulate the surface texture, since it is not in general feasible to use models with such high surface detail. The model below has 61794 faces, and a marble texture image. In this case the texture image provides the appearance of colour veins over the surface, and the geometry of the model provides the sense of surface roughness and ridges.
![]()
In this project it was assumed that the mapping according to which a surface texture image was applied to the object would not be known. It was simply given that each vertex of each face would have a texture coordinate in a texture image. It could not be assumed therefore, that the texture mapping was orthogonal, cylindrical or spherical, etc . This ensures that the texture re-mapping algorithm can handle arbitrary texture projections, and models derived with arbitrary texture maps such as may result from photogrammetry techniques.
In fact it is relatively straightforward to project the texture from one object onto another. Texture patches are assigned for each face of the simplified mesh, and re-mapped individually. The vertex normals are derived by averaging the normals of all the adjacent faces, and the normal at a given point on a face is smoothly interpolated from the vertices. This ensures that the normals smoothly vary across the whole mesh surface. In order to re-map a given point, the intersection of the corresponding normal with the original model is used to pick a specific point on the original model and thus find the appropriate texture element.
![]()
The texture image for the simplified model may thus be determined. However, the geometrical characteristics of the original model are lost in this process and the simplified model will appear smooth and characterless by comparison. Two techniques for maintaining the appearance of the surface geometry were therefore developed.
The first method considers the angular difference between the intersecting normal described above and the normal of the original mesh at the point of intersection. The new texel was shaded according to the magnitude of this difference. The rationale behind this technique was to identify specifically, areas in which geometrical detail had been lost. In the example below, the ridges, central circle and surface roughness, lost in the decimation process, are emphasised by this normal based shading process. The shadows appear inconsistently with respect to the light source, but nevertheless give a strong impression of surface detail.
![]()
The image above was rendered without any additional shading, and the model below was rendered with Phong surface shading (based on the simplified geometry of this mesh).
![]()
The second technique was inspired by the observation that the normal based shading technique tends to emphasise high frequency shape detail lost due to the geometrical smoothing of mesh simplification. In order to preserve and emphasise the low frequency shape information, the textures were shaded according to mesh geometry prior to re-mapping. This shading was applied using the local accessibility shading algorithm proposed by Miller. ( Efficient algorithms for Local and Global Accessibility Shading , Computer Graphics Proceedings, Annual Conference Series 1994, SIGGRAPH 94).
The basic approach of accessibility shading is to assess the accessibility of a given point on a mesh as the radius of the largest tangent sphere that touches the point, but does not intersect any part of the mesh. For convex surfaces this radius is infinity and no shading occurs. For concavities, the radius is limited by the proximity of adjacent mesh surfaces. As such, points on mesh concavities are shaded progressively darker the deeper into the concavity they are. A few small modifications to the algorithm were necessary.
![]()
The image above shows the effect of accessibility shading. It tends to emphasise the low frequency surface undulations of the original mesh, and some surface roughness. When the two shading techniques are combined the results preserve a reasonable approximation to both the low and high frequency shape characteristics.
![]()
When the model is viewed with Phong shading it may be seen that a very good impression of the surface detail is maintained despite the heavily decimated geometry of the model.
![]()
The model does however appear smoother than the original. This is largely due to the arbitrary direction of shadowing on the surface. Since it is not known from which direction the simplified model will be viewed, it is not possible to pick a consistent single light source from which to generate surface shading. The ridges are therefore shaded on both sides in the simplified model whereas they are shaded from a single side in the original model where they appear more prominent. Likewise, the general low frequency geometry is conveyed, but due to the arbitrary orientation of the simplified model, the surface also appears darker and dirtier than the original model.
One of the problems inherent in this work was the efficient storage of the textures for the simplified model. Since the surface geometry is derived automatically, there is no obvious segmentation of the mesh into texture regions. It was therefore decided to assign the texture patches for each face individually and pack them into a single rectangular image. Since the texture patches were all triangles of known size (determined from mesh geometry by an arbitrary resolution parameter) the corresponding 2D texture triangles could be assembled and rotated, flipped, or translated as desired.
The general approach to packing was to prepare all the triangles in "mountainised" form, where the longest edge formed a horizontal base underneath the peak vertex. The triangles were placed in a list and sorted by decreasing height. The area required to pack the triangles was estimated by summing all of their areas, multiplying by an empirically determined factor of about 1.3 and taking the square root. The resulting distance was taken to be the maximum row length, and the triangles were packed into row sets. It was necessary to check the maximum row length against the maximum width of all the triangles to ensure that each triangle could indeed be packed.
![]()
Rows were packed experimentally by selecting a portion from the top of the height sorted list and resorting it by base edge corner angle (each triangle appeared twice in this angle sorted list since it has two base corner angles). Triangles were then places against the floor and ceiling of the row alternately. The remaining triangle with the closest matching corner angle was selected so that this packing could be as tight as possible. Each triangle was placed the closest of three possible non-intersecting positions as shown below. The ceiling height of the row was fixed by the height of the first (tallest) triangle from the portion extracted from the height sorted list.
![]()
Since the lists were sorted, the packing process was very quick so it was possible to bisectively search for the largest portion of the height sorted list that would pack into a row of suitable width. The resulting efficiency was between 70 and 80 percent by comparison with the total area of the triangles (which gives the minimum area limit for the packing).
![]()
This project is presented formally as a paper, and an M.Sc. thesis.
Last Update 10th March 2006
webmaster@joshhale.com