nehe第十一课飘动的旗帜waving texture实现原理

来源:互联网 发布:东方卫视直播软件 编辑:程序博客网 时间:2024/04/30 14:52

我认为这个实现过程最关键的两部分

一是用平面模拟曲面

二实现波动效果

第一部分

for(int x=0; x<45; x++)
{
// Loop Through The Y Plane
for(int y=0; y<45; y++)
{
// Apply The Wave To Our Mesh
points[x][y][0]=float((x/5.0f)-4.5f);
points[x][y][1]=float((y/5.0f)-4.5f);
points[x][y][2]=float(sin((((x/5.0f)*40.0f)/360.0f)*3.141592654*2.0f));
}
}

可以想象成一个大的正方形被分割成44*44个小方格

每一竖条小方格在一个平面上,通过这些小竖条来模拟正弦曲面。

第二部分原文讲得比较清楚了。就是依次把后边的平面位置给前面的,再把最前面的给最后一个。就像循环左移一样。

for( y = 0; y < 45; y++ ) // Loop Through The Y Plane
{
hold=points[0][y][2]; // Store Current Value One Left Side Of Wave
for( x = 0; x < 44; x++) // Loop Through The X Plane
{
// Current Wave Value Equals Value To The Right
points[x][y][2] = points[x+1][y][2];
}
points[44][y][2]=hold; // Last Value Becomes The Far Left Stored Value
}

0 0
原创粉丝点击