History

Rig: Switched over to use AnimPoses instead of JointStates

* fixed debug rendering * improved jointState/animPose diff detection code.

Anthony J. Thibault committed 10 years ago

Commit 982e2c01 parent 721da296 files · +134 −49Browse files

Showing the changes to libraries/render-utils/src/AnimDebugDraw.cpp (1 of 6 files). Show all

Unified · Split

libraries/render-utils/src/AnimDebugDraw.cpp+65−6
@@ -169,12 +169,20 @@ void AnimDebugDraw::removeAnimNode(const std::string& key) { · 168 unmodified lines
169 _animNodes.erase(key);169 _animNodes.erase(key);
170}170}
171 171
172void AnimDebugDraw::addPoses(const std::string& key, AnimSkeleton::ConstPointer skeleton, const AnimPoseVec& poses, const AnimPose& rootPose, const glm::vec4& color) {172void AnimDebugDraw::addRelativePoses(const std::string& key, AnimSkeleton::ConstPointer skeleton, const AnimPoseVec& poses, const AnimPose& rootPose, const glm::vec4& color) {
173 _poses[key] = PosesInfo(skeleton, poses, rootPose, color);173 _relativePoses[key] = PosesInfo(skeleton, poses, rootPose, color);
174}174}
175 175
176void AnimDebugDraw::removePoses(const std::string& key) {176void AnimDebugDraw::removeRelativePoses(const std::string& key) {
177 _poses.erase(key);177 _relativePoses.erase(key);
178}
179
180void AnimDebugDraw::addAbsolutePoses(const std::string& key, AnimSkeleton::ConstPointer skeleton, const AnimPoseVec& poses, const AnimPose& rootPose, const glm::vec4& color) {
181 _absolutePoses[key] = PosesInfo(skeleton, poses, rootPose, color);
182}
183
184void AnimDebugDraw::removeAbsolutePoses(const std::string& key) {
185 _absolutePoses.erase(key);
178}186}
179 187
180static const uint32_t red = toRGBA(255, 0, 0, 255);188static const uint32_t red = toRGBA(255, 0, 0, 255);
@@ -338,6 +346,9 @@ void AnimDebugDraw::update() { · 157 unmodified lines
338 346
339 // figure out how many verts we will need.347 // figure out how many verts we will need.
340 int numVerts = 0;348 int numVerts = 0;
349
350 // AJT: FIX ME
351 /*
341 for (auto& iter : _skeletons) {352 for (auto& iter : _skeletons) {
342 AnimSkeleton::ConstPointer& skeleton = std::get<0>(iter.second);353 AnimSkeleton::ConstPointer& skeleton = std::get<0>(iter.second);
343 numVerts += skeleton->getNumJoints() * VERTICES_PER_BONE;354 numVerts += skeleton->getNumJoints() * VERTICES_PER_BONE;
@@ -362,7 +373,19 @@ void AnimDebugDraw::update() { · 18 unmodified lines
362 }373 }
363 }374 }
364 375
365 for (auto& iter : _poses) {376 for (auto& iter : _relativePoses) {
377 AnimSkeleton::ConstPointer& skeleton = std::get<0>(iter.second);
378 numVerts += skeleton->getNumJoints() * VERTICES_PER_BONE;
379 for (int i = 0; i < skeleton->getNumJoints(); i++) {
380 auto parentIndex = skeleton->getParentIndex(i);
381 if (parentIndex >= 0) {
382 numVerts += VERTICES_PER_LINK;
383 }
384 }
385 }
386 */
387
388 for (auto& iter : _absolutePoses) {
366 AnimSkeleton::ConstPointer& skeleton = std::get<0>(iter.second);389 AnimSkeleton::ConstPointer& skeleton = std::get<0>(iter.second);
367 numVerts += skeleton->getNumJoints() * VERTICES_PER_BONE;390 numVerts += skeleton->getNumJoints() * VERTICES_PER_BONE;
368 for (int i = 0; i < skeleton->getNumJoints(); i++) {391 for (int i = 0; i < skeleton->getNumJoints(); i++) {
@@ -379,9 +402,14 @@ void AnimDebugDraw::update() { · 10 unmodified lines
379 auto myAvatarMarkerMap = DebugDraw::getInstance().getMyAvatarMarkerMap();402 auto myAvatarMarkerMap = DebugDraw::getInstance().getMyAvatarMarkerMap();
380 numVerts += myAvatarMarkerMap.size() * VERTICES_PER_BONE;403 numVerts += myAvatarMarkerMap.size() * VERTICES_PER_BONE;
381 404
405 // allocate verts!
382 data._vertexBuffer->resize(sizeof(Vertex) * numVerts);406 data._vertexBuffer->resize(sizeof(Vertex) * numVerts);
383 Vertex* verts = (Vertex*)data._vertexBuffer->editData();407 Vertex* verts = (Vertex*)data._vertexBuffer->editData();
384 Vertex* v = verts;408 Vertex* v = verts;
409
410 // AJT: fixme
411 // draw skeletons
412 /*
385 for (auto& iter : _skeletons) {413 for (auto& iter : _skeletons) {
386 AnimSkeleton::ConstPointer& skeleton = std::get<0>(iter.second);414 AnimSkeleton::ConstPointer& skeleton = std::get<0>(iter.second);
387 AnimPose rootPose = std::get<1>(iter.second);415 AnimPose rootPose = std::get<1>(iter.second);
@@ -408,7 +436,11 @@ void AnimDebugDraw::update() { · 20 unmodified lines
408 }436 }
409 }437 }
410 }438 }
439 */
411 440
441 // AJT: FIXME
442 /*
443 // draw animNodes
412 for (auto& iter : _animNodes) {444 for (auto& iter : _animNodes) {
413 AnimNode::ConstPointer& animNode = std::get<0>(iter.second);445 AnimNode::ConstPointer& animNode = std::get<0>(iter.second);
414 AnimPose rootPose = std::get<1>(iter.second);446 AnimPose rootPose = std::get<1>(iter.second);
@@ -446,8 +478,12 @@ void AnimDebugDraw::update() { · 31 unmodified lines
446 }478 }
447 }479 }
448 }480 }
481 */
449 482
450 for (auto& iter : _poses) {483 // AJT: FIX ME
484 /*
485 // draw relative poses
486 for (auto& iter : _relativePoses) {
451 AnimSkeleton::ConstPointer& skeleton = std::get<0>(iter.second);487 AnimSkeleton::ConstPointer& skeleton = std::get<0>(iter.second);
452 AnimPoseVec& poses = std::get<1>(iter.second);488 AnimPoseVec& poses = std::get<1>(iter.second);
453 AnimPose rootPose = std::get<2>(iter.second);489 AnimPose rootPose = std::get<2>(iter.second);
@@ -482,6 +518,29 @@ void AnimDebugDraw::update() { · 28 unmodified lines
482 }518 }
483 }519 }
484 }520 }
521 */
522
523 // draw absolute poses
524 for (auto& iter : _absolutePoses) {
525 AnimSkeleton::ConstPointer& skeleton = std::get<0>(iter.second);
526 AnimPoseVec& absPoses = std::get<1>(iter.second);
527 AnimPose rootPose = std::get<2>(iter.second);
528 glm::vec4 color = std::get<3>(iter.second);
529
530 for (int i = 0; i < skeleton->getNumJoints(); i++) {
531 const float radius = BONE_RADIUS / (absPoses[i].scale.x * rootPose.scale.x);
532
533 // draw bone
534 addBone(rootPose, absPoses[i], radius, v);
535
536 // draw link to parent
537 auto parentIndex = skeleton->getParentIndex(i);
538 if (parentIndex >= 0) {
539 assert(parentIndex < skeleton->getNumJoints());
540 addLink(rootPose, absPoses[i], absPoses[parentIndex], radius, color, v);
541 }
542 }
543 }
485 544
486 // draw markers from shared DebugDraw singleton545 // draw markers from shared DebugDraw singleton
487 for (auto& iter : markerMap) {546 for (auto& iter : markerMap) {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t