Add support for multiple textures in one material (mjModel).

PiperOrigin-RevId: 648732764
Change-Id: I29b60dd62a069789a32017ff0d55e36b57e0052b
This commit is contained in:
Tom Erez
2024-07-02 08:49:24 -07:00
committed by Copybara-Service
parent 3b73dfe33b
commit df7ea3ed33
9 changed files with 20 additions and 11 deletions
+8 -2
View File
@@ -1307,8 +1307,10 @@ static void makeMaterial(const mjModel* m, mjrContext* con) {
mju_error("Maximum number of materials is %d", mjMAXMATERIAL);
}
for (int i=0; i < m->nmat; i++) {
if (m->mat_texid[i] >= 0) {
con->mat_texid[i*mjNTEXMAT] = m->mat_texid[i];
if (m->mat_texid[i*mjNTEXMAT] >= 0) {
for (int j=0; j < mjNTEXMAT; j++) {
con->mat_texid[i*mjNTEXMAT + j] = m->mat_texid[i*mjNTEXMAT + j];
}
con->mat_texuniform[i] = m->mat_texuniform[i];
con->mat_texrepeat[2*i] = m->mat_texrepeat[2*i];
con->mat_texrepeat[2*i+1] = m->mat_texrepeat[2*i+1];
@@ -1321,6 +1323,10 @@ static void makeMaterial(const mjModel* m, mjrContext* con) {
mju_error("With skybox, maximum number of materials is %d", mjMAXMATERIAL);
}
con->mat_texid[mjNTEXMAT * (mjMAXMATERIAL-1)] = i;
for (int j=1; j < mjNTEXMAT; j++) {
con->mat_texid[mjNTEXMAT * (mjMAXMATERIAL-1) + j] = -1;
}
break;
}
}
+4 -1
View File
@@ -2481,7 +2481,10 @@ void mjCModel::CopyObjects(mjModel* m) {
mjCMaterial* pmat = materials_[i];
// set fields
m->mat_texid[i] = pmat->texid;
m->mat_texid[mjNTEXMAT*i] = pmat->texid;
for (int j=1; j<mjNTEXMAT; j++) {
m->mat_texid[mjNTEXMAT*i+j] = -1;
}
m->mat_texuniform[i] = pmat->texuniform;
mjuu_copyvec(m->mat_texrepeat+2*i, pmat->texrepeat, 2);
m->mat_emission[i] = pmat->emission;