Disable shadows for geoms of category mjCAT_DECOR. Fixes #1114.
Added `frustum` to `rgba` and `scale` in the `visual` section. PiperOrigin-RevId: 576547599 Change-Id: I69bf528680e3d4a59d6e04f6db99a6d345001d1d
This commit is contained in:
committed by
Copybara-Service
parent
5231a335bf
commit
1a47a97040
@@ -245,6 +245,7 @@ void mj_defaultVisual(mjVisual* vis) {
|
||||
vis->scale.framewidth = 0.1;
|
||||
vis->scale.constraint = 0.1;
|
||||
vis->scale.slidercrank = 0.2;
|
||||
vis->scale.frustum = 10.0;
|
||||
|
||||
// colors
|
||||
setf4(vis->rgba.fog, 0., 0., 0., 1.);
|
||||
@@ -269,6 +270,7 @@ void mj_defaultVisual(mjVisual* vis) {
|
||||
setf4(vis->rgba.constraint, .9, .0, .0, 1.);
|
||||
setf4(vis->rgba.slidercrank, .5, .3, .8, 1.);
|
||||
setf4(vis->rgba.crankbroken, .9, .0, .0, 1.);
|
||||
setf4(vis->rgba.frustum, 1., 1., .0, .2);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1407,7 +1407,7 @@ void mjv_addGeoms(const mjModel* m, mjData* d, const mjvOption* vopt,
|
||||
FINISH
|
||||
|
||||
// set type and category: frame
|
||||
objtype = mjOBJ_UNKNOWN;
|
||||
objtype = mjOBJ_UNKNOWN;
|
||||
category = mjCAT_DECOR;
|
||||
if (!(category & catmask) || vopt->frame != mjFRAME_GEOM) {
|
||||
continue;
|
||||
@@ -1483,7 +1483,7 @@ void mjv_addGeoms(const mjModel* m, mjData* d, const mjvOption* vopt,
|
||||
FINISH
|
||||
|
||||
// set category for site frame
|
||||
category = mjCAT_DECOR;
|
||||
category = mjCAT_DECOR;
|
||||
if (!(category & catmask) || vopt->frame != mjFRAME_SITE) {
|
||||
continue;
|
||||
}
|
||||
@@ -1563,7 +1563,7 @@ void mjv_addGeoms(const mjModel* m, mjData* d, const mjvOption* vopt,
|
||||
FINISH
|
||||
|
||||
// set category for camera frame
|
||||
category = mjCAT_DECOR;
|
||||
category = mjCAT_DECOR;
|
||||
if (!(category & catmask) || vopt->frame != mjFRAME_CAMERA) {
|
||||
continue;
|
||||
}
|
||||
@@ -1600,11 +1600,13 @@ void mjv_addGeoms(const mjModel* m, mjData* d, const mjvOption* vopt,
|
||||
|
||||
// camera frustum
|
||||
if (vopt->flags[mjVIS_CAMERA]) {
|
||||
float rgba[] = {1, 1, 0, .2};
|
||||
objtype = mjOBJ_CAMERA;
|
||||
category = mjCAT_DECOR;
|
||||
const float* rgba = m->vis.rgba.frustum;
|
||||
mjtNum vnear[4][3], vfar[4][3];
|
||||
mjtNum center[3];
|
||||
mjtNum znear = m->vis.map.znear * m->stat.extent;
|
||||
mjtNum zfar = m->vis.map.zfar * m->stat.extent;
|
||||
mjtNum zfar = m->vis.scale.frustum * scl;
|
||||
float zver[2], zhor[2];
|
||||
for (int i=0; i < m->ncam; i++) {
|
||||
if (m->cam_sensorsize[2*i+1] == 0) {
|
||||
@@ -1710,7 +1712,7 @@ void mjv_addGeoms(const mjModel* m, mjData* d, const mjvOption* vopt,
|
||||
FINISH
|
||||
|
||||
// set category for light frame
|
||||
category = mjCAT_DECOR;
|
||||
category = mjCAT_DECOR;
|
||||
if (!(category & catmask) || vopt->frame != mjFRAME_LIGHT) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -215,8 +215,8 @@ static void renderGeom(const mjvGeom* geom, int mode, const float* headpos,
|
||||
float rgba[4] = {geom->rgba[0], geom->rgba[1], geom->rgba[2], geom->rgba[3]};
|
||||
int behind, whichface, lighting;
|
||||
|
||||
// lines to do not cast shadows
|
||||
if (mode == mjrRND_SHADOWCAST && geom->type == mjGEOM_LINE) {
|
||||
// lines and triangles do not cast shadows
|
||||
if (mode == mjrRND_SHADOWCAST && (geom->type == mjGEOM_LINE || geom->category == mjCAT_DECOR)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -121,14 +121,14 @@ static const char* MJCF[nMJCF][mjXATTRNUM] = {
|
||||
{"map", "?", "13", "stiffness", "stiffnessrot", "force", "torque", "alpha",
|
||||
"fogstart", "fogend", "znear", "zfar", "haze", "shadowclip", "shadowscale",
|
||||
"actuatortendon"},
|
||||
{"scale", "?", "16", "forcewidth", "contactwidth", "contactheight", "connect", "com",
|
||||
{"scale", "?", "17", "forcewidth", "contactwidth", "contactheight", "connect", "com",
|
||||
"camera", "light", "selectpoint", "jointlength", "jointwidth", "actuatorlength",
|
||||
"actuatorwidth", "framelength", "framewidth", "constraint", "slidercrank"},
|
||||
{"rgba", "?", "22", "fog", "haze", "force", "inertia", "joint",
|
||||
"actuatorwidth", "framelength", "framewidth", "constraint", "slidercrank", "frustum"},
|
||||
{"rgba", "?", "23", "fog", "haze", "force", "inertia", "joint",
|
||||
"actuator", "actuatornegative", "actuatorpositive", "com",
|
||||
"camera", "light", "selectpoint", "connect", "contactpoint", "contactforce",
|
||||
"contactfriction", "contacttorque", "contactgap", "rangefinder",
|
||||
"constraint", "slidercrank", "crankbroken"},
|
||||
"constraint", "slidercrank", "crankbroken", "frustum"},
|
||||
{">"},
|
||||
|
||||
{"statistic", "*", "5", "meaninertia", "meanmass", "meansize", "extent", "center"},
|
||||
@@ -2765,6 +2765,7 @@ void mjXReader::Visual(XMLElement* section) {
|
||||
ReadAttr(elem, "framewidth", 1, &vis->scale.framewidth, text);
|
||||
ReadAttr(elem, "constraint", 1, &vis->scale.constraint, text);
|
||||
ReadAttr(elem, "slidercrank", 1, &vis->scale.slidercrank, text);
|
||||
ReadAttr(elem, "frustum", 1, &vis->scale.frustum, text);
|
||||
}
|
||||
|
||||
// rgba sub-element
|
||||
@@ -2791,6 +2792,7 @@ void mjXReader::Visual(XMLElement* section) {
|
||||
ReadAttr(elem, "constraint", 4, vis->rgba.constraint, text);
|
||||
ReadAttr(elem, "slidercrank", 4, vis->rgba.slidercrank, text);
|
||||
ReadAttr(elem, "crankbroken", 4, vis->rgba.crankbroken, text);
|
||||
ReadAttr(elem, "frustum", 4, vis->rgba.frustum, text);
|
||||
}
|
||||
|
||||
// advance to next element
|
||||
|
||||
@@ -1082,6 +1082,7 @@ void mjXWriter::Visual(XMLElement* root) {
|
||||
WriteAttr(elem, "framewidth", 1, &vis->scale.framewidth, &visdef.scale.framewidth);
|
||||
WriteAttr(elem, "constraint", 1, &vis->scale.constraint, &visdef.scale.constraint);
|
||||
WriteAttr(elem, "slidercrank", 1, &vis->scale.slidercrank, &visdef.scale.slidercrank);
|
||||
WriteAttr(elem, "frustum", 1, &vis->scale.frustum, &visdef.scale.frustum);
|
||||
if (!elem->FirstAttribute()) {
|
||||
section->DeleteChild(elem);
|
||||
}
|
||||
@@ -1110,6 +1111,7 @@ void mjXWriter::Visual(XMLElement* root) {
|
||||
WriteAttr(elem, "constraint", 4, vis->rgba.constraint, visdef.rgba.constraint);
|
||||
WriteAttr(elem, "slidercrank", 4, vis->rgba.slidercrank, visdef.rgba.slidercrank);
|
||||
WriteAttr(elem, "crankbroken", 4, vis->rgba.crankbroken, visdef.rgba.crankbroken);
|
||||
WriteAttr(elem, "frustum", 4, vis->rgba.frustum, visdef.rgba.frustum);
|
||||
if (!elem->FirstAttribute()) {
|
||||
section->DeleteChild(elem);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user