From a2c7b3bcc9ff863ad8f361c6cdeb537cbd13dec0 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 23 Sep 2015 17:00:07 -0700 Subject: [PATCH] Orient particles to face camera but not roll with it --- .../src/RenderableParticleEffectEntityItem.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp index 68567372e2..005252672d 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp @@ -211,9 +211,12 @@ void RenderableParticleEffectEntityItem::updateRenderItem() { _vertices.clear(); // build vertices from particle positions and radiuses - const glm::vec3 up = frustum->getUp(); - const glm::vec3 right = frustum->getRight(); + glm::vec3 frustumPosition = frustum->getPosition(); for (auto&& particle : particleDetails) { + glm::vec3 particleDirection = particle.position - frustumPosition; + glm::vec3 right = glm::normalize(glm::cross(glm::vec3(0.0f, 1.0f, 0.0f), particleDirection)); + glm::vec3 up = glm::normalize(glm::cross(right, particleDirection)); + glm::vec3 upOffset = up * particle.radius; glm::vec3 rightOffset = right * particle.radius; // generate corners of quad aligned to face the camera.