Наложение текстуры

Страницы работы

5 страниц (Word-файл)

Содержание работы

Texture mapping - Наложение текстуры

Basicly, there are two ways of doing Texture mapping. One way, you calculate normals for the vertices in a face, and the face normal itself. Then you follow the normal procedure of a phong approximations, without rotating the normals though. This results in texturemapping, but since phong approximations are so alike texturemapping, the diffrence will, between this and the other way, be very small. Anyway, the other way of doing Texturemapping is to read the U and V coordinates from an 3d object file, or to make an util from where you can make them yourself. Now, What you do is to apply U and V coordinates to your object in a 3d program which allows this, and then load that 3d object in your engine. This should add some new variables to each of your vertices, since every vertex have its own set of UV coordinates. Now, this method, the second, we will use as a texturemapper. But what is UV coordinates?

Просто, имеются два способа выполнения наложения текстуры(НТ). При одном способе, вы вычисляете нормали вершин плоскости, и нормаль к поверхности непосредственно. Затем Вы следуете за нормальной процедурой фонг аппроксимаций, без того, чтобы вращать нормали. Это приводит к НТ, но так как фонг аппроксимация подобна НТ, различие будет, между ними быдет очень маленьким. При другом способе выполнения НТ беруться U и V координаты из 3d файла объекта, или надо сделать утилиту для того чтобы сделать их непосредственно. Теперь, что вы должны сделать для того чтобы применить U и V координаты к вашему объекту в 3d программе, которая позволяет это, и затем загружать тот 3d объект в вашем двигателе. Это должно добавить некоторые новые переменные к каждой из вашей вершин, так как каждая вершина имеет собственный набор UV координат. Теперь, этот метод, второй, мы использует как НТ. Но что такое UV координаты?

Basicly, U and V are other words for X and Y, but since we have already used the letters XY so many times, it would confuse even more. So, UV are XY coordinates, but for what? Well, they are pointers to a map, and you might call this map, texture, or thats what most people do anyway. The texture can be a map of any size at all, but since we would like to make this example as easy as possible we start with logic width and height numbers, namely 256*256. Now, each vertex had its own position on this texture, and on a face where we have three vertices, we also have three diffrent kinds of UV coordinates. Now, all we actually have to do is to draw lines from each vertex UV coordinates to the other, like we did with flatfillers, gouraud shading or any other filler which draws a face. In this case you just have to think of the Xslope and the ZSlope in Gouraud as Uslope and VSlope in texturemapping. But why is that? Well, basicly we find the UV coordinates for each point on the edge of the face this way, which is deeply needed if we which to have anything printed on the screen with texture on it. Now, we make two new slopes called Uslope and Vslope. They are defined by saying: uslope = (u2-u1)/(x2-x1) and vslope = (v2-v1)/(x2-x1). These lines we include in our scanedge routine, which parameters would look like this:

Просто, U и V - другие слова для X и Y, но так как мы уже использовали символы XY так много раз, это путало бы даже больше. Так, UV - XY координаты, но для кого? Хорошо, они - указатели в картинке, и Вы могли бы называть этот маппинг, текстуру, как большинство людей делает во всяком случае. Текстура может быть картинкой любого размера вообще, но так как мы хотели бы делать этот пример как проще, насколько возможно мы начинаем с логической ширины и высоты, а именно 256*256. Теперь, каждая вершина имеет собственную позицию на этой текстуре, и на поверхности, где мы имеем три вершины, мы также имеем три различных вида UV координат. Теперь, все, что мы фактически должны делать, должны рисовать линии из каждой вершины UV координаты к другой, подобно как мы делали с плоским заполнением, гуро оттенением или любым другим заполнением, который рисует поверхность. В этом случае Вы только должны думать о Xslope и ZSlope в Гуро как Uslope и VSlope в НТ. Но почему это? Хорошо, просто мы находим UV координаты для каждой точки на крае поверхности этим способом, который глубоко необходим если мы, чтобы иметь что - нибудь нарисованное на экране с текстурой. Теперь, мы делаем два новых наклона по имени Uslope и Vslope. Они определяются,  скажем: uslope = (u2-u1) / (x2-x1) и vslope = (v2-v1) / (x2-x1). Эти линии, которые мы включили в наш scanedge процедуру, параметры которой выглядели следующим образом:

Информация о работе