Remove mjModel dependency from builtins.

PiperOrigin-RevId: 890372546
Change-Id: I1d6b99998e42c1d80072a04f5e57eaf5b4d49791
This commit is contained in:
Haroon Qureshi
2026-03-27 04:23:29 -07:00
committed by Copybara-Service
parent f7fb23084d
commit d597b23e5e
3 changed files with 41 additions and 51 deletions
+17 -30
View File
@@ -24,8 +24,6 @@
#include <math/vec2.h>
#include <math/vec3.h>
#include <math/vec4.h>
#include <mujoco/mjmodel.h>
#include <mujoco/mjvisualize.h>
#include <mujoco/mujoco.h>
#include "experimental/filament/filament/buffer_util.h"
#include "experimental/filament/filament/vertex_util.h"
@@ -773,55 +771,44 @@ FilamentBuffers CreateFromBuilder(filament::Engine* engine, const T& builder) {
return {ib, vb, builder.GetBounds(), T::kPrimitiveType};
}
FilamentBuffers CreateLine(filament::Engine* engine, const mjModel* model) {
FilamentBuffers CreateLine(filament::Engine* engine) {
return CreateFromBuilder(engine, LineBuilder());
}
FilamentBuffers CreatePlane(filament::Engine* engine, const mjModel* model) {
const int num_quads = model->vis.quality.numquads;
return CreateFromBuilder(engine, PlaneBuilder(num_quads));
FilamentBuffers CreatePlane(filament::Engine* engine, int nquad) {
return CreateFromBuilder(engine, PlaneBuilder(nquad));
}
FilamentBuffers CreateTriangle(filament::Engine* engine, const mjModel* model) {
FilamentBuffers CreateTriangle(filament::Engine* engine) {
return CreateFromBuilder(engine, TriangleBuilder());
}
FilamentBuffers CreateBox(filament::Engine* engine, const mjModel* model) {
const int num_quads = model->vis.quality.numquads;
return CreateFromBuilder(engine, BoxBuilder(num_quads));
FilamentBuffers CreateBox(filament::Engine* engine, int nquad) {
return CreateFromBuilder(engine, BoxBuilder(nquad));
}
FilamentBuffers CreateLineBox(filament::Engine* engine, const mjModel* model) {
FilamentBuffers CreateLineBox(filament::Engine* engine) {
return CreateFromBuilder(engine, LineBoxBuilder());
}
FilamentBuffers CreateSphere(filament::Engine* engine, const mjModel* model) {
const int num_stacks = model->vis.quality.numstacks;
const int num_slices = model->vis.quality.numslices;
return CreateFromBuilder(engine, SphereBuilder(num_stacks, num_slices));
FilamentBuffers CreateSphere(filament::Engine* engine, int nstack, int nslice) {
return CreateFromBuilder(engine, SphereBuilder(nstack, nslice));
}
FilamentBuffers CreateTube(filament::Engine* engine, const mjModel* model) {
const int num_stacks = model->vis.quality.numstacks;
const int num_slices = model->vis.quality.numslices;
return CreateFromBuilder(engine, TubeBuilder(num_stacks, num_slices));
FilamentBuffers CreateTube(filament::Engine* engine, int nstack, int nslice) {
return CreateFromBuilder(engine, TubeBuilder(nstack, nslice));
}
FilamentBuffers CreateDisk(filament::Engine* engine, const mjModel* model) {
const int num_slices = model->vis.quality.numslices;
return CreateFromBuilder(engine, DiskBuilder(num_slices));
FilamentBuffers CreateDisk(filament::Engine* engine, int nslice) {
return CreateFromBuilder(engine, DiskBuilder(nslice));
}
FilamentBuffers CreateDome(filament::Engine* engine, const mjModel* model) {
const int num_stacks = model->vis.quality.numstacks / 2;
const int num_slices = model->vis.quality.numslices;
return CreateFromBuilder(engine, DomeBuilder(num_stacks, num_slices));
FilamentBuffers CreateDome(filament::Engine* engine, int nstack, int nslice) {
return CreateFromBuilder(engine, DomeBuilder(nstack, nslice));
}
FilamentBuffers CreateCone(filament::Engine* engine, const mjModel* model) {
const int num_stacks = model->vis.quality.numstacks;
const int num_slices = model->vis.quality.numslices;
return CreateFromBuilder(engine, ConeBuilder(num_stacks, num_slices));
FilamentBuffers CreateCone(filament::Engine* engine, int nstack, int nslice) {
return CreateFromBuilder(engine, ConeBuilder(nstack, nslice));
}
} // namespace mujoco
+10 -11
View File
@@ -16,22 +16,21 @@
#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_BUILTINS_H_
#include <filament/Engine.h>
#include <mujoco/mjmodel.h>
#include "experimental/filament/filament/buffer_util.h"
// Generates buffers for built-in shapes.
namespace mujoco {
FilamentBuffers CreateLine(filament::Engine* engine, const mjModel* model);
FilamentBuffers CreateBox(filament::Engine* engine, const mjModel* model);
FilamentBuffers CreateLineBox(filament::Engine* engine, const mjModel* model);
FilamentBuffers CreateTriangle(filament::Engine* engine, const mjModel* model);
FilamentBuffers CreatePlane(filament::Engine* engine, const mjModel* model);
FilamentBuffers CreateSphere(filament::Engine* engine, const mjModel* model);
FilamentBuffers CreateTube(filament::Engine* engine, const mjModel* model);
FilamentBuffers CreateDisk(filament::Engine* engine, const mjModel* model);
FilamentBuffers CreateDome(filament::Engine* engine, const mjModel* model);
FilamentBuffers CreateCone(filament::Engine* engine, const mjModel* model);
FilamentBuffers CreateLine(filament::Engine* engine);
FilamentBuffers CreatePlane(filament::Engine* engine, int nquad);
FilamentBuffers CreateTriangle(filament::Engine* engine);
FilamentBuffers CreateBox(filament::Engine* engine, int nquad);
FilamentBuffers CreateLineBox(filament::Engine* engine);
FilamentBuffers CreateSphere(filament::Engine* engine, int nstack, int nslice);
FilamentBuffers CreateTube(filament::Engine* engine, int nstack, int nslice);
FilamentBuffers CreateDisk(filament::Engine* engine, int nslice);
FilamentBuffers CreateDome(filament::Engine* engine, int nstack, int nslice);
FilamentBuffers CreateCone(filament::Engine* engine, int nstack, int nslice);
} // namespace mujoco
@@ -66,16 +66,20 @@ struct Asset {
ObjectManager::ObjectManager(const mjModel* model, filament::Engine* engine)
: model_(model), engine_(engine) {
shapes_[kLine] = CreateLine(engine_, model_);
shapes_[kBox] = CreateBox(engine_, model_);
shapes_[kLineBox] = CreateLineBox(engine_, model_);
shapes_[kCone] = CreateCone(engine_, model_);
shapes_[kDisk] = CreateDisk(engine_, model_);
shapes_[kDome] = CreateDome(engine_, model_);
shapes_[kTube] = CreateTube(engine_, model_);
shapes_[kPlane] = CreatePlane(engine_, model_);
shapes_[kSphere] = CreateSphere(engine_, model_);
shapes_[kTriangle] = CreateTriangle(engine_, model_);
const int nquad = model->vis.quality.numquads;
const int nstack = model->vis.quality.numstacks;
const int nslice = model->vis.quality.numslices;
shapes_[kLine] = CreateLine(engine_);
shapes_[kBox] = CreateBox(engine_, nquad);
shapes_[kLineBox] = CreateLineBox(engine_);
shapes_[kCone] = CreateCone(engine_, nstack, nslice);
shapes_[kDisk] = CreateDisk(engine_, nslice);
shapes_[kDome] = CreateDome(engine_, nstack / 2, nslice);
shapes_[kTube] = CreateTube(engine_, nstack, nslice);
shapes_[kPlane] = CreatePlane(engine_, nquad);
shapes_[kSphere] = CreateSphere(engine_, nstack, nslice);
shapes_[kTriangle] = CreateTriangle(engine_);
auto LoadMaterial = [this](std::string_view filename) {
Asset asset(filename);