mirror of
https://github.com/lubosz/overte.git
synced 2025-04-19 17:03:43 +02:00
Added "Developer > Avatar > Show Tracked Objects" menu
This commit is contained in:
parent
fede22499c
commit
640ed6a32a
6 changed files with 34 additions and 24 deletions
|
@ -5802,43 +5802,41 @@ void Application::update(float deltaTime) {
|
|||
myAvatar->setControllerPoseInSensorFrame(action, pose.transform(avatarToSensorMatrix));
|
||||
}
|
||||
|
||||
// AJT: TODO put a nice menu around this.
|
||||
// Make sure to remove all markers when menu is turned off.
|
||||
{
|
||||
static const std::vector<QString> trackedObjectStringLiterals = {
|
||||
QStringLiteral("_TrackedObject00"), QStringLiteral("_TrackedObject01"), QStringLiteral("_TrackedObject02"), QStringLiteral("_TrackedObject03"),
|
||||
QStringLiteral("_TrackedObject04"), QStringLiteral("_TrackedObject05"), QStringLiteral("_TrackedObject06"), QStringLiteral("_TrackedObject07"),
|
||||
QStringLiteral("_TrackedObject08"), QStringLiteral("_TrackedObject09"), QStringLiteral("_TrackedObject10"), QStringLiteral("_TrackedObject11"),
|
||||
QStringLiteral("_TrackedObject12"), QStringLiteral("_TrackedObject13"), QStringLiteral("_TrackedObject14"), QStringLiteral("_TrackedObject15")
|
||||
};
|
||||
|
||||
// Controlled by the Developer > Avatar > Show Tracked Objects menu.
|
||||
if (_showTrackedObjects) {
|
||||
static const std::vector<controller::Action> trackedObjectActions = {
|
||||
controller::Action::TRACKED_OBJECT_00,
|
||||
controller::Action::TRACKED_OBJECT_01,
|
||||
controller::Action::TRACKED_OBJECT_02,
|
||||
controller::Action::TRACKED_OBJECT_03,
|
||||
controller::Action::TRACKED_OBJECT_04,
|
||||
controller::Action::TRACKED_OBJECT_05,
|
||||
controller::Action::TRACKED_OBJECT_06,
|
||||
controller::Action::TRACKED_OBJECT_07,
|
||||
controller::Action::TRACKED_OBJECT_08,
|
||||
controller::Action::TRACKED_OBJECT_09,
|
||||
controller::Action::TRACKED_OBJECT_10,
|
||||
controller::Action::TRACKED_OBJECT_11,
|
||||
controller::Action::TRACKED_OBJECT_12,
|
||||
controller::Action::TRACKED_OBJECT_13,
|
||||
controller::Action::TRACKED_OBJECT_14,
|
||||
controller::Action::TRACKED_OBJECT_15
|
||||
controller::Action::TRACKED_OBJECT_00, controller::Action::TRACKED_OBJECT_01, controller::Action::TRACKED_OBJECT_02, controller::Action::TRACKED_OBJECT_03,
|
||||
controller::Action::TRACKED_OBJECT_04, controller::Action::TRACKED_OBJECT_05, controller::Action::TRACKED_OBJECT_06, controller::Action::TRACKED_OBJECT_07,
|
||||
controller::Action::TRACKED_OBJECT_08, controller::Action::TRACKED_OBJECT_09, controller::Action::TRACKED_OBJECT_10, controller::Action::TRACKED_OBJECT_11,
|
||||
controller::Action::TRACKED_OBJECT_12, controller::Action::TRACKED_OBJECT_13, controller::Action::TRACKED_OBJECT_14, controller::Action::TRACKED_OBJECT_15
|
||||
};
|
||||
|
||||
int i = 0;
|
||||
glm::vec4 BLUE(0.0f, 0.0f, 1.0f, 1.0f);
|
||||
for (auto& action : trackedObjectActions) {
|
||||
QString key = QString("_TrackedObject%1").arg(i);
|
||||
controller::Pose pose = userInputMapper->getPoseState(action);
|
||||
if (pose.valid) {
|
||||
glm::vec3 pos = transformPoint(myAvatarMatrix, pose.translation);
|
||||
glm::quat rot = glmExtractRotation(myAvatarMatrix) * pose.rotation;
|
||||
DebugDraw::getInstance().addMarker(key, rot, pos, BLUE);
|
||||
DebugDraw::getInstance().addMarker(trackedObjectStringLiterals[i], rot, pos, BLUE);
|
||||
} else {
|
||||
DebugDraw::getInstance().removeMarker(key);
|
||||
DebugDraw::getInstance().removeMarker(trackedObjectStringLiterals[i]);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
} else if (_prevShowTrackedObjects) {
|
||||
for (auto& key : trackedObjectStringLiterals) {
|
||||
DebugDraw::getInstance().removeMarker(key);
|
||||
}
|
||||
}
|
||||
_prevShowTrackedObjects = _showTrackedObjects;
|
||||
}
|
||||
|
||||
updateThreads(deltaTime); // If running non-threaded, then give the threads some time to process...
|
||||
|
@ -8330,6 +8328,10 @@ void Application::setShowBulletConstraintLimits(bool value) {
|
|||
_physicsEngine->setShowBulletConstraintLimits(value);
|
||||
}
|
||||
|
||||
void Application::setShowTrackedObjects(bool value) {
|
||||
_showTrackedObjects = value;
|
||||
}
|
||||
|
||||
void Application::startHMDStandBySession() {
|
||||
_autoSwitchDisplayModeSupportedHMDPlugin->startStandBySession();
|
||||
}
|
||||
|
|
|
@ -496,6 +496,8 @@ private slots:
|
|||
void setShowBulletConstraints(bool value);
|
||||
void setShowBulletConstraintLimits(bool value);
|
||||
|
||||
void setShowTrackedObjects(bool value);
|
||||
|
||||
private:
|
||||
void init();
|
||||
bool handleKeyEventForFocusedEntityOrOverlay(QEvent* event);
|
||||
|
@ -777,5 +779,8 @@ private:
|
|||
std::atomic<bool> _pendingRenderEvent { true };
|
||||
|
||||
bool quitWhenFinished { false };
|
||||
|
||||
bool _showTrackedObjects { false };
|
||||
bool _prevShowTrackedObjects { false };
|
||||
};
|
||||
#endif // hifi_Application_h
|
||||
|
|
|
@ -570,6 +570,8 @@ Menu::Menu() {
|
|||
avatar.get(), SLOT(updateMotionBehaviorFromMenu()),
|
||||
UNSPECIFIED_POSITION, "Developer");
|
||||
|
||||
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ShowTrackedObjects, 0, false, qApp, SLOT(setShowTrackedObjects(bool)));
|
||||
|
||||
// Developer > Hands >>>
|
||||
MenuWrapper* handOptionsMenu = developerMenu->addMenu("Hands");
|
||||
addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::DisplayHandTargets, 0, false,
|
||||
|
|
|
@ -183,6 +183,7 @@ namespace MenuOption {
|
|||
const QString RunClientScriptTests = "Run Client Script Tests";
|
||||
const QString RunTimingTests = "Run Timing Tests";
|
||||
const QString ScriptedMotorControl = "Enable Scripted Motor Control";
|
||||
const QString ShowTrackedObjects = "Show Tracked Objects";
|
||||
const QString SendWrongDSConnectVersion = "Send wrong DS connect version";
|
||||
const QString SendWrongProtocolVersion = "Send wrong protocol version";
|
||||
const QString SetHomeLocation = "Set Home Location";
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
#include "AnimUtil.h"
|
||||
|
||||
static const int MAX_TARGET_MARKERS = 30;
|
||||
static const float JOINT_CHAIN_INTERP_TIME = 0.25f;
|
||||
static const float JOINT_CHAIN_INTERP_TIME = 0.5f;
|
||||
|
||||
static void lookupJointInfo(const AnimInverseKinematics::JointChainInfo& jointChainInfo,
|
||||
int indexA, int indexB,
|
||||
|
|
|
@ -1666,7 +1666,7 @@ void Rig::updateFromControllerParameters(const ControllerParameters& params, flo
|
|||
// This should help smooth out problems with the vive tracker when the sensor is occluded.
|
||||
if (prevHipsEnabled && hipsEstimated != prevHipsEstimated) {
|
||||
// blend from a snapshot of the previous hips.
|
||||
const float HIPS_BLEND_DURATION = 0.3f;
|
||||
const float HIPS_BLEND_DURATION = 0.5f;
|
||||
_hipsBlendHelper.setBlendDuration(HIPS_BLEND_DURATION);
|
||||
_hipsBlendHelper.setSnapshot(_previousControllerParameters.primaryControllerPoses[PrimaryControllerType_Hips]);
|
||||
} else if (!prevHipsEnabled) {
|
||||
|
|
Loading…
Reference in a new issue