Как я могу изменить вид камеры при симуляции MuJoCo?C++

Программы на C++. Форум разработчиков
Anonymous
Как я могу изменить вид камеры при симуляции MuJoCo?

Сообщение Anonymous »

Я работаю над симуляцией робота, используя MuJoCo (версия 3.1.1) с языком C++.
И я пытаюсь изменить вид симуляции камеры по умолчанию, но у меня возникла проблема в этой работе.
Мой проект состоит из файлов и папок, как показано ниже, и при сборке и запуске проблем нет.
|- build
|- cmake
|- include
|- mujoco
|- array_safety.h
|- ...
|- simulate.h
|- model
|- assets
|- robot.xml
|- src
|- glfw_adpater.cc
|- ...
|- main.cc
|- simulate.cc
|- CMakeLists.txt

Я пытаюсь изменить вид симуляции камеры по умолчанию, как я уже говорил.
Итак, я попытался изменить код main.cc, как показано ниже: но вид камеры не меняется.
(Я говорил о проблеме «как изменить угол камеры»).
  • main.cc
int main(int argc, char ** argv)
{
// ...

mjvCamera cam;
mjv_defaultCamera(&cam);

//*********************** I added code here ********************
double viewer[] = { -90.95, -6.25, 1.85, -0.089, 0.001, 0.102 };
cam.azimuth = viewer[0];
cam.elevation = viewer[1];
cam.distance = viewer[2];
cam.lookat[0] = viewer[3];
cam.lookat[1] = viewer[4];
cam.lookat[2] = viewer[5];
//***************************************************************

mjvOption opt;
// ...
}

Когда я создаю этот код и проверяю значения cam в Simulate.cc, обнаруживается, что измененное значение не отражается.
  • RenderLoop функция в Simulate.cc
void Simulate::RenderLoop()
{
// ...
mjv_defaultCamera(&this->cam);
mjv_defaultOption(&this->opt);
InitializeProfiler(this);
InitializeSensor(this);

printf("azimuth: %f\n", this->cam.azimuth); // 90.0 is printed
// ...
}

Буду признателен, если вы дадите мне совет по этому поводу.
С уважением,
Я тоже попробовал чтобы напрямую изменить значения кулачка в файле моделирования.cc, как показано ниже, но измененное значение также не отразилось в визуализации.
  • RenderLoop функция в Simulate.cc
void Simulate::RenderLoop()
{
// ...
mjv_defaultCamera(&this->cam);
mjv_defaultOption(&this->opt);
InitializeProfiler(this);
InitializeSensor(this);

this->cam.azimuth = -90.95;

printf("azimuth: %f\n", this->cam.azimuth);
// -90.95 is printed but the there's no change in visualization
// ...
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... simulation

Вернуться в «C++»