Break out struct initialization functions into engine_init.c.
PiperOrigin-RevId: 811598048 Change-Id: Ia832a8268e2209a5a264bbf79aa00dda487206bc
This commit is contained in:
committed by
Copybara-Service
parent
fe8384b6c5
commit
e51459f949
@@ -44,6 +44,8 @@ set(MUJOCO_ENGINE_SRCS
|
|||||||
engine_global_table.h
|
engine_global_table.h
|
||||||
engine_inverse.c
|
engine_inverse.c
|
||||||
engine_inverse.h
|
engine_inverse.h
|
||||||
|
engine_init.c
|
||||||
|
engine_init.h
|
||||||
engine_island.c
|
engine_island.c
|
||||||
engine_island.h
|
engine_island.h
|
||||||
engine_io.c
|
engine_io.c
|
||||||
|
|||||||
@@ -943,18 +943,4 @@ void mj_local2Global(mjData* d, mjtNum xpos[3], mjtNum xmat[9],
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// set default solver parameters
|
|
||||||
void mj_defaultSolRefImp(mjtNum* solref, mjtNum* solimp) {
|
|
||||||
if (solref) {
|
|
||||||
solref[0] = 0.02; // timeconst
|
|
||||||
solref[1] = 1; // dampratio
|
|
||||||
}
|
|
||||||
|
|
||||||
if (solimp) {
|
|
||||||
solimp[0] = 0.9; // dmin
|
|
||||||
solimp[1] = 0.95; // dmax
|
|
||||||
solimp[2] = 0.001; // width
|
|
||||||
solimp[3] = 0.5; // midpoint
|
|
||||||
solimp[4] = 2; // power
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -0,0 +1,250 @@
|
|||||||
|
// Copyright 2025 DeepMind Technologies Limited
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include "engine/engine_init.h"
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <mujoco/mjmodel.h>
|
||||||
|
#include <mujoco/mjtnum.h>
|
||||||
|
#include "engine/engine_util_blas.h"
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma warning (disable: 4305) // disable MSVC warning: truncation from 'double' to 'float'
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//------------------------------- solver parameters ------------------------------------------------
|
||||||
|
|
||||||
|
// set default solver parameters
|
||||||
|
void mj_defaultSolRefImp(mjtNum* solref, mjtNum* solimp) {
|
||||||
|
if (solref) {
|
||||||
|
solref[0] = 0.02; // timeconst
|
||||||
|
solref[1] = 1; // dampratio
|
||||||
|
}
|
||||||
|
|
||||||
|
if (solimp) {
|
||||||
|
solimp[0] = 0.9; // dmin
|
||||||
|
solimp[1] = 0.95; // dmax
|
||||||
|
solimp[2] = 0.001; // width
|
||||||
|
solimp[3] = 0.5; // midpoint
|
||||||
|
solimp[4] = 2; // power
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//------------------------------- mjOption ---------------------------------------------------------
|
||||||
|
|
||||||
|
// set model options to default values
|
||||||
|
void mj_defaultOption(mjOption* opt) {
|
||||||
|
// fill opt with zeros in case struct is padded
|
||||||
|
memset(opt, 0, sizeof(mjOption));
|
||||||
|
|
||||||
|
// timing parameters
|
||||||
|
opt->timestep = 0.002;
|
||||||
|
opt->apirate = 100;
|
||||||
|
|
||||||
|
// solver parameters
|
||||||
|
opt->impratio = 1;
|
||||||
|
opt->tolerance = 1e-8;
|
||||||
|
opt->ls_tolerance = 0.01;
|
||||||
|
opt->noslip_tolerance = 1e-6;
|
||||||
|
opt->ccd_tolerance = 1e-6;
|
||||||
|
|
||||||
|
// physical constants
|
||||||
|
opt->gravity[0] = 0;
|
||||||
|
opt->gravity[1] = 0;
|
||||||
|
opt->gravity[2] = -9.81;
|
||||||
|
opt->wind[0] = 0;
|
||||||
|
opt->wind[1] = 0;
|
||||||
|
opt->wind[2] = 0;
|
||||||
|
opt->magnetic[0] = 0;
|
||||||
|
opt->magnetic[1] = -0.5;
|
||||||
|
opt->magnetic[2] = 0;
|
||||||
|
opt->density = 0;
|
||||||
|
opt->viscosity = 0;
|
||||||
|
|
||||||
|
// solver overrides
|
||||||
|
opt->o_margin = 0;
|
||||||
|
mj_defaultSolRefImp(opt->o_solref, opt->o_solimp);
|
||||||
|
opt->o_friction[0] = 1;
|
||||||
|
opt->o_friction[1] = 1;
|
||||||
|
opt->o_friction[2] = 0.005;
|
||||||
|
opt->o_friction[3] = 0.0001;
|
||||||
|
opt->o_friction[4] = 0.0001;
|
||||||
|
|
||||||
|
// discrete options
|
||||||
|
opt->integrator = mjINT_EULER;
|
||||||
|
opt->cone = mjCONE_PYRAMIDAL;
|
||||||
|
opt->jacobian = mjJAC_AUTO;
|
||||||
|
opt->solver = mjSOL_NEWTON;
|
||||||
|
opt->iterations = 100;
|
||||||
|
opt->ls_iterations = 50;
|
||||||
|
opt->noslip_iterations = 0;
|
||||||
|
opt->ccd_iterations = 35;
|
||||||
|
opt->disableflags = 0;
|
||||||
|
opt->enableflags = 0;
|
||||||
|
opt->disableactuator = 0;
|
||||||
|
|
||||||
|
// sdf collisions
|
||||||
|
opt->sdf_initpoints = 40;
|
||||||
|
opt->sdf_iterations = 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//------------------------------- mjStatistic ------------------------------------------------------
|
||||||
|
|
||||||
|
// set statistics to default values; compute later in compiler
|
||||||
|
void mj_defaultStatistic(mjStatistic* stat) {
|
||||||
|
mju_zero3(stat->center);
|
||||||
|
stat->extent = 2;
|
||||||
|
stat->meaninertia = 1;
|
||||||
|
stat->meanmass = 1;
|
||||||
|
stat->meansize = 0.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//------------------------------- mjVisual ---------------------------------------------------------
|
||||||
|
|
||||||
|
// set 4 floats
|
||||||
|
static void setf4(float* rgba, float r, float g, float b, float a) {
|
||||||
|
rgba[0] = r;
|
||||||
|
rgba[1] = g;
|
||||||
|
rgba[2] = b;
|
||||||
|
rgba[3] = a;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// set visual options to default values
|
||||||
|
void mj_defaultVisual(mjVisual* vis) {
|
||||||
|
// global
|
||||||
|
vis->global.cameraid = -1;
|
||||||
|
vis->global.orthographic = 0;
|
||||||
|
vis->global.fovy = 45;
|
||||||
|
vis->global.ipd = 0.068;
|
||||||
|
vis->global.azimuth = 90;
|
||||||
|
vis->global.elevation = -45;
|
||||||
|
vis->global.linewidth = 1.0;
|
||||||
|
vis->global.glow = 0.3;
|
||||||
|
vis->global.offwidth = 640;
|
||||||
|
vis->global.offheight = 480;
|
||||||
|
vis->global.realtime = 1.0;
|
||||||
|
vis->global.ellipsoidinertia = 0;
|
||||||
|
vis->global.bvactive = 1;
|
||||||
|
|
||||||
|
// rendering quality
|
||||||
|
vis->quality.shadowsize = 4096;
|
||||||
|
vis->quality.offsamples = 4;
|
||||||
|
vis->quality.numslices = 28;
|
||||||
|
vis->quality.numstacks = 16;
|
||||||
|
vis->quality.numquads = 4;
|
||||||
|
|
||||||
|
// head light
|
||||||
|
vis->headlight.ambient[0] = 0.1;
|
||||||
|
vis->headlight.ambient[1] = 0.1;
|
||||||
|
vis->headlight.ambient[2] = 0.1;
|
||||||
|
vis->headlight.diffuse[0] = 0.4;
|
||||||
|
vis->headlight.diffuse[1] = 0.4;
|
||||||
|
vis->headlight.diffuse[2] = 0.4;
|
||||||
|
vis->headlight.specular[0] = 0.5;
|
||||||
|
vis->headlight.specular[1] = 0.5;
|
||||||
|
vis->headlight.specular[2] = 0.5;
|
||||||
|
vis->headlight.active = 1;
|
||||||
|
|
||||||
|
// map parameters
|
||||||
|
vis->map.stiffness = 100;
|
||||||
|
vis->map.stiffnessrot = 500;
|
||||||
|
vis->map.force = 0.005;
|
||||||
|
vis->map.torque = 0.1;
|
||||||
|
vis->map.alpha = 0.3;
|
||||||
|
vis->map.fogstart = 3.0;
|
||||||
|
vis->map.fogend = 10.0;
|
||||||
|
vis->map.znear = 0.01;
|
||||||
|
vis->map.zfar = 50.0;
|
||||||
|
vis->map.haze = 0.3;
|
||||||
|
vis->map.shadowclip = 1.0;
|
||||||
|
vis->map.shadowscale = 0.6;
|
||||||
|
vis->map.actuatortendon = 2.0;
|
||||||
|
|
||||||
|
// size parameters
|
||||||
|
vis->scale.forcewidth = 0.1;
|
||||||
|
vis->scale.contactwidth = 0.3;
|
||||||
|
vis->scale.contactheight = 0.1;
|
||||||
|
vis->scale.connect = 0.2;
|
||||||
|
vis->scale.com = 0.4;
|
||||||
|
vis->scale.camera = 0.3;
|
||||||
|
vis->scale.light = 0.3;
|
||||||
|
vis->scale.selectpoint = 0.2;
|
||||||
|
vis->scale.jointlength = 1.0;
|
||||||
|
vis->scale.jointwidth = 0.1;
|
||||||
|
vis->scale.actuatorlength = 0.7;
|
||||||
|
vis->scale.actuatorwidth = 0.2;
|
||||||
|
vis->scale.framelength = 1.0;
|
||||||
|
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.);
|
||||||
|
setf4(vis->rgba.haze, 1., 1., 1., 1.);
|
||||||
|
setf4(vis->rgba.force, 1., .5, .5, 1.);
|
||||||
|
setf4(vis->rgba.inertia, .8, .2, .2, .6);
|
||||||
|
setf4(vis->rgba.joint, .2, .6, .8, 1.);
|
||||||
|
setf4(vis->rgba.actuator, .2, .25, .2, 1);
|
||||||
|
setf4(vis->rgba.actuatornegative, .2, .6, .9, 1.);
|
||||||
|
setf4(vis->rgba.actuatorpositive, .9, .4, .2, 1.);
|
||||||
|
setf4(vis->rgba.com, .9, .9, .9, 1.);
|
||||||
|
setf4(vis->rgba.camera, .6, .9, .6, 1);
|
||||||
|
setf4(vis->rgba.light, .6, .6, .9, 1.);
|
||||||
|
setf4(vis->rgba.selectpoint, .9, .9, .1, 1.);
|
||||||
|
setf4(vis->rgba.connect, .2, .2, .8, 1.);
|
||||||
|
setf4(vis->rgba.contactpoint, .9, .6, .2, 1.);
|
||||||
|
setf4(vis->rgba.contactforce, .7, .9, .9, 1.);
|
||||||
|
setf4(vis->rgba.contactfriction, .9, .8, .4, 1.);
|
||||||
|
setf4(vis->rgba.contacttorque, .9, .7, .9, 1.);
|
||||||
|
setf4(vis->rgba.contactgap, .5, .8, .9, 1.);
|
||||||
|
setf4(vis->rgba.rangefinder, 1., 1., .1, 1.);
|
||||||
|
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);
|
||||||
|
setf4(vis->rgba.bv, 0., 1., .0, .5);
|
||||||
|
setf4(vis->rgba.bvactive, 1., 0., .0, .5);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//------------------------------ mjLROpt -----------------------------------------------------------
|
||||||
|
|
||||||
|
// set default options for length range computation
|
||||||
|
void mj_defaultLROpt(mjLROpt* opt) {
|
||||||
|
opt->mode = mjLRMODE_MUSCLE;
|
||||||
|
opt->useexisting = 1;
|
||||||
|
opt->uselimit = 0;
|
||||||
|
|
||||||
|
opt->accel = 20;
|
||||||
|
opt->maxforce = 0;
|
||||||
|
opt->timeconst = 1;
|
||||||
|
opt->timestep = 0.01;
|
||||||
|
opt->inttotal = 10;
|
||||||
|
opt->interval = 2;
|
||||||
|
opt->tolrange = 0.05;
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
// Copyright 2025 DeepMind Technologies Limited
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#ifndef MUJOCO_SRC_ENGINE_ENGINE_INIT_H_
|
||||||
|
#define MUJOCO_SRC_ENGINE_ENGINE_INIT_H_
|
||||||
|
|
||||||
|
#include <mujoco/mujoco.h>
|
||||||
|
|
||||||
|
// set default options for length range computation
|
||||||
|
void mj_defaultLROpt(mjLROpt* opt);
|
||||||
|
|
||||||
|
// set model options to default values
|
||||||
|
void mj_defaultOption(mjOption* opt);
|
||||||
|
|
||||||
|
// set visual options to default values
|
||||||
|
void mj_defaultVisual(mjVisual* vis);
|
||||||
|
|
||||||
|
// set statistics to default values
|
||||||
|
void mj_defaultStatistic(mjStatistic* stat);
|
||||||
|
|
||||||
|
// set solver parameters to default values
|
||||||
|
void mj_defaultSolRefImp(mjtNum* solref, mjtNum* solimp);
|
||||||
|
|
||||||
|
#endif // MUJOCO_SRC_ENGINE_ENGINE_INIT_H_
|
||||||
+2
-203
@@ -26,7 +26,7 @@
|
|||||||
#include <mujoco/mjplugin.h>
|
#include <mujoco/mjplugin.h>
|
||||||
#include <mujoco/mjsan.h> // IWYU pragma: keep
|
#include <mujoco/mjsan.h> // IWYU pragma: keep
|
||||||
#include <mujoco/mjxmacro.h>
|
#include <mujoco/mjxmacro.h>
|
||||||
#include "engine/engine_core_util.h"
|
#include "engine/engine_init.h"
|
||||||
#include "engine/engine_macro.h"
|
#include "engine/engine_macro.h"
|
||||||
#include "engine/engine_memory.h"
|
#include "engine/engine_memory.h"
|
||||||
#include "engine/engine_plugin.h"
|
#include "engine/engine_plugin.h"
|
||||||
@@ -50,208 +50,7 @@
|
|||||||
static const int MAX_ARRAY_SIZE = INT_MAX / 4;
|
static const int MAX_ARRAY_SIZE = INT_MAX / 4;
|
||||||
|
|
||||||
|
|
||||||
//------------------------------ mjLROpt -----------------------------------------------------------
|
//----------------------------------- static utility functions -------------------------------------
|
||||||
|
|
||||||
// set default options for length range computation
|
|
||||||
void mj_defaultLROpt(mjLROpt* opt) {
|
|
||||||
opt->mode = mjLRMODE_MUSCLE;
|
|
||||||
opt->useexisting = 1;
|
|
||||||
opt->uselimit = 0;
|
|
||||||
|
|
||||||
opt->accel = 20;
|
|
||||||
opt->maxforce = 0;
|
|
||||||
opt->timeconst = 1;
|
|
||||||
opt->timestep = 0.01;
|
|
||||||
opt->inttotal = 10;
|
|
||||||
opt->interval = 2;
|
|
||||||
opt->tolrange = 0.05;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//------------------------------- mjOption ---------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// set model options to default values
|
|
||||||
void mj_defaultOption(mjOption* opt) {
|
|
||||||
// fill opt with zeros in case struct is padded
|
|
||||||
memset(opt, 0, sizeof(mjOption));
|
|
||||||
|
|
||||||
// timing parameters
|
|
||||||
opt->timestep = 0.002;
|
|
||||||
opt->apirate = 100;
|
|
||||||
|
|
||||||
// solver parameters
|
|
||||||
opt->impratio = 1;
|
|
||||||
opt->tolerance = 1e-8;
|
|
||||||
opt->ls_tolerance = 0.01;
|
|
||||||
opt->noslip_tolerance = 1e-6;
|
|
||||||
opt->ccd_tolerance = 1e-6;
|
|
||||||
|
|
||||||
// physical constants
|
|
||||||
opt->gravity[0] = 0;
|
|
||||||
opt->gravity[1] = 0;
|
|
||||||
opt->gravity[2] = -9.81;
|
|
||||||
opt->wind[0] = 0;
|
|
||||||
opt->wind[1] = 0;
|
|
||||||
opt->wind[2] = 0;
|
|
||||||
opt->magnetic[0] = 0;
|
|
||||||
opt->magnetic[1] = -0.5;
|
|
||||||
opt->magnetic[2] = 0;
|
|
||||||
opt->density = 0;
|
|
||||||
opt->viscosity = 0;
|
|
||||||
|
|
||||||
// solver overrides
|
|
||||||
opt->o_margin = 0;
|
|
||||||
mj_defaultSolRefImp(opt->o_solref, opt->o_solimp);
|
|
||||||
opt->o_friction[0] = 1;
|
|
||||||
opt->o_friction[1] = 1;
|
|
||||||
opt->o_friction[2] = 0.005;
|
|
||||||
opt->o_friction[3] = 0.0001;
|
|
||||||
opt->o_friction[4] = 0.0001;
|
|
||||||
|
|
||||||
// discrete options
|
|
||||||
opt->integrator = mjINT_EULER;
|
|
||||||
opt->cone = mjCONE_PYRAMIDAL;
|
|
||||||
opt->jacobian = mjJAC_AUTO;
|
|
||||||
opt->solver = mjSOL_NEWTON;
|
|
||||||
opt->iterations = 100;
|
|
||||||
opt->ls_iterations = 50;
|
|
||||||
opt->noslip_iterations = 0;
|
|
||||||
opt->ccd_iterations = 35;
|
|
||||||
opt->disableflags = 0;
|
|
||||||
opt->enableflags = 0;
|
|
||||||
opt->disableactuator = 0;
|
|
||||||
|
|
||||||
// sdf collisions
|
|
||||||
opt->sdf_initpoints = 40;
|
|
||||||
opt->sdf_iterations = 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//------------------------------- mjVisual ---------------------------------------------------------
|
|
||||||
|
|
||||||
// set 4 floats
|
|
||||||
static void setf4(float* rgba, float r, float g, float b, float a) {
|
|
||||||
rgba[0] = r;
|
|
||||||
rgba[1] = g;
|
|
||||||
rgba[2] = b;
|
|
||||||
rgba[3] = a;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// set visual options to default values
|
|
||||||
void mj_defaultVisual(mjVisual* vis) {
|
|
||||||
// global
|
|
||||||
vis->global.cameraid = -1;
|
|
||||||
vis->global.orthographic = 0;
|
|
||||||
vis->global.fovy = 45;
|
|
||||||
vis->global.ipd = 0.068;
|
|
||||||
vis->global.azimuth = 90;
|
|
||||||
vis->global.elevation = -45;
|
|
||||||
vis->global.linewidth = 1.0;
|
|
||||||
vis->global.glow = 0.3;
|
|
||||||
vis->global.offwidth = 640;
|
|
||||||
vis->global.offheight = 480;
|
|
||||||
vis->global.realtime = 1.0;
|
|
||||||
vis->global.ellipsoidinertia = 0;
|
|
||||||
vis->global.bvactive = 1;
|
|
||||||
|
|
||||||
// rendering quality
|
|
||||||
vis->quality.shadowsize = 4096;
|
|
||||||
vis->quality.offsamples = 4;
|
|
||||||
vis->quality.numslices = 28;
|
|
||||||
vis->quality.numstacks = 16;
|
|
||||||
vis->quality.numquads = 4;
|
|
||||||
|
|
||||||
// head light
|
|
||||||
vis->headlight.ambient[0] = 0.1;
|
|
||||||
vis->headlight.ambient[1] = 0.1;
|
|
||||||
vis->headlight.ambient[2] = 0.1;
|
|
||||||
vis->headlight.diffuse[0] = 0.4;
|
|
||||||
vis->headlight.diffuse[1] = 0.4;
|
|
||||||
vis->headlight.diffuse[2] = 0.4;
|
|
||||||
vis->headlight.specular[0] = 0.5;
|
|
||||||
vis->headlight.specular[1] = 0.5;
|
|
||||||
vis->headlight.specular[2] = 0.5;
|
|
||||||
vis->headlight.active = 1;
|
|
||||||
|
|
||||||
// map parameters
|
|
||||||
vis->map.stiffness = 100;
|
|
||||||
vis->map.stiffnessrot = 500;
|
|
||||||
vis->map.force = 0.005;
|
|
||||||
vis->map.torque = 0.1;
|
|
||||||
vis->map.alpha = 0.3;
|
|
||||||
vis->map.fogstart = 3.0;
|
|
||||||
vis->map.fogend = 10.0;
|
|
||||||
vis->map.znear = 0.01;
|
|
||||||
vis->map.zfar = 50.0;
|
|
||||||
vis->map.haze = 0.3;
|
|
||||||
vis->map.shadowclip = 1.0;
|
|
||||||
vis->map.shadowscale = 0.6;
|
|
||||||
vis->map.actuatortendon = 2.0;
|
|
||||||
|
|
||||||
// size parameters
|
|
||||||
vis->scale.forcewidth = 0.1;
|
|
||||||
vis->scale.contactwidth = 0.3;
|
|
||||||
vis->scale.contactheight = 0.1;
|
|
||||||
vis->scale.connect = 0.2;
|
|
||||||
vis->scale.com = 0.4;
|
|
||||||
vis->scale.camera = 0.3;
|
|
||||||
vis->scale.light = 0.3;
|
|
||||||
vis->scale.selectpoint = 0.2;
|
|
||||||
vis->scale.jointlength = 1.0;
|
|
||||||
vis->scale.jointwidth = 0.1;
|
|
||||||
vis->scale.actuatorlength = 0.7;
|
|
||||||
vis->scale.actuatorwidth = 0.2;
|
|
||||||
vis->scale.framelength = 1.0;
|
|
||||||
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.);
|
|
||||||
setf4(vis->rgba.haze, 1., 1., 1., 1.);
|
|
||||||
setf4(vis->rgba.force, 1., .5, .5, 1.);
|
|
||||||
setf4(vis->rgba.inertia, .8, .2, .2, .6);
|
|
||||||
setf4(vis->rgba.joint, .2, .6, .8, 1.);
|
|
||||||
setf4(vis->rgba.actuator, .2, .25, .2, 1);
|
|
||||||
setf4(vis->rgba.actuatornegative, .2, .6, .9, 1.);
|
|
||||||
setf4(vis->rgba.actuatorpositive, .9, .4, .2, 1.);
|
|
||||||
setf4(vis->rgba.com, .9, .9, .9, 1.);
|
|
||||||
setf4(vis->rgba.camera, .6, .9, .6, 1);
|
|
||||||
setf4(vis->rgba.light, .6, .6, .9, 1.);
|
|
||||||
setf4(vis->rgba.selectpoint, .9, .9, .1, 1.);
|
|
||||||
setf4(vis->rgba.connect, .2, .2, .8, 1.);
|
|
||||||
setf4(vis->rgba.contactpoint, .9, .6, .2, 1.);
|
|
||||||
setf4(vis->rgba.contactforce, .7, .9, .9, 1.);
|
|
||||||
setf4(vis->rgba.contactfriction, .9, .8, .4, 1.);
|
|
||||||
setf4(vis->rgba.contacttorque, .9, .7, .9, 1.);
|
|
||||||
setf4(vis->rgba.contactgap, .5, .8, .9, 1.);
|
|
||||||
setf4(vis->rgba.rangefinder, 1., 1., .1, 1.);
|
|
||||||
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);
|
|
||||||
setf4(vis->rgba.bv, 0., 1., .0, .5);
|
|
||||||
setf4(vis->rgba.bvactive, 1., 0., .0, .5);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//------------------------------- mjStatistic ------------------------------------------------------
|
|
||||||
|
|
||||||
// set statistics to default values; compute later in compiler
|
|
||||||
void mj_defaultStatistic(mjStatistic* stat) {
|
|
||||||
mju_zero3(stat->center);
|
|
||||||
stat->extent = 2;
|
|
||||||
stat->meaninertia = 1;
|
|
||||||
stat->meanmass = 1;
|
|
||||||
stat->meansize = 0.2;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user