Changeset 6684 in orxonox.OLD for trunk/src/world_entities/environments
- Timestamp:
- Jan 25, 2006, 12:37:21 AM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/world_entities/environments/water.cc
r6680 r6684 69 69 70 70 LoadParam(root, "size", this, Water, setSize) 71 72 71 .describe("the size of the WaterSurface") 72 .defaultValues(2, 1.0f, 1.0f); 73 73 74 74 LoadParam(root, "resolution", this, Water, setResolution) 75 76 75 .describe("sets the resolution of the water surface") 76 .defaultValues(2, 10, 10); 77 77 78 78 LoadParam(root, "height", this, Water, setHeight) 79 80 79 .describe("the height of the Waves") 80 .defaultValues(1, 0.5f); 81 81 } 82 82 … … 91 91 } 92 92 93 // WE DO NOT NEED THIS AS IT IS DONE IN WORLDENTITY->setModel();94 // if (this->grid != NULL)95 // this->grid = NULL;93 // WE DO NOT NEED THIS AS IT IS DONE IN WORLDENTITY->setModel(); 94 // if (this->grid != NULL) 95 // this->grid = NULL; 96 96 97 97 this->grid = new Grid(this->sizeX, this->sizeY, this->resX, this->resY); … … 126 126 void Water::draw() const 127 127 { 128 //SkyBox::enableCubeMap(); 129 130 glBindTexture(GL_TEXTURE_2D, 15); 131 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); 132 133 glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); 134 glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); 135 glEnable(GL_TEXTURE_GEN_S); 136 glEnable(GL_TEXTURE_GEN_T); 137 138 glEnable(GL_BLEND); 139 glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 140 // this->waterShader->activateShader(); 141 // this->waterMaterial->select(); 142 WorldEntity::draw(); 143 //Shader::deactivateShader(); 144 145 SkyBox::disableCubeMap(); 128 if (this->grid != NULL) 129 { 130 //SkyBox::enableCubeMap(); 131 WorldEntity::draw(); 132 glBindTexture(GL_TEXTURE_2D, 15); 133 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); 134 135 glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); 136 glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); 137 glEnable(GL_TEXTURE_GEN_S); 138 glEnable(GL_TEXTURE_GEN_T); 139 140 glEnable(GL_BLEND); 141 glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 142 // this->waterShader->activateShader(); 143 // this->waterMaterial->select(); 144 //Shader::deactivateShader(); 145 146 SkyBox::disableCubeMap(); 147 } 146 148 } 147 149 … … 150 152 if (unlikely(this->velocities == NULL)) 151 153 return; 152 /* 153 THE OLD USELESS ALGORITHM 154 phase += dt *.1; 155 for (unsigned int i = 0; i < this->grid->rows(); i++) 156 { 157 for (unsigned int j = 0; j < this->grid->columns(); j++) 154 /* 155 THE OLD USELESS ALGORITHM 156 phase += dt *.1; 157 for (unsigned int i = 0; i < this->grid->rows(); i++) 158 158 { 159 this->grid->height(i,j) = this->height*sin(((float)i/(float)this->grid->rows() *phase)+ 160 this->height*cos((float)j/(float)this->grid->columns()) * phase * 2.0); 159 for (unsigned int j = 0; j < this->grid->columns(); j++) 160 { 161 this->grid->height(i,j) = this->height*sin(((float)i/(float)this->grid->rows() *phase)+ 162 this->height*cos((float)j/(float)this->grid->columns()) * phase * 2.0); 163 } 161 164 } 162 } 163 this->grid->rebuildNormals(this->height);*/ 165 this->grid->rebuildNormals(this->height);*/ 164 166 165 167 … … 169 171 // wave/advection 170 172 // calc movement 171 for(j = 1; j < this->grid->rows() - 1; j++) { 172 for(i = 1; i < this->grid->columns() - 1; i++) { 173 for(j = 1; j < this->grid->rows() - 1; j++) 174 { 175 for(i = 1; i < this->grid->columns() - 1; i++) 176 { 173 177 u = this->grid->height(i+1,j)+ this->grid->height(i-1, j) + 174 this->grid->height(i, j+1) + this->grid->height(i, j-1) -175 4 * this->grid->height(i, j);178 this->grid->height(i, j+1) + this->grid->height(i, j-1) - 179 4 * this->grid->height(i, j); 176 180 this->velocities[i][j] += dt * this->viscosity * this->viscosity * u / this->height; 177 181 this->grid->height(i, j) += dt * this->velocities[i][j]; 178 182 } 179 183 } 180 /* // advect 181 for(j = 1; j < this->grid->rows() - 1; j++) { 182 for(i = 1; i < this->grid->columns() - 1; i++) { 183 this->grid->height(i, j) += dt * this->velocities[i][j]; 184 } 185 }*/ 184 // boundraries 185 for (j = 0; j < this->grid->rows(); j++) 186 { 187 this->grid->height(0,j) = this->grid->height(1,j); 188 this->grid->height(this->grid->rows()-1,j) = this->grid->height(this->grid->rows()-2, j); 189 } 190 for (i = 0; i < this->grid->rows(); i++) 191 { 192 this->grid->height(i,0) = this->grid->height(i,1); 193 this->grid->height(i,this->grid->columns()-1) = this->grid->height(i, this->grid->columns()-2); 194 } 195 /* // advect 196 for(j = 1; j < this->grid->rows() - 1; j++) { 197 for(i = 1; i < this->grid->columns() - 1; i++) { 198 this->grid->height(i, j) += dt * this->velocities[i][j]; 199 } 200 }*/ 186 201 // bound 187 // unsigned int w = this->grid->columns - 1;188 // for(i = 0; i < this->grid->columns; i++) {189 // _map[i][0].u[1] = _map[i][1 ].u[1];190 // _map[i][w].u[1] = _map[i][w-1].u[1];191 // _map[0][i].u[1] = _map[1 ][i].u[1];192 // _map[w][i].u[1] = _map[w-1][i].u[1];193 // }202 // unsigned int w = this->grid->columns - 1; 203 // for(i = 0; i < this->grid->columns; i++) { 204 // _map[i][0].u[1] = _map[i][1 ].u[1]; 205 // _map[i][w].u[1] = _map[i][w-1].u[1]; 206 // _map[0][i].u[1] = _map[1 ][i].u[1]; 207 // _map[w][i].u[1] = _map[w-1][i].u[1]; 208 // } 194 209 195 210 // diffusion 196 for(j = 1; j < this->grid->rows() - 1; j++) { 197 for(i = 1; i < this->grid->columns() - 1 ; i++) { 211 for(j = 1; j < this->grid->rows() - 1; j++) 212 { 213 for(i = 1; i < this->grid->columns() - 1 ; i++) 214 { 198 215 u = this->grid->height(i+1, j) + this->grid->height(i-1, j) + 199 216 this->grid->height(i, j+1) + this->grid->height(i, j-1) - … … 204 221 205 222 // calc normals 206 // float l[3];207 // float m[3];208 // for(j = 1; j < this->grid->rows() -1; j++) {209 // for(i = 1; i < this->grid->columns() - 1; i++) {210 // l[0] = this->grid->vertexG(i, j-1).x - this->grid->vertexG(i, j+1).x;211 // l[1] = this->grid->vertexG(i, j-1).y - this->grid->vertexG(i, j+1).y;212 // l[2] = this->grid->vertexG(i, j-1).z - this->grid->vertexG(i, j+1).z;213 // m[0] = this->grid->vertexG(i-1,j).x - this->grid->vertexG(i+1, j).x;214 // m[1] = this->grid->vertexG(i-1,j).y - this->grid->vertexG(i+1, j).y;215 // m[2] = this->grid->vertexG(i-1,j).z - this->grid->vertexG(i+1, j).z;216 // this->grid->normalG(i, j).x = l[1] * m[2] - l[2] * m[1];217 // this->grid->normalG(i, j).y = l[2] * m[0] - l[0] * m[2];218 // this->grid->normalG(i, j).z = l[0] * m[1] - l[1] * m[0];219 // }220 // }223 // float l[3]; 224 // float m[3]; 225 // for(j = 1; j < this->grid->rows() -1; j++) { 226 // for(i = 1; i < this->grid->columns() - 1; i++) { 227 // l[0] = this->grid->vertexG(i, j-1).x - this->grid->vertexG(i, j+1).x; 228 // l[1] = this->grid->vertexG(i, j-1).y - this->grid->vertexG(i, j+1).y; 229 // l[2] = this->grid->vertexG(i, j-1).z - this->grid->vertexG(i, j+1).z; 230 // m[0] = this->grid->vertexG(i-1,j).x - this->grid->vertexG(i+1, j).x; 231 // m[1] = this->grid->vertexG(i-1,j).y - this->grid->vertexG(i+1, j).y; 232 // m[2] = this->grid->vertexG(i-1,j).z - this->grid->vertexG(i+1, j).z; 233 // this->grid->normalG(i, j).x = l[1] * m[2] - l[2] * m[1]; 234 // this->grid->normalG(i, j).y = l[2] * m[0] - l[0] * m[2]; 235 // this->grid->normalG(i, j).z = l[0] * m[1] - l[1] * m[0]; 236 // } 237 // } 221 238 this->grid->rebuildNormals(this->height); 222 239 }
Note: See TracChangeset
for help on using the changeset viewer.