d.kupavcev Posted December 13, 2012 Share Posted December 13, 2012 Please help me write a function to get the normal points for ObjectWater considering geometric waves. Like function getHeight Link to comment
frustum Posted December 14, 2012 Share Posted December 14, 2012 vec3 ObjectWater::getNormal(const Vec3 &position) const { vec3 normal = vec3_zero; float time = engine.game->getTime(); vec3 iposition = vec3(getIWorldTransform() * position); for(int i = 0; i < 4; i++) { float distance = waves[i].x * iposition.x - waves[i].y * iposition.y; float cos_phase = Math::cos((distance + time) * waves[i].z); normal.x -= cos_phase * waves[i].x * waves[i].z * waves[i].w; normal.y += cos_phase * waves[i].y * waves[i].z * waves[i].w; } normal.z = 1.0f; return mul3(normal,getWorldTransform(),normalize(normal)); } Link to comment
Recommended Posts