From 58a73dfede6cec91d23ff1398773d3f3108f8d40 Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Sat, 21 Dec 2013 18:06:04 -0800 Subject: [PATCH] yet again remove the test _balls now that we have a particle server --- interface/src/Balls.cpp | 147 ------------------------------ interface/src/Balls.h | 37 -------- interface/src/avatar/Avatar.cpp | 26 +----- interface/src/avatar/Avatar.h | 1 - interface/src/avatar/MyAvatar.cpp | 20 ---- 5 files changed, 1 insertion(+), 230 deletions(-) delete mode 100644 interface/src/Balls.cpp delete mode 100644 interface/src/Balls.h diff --git a/interface/src/Balls.cpp b/interface/src/Balls.cpp deleted file mode 100644 index 693b38462b..0000000000 --- a/interface/src/Balls.cpp +++ /dev/null @@ -1,147 +0,0 @@ -// -// Balls.cpp -// hifi -// -// Created by Philip on 4/25/13. -// -// A cloud of spring-mass spheres to simulate the avatar body/skin. Each ball -// connects to as many as 4 neighbors, and executes motion according to a damped -// spring, while responding physically to other avatars. -// - -#include - -#include - -#include "Balls.h" -#include "InterfaceConfig.h" -#include "Util.h" -#include "world.h" - -const float INITIAL_AREA = 0.2f; -const float BALL_RADIUS = 0.016f; -const glm::vec3 INITIAL_COLOR(0.62f, 0.74f, 0.91f); - -Balls::Balls(int numberOfBalls) { - _numberOfBalls = numberOfBalls; - _balls = new Ball[_numberOfBalls]; - for (unsigned int i = 0; i < _numberOfBalls; ++i) { - _balls[i].position = randVector() * INITIAL_AREA; - _balls[i].targetPosition = _balls[i].position; - _balls[i].velocity = glm::vec3(0, 0, 0); - _balls[i].radius = BALL_RADIUS; - for (unsigned int j = 0; j < NUMBER_SPRINGS; ++j) { - _balls[i].links[j] = 0; - } - } - _color = INITIAL_COLOR; - _origin = glm::vec3(0, 0, 0); -} - -Balls::~Balls() { - delete[] _balls; -} - -void Balls::moveOrigin(const glm::vec3& newOrigin) { - glm::vec3 delta = newOrigin - _origin; - if (glm::length(delta) > EPSILON) { - _origin = newOrigin; - for (unsigned int i = 0; i < _numberOfBalls; ++i) { - _balls[i].targetPosition += delta; - } - } -} - -const bool RENDER_SPRINGS = false; - -void Balls::render() { - - // Render Balls NOTE: This needs to become something other that GlutSpheres! - glColor3fv(&_color.x); - for (unsigned int i = 0; i < _numberOfBalls; ++i) { - glPushMatrix(); - glTranslatef(_balls[i].position.x, _balls[i].position.y, _balls[i].position.z); - glutSolidSphere(_balls[i].radius, 8, 8); - glPopMatrix(); - } - - // Render springs - if (RENDER_SPRINGS) { - glColor3f(0.74, 0.91, 0.62); - for (unsigned int i = 0; i < _numberOfBalls; ++i) { - glBegin(GL_LINES); - for (unsigned int j = 0; j < NUMBER_SPRINGS; ++j) { - if(_balls[i].links[j] > 0) { - glVertex3f(_balls[i].position.x, - _balls[i].position.y, - _balls[i].position.z); - glVertex3f(_balls[_balls[i].links[j]-1].position.x, - _balls[_balls[i].links[j]-1].position.y, - _balls[_balls[i].links[j]-1].position.z); - } - } - glEnd(); - } - } - -} - -const float CONSTANT_VELOCITY_DAMPING = 1.0f; -const float NOISE_SCALE = 0.06; -const float SPRING_FORCE = 30.0; -const float ORIGIN_DISTANCE = 0.1; -const float SPRING_DAMPING = 1.0; - -void Balls::simulate(float deltaTime) { - for (unsigned int i = 0; i < _numberOfBalls; ++i) { - - // Move particles - _balls[i].position += _balls[i].velocity * deltaTime; - _balls[i].targetPosition += _balls[i].velocity * deltaTime; - - // Drag: decay velocity - _balls[i].velocity *= (1.f - CONSTANT_VELOCITY_DAMPING * deltaTime); - - // Add noise - _balls[i].velocity += randVector() * NOISE_SCALE; - - // spring force to origin - float separation = glm::distance(_balls[i].position, - _origin); - - _balls[i].velocity += - glm::normalize(_balls[i].position - _origin) - * deltaTime - * - SPRING_FORCE * - (ORIGIN_DISTANCE - separation); - - // Approach target position -// for (unsigned int i = 0; i < _numberOfBalls; ++i) { -// _balls[i].position += randFloat() * deltaTime * (_balls[i].targetPosition - _balls[i].position); -// } - - // Spring Force - - /* - for (unsigned int j = 0; j < NUMBER_SPRINGS; ++j) { - if(_balls[i].links[j] > 0) { - float separation = glm::distance(_balls[i].position, - _balls[_balls[i].links[j]-1].position); - _balls[i].velocity += glm::normalize(_balls[i].position - - _balls[_balls[i].links[j]-1].position) * - deltaTime * - SPRING_FORCE * - (_balls[i].springLength[j] - separation); - - //_balls[i].velocity *= (1.f - SPRING_DAMPING*deltaTime); - - } - } */ - - - - - } -} - diff --git a/interface/src/Balls.h b/interface/src/Balls.h deleted file mode 100644 index eefa71828a..0000000000 --- a/interface/src/Balls.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// Balls.h -// hifi -// -// Created by Philip on 4/25/13. -// -// - -#ifndef hifi_Balls_h -#define hifi_Balls_h - -const int NUMBER_SPRINGS = 4; - -class Balls { -public: - Balls(int numberOfBalls); - ~Balls(); - - void simulate(float deltaTime); - void render(); - - void setColor(const glm::vec3& c) { _color = c; }; - void moveOrigin(const glm::vec3& newOrigin); - -private: - struct Ball { - glm::vec3 position, targetPosition, velocity; - int links[NUMBER_SPRINGS]; - float springLength[NUMBER_SPRINGS]; - float radius; - } *_balls; - int _numberOfBalls; - glm::vec3 _origin; - glm::vec3 _color; -}; - -#endif diff --git a/interface/src/avatar/Avatar.cpp b/interface/src/avatar/Avatar.cpp index ec0c19cb7a..5a9a689775 100755 --- a/interface/src/avatar/Avatar.cpp +++ b/interface/src/avatar/Avatar.cpp @@ -118,18 +118,12 @@ Avatar::Avatar(Node* owningNode) : _pelvisFloatingHeight = _skeleton.getPelvisFloatingHeight(); _pelvisToHeadLength = _skeleton.getPelvisToHeadLength(); - if (BALLS_ON) { - _balls = new Balls(100); - } else { - _balls = NULL; - } } Avatar::~Avatar() { _headData = NULL; _handData = NULL; - delete _balls; } void Avatar::deleteOrDeleteLater() { @@ -180,18 +174,6 @@ void Avatar::simulate(float deltaTime, Transmitter* transmitter) { // copy velocity so we can use it later for acceleration glm::vec3 oldVelocity = getVelocity(); - // update balls - if (_balls) { - _balls->moveOrigin(_position); - glm::vec3 lookAt = _head.getLookAtPosition(); - if (glm::length(lookAt) > EPSILON) { - _balls->moveOrigin(lookAt); - } else { - _balls->moveOrigin(_position); - } - _balls->simulate(deltaTime); - } - // update torso rotation based on head lean _skeleton.joint[AVATAR_JOINT_TORSO].rotation = glm::quat(glm::radians(glm::vec3( _head.getLeanForward(), 0.0f, _head.getLeanSideways()))); @@ -288,13 +270,7 @@ void Avatar::render(bool forceRenderHead) { } } - // Render the balls - if (_balls) { - glPushMatrix(); - _balls->render(); - glPopMatrix(); - } - + if (!_chatMessage.empty()) { int width = 0; int lastWidth = 0; diff --git a/interface/src/avatar/Avatar.h b/interface/src/avatar/Avatar.h index c23e30f60b..af40cb121f 100755 --- a/interface/src/avatar/Avatar.h +++ b/interface/src/avatar/Avatar.h @@ -214,7 +214,6 @@ protected: float _pelvisToHeadLength; float _scale; float _height; - Balls* _balls; glm::vec3 _worldUpDirection; glm::vec3 _mouseRayOrigin; glm::vec3 _mouseRayDirection; diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 6c2bc78090..28529cd00b 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -111,18 +111,6 @@ void MyAvatar::simulate(float deltaTime, Transmitter* transmitter) { // calculate speed _speed = glm::length(_velocity); - // update balls - if (_balls) { - _balls->moveOrigin(_position); - glm::vec3 lookAt = _head.getLookAtPosition(); - if (glm::length(lookAt) > EPSILON) { - _balls->moveOrigin(lookAt); - } else { - _balls->moveOrigin(_position); - } - _balls->simulate(deltaTime); - } - // update torso rotation based on head lean _skeleton.joint[AVATAR_JOINT_TORSO].rotation = glm::quat(glm::radians(glm::vec3( _head.getLeanForward(), 0.0f, _head.getLeanSideways()))); @@ -455,17 +443,9 @@ void MyAvatar::render(bool forceRenderHead) { // render body renderBody(forceRenderHead); - - // Render the balls - if (_balls) { - glPushMatrix(); - _balls->render(); - glPopMatrix(); - } //renderDebugBodyPoints(); - if (!_chatMessage.empty()) { int width = 0; int lastWidth = 0;