{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "bps/radiance", "title": "HBJSON Radiance Daylighting Schema", "description": "Radiance daylighting simulation parameters compatible with honeybee-schema radiance properties. Covers modifiers, modifier sets, sensor grids, views, and dynamic states.", "$defs": { "_IdentifiedObject": { "type": "object", "properties": { "identifier": { "type": "string", "pattern": "^[.A-Za-z0-9_-]+$", "minLength": 1, "maxLength": 100 }, "display_name": { "type": [ "string", "null" ] }, "user_data": { "type": [ "object", "null" ] } }, "required": [ "identifier" ] }, "Void": { "type": "object", "properties": { "type": { "const": "Void" } }, "required": [ "type" ], "additionalProperties": false }, "Plastic": { "type": "object", "allOf": [ { "$ref": "#/$defs/_IdentifiedObject" }, { "type": "object", "properties": { "type": { "const": "Plastic" }, "r_reflectance": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "g_reflectance": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "b_reflectance": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "specularity": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "roughness": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 } }, "required": [ "type" ], "additionalProperties": false } ] }, "Metal": { "type": "object", "allOf": [ { "$ref": "#/$defs/_IdentifiedObject" }, { "type": "object", "properties": { "type": { "const": "Metal" }, "r_reflectance": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "g_reflectance": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "b_reflectance": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "specularity": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.9 }, "roughness": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 } }, "required": [ "type" ], "additionalProperties": false } ] }, "Trans": { "type": "object", "allOf": [ { "$ref": "#/$defs/_IdentifiedObject" }, { "type": "object", "properties": { "type": { "const": "Trans" }, "r_reflectance": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "g_reflectance": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "b_reflectance": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "specularity": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "roughness": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "transmitted_diff": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "transmitted_spec": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 } }, "required": [ "type" ], "additionalProperties": false } ] }, "Glass": { "type": "object", "allOf": [ { "$ref": "#/$defs/_IdentifiedObject" }, { "type": "object", "properties": { "type": { "const": "Glass" }, "r_transmissivity": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "g_transmissivity": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "b_transmissivity": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "refraction_index": { "type": "number", "exclusiveMinimum": 1, "default": 1.52 } }, "required": [ "type" ], "additionalProperties": false } ] }, "Mirror": { "type": "object", "allOf": [ { "$ref": "#/$defs/_IdentifiedObject" }, { "type": "object", "properties": { "type": { "const": "Mirror" }, "r_reflectance": { "type": "number", "minimum": 0, "maximum": 1, "default": 1 }, "g_reflectance": { "type": "number", "minimum": 0, "maximum": 1, "default": 1 }, "b_reflectance": { "type": "number", "minimum": 0, "maximum": 1, "default": 1 } }, "required": [ "type" ], "additionalProperties": false } ] }, "Light": { "type": "object", "allOf": [ { "$ref": "#/$defs/_IdentifiedObject" }, { "type": "object", "properties": { "type": { "const": "Light" }, "r_emittance": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "g_emittance": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "b_emittance": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 } }, "required": [ "type" ], "additionalProperties": false } ] }, "Glow": { "type": "object", "allOf": [ { "$ref": "#/$defs/_IdentifiedObject" }, { "type": "object", "properties": { "type": { "const": "Glow" }, "r_emittance": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "g_emittance": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "b_emittance": { "type": "number", "minimum": 0, "maximum": 1, "default": 0 }, "max_radius": { "type": "number", "default": 0 } }, "required": [ "type" ], "additionalProperties": false } ] }, "BSDF": { "type": "object", "allOf": [ { "$ref": "#/$defs/_IdentifiedObject" }, { "type": "object", "properties": { "type": { "const": "BSDF" }, "up_orientation": { "type": "array", "items": { "type": "number" }, "minItems": 3, "maxItems": 3, "default": [ 0.01, 0.01, 1.0 ] }, "thickness": { "type": "number", "default": 0 }, "function_file": { "type": "string", "minLength": 1, "maxLength": 100, "default": "." }, "transform": { "type": [ "string", "null" ], "minLength": 1, "maxLength": 100 }, "bsdf_data": { "type": "string", "minLength": 1 }, "front_diffuse_reflectance": { "type": [ "array", "null" ], "items": { "type": "number", "minimum": 0, "maximum": 1 }, "minItems": 3, "maxItems": 3 }, "back_diffuse_reflectance": { "type": [ "array", "null" ], "items": { "type": "number", "minimum": 0, "maximum": 1 }, "minItems": 3, "maxItems": 3 }, "diffuse_transmittance": { "type": [ "array", "null" ], "items": { "type": "number", "minimum": 0, "maximum": 1 }, "minItems": 3, "maxItems": 3 } }, "required": [ "type", "bsdf_data" ], "additionalProperties": false } ] }, "Modifier": { "oneOf": [ { "$ref": "#/$defs/Plastic" }, { "$ref": "#/$defs/Metal" }, { "$ref": "#/$defs/Trans" }, { "$ref": "#/$defs/Glass" }, { "$ref": "#/$defs/Mirror" }, { "$ref": "#/$defs/Light" }, { "$ref": "#/$defs/Glow" }, { "$ref": "#/$defs/BSDF" }, { "$ref": "#/$defs/Void" } ] }, "WallModifierSetAbridged": { "type": "object", "properties": { "type": { "const": "WallModifierSetAbridged" }, "exterior_modifier": { "type": [ "string", "null" ] }, "interior_modifier": { "type": [ "string", "null" ] } }, "required": [ "type" ], "additionalProperties": false }, "FloorModifierSetAbridged": { "type": "object", "properties": { "type": { "const": "FloorModifierSetAbridged" }, "exterior_modifier": { "type": [ "string", "null" ] }, "interior_modifier": { "type": [ "string", "null" ] } }, "required": [ "type" ], "additionalProperties": false }, "RoofCeilingModifierSetAbridged": { "type": "object", "properties": { "type": { "const": "RoofCeilingModifierSetAbridged" }, "exterior_modifier": { "type": [ "string", "null" ] }, "interior_modifier": { "type": [ "string", "null" ] } }, "required": [ "type" ], "additionalProperties": false }, "ApertureModifierSetAbridged": { "type": "object", "properties": { "type": { "const": "ApertureModifierSetAbridged" }, "window_modifier": { "type": [ "string", "null" ] }, "interior_modifier": { "type": [ "string", "null" ] }, "skylight_modifier": { "type": [ "string", "null" ] }, "operable_modifier": { "type": [ "string", "null" ] } }, "required": [ "type" ], "additionalProperties": false }, "DoorModifierSetAbridged": { "type": "object", "properties": { "type": { "const": "DoorModifierSetAbridged" }, "exterior_modifier": { "type": [ "string", "null" ] }, "interior_modifier": { "type": [ "string", "null" ] } }, "required": [ "type" ], "additionalProperties": false }, "ShadeModifierSetAbridged": { "type": "object", "properties": { "type": { "const": "ShadeModifierSetAbridged" }, "exterior_modifier": { "type": [ "string", "null" ] }, "interior_modifier": { "type": [ "string", "null" ] } }, "required": [ "type" ], "additionalProperties": false }, "ModifierSet": { "type": "object", "allOf": [ { "$ref": "#/$defs/_IdentifiedObject" }, { "type": "object", "properties": { "type": { "const": "ModifierSet" }, "wall_set": { "$ref": "#/$defs/WallModifierSetAbridged" }, "floor_set": { "$ref": "#/$defs/FloorModifierSetAbridged" }, "roof_ceiling_set": { "$ref": "#/$defs/RoofCeilingModifierSetAbridged" }, "aperture_set": { "$ref": "#/$defs/ApertureModifierSetAbridged" }, "door_set": { "$ref": "#/$defs/DoorModifierSetAbridged" }, "shade_set": { "$ref": "#/$defs/ShadeModifierSetAbridged" } }, "required": [ "type" ], "additionalProperties": false } ] }, "RadianceSubFaceStateAbridged": { "type": "object", "allOf": [ { "$ref": "#/$defs/_IdentifiedObject" }, { "type": "object", "properties": { "type": { "const": "RadianceSubFaceStateAbridged" }, "aperture_modifier": { "type": [ "string", "null" ] }, "door_modifier": { "type": [ "string", "null" ] } }, "required": [ "type" ], "additionalProperties": false } ] }, "RadianceShadeStateAbridged": { "type": "object", "allOf": [ { "$ref": "#/$defs/_IdentifiedObject" }, { "type": "object", "properties": { "type": { "const": "RadianceShadeStateAbridged" }, "shade_modifier": { "type": [ "string", "null" ] } }, "required": [ "type" ], "additionalProperties": false } ] }, "Sensor": { "type": "object", "properties": { "type": { "const": "Sensor" }, "pos": { "type": "array", "items": { "type": "number" }, "minItems": 3, "maxItems": 3 }, "dir": { "type": "array", "items": { "type": "number" }, "minItems": 3, "maxItems": 3 } }, "required": [ "type", "pos", "dir" ], "additionalProperties": false }, "SensorGrid": { "type": "object", "allOf": [ { "$ref": "#/$defs/_IdentifiedObject" }, { "type": "object", "properties": { "type": { "const": "SensorGrid" }, "sensors": { "type": "array", "items": { "$ref": "#/$defs/Sensor" }, "minItems": 1 }, "mesh": { "type": "object" }, "base_geometry": { "type": "array", "items": { "type": "object" } }, "group_identifier": { "type": [ "string", "null" ] }, "room_identifier": { "type": [ "string", "null" ] }, "light_path": { "type": [ "array", "null" ], "items": { "type": "array", "items": { "type": "string" } } } }, "required": [ "type", "sensors" ], "additionalProperties": false } ] }, "ViewType": { "type": "string", "enum": [ "v", "h", "l", "c", "a", "s" ] }, "View": { "type": "object", "allOf": [ { "$ref": "#/$defs/_IdentifiedObject" }, { "type": "object", "properties": { "type": { "const": "View" }, "position": { "type": "array", "items": { "type": "number" }, "minItems": 3, "maxItems": 3 }, "direction": { "type": "array", "items": { "type": "number" }, "minItems": 3, "maxItems": 3 }, "up_vector": { "type": "array", "items": { "type": "number" }, "minItems": 3, "maxItems": 3 }, "view_type": { "$ref": "#/$defs/ViewType", "default": "v" }, "h_size": { "type": "number", "default": 60 }, "v_size": { "type": "number", "default": 60 }, "shift": { "type": [ "number", "null" ] }, "lift": { "type": [ "number", "null" ] }, "fore_clip": { "type": [ "number", "null" ] }, "aft_clip": { "type": [ "number", "null" ] }, "group_identifier": { "type": [ "string", "null" ] }, "room_identifier": { "type": [ "string", "null" ] } }, "required": [ "type", "position", "direction", "up_vector" ], "additionalProperties": false } ] }, "ModelRadianceProperties": { "type": "object", "properties": { "type": { "const": "ModelRadianceProperties" }, "modifiers": { "type": "array", "items": { "$ref": "#/$defs/Modifier" } }, "modifier_sets": { "type": "array", "items": { "$ref": "#/$defs/ModifierSet" } }, "sensor_grids": { "type": "array", "items": { "$ref": "#/$defs/SensorGrid" } }, "views": { "type": "array", "items": { "$ref": "#/$defs/View" } } }, "required": [ "type" ], "additionalProperties": false } } }