From bb6da503dc5198a5178295cc36558247bc8b90ed Mon Sep 17 00:00:00 2001 From: Alessio Quaglino Date: Fri, 27 Sep 2024 03:30:26 -0700 Subject: [PATCH] Make 3 the default number of channels in `mjsTexture`. PiperOrigin-RevId: 679521155 Change-Id: Ie6c962e75983c8bf8323170338b3d480be3a1117 --- src/user/user_init.c | 1 + src/xml/xml_native_reader.cc | 4 +--- test/user/user_api_test.cc | 30 ++++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/user/user_init.c b/src/user/user_init.c index a9e0b64c..e031831a 100644 --- a/src/user/user_init.c +++ b/src/user/user_init.c @@ -274,6 +274,7 @@ void mjs_defaultTexture(mjsTexture* texture) { texture->rgb2[0] = texture->rgb2[1] = texture->rgb2[2] = 0.5; texture->random = 0.01; texture->gridsize[0] = texture->gridsize[1] = 1; + texture->nchannel = 3; char defaultlayout[sizeof(texture->gridlayout)] = "............"; strncpy(texture->gridlayout, defaultlayout, sizeof(texture->gridlayout)); } diff --git a/src/xml/xml_native_reader.cc b/src/xml/xml_native_reader.cc index 5fcaf155..04fe3125 100644 --- a/src/xml/xml_native_reader.cc +++ b/src/xml/xml_native_reader.cc @@ -3236,9 +3236,7 @@ void mjXReader::Asset(XMLElement* section, const mjVFS* vfs) { } ReadAttrInt(elem, "width", &texture->width); ReadAttrInt(elem, "height", &texture->height); - if (!ReadAttrInt(elem, "nchannel", &texture->nchannel)) { - texture->nchannel = 3; - } + ReadAttrInt(elem, "nchannel", &texture->nchannel); ReadAttr(elem, "rgb1", 3, texture->rgb1, text); ReadAttr(elem, "rgb2", 3, texture->rgb2, text); ReadAttr(elem, "markrgb", 3, texture->markrgb, text); diff --git a/test/user/user_api_test.cc b/test/user/user_api_test.cc index 548c22ca..e5e29dff 100644 --- a/test/user/user_api_test.cc +++ b/test/user/user_api_test.cc @@ -1254,5 +1254,35 @@ TEST_F(MujocoTest, AttachUnnamedAssets) { mj_deleteModel(model); } +TEST_F(MujocoTest, InitTexture) { + mjSpec* spec = mj_makeSpec(); + EXPECT_THAT(spec, NotNull()); + + mjsTexture* texture = mjs_addTexture(spec); + mjs_setString(texture->name, "checker"); + texture->type = mjTEXTURE_CUBE; + texture->builtin = mjBUILTIN_CHECKER; + texture->width = 300; + texture->height = 300; + + mjsMaterial* material = mjs_addMaterial(spec, 0); + mjs_setString(material->name, "floor"); + mjs_setInStringVec(material->textures, mjTEXROLE_RGB, "checker"); + + mjsGeom* floor = mjs_addGeom(mjs_findBody(spec, "world"), 0); + mjs_setString(floor->material, "floor"); + floor->type = mjGEOM_PLANE; + floor->size[0] = 1; + floor->size[1] = 1; + floor->size[2] = 0.01; + mjs_setString(floor->material, "floor"); + + mjModel* model = mj_compile(spec, 0); + EXPECT_THAT(model, NotNull()); + + mj_deleteModel(model); + mj_deleteSpec(spec); +} + } // namespace } // namespace mujoco