Adding BIM data to asset

Hi, I am trying to create a digital twin of a building with assets and i want a way to attach BIM data (Temperature reading, Asset manufacture material ect) to my asset and view it when the asset is clicked when i run my simulation.

Would anyone assist on how this can be achieved through Omniverse and what steps should i take to achieve this

hiya, i am just another OV user; and i’d say that’s an interesting question. i wonder if this is something can be achieved using a custom schema in USD or implementing a way to embed metadata for your assets.

i am still learning, so that’s just a thought and likely not the answer. would love to hear ideas from the dev, though.

Hi,

You can also just add an attribute without a custom schema. It will show up in the Raw USD properties. You do need to make sure the schema aligns and there are some limitations to the allowed attribute names.
Create an Attribute — Omniverse Developer Guide latest documentation (nvidia.com)

Another option is CustomData, which allows you to store anything, even nested objects (you need to separate the key with ‘:’ to make something nested, like ‘BIM:temperature’, 5 and ‘BIM:material’, ‘metal’ will be stored as BIM: {temperature: 5, material: ‘metal’} .
This method stores the data, but it doesn’t show up anywhere in kit.
I found an extension to show these in a panel, and adapted it to also make it work for nested data. omni-customdata-view (github.com)
image

I’m currently storing both for another extension I’m writing.

...
if value and attr_data_type == "Float64":
       # Set Attribute
      prim_attr = prim_ref.CreateAttribute(
          attr_name,
          Sdf.ValueTypeNames.Float,
      )
      prim_attr.Set(value)
      # Set CustomData
      prim_ref.SetCustomDataByKey(
          custom_attr_name, value
      )
  elif value and attr_data_type == "String":
      prim_attr = prim_ref.CreateAttribute(
          attr_name,
          Sdf.ValueTypeNames.String,
      )
      prim_attr.Set(value)
      prim_ref.SetCustomDataByKey(
          custom_attr_name, value
      )
...
1 Like

that’s good to know! thanks for sharing 👍