Use mj_id2name in viewer code where appropriate.

PiperOrigin-RevId: 948945088
Change-Id: I5635c71fd285b128618592699ca64ce8c0f35e31
This commit is contained in:
Yuval Tassa
2026-07-16 06:50:38 -07:00
committed by Copybara-Service
parent a77dff84a4
commit 0ce5e98916
4 changed files with 21 additions and 18 deletions
+11 -7
View File
@@ -596,9 +596,9 @@ void DetectImageSensors(mj::Simulate* sim, const mjModel* m) {
// Check if this is an image sensor: width*height*3 == dim
if (width > 0 && height > 0 && width * height * 3 == dim) {
const char* name = m->names + m->name_sensoradr[i];
const char* name = mj_id2name(m, mjOBJ_SENSOR, i);
sim->image_sensor_indices.push_back(i);
sim->image_sensor_names.push_back(name);
sim->image_sensor_names.push_back(name ? name : "");
sim->image_sensor_count++;
}
}
@@ -932,8 +932,9 @@ void MakeRenderingSection(mj::Simulate* sim, const mjModel* m) {
for (int i=0; i<mjMIN(m->ncam, mjMAXUIMULTI-2); i++) {
// prepare name
char camname[mjMAXUINAME] = "\n";
if (m->names[m->name_camadr[i]]) {
mju::strcat_arr(camname, m->names+m->name_camadr[i]);
const char* name = mj_id2name(m, mjOBJ_CAMERA, i);
if (name) {
mju::strcat_arr(camname, name);
} else {
mju::sprintf_arr(camname, "\nCamera %d", i);
}
@@ -2529,7 +2530,8 @@ void Simulate::LoadOnRenderThread() {
jnt_names_.clear();
jnt_names_.reserve(this->m_->njnt);
for (int i = 0; i < this->m_->njnt; ++i) {
jnt_names_.emplace_back(this->m_->names + this->m_->name_jntadr[i]);
const char* name = mj_id2name(this->m_, mjOBJ_JOINT, i);
jnt_names_.emplace_back(name ? name : "");
}
actuator_group_.resize(this->m_->nu);
@@ -2550,13 +2552,15 @@ void Simulate::LoadOnRenderThread() {
actuator_names_.clear();
actuator_names_.reserve(this->m_->nu);
for (int i = 0; i < this->m_->nu; ++i) {
actuator_names_.emplace_back(this->m_->names + this->m_->name_actuatoradr[i]);
const char* name = mj_id2name(this->m_, mjOBJ_ACTUATOR, i);
actuator_names_.emplace_back(name ? name : "");
}
equality_names_.clear();
equality_names_.reserve(this->m_->neq);
for (int i = 0; i < this->m_->neq; ++i) {
equality_names_.emplace_back(this->m_->names + this->m_->name_eqadr[i]);
const char* name = mj_id2name(this->m_, mjOBJ_EQUALITY, i);
equality_names_.emplace_back(name ? name : "");
}
qpos_.resize(this->m_->nq);
+6 -6
View File
@@ -642,8 +642,8 @@ std::string GetCameraName(const mjModel* model, const mjvCamera& camera,
return kCameraWasdName;
} else if (index == kTrackingCameraIdx) {
return "Tracking (" + std::to_string(camera.trackbodyid) + ")";
} else if (model->names[model->name_camadr[index]]) {
return std::string(model->names + model->name_camadr[index]);
} else if (const char* cam_name = mj_id2name(model, mjOBJ_CAMERA, index)) {
return cam_name;
} else {
return kCameraUnnamedName;
}
@@ -1262,8 +1262,8 @@ void JointsGui(const mjModel* model, const mjData* data,
continue;
}
const char* jnt_name = model->names + model->name_jntadr[i];
if (*jnt_name) {
const char* jnt_name = mj_id2name(model, mjOBJ_JOINT, i);
if (jnt_name) {
std::snprintf(name, sizeof(name), "%s", jnt_name);
} else {
std::snprintf(name, sizeof(name), "joint %d", i);
@@ -1315,8 +1315,8 @@ void ControlsGui(const mjModel* model, const mjData* data,
continue;
}
const char* ctrl_name = model->names + model->name_actuatoradr[i];
if (*ctrl_name) {
const char* ctrl_name = mj_id2name(model, mjOBJ_ACTUATOR, i);
if (ctrl_name) {
std::snprintf(name, sizeof(name), "%s", ctrl_name);
} else {
std::snprintf(name, sizeof(name), "control %d", i);
+2 -2
View File
@@ -31,8 +31,8 @@ static bool PipGuiImpl(const mjModel* model, mjData* data, float aspect_ratio,
bool result = true;
auto get_camera_name = [model](int i) -> const char* {
if (model->names[model->name_camadr[i]]) {
return model->names + model->name_camadr[i];
if (const char* name = mj_id2name(model, mjOBJ_CAMERA, i)) {
return name;
} else {
return "Unnamed";
}
+2 -3
View File
@@ -1609,9 +1609,8 @@ void App::ModelOptionsGui() {
ImGui::Spacing();
{
char key_fmt[128];
const char* key_name =
model()->names + model()->name_keyadr[ui_.key_idx];
if (key_name[0] != '\0') {
const char* key_name = mj_id2name(model(), mjOBJ_KEY, ui_.key_idx);
if (key_name) {
std::snprintf(key_fmt, sizeof(key_fmt), "%s", key_name);
} else {
std::snprintf(key_fmt, sizeof(key_fmt), "Key %d", ui_.key_idx);