Entity Options¶
Entity options describe one thing in the scene: a mesh or URDF/MJCF asset (EntityOptions, RobotOptions), a
primitive shape, a terrain, a bank of per-env variants (GroupedEntityOptions) or a multi-entity rig
(CompositeEntityOptions). SceneOptions holds them as named children; each name becomes the key of
env.entities. The entities guide explains pose frames, DOF fields and contact
parameters; the scenes guide covers scenes and terrain.
from eden.options.entities import BoxOptions, SceneOptions
scene_options = SceneOptions(box=BoxOptions(size=(0.1, 0.1, 0.1), default_root_pos=(0.0, 0.0, 0.6)))
Quaternion fields (default_root_quat, ...) are wxyz.
Scene¶
SceneOptions
¶
Bases: DynamicConfigurableOptions
Scene options for Eden, specifying the entities to construct the scene.
| PARAMETER | DESCRIPTION |
|---|---|
attachments_dict
|
A dictionary of entity_name -> (attach_to_entity_name, attach_to_link_name), optionally with a
mounting offset: entity_name -> (attach_to_entity_name, attach_to_link_name, attach_offset, attach_quat).
e.g., {"gripper": ("arm", "attachment")} or
{"gripper": ("arm", "attachment", (0.0, 0.0, 0.1), (1.0, 0.0, 0.0, 0.0))}.
Without an offset, the attached entity's
|
Source code in eden/options/options.py
Attributes¶
attachments_dict
class-attribute
instance-attribute
¶
Methods:¶
named_entities
¶
named_entities() -> dict[str, BaseEntityOptions]
Every entity the scene will build, keyed by final entity name (composites expanded).
Source code in eden/options/entities.py
remove_entity
¶
remove_entity(name: str) -> None
Remove the entity placed under scene key name, together with its own attachment.
The supported way for a task variant to drop an entity (see
eden/tasks/robosuite/variants.py::drop_object). Only an entity added by
name (an extra) is removable; one declared as a field of a SceneOptions subclass
(DroidSceneOptions.robot) is part of that scene class. An attachments_dict entry
that welds the removed entity onto a parent goes with it. An entity that other entities
are welded onto cannot be removed — remove the children first. Nothing else that names
the entity is touched — manager terms, cameras, sensors — so update those too, otherwise
they fail to resolve the entity at build time.
| PARAMETER | DESCRIPTION |
|---|---|
name
|
Scene key of the entity. A composite is removed whole, under its placement key; one of its bodies cannot be removed on its own.
TYPE:
|
| RAISES | DESCRIPTION |
|---|---|
RuntimeError
|
If the scene options are locked (checked before anything else). |
KeyError
|
If the scene has no entity |
ValueError
|
If another entity is attached to the one being removed. |
Source code in eden/options/entities.py
Base and asset entities¶
BaseEntityOptions
¶
Bases: ConfigurableOptions
Shared options for entities.
| PARAMETER | DESCRIPTION |
|---|---|
default_root_pos
|
Default root position. |
default_root_quat
|
Default root orientation as quaternion in (w, x, y, z). |
is_fixed_base
|
Whether the entity base is fixed.
TYPE:
|
is_articulated
|
Whether the entity has articulation.
TYPE:
|
is_actuated
|
Whether the entity is actuated.
TYPE:
|
material
|
Material used for the entity.
TYPE:
|
surface
|
Surface appearance used for the entity. Prefer an Eden :class:
TYPE:
|
color
|
Convenience shortcut to color the entity. When set (and |
visualize_contact
|
Whether to visualize contacts involving this entity.
TYPE:
|
vis_mode
|
Visualization mode for the entity.
TYPE:
|
visualization
|
Whether to visualize the entity.
TYPE:
|
collision
|
Whether this entity participates in collision checking.
TYPE:
|
contype
|
32-bit collision-filter bitmask. Two geoms can collide only if the
TYPE:
|
conaffinity
|
32-bit collision-filter bitmask. See
TYPE:
|
collision_link_patterns
|
Regex/glob patterns matched against link names. When set, only geoms on
matching links keep collision; geoms on all other links are disabled
(
TYPE:
|
collision_friction
|
Friction coefficient applied to the geoms kept by
TYPE:
|
batch_fixed_verts
|
Whether fixed-geometry vertices are batched for per-env transforms.
TYPE:
|
is_support_enabled
|
Whether support-point computation is enabled.
TYPE:
|
support_sample_method
|
The method to sample the support points. Defaults to "uniform".
TYPE:
|
support_minimum_clearance
|
The minimum clearance to be considered for support points. Defaults to 0.05.
TYPE:
|
support_shrink
|
The shrink factor to be applied to the support points. Defaults to 0.1.
TYPE:
|
support_num_sample_points
|
The number of support points to sample per square meter of polygon. Defaults to 300.
TYPE:
|
support_grid_size
|
The size of the grid to sample the support points when
TYPE:
|
support_links_name
|
Exact link names (URDF link names / MJCF body names) whose geometry should
be considered when extracting support surfaces. Empty (default) means all
links contribute. Use this on multi-link assets
(e.g. the Riverway franka station) to restrict placement targets to a
specific surface like |
dofs_name
|
Controllable DOF names. |
dofs_spec
|
Class-level default actuator specification map for DOFs.
TYPE:
|
default_dofs_pos
|
Default DOF positions. |
default_dofs_vel
|
Default DOF velocities. |
default_dofs_kp
|
Default DOF position gains. |
default_dofs_kd
|
Default DOF velocity gains. |
default_dofs_stiffness
|
Default DOF stiffness values. |
default_dofs_damping
|
Default DOF damping values. |
default_dofs_armature
|
Default DOF armature values. |
default_dofs_frictionloss
|
Default DOF dry-friction (stiction) torques. Values below the drive torque leave actuation unaffected while absorbing sub-threshold oscillation (contact chatter). |
default_dofs_spring_ref
|
Re-anchor a DOF's passive spring ( |
default_dofs_pos_limits
|
Hard DOF position limits. |
soft_dofs_pos_limits
|
Soft DOF position limits. |
default_dofs_force_limits
|
Default DOF force limits. |
default_equalities_sol_params
|
Constraint solver parameters
TYPE:
|
default_geoms_sol_params
|
Constraint solver parameters for the collision geoms of links matching each
key (exact name, glob, or regex — same semantics as |
default_geoms_friction
|
Friction for the collision geoms of links matching each key (same pattern semantics
as |
default_geoms_friction_torsional
|
Torsional friction (spin resistance about the contact normal, in meters) for the collision
geoms of links matching each key — same pattern and |
default_geoms_friction_rolling
|
Rolling friction (resistance about the two contact tangent axes, in meters) for the collision
geoms of links matching each key. Same semantics as |
Source code in eden/options/options.py
Attributes¶
collision_link_patterns
class-attribute
instance-attribute
¶
support_sample_method
class-attribute
instance-attribute
¶
support_sample_method: Literal['uniform', 'grid'] = 'uniform'
support_minimum_clearance
class-attribute
instance-attribute
¶
support_minimum_clearance: float = 0.05
default_root_quat
class-attribute
instance-attribute
¶
default_dofs_stiffness
class-attribute
instance-attribute
¶
default_dofs_damping
class-attribute
instance-attribute
¶
default_dofs_armature
class-attribute
instance-attribute
¶
default_dofs_frictionloss
class-attribute
instance-attribute
¶
default_dofs_spring_ref
class-attribute
instance-attribute
¶
default_dofs_pos_limits
class-attribute
instance-attribute
¶
soft_dofs_pos_limits
class-attribute
instance-attribute
¶
default_dofs_force_limits
class-attribute
instance-attribute
¶
default_equalities_sol_params
class-attribute
instance-attribute
¶
default_geoms_sol_params
class-attribute
instance-attribute
¶
default_geoms_friction
class-attribute
instance-attribute
¶
default_geoms_friction_torsional
class-attribute
instance-attribute
¶
EntityOptions
¶
Bases: BaseEntityOptions
Entity options for Eden, wrapping Genesis' Entity related options.
| PARAMETER | DESCRIPTION |
|---|---|
up
|
The object's up direction in its own coordinate system (use
|
front
|
The object's front direction in its own coordinate system (use
|
local_dir
|
Where the asset is cached. Unset, it is the family's
|
file
|
Path to the entity file.
|
scale
|
Scale of the entity: uniform, or along each axis of the asset's frame (a scanned mesh
measured to a real object's size, say). Unequal axes need a mesh
|
collision
|
Whether the entity needs to be considered for collision checking. Defaults to True.
|
decimate
|
Whether to decimate (simplify) the mesh. Defaults to True. This is only used for RigidEntity.
TYPE:
|
decimate_face_num
|
The number of faces to decimate to. Defaults to 1000. This is only used for RigidEntity.
TYPE:
|
decimate_aggressiveness
|
How hard the decimation process will try to match the target number of faces, as an integer ranging from 0 to 8. 0 is lossless. 2 preserves all features of the original geometry. 5 may significantly alter the original geometry if necessary. 8 does what needs to be done at all costs. Defaults to 3. This is only used for RigidEntity.
TYPE:
|
convexify
|
Whether to convexify the entity. When convexify is True, all the meshes in the entity will each be converted
to a set of convex hulls. The mesh will be decomposed into multiple convex components if the convex hull is not
sufficient to meet the desired accuracy (see 'decompose_(robot|object)_error_threshold' documentation). The
module 'coacd' is used for this decomposition process. If not given, it defaults to
TYPE:
|
decompose_object_error_threshold
|
For basic rigid objects (mug, table...), skip convex decomposition if the relative difference between the volume of original mesh and its convex hull is lower than this threshold. 0.0 to enforce decomposition, float("inf") to disable it completely. Defaults to 0.15 (15%).
TYPE:
|
decompose_robot_error_threshold
|
For poly-articulated robots, skip convex decomposition if the relative difference between the volume of original mesh and its convex hull is lower than this threshold. 0.0 to enforce decomposition, float("inf") to disable it completely. Defaults to float("inf").
TYPE:
|
coacd_threshold
|
The threshold for the CoACD algorithm. Defaults to 0.05.
TYPE:
|
coacd_preprocess_resolution
|
The resolution for the CoACD algorithm. Defaults to 100.
TYPE:
|
links_to_keep
|
A list of link names that should not be skipped during link merging. Defaults to [].
TYPE:
|
align
|
Whether Genesis re-frames a floating root link onto its centre of mass and principal axes.
TYPE:
|
default_armature
|
Rotor inertia Genesis fills in at
TYPE:
|
is_fixed_base
|
Whether the entity is fixed in the environment. A URDF, USD or mesh asset is built to match. An MJCF is
not — Genesis has no
|
is_articulated
|
Whether the entity is articulated.
|
is_actuated
|
Whether the entity is actuated.
|
default_root_pos
|
The default position of the loaded entity's root link. Will not take effect if the entity is attached to another entity.
|
default_root_quat
|
The default orientation of the loaded entity's root link (w, x, y, z). Will not take effect if the entity is attached to another entity.
|
dofs_name
|
The names of the DOFs to be treated as controllable DOFs.
|
dofs_spec
|
Class-level default actuator specification map for entity DOFs.
TYPE:
|
default_dofs_pos
|
The default positions of the DOFs of the entity.
|
default_dofs_vel
|
The default velocities of the DOFs of the entity.
|
default_dofs_kp
|
The default control position gains of the DOFs of the entity.
|
default_dofs_kd
|
The default control velocity gains of the DOFs of the entity.
|
default_dofs_stiffness
|
The default stiffnesses of the DOFs of the entity. If provided, the value will be used over the stiffness in dofs_spec.
|
default_dofs_damping
|
The default dampings of the DOFs of the entity. If provided, the value will be used over the damping in dofs_spec.
|
default_dofs_armature
|
The default armatures of the DOFs of the entity. If provided, the value will be used over the armature in dofs_spec.
|
default_dofs_pos_limits
|
The position limits of the DOFs of the entity.
|
soft_dofs_pos_limits
|
The position limits of the DOFs of the entity that are treated as soft DOFs.
|
Source code in eden/options/options.py
Attributes¶
decompose_object_error_threshold
class-attribute
instance-attribute
¶
decompose_object_error_threshold: float = 0.15
decompose_robot_error_threshold
class-attribute
instance-attribute
¶
coacd_preprocess_resolution
class-attribute
instance-attribute
¶
coacd_preprocess_resolution: int = 100
Methods:¶
resolve_local_dir
¶
resolve_local_dir() -> str
Where this entity's asset is cached: local_dir, else assets_subdir under the asset root.
Resolved on each call, never stored: EDEN_ASSETS_DIR then moves every default, and a saved
config's local_dir stays unset. To fetch a file, call :meth:fetch_asset.
Source code in eden/options/entities.py
fetch_asset
¶
The local path of file (default: self.file) from this entity's Hub dataset, downloaded if missing.
Fetches with this entity's registry, dataset and :meth:resolve_local_dir. Call this rather
than get_asset_path(..., local_dir=options.local_dir): an unset local_dir passed on raw would
fetch into the asset root instead of the family's assets_subdir, and nothing would fail.
Source code in eden/options/entities.py
fetch_family_asset
classmethod
¶
The local path of file from this family's default Hub dataset, downloaded if missing.
For a file the family's dataset ships that no entity is built from (a task catalogue's BDDL file, a
background image), so there is no options instance to call :meth:fetch_asset on: fetches with the
class's default registry/dataset/local_dir, the last resolved like :meth:resolve_local_dir.
Nothing is validated as an entity, so the file may be of any type.
| RAISES | DESCRIPTION |
|---|---|
ValueError
|
When the family declares no Hub |
Source code in eden/options/entities.py
resolve_runtime_file
¶
resolve_runtime_file() -> str
Return the asset descriptor consumed while building the runtime entity.
Subclasses may derive a loadable descriptor from the serialized source asset.
The returned path is runtime state and must not be written back to file.
Source code in eden/options/entities.py
RobotOptions
¶
Bases: EntityOptions
Robot entity options for Eden.
Source code in eden/options/options.py
Attributes¶
MetadataOptions
¶
Bases: DynamicConfigurableOptions
Metadata options for Entity, used to store additional metadata about the entity.
Source code in eden/options/options.py
Primitives¶
PrimitiveOptions
¶
Bases: BaseEntityOptions
Base options for primitive shapes.
| PARAMETER | DESCRIPTION |
|---|---|
default_root_pos
|
Default root position. |
default_root_quat
|
Default root orientation as quaternion in (w, x, y, z). |
fixed
|
Whether the entity is fixed.
|
is_articulated
|
Whether the entity has articulation.
TYPE:
|
is_actuated
|
Whether the entity is actuated.
TYPE:
|
material
|
Material used for the entity.
TYPE:
|
surface
|
Surface appearance used for the entity. Prefer an Eden :class:
TYPE:
|
color
|
Convenience shortcut to color the entity (RGB or RGBA) without a full surface. |
visualize_contact
|
Whether to visualize contacts involving this entity.
TYPE:
|
vis_mode
|
Visualization mode for the entity.
TYPE:
|
collision
|
Whether this entity participates in collision checking.
TYPE:
|
batch_fixed_verts
|
Whether fixed-geometry vertices are batched for per-env transforms.
TYPE:
|
is_support_enabled
|
Whether support-point computation is enabled.
TYPE:
|
Source code in eden/options/options.py
PlaneOptions
¶
Bases: PrimitiveOptions
Source code in eden/options/options.py
BoxOptions
¶
Bases: PrimitiveOptions
Source code in eden/options/options.py
SphereOptions
¶
Bases: PrimitiveOptions
Source code in eden/options/options.py
CylinderOptions
¶
Bases: PrimitiveOptions
Source code in eden/options/options.py
RodOptions
¶
Bases: PrimitiveOptions
A discrete elastic rod on a polyline (eden.engine.solvers.mochi.morphs.Rod), for the Mochi solver only.
The morph is the centerline; the material must be a
:class:~eden.options.materials.MochiRodMaterialOptions, which derives the rod's stiffness from
radius unless given explicitly. Clamp a rod after build by fixing its first two nodes
(env.entities[name].set_vertices_fixed([0, 1])). default_root_pos / default_root_quat
place the whole polyline; is_fixed_base has no meaning for a rod and is rejected.
| PARAMETER | DESCRIPTION |
|---|---|
points
|
Centerline nodes (at least two, consecutive nodes distinct), in the rod's own frame.
TYPE:
|
radius
|
Circular cross-section radius (m). Default is 0.01.
TYPE:
|
n_cross_section_segments
|
Tube tessellation used for rendering only. Default is 12.
TYPE:
|
is_closed_loop
|
Connect the last node back to the first. Default is False.
TYPE:
|
Source code in eden/options/options.py
Attributes¶
Methods:¶
get_morph
¶
get_morph() -> Rod
Source code in eden/options/entities.py
Terrain¶
TerrainOptions
¶
Bases: BaseEntityOptions
Terrain entity options for Eden, wrapping Genesis' Terrain related options.
Note that all dofs/articulation-related fields are set to empty/False and is_fixed_base is always set to True.
| PARAMETER | DESCRIPTION |
|---|---|
horizontal_scale
|
The size of each cell in the subterrain in meters. Defaults to 0.25.
TYPE:
|
vertical_scale
|
The height of each step in the subterrain in meters. Defaults to 0.005.
TYPE:
|
subterrain_size
|
The size of each subterrain in meters. Defaults to (32.0, 32.0), which holds every
built-in parkour course at its shipped defaults (they run out to ~29 m). On a shorter
strip the parkour generators pull the final goal back into the walkable area, and
raise once the course cannot fit at all (see
TYPE:
|
uv_scale
|
How many times the surface texture repeats across the whole terrain, as
TYPE:
|
randomize
|
Whether to randomize the subterrains that involve randomness. Defaults to False.
TYPE:
|
terrain_generators
|
Terrain generator configuration grid.
TYPE:
|
use_checker_surface
|
Whether to render checkerboard surface instead of a custom surface.
TYPE:
|
material
|
Material used for terrain.
TYPE:
|
surface
|
Surface appearance used for terrain.
TYPE:
|
visualize_contact
|
Whether to visualize contacts involving terrain.
TYPE:
|
vis_mode
|
Visualization mode for terrain.
TYPE:
|
is_support_enabled
|
Whether support-point computation is enabled.
TYPE:
|
default_root_pos
|
Default root position. |
default_root_quat
|
Default root orientation as quaternion in (w, x, y, z). |
Source code in eden/options/options.py
Attributes¶
terrain_generators
class-attribute
instance-attribute
¶
terrain_generators: list[list[TerrainTermOptions]] = [[FlatTerrain.configure()]]
TerrainTermOptions
¶
Bases: DynamicConfigurableOptions
TerrainGenerator options for Eden, configure by TerrainGenerator.configure().
Source code in eden/options/options.py
The terrain generators a TerrainOptions composes are on the robotics utilities page.
Per-env variants¶
GroupedEntityOptions
¶
Bases: BaseEntityOptions
Grouped entity used for heterogeneous batching.
Supports both non-articulated entities (Mesh, Primitive) and articulated entities (URDF) that share the same joint structure (same number of links, joints, and DOFs).
Each variant contributes its morph (file or shape, mesh processing, its own default_root_pos /
default_root_quat), and may hold its own value for some of the group's fields. A variant holds a
value when it differs from the field's default, whether passed in or its catalog class's default.
- Per variant (
variant_values(),variant_materials): the geom fields (default_geoms_friction*,default_geoms_sol_params), the per-DOF ones (default_dofs_*andsoft_dofs_pos_limits) and the material'srho/friction*. Each env takes its variant's own value, else the group's. Variants that differ in a simulated DOF field (gains, stiffness, damping, armature, frictionloss, force limits) needEnvOptions(batch_dofs_info=True). A per-variantrhorescales each env's mass after the build, so it needs a mesh or primitive variant, whose mass Genesis computes from its density. - Shared (
shared_dof_fields(),shared_dofs_spec):dofs_nameanddefault_dofs_spring_ref, the group's own or, when it sets none, that of the first variant that sets one; a variant's own different value is refused. So is a variant class'sdofs_specthat differs from another's. - Group only: every other field (
surface,color,is_fixed_base, the support and collision mask fields, the other material fields): a variant's own different value is refused.
A variant overrides the group's own value for a per-variant field only with a value other than its class's
default: one equal to the class default is read as inherited and refused, as the group's value would
silently skip it. The group's value is also refused when every variant overrides it, as it would apply to
none of them. check_variants runs these checks; the entity runs it again before the build.
| PARAMETER | DESCRIPTION |
|---|---|
grouped_entities
|
A list of entity configurations to be grouped.
TYPE:
|
is_fixed_base
|
Whether grouped entities should be treated as fixed base.
TYPE:
|
dofs_name
|
Controllable DOF names shared by the group. |
dofs_spec
|
Class-level default actuator specification map for grouped DOFs.
TYPE:
|
default_dofs_pos
|
Default grouped DOF positions. |
default_dofs_vel
|
Default grouped DOF velocities. |
default_dofs_kp
|
Default grouped DOF position gains. |
default_dofs_kd
|
Default grouped DOF velocity gains. |
default_dofs_stiffness
|
Default grouped DOF stiffness values. |
default_dofs_damping
|
Default grouped DOF damping values. |
default_dofs_armature
|
Default grouped DOF armature values. |
default_dofs_pos_limits
|
Hard grouped DOF position limits. |
soft_dofs_pos_limits
|
Soft grouped DOF position limits. |
default_dofs_force_limits
|
Default grouped DOF force limits. |
Source code in eden/options/options.py
Attributes¶
grouped_entities
class-attribute
instance-attribute
¶
grouped_entities: list[EntityOptions | PrimitiveOptions] = Field(default_factory=list)
variant_materials
property
¶
variant_materials: list[MaterialLike]
Each variant's material: the group's, with the variant's own rho and friction coefficients.
shared_dofs_spec
property
¶
shared_dofs_spec: dict[str, type[ActuatorSpecOptions]]
The actuator specs every variant shares: a variant's own dofs_spec, else the group's.
Methods:¶
check_variants
¶
Refuse what the variants hold that the entity cannot apply as configured (raises ValueError).
Run at construction, and again by the entity before the scene is built: a TaskMod or any other code
that assigns a field of the group or of a variant after construction never re-runs
model_post_init, so its edit would otherwise go unchecked.
Source code in eden/options/entities.py
variant_values
¶
Each variant's value for every per-variant field: its own, else the group's.
Source code in eden/options/entities.py
shared_dof_fields
¶
The DOF fields every variant shares (dofs_name, default_dofs_spring_ref).
Each is the group's own value, else that of the first variant that sets one. Resolved on read rather than copied onto the group: once a config is dumped a copy cannot be told from a value the group set, so an override that swaps the bank would keep the old one's.
Composite rigs¶
The base of the composite robot presets (an arm plus a hand, a humanoid plus two hands); see robot presets.
CompositeEntityOptions
¶
Bases: ConfigurableOptions
A composite of several entities added to a scene as a single unit.
A composite is a real, validated Options (it round-trips through the config system
and declares its own fields). It stays in :class:SceneOptions as-is — a task adds
it by name like any other entity, SceneOptions(robot=Droid(...)) — and the env
build loop expands it into ordinary entities + weld wiring (see
RLEnvBase scene construction). A composite adds no runtime behaviour of its own
beyond "these named entities + these welds", which env.entities + attach_to
already provide, so there is deliberately no composite runtime entity.
Subclasses describe the rig by implementing :meth:entity_parts (the ordered
(name, sub-entity Options) pairs) and, when parts are welded, :meth:attachments;
:meth:entity_options keys those parts by name, refusing a collision that would otherwise
cost the rig a body silently. The scene placement key must equal :attr:primary_name (the
root body), so the key is meaningful (not silently discarded) and downstream terms can
reference the sub-entities by the composite's own names. Concrete composites — an arm +
gripper (a manipulator), a humanoid + hands — live in eden/options/robots/composite.
Source code in eden/options/options.py
Attributes¶
primary_name
property
¶
primary_name: str
The root body's name — the scene placement key must equal this.
Methods:¶
entity_parts
¶
The named sub-entities this composite is built from, in declaration order (uncopied).
A list, not a dict, because this is the only place two bodies sharing a name are still
visible — :meth:entity_options collapses them. Implement this rather than
:meth:entity_options so the duplicate check there covers every composite shape.
Source code in eden/options/entities.py
entity_options
¶
The named sub-entities keyed by name (uncopied), and where a name collision is caught.
Framework-owned: subclasses implement :meth:entity_parts instead, so this check cannot
be bypassed by method dispatch.
Two bodies under one name collapse to a single entry, leaving the composite one body
short with nothing downstream noticing: :attr:entity_names, :meth:expand and the
cross-composite check in :meth:SceneOptions.model_post_init all read this dict, so
none of them can see what has already been overwritten. Checked here, on every call, not
only at construction (:meth:model_post_init calls this) — these Options do not
validate_assignment, so a *_name reassigned after construction would slip past a
construction-time-only guard.
Source code in eden/options/entities.py
attachments
¶
Weld wiring: child entity -> (parent entity, parent link[, mount pos, mount quat]).
Default: none. See :attr:SceneOptions.attachments_dict for the optional offset form.
Source code in eden/options/entities.py
expand
¶
Return (named_entities, attachments) for the scene build loop.
The sub-entity Options are deep-copied so one composite instance can be placed in
several scenes (or reused from the registry) without the scenes aliasing — and
mutating — the same Options. (copy.deepcopy — not pydantic model_copy —
because genesis' Options define __deepcopy__(self, memo).)