ActiveWorlds 3.0 Browser Texturing Problem
The Observation:
When a texture which is has one side which contrasts with the opposite side, an "edgeline" is observed. I will not use the term "seam" as this refers to the very thin gaps which sometimes occur between objects/polygons. An edgeline is, as I have been told by Young Shamus, a result of bilinear filtering. It is the small line produced along the edges of an object where the texture is being "wrapped" from one side to the edge of the other. Considering this is the default "wrap" mode of textures placed on an object, I might presume that this inherent in the way textures are applied, due to bilinear filtering. This effect can be overcome, I understand, through the use of the "clamp" mode. However, I have noticed that there are certain limitations when using this mode. Although the mode functions as indicated on the 3.0 help pages, perhaps it should be noted that it will not correctly map a texture above a UV of 1. If a texture is mapped across on object with greater than a UV of 1, the texture maps normally up to UV 1 and then is locked at the edge colors and "smeared" across the remaining UV's of the object. See the examples below.
The Examples:
The examples above where using the following objects script (one with "clamp" mode and one without--left side).
modelbegin
clumpbegin
color 1 1 1
surface .65 .4 0
lightsampling vertex
texturemodes foreshorten lit
#!textureaddressmode clamp
vertex -.4 0 -.4 uv 0 0
vertex 0 0 -.4 uv 1 0
vertex .4 0 -.4 uv 2 0
vertex -.4 0 0 uv 0 1
vertex 0 0 0 uv 1 1
vertex .4 0 0 uv 2 1
vertex -.4 0 .4 uv 0 0
vertex 0 0 .4 uv 1 0
vertex .4 0 .4 uv 2 0
texture redgrid2
triangle 4 2 1
triangle 4 5 2
triangle 5 3 2
triangle 6 3 5
texture yellowgrid2
triangle 8 6 5
triangle 9 6 8
triangle 5 4 7
triangle 7 8 5
clumpend
modelend
Another example of smearing effect below:
The example above was using the following object script.
modelbegin
clumpbegin
color 1 1 1
surface .65 .4 0
lightsampling vertex
texturemodes foreshorten lit
#!textureaddressmode clamp
vertex -.4 0 -.4 uv 0 0
vertex .4 0 -.4 uv 2 0
vertex -.4 0 0 uv 0 1
vertex .4 0 0 uv 2 1
vertex -.4 0 .4 uv 0 0
vertex .4 0 .4 uv 2 0
texture redgrid6
triangle 4 2 1
triangle 1 3 4
texture yellowgrid6
triangle 6 4 3
triangle 3 5 6
clumpend
modelend
The Problem:
As you can see, there is no way to map a texture across and object more than once using clamp mode without ugly results. Needless to say, there are many occasions when I personally use UV's greater than 1 along with side-to-side contrasting textures. This limitation makes renderware object creation that much harder (as if it already wasn't difficult enough).
The Solution:
Unfortunately, there is only a choice between two evils:
1. Don't use clamp mode and learn to live with edgelines.
2. Break the object into sub-objects within the script. Each sub-object would have to have a UV no greater than 1. This has the unfortunate effect of increasing the size of the file, something that is usually avoided if possible.
A Better Solution?:
It would be great if the clamp command could be adjusted somehow to allow for greater than UV 1.
// FILE ARCHIVED ON 20010729050340 AND RETRIEVED FROM THE // INTERNET ARCHIVE ON 20040810214833.