Add visualisation groups to skins.

PiperOrigin-RevId: 458441645
Change-Id: I14324e8efda5142b2718a5cc9215228c7556dbf7
This commit is contained in:
Alessio Quaglino
2022-07-01 04:56:46 -07:00
committed by Copybara-Service
parent 040deb161f
commit 2d0995b47c
19 changed files with 256 additions and 115 deletions
+4
View File
@@ -67,6 +67,7 @@ mjCComposite::mjCComposite(void) {
mjuu_setvec(skinrgba, 1, 1, 1, 1);
skininflate = 0;
skinsubgrid = 0;
skingroup = 0;
// clear add flags
for (int i=0; i<mjNCOMPKINDS; i++) {
@@ -1053,6 +1054,7 @@ void mjCComposite::MakeSkin2(mjCModel* model) {
skin->material = skinmaterial;
mjuu_copyvec(skin->rgba, skinrgba, 4);
skin->inflate = skininflate;
skin->group = skingroup;
// populate mesh: two sides
for (int i=0; i<2; i++) {
@@ -1473,6 +1475,7 @@ void mjCComposite::MakeSkin2Subgrid(mjCModel* model) {
skin->material = skinmaterial;
mjuu_copyvec(skin->rgba, skinrgba, 4);
skin->inflate = skininflate;
skin->group = skingroup;
// populate mesh: two sides
mjtNum S = spacing/(1+skinsubgrid);
@@ -1643,6 +1646,7 @@ void mjCComposite::MakeSkin3(mjCModel* model) {
skin->material = skinmaterial;
mjuu_copyvec(skin->rgba, skinrgba, 4);
skin->inflate = skininflate;
skin->group = skingroup;
// box
if (type==mjCOMPTYPE_BOX) {
+1
View File
@@ -94,6 +94,7 @@ class mjCComposite {
float skinrgba[4]; // skin rgba
float skininflate; // inflate skin
int skinsubgrid; // number of skin subgrid points; 0: none (2D only)
int skingroup; // skin group of the composite object
// element options
bool add[mjNCOMPKINDS]; // add element
+1 -1
View File
@@ -1408,6 +1408,7 @@ mjCSkin::mjCSkin(mjCModel* _model) {
rgba[0] = rgba[1] = rgba[2] = 0.5f;
rgba[3] = 1.0f;
inflate = 0;
group = 0;
vert.clear();
texcoord.clear();
@@ -1530,7 +1531,6 @@ void mjCSkin::Compile(const mjVFS* vfs) {
throw mjCError(this, "unkown material '%s' in skin", material.c_str());
}
// set total vertex weights to 0
vector<float> vw;
size_t nvert = vert.size()/3;
+1
View File
@@ -1628,6 +1628,7 @@ void mjCModel::CopyObjects(mjModel* m) {
// set fields
m->skin_matid[i] = psk->matid;
copyvec(m->skin_rgba+4*i, psk->rgba, 4);
m->skin_group[i] = psk->group;
m->skin_inflate[i] = psk->inflate;
m->skin_vertadr[i] = vert_adr;
m->skin_vertnum[i] = psk->vert.size()/3;
+1
View File
@@ -504,6 +504,7 @@ class mjCSkin: public mjCBase {
std::string material; // name of material used for rendering
float rgba[4]; // rgba when material is omitted
float inflate; // inflate in normal direction
int group; // group for visualization
// mesh
std::vector<float> vert; // vertex positions