Merge pull request #2503 from Andrew-Luo1:rscope
PiperOrigin-RevId: 745266549 Change-Id: I15d2eb992aae643ac096650693cc0750421f14c6
This commit is contained in:
+21
-1
@@ -464,7 +464,7 @@ void InitializeSensor(mj::Simulate* sim) {
|
||||
// title
|
||||
mju::strcpy_arr(figsensor.title, "Sensor data");
|
||||
|
||||
// y-tick nubmer format
|
||||
// y-tick number format
|
||||
mju::strcpy_arr(figsensor.yformat, "%.1f");
|
||||
|
||||
// grid size
|
||||
@@ -546,6 +546,16 @@ void ShowFigure(mj::Simulate* sim, mjrRect viewport, mjvFigure* fig){
|
||||
mjr_figure(viewport, fig, &sim->platform_ui->mjr_context());
|
||||
}
|
||||
|
||||
void ShowOverlayText(mj::Simulate* sim, mjrRect viewport, int font, int gridpos,
|
||||
std::string text1, std::string text2) {
|
||||
mjr_overlay(font, gridpos, viewport, text1.c_str(), text2.c_str(),
|
||||
&sim->platform_ui->mjr_context());
|
||||
}
|
||||
|
||||
void ShowImage(mj::Simulate* sim, mjrRect viewport, const unsigned char* image) {
|
||||
mjr_drawPixels(image, nullptr, viewport, &sim->platform_ui->mjr_context());
|
||||
}
|
||||
|
||||
// load state from history buffer
|
||||
static void LoadScrubState(mj::Simulate* sim) {
|
||||
// get index into circular buffer
|
||||
@@ -2656,6 +2666,16 @@ void Simulate::Render() {
|
||||
ShowFigure(this, viewport, &figure);
|
||||
}
|
||||
|
||||
// overlay text
|
||||
for (auto& [font, gridpos, text1, text2] : this->user_texts_) {
|
||||
ShowOverlayText(this, rect, font, gridpos, text1, text2);
|
||||
}
|
||||
|
||||
// user images
|
||||
for (auto& [viewport, image] : this->user_images_) {
|
||||
ShowImage(this, viewport, image);
|
||||
}
|
||||
|
||||
// finalize
|
||||
this->platform_ui->SwapBuffers();
|
||||
}
|
||||
|
||||
+4
-1
@@ -23,6 +23,7 @@
|
||||
#include <optional>
|
||||
#include <ratio>
|
||||
#include <string>
|
||||
#include <tuple>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
@@ -250,10 +251,12 @@ class Simulate {
|
||||
mjvFigure figsize = {};
|
||||
mjvFigure figsensor = {};
|
||||
|
||||
// additional user-defined visualization geoms (used in passive mode)
|
||||
// additional user-defined visualization
|
||||
mjvScene* user_scn = nullptr;
|
||||
mjtByte user_scn_flags_prev_[mjNRNDFLAG];
|
||||
std::vector<std::pair<mjrRect, mjvFigure>> user_figures_;
|
||||
std::vector<std::tuple<int, int, std::string, std::string>> user_texts_;
|
||||
std::vector<std::tuple<mjrRect, unsigned char*>> user_images_;
|
||||
|
||||
// OpenGL rendering and UI
|
||||
int refresh_rate = 60;
|
||||
|
||||
Reference in New Issue
Block a user