From d597b23e5e22ba51dc07332afd3171845bee283c Mon Sep 17 00:00:00 2001 From: Haroon Qureshi Date: Fri, 27 Mar 2026 04:23:29 -0700 Subject: [PATCH] Remove mjModel dependency from builtins. PiperOrigin-RevId: 890372546 Change-Id: I1d6b99998e42c1d80072a04f5e57eaf5b4d49791 --- .../filament/filament/builtins.cc | 47 +++++++------------ src/experimental/filament/filament/builtins.h | 21 ++++----- .../filament/filament/object_manager.cc | 24 ++++++---- 3 files changed, 41 insertions(+), 51 deletions(-) diff --git a/src/experimental/filament/filament/builtins.cc b/src/experimental/filament/filament/builtins.cc index e2467c02..ba2525a8 100644 --- a/src/experimental/filament/filament/builtins.cc +++ b/src/experimental/filament/filament/builtins.cc @@ -24,8 +24,6 @@ #include #include #include -#include -#include #include #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 diff --git a/src/experimental/filament/filament/builtins.h b/src/experimental/filament/filament/builtins.h index e2ad0b4d..713fa6d1 100644 --- a/src/experimental/filament/filament/builtins.h +++ b/src/experimental/filament/filament/builtins.h @@ -16,22 +16,21 @@ #define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_BUILTINS_H_ #include -#include #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 diff --git a/src/experimental/filament/filament/object_manager.cc b/src/experimental/filament/filament/object_manager.cc index a2b3dbd8..4aedb120 100644 --- a/src/experimental/filament/filament/object_manager.cc +++ b/src/experimental/filament/filament/object_manager.cc @@ -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);