Source code for machine_common_sense.object_metadata
from .stringifier import Stringifier
[docs]class ObjectMetadata(object):
"""
Defines metadata for an object in the MCS 3D environment.
Attributes
----------
uuid : string
The unique ID of this object, used with some actions.
associated_with_agent: str
The agent holding this object.
dimensions : list of dicts
The dimensions of this object in the environment's 3D global
coordinate system as a list of 8 points (dicts with "x", "y", and "z").
direction : dict
The direction vector of "x", "y", and "z" degrees between your position
and this object's position (the difference in the two positions),
normalized to 1. You can use the "x" and "y" as the "rotation" and
"horizon" parameters (respectively) in a "RotateLook" action to face
this object.
distance : float
DEPRECATED. Same as distance_in_steps. Please use distance_in_steps
or distance_in_world.
distance_in_steps : float
The distance from you to this object in number of steps ("Move"
actions) on the 2D X/Z movement grid.
distance_in_world : float
The distance from you to this object in the environment's 3D global
coordinate system.
held : boolean
Whether you are holding this object.
is_open : boolean
Whether the object is open or not
locked: boolean
Whether the object is locked
mass : float
Haptic feedback. The mass of this object.
material_list : list of strings
Haptic feedback. The material(s) of this object.
See :mod:`Material <machine_common_sense.Material>`.
openable : boolean
Whether the object can be opened
position : dict
The "x", "y", and "z" coordinates for the global position of the
center of this object's 3D model.
rotation : dict
This object's rotation angles around the "x", "y", and "z" axes
in degrees.
segment_color : dict
The "r", "g", and "b" pixel values of this object in images from the
StepMetadata's "object_mask_list".
shape : string
This object's shape in plain English.
simulation_agent_held_object: str
The object associated held for the simulation agent that the performer
can retrieve through the InteractWithAgent method.
simulation_agent_is_holding_held_object: str
Whether this simulation agent is currently holding its
associated held object.
state_list : list of strings
This object's state(s) from the current step in the scene. Sometimes
used by objects with scripted behavior in passive scenes.
texture_color_list : list of strings
This object's colors, derived from its textures, in plain English.
visible : boolean
Whether you can see this object in your camera viewport.
"""
def __init__(
self,
uuid="",
dimensions=None,
direction=None,
distance=-1.0,
distance_in_steps=-1.0,
distance_in_world=-1.0,
held=False,
mass=0.0,
material_list=None,
position=None,
rotation=None,
segment_color=None,
shape="",
state_list=None,
texture_color_list=None,
visible=False,
is_open=False,
openable=False,
locked=False,
associated_with_agent="",
simulation_agent_held_object="",
simulation_agent_is_holding_held_object=False
):
self.uuid = uuid
self.dimensions = [] if dimensions is None else dimensions
self.direction = {} if direction is None else direction
self.distance = distance
self.distance_in_steps = distance_in_steps
self.distance_in_world = distance_in_world
self.held = held
self.mass = mass
self.material_list = [] if material_list is None else material_list
self.position = {} if position is None else position
self.rotation = {} if rotation is None else rotation
self.segment_color = {} \
if segment_color is None \
else segment_color
self.shape = shape
self.state_list = [] if state_list is None else state_list
self.texture_color_list = (
[] if texture_color_list is None else texture_color_list
)
self.visible = visible
self.is_open = is_open
self.openable = openable
self.locked = locked
self.associated_with_agent = associated_with_agent
self.simulation_agent_held_object = simulation_agent_held_object
self.simulation_agent_is_holding_held_object = \
simulation_agent_is_holding_held_object
def __str__(self):
return Stringifier.class_to_str(self)
# Allows converting the class to a dictionary, along with allowing
# certain fields to be left out of output file
def __iter__(self):
yield 'uuid', self.uuid
yield 'dimensions', self.dimensions
yield 'direction', self.direction
yield 'distance', self.distance
yield 'distance_in_steps', self.distance_in_steps
yield 'distance_in_world', self.distance_in_world
yield 'held', self.held
yield 'mass', self.mass
yield 'material_list', self.material_list
yield 'position', self.position
yield 'rotation', self.rotation
yield 'segment_color', self.segment_color
yield 'shape', self.shape
yield 'state_list', self.state_list
yield 'texture_color_list', self.texture_color_list
yield 'visible', self.visible
yield 'is_open', self.is_open
yield 'openable', self.openable
yield 'locked', self.locked
yield 'associated_with_agent', self.associated_with_agent
yield 'simulation_agent_held_object', self.simulation_agent_held_object
yield 'simulation_agent_is_holding_held_object', \
self.simulation_agent_is_holding_held_object