{"Document":{"ObjectName":"Scenario::ScenarioDocumentModel","id":1,"BaseScenario":{"ObjectName":"Scenario::BaseScenario","id":0,"Constraint":{"ObjectName":"Scenario::IntervalModel","id":0,"Metadata":{"ScriptingName":"traditional-computer-vision","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Inlet":{"uuid":"a1574bb0-cbd4-4c7d-9417-0c25cfd1187b","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Audio In","Exposed":"audio in"},"Outlet":{"uuid":"a1d97535-18ac-444a-8417-0cbc1692d897","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Audio Out","Exposed":"audio out","Address":"audio:/out/main","GainInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10000,"Hidden":false,"Custom":"Gain","Exposed":"gain","Value":{},"Init":{},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},"PanInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10001,"Hidden":false,"Custom":"Pan","Exposed":"pan","Value":{},"Init":{},"Domain":{}},"Gain":1.0,"Pan":[1.0,1.0],"Propagate":true},"Processes":[{"uuid":"3f8a0b51-9d2c-4e76-8a4f-1b6e2c9d0a73","ObjectName":"cv_blob_stats","id":1,"Metadata":{"ScriptingName":"Blob stats","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":11289600000,"Height":300.0,"StartOffset":0,"LoopDuration":11289600000,"Pos":[-11.07640949705443,362.3046879813689],"Size":[199.0,141.5],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"In","Exposed":"in","Address":"Camera:/","RenderSize":[128,128],"Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Threshold","Exposed":"threshold","Value":{"Float":0.21922115981578827},"Init":{"Float":0.5},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"348b80a4-45dc-4f70-8f5f-6546c85089a2","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Min size","Exposed":"min size","Value":{"Int":27},"Init":{"Int":4},"Domain":{"Int":{"Min":0,"Max":10000}}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":3,"Hidden":true,"Custom":"Degrees","Exposed":"degrees","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":4,"Hidden":true,"Custom":"Formula","Exposed":"formula","Value":{"String":"CvJit"},"Init":{"String":"CvJit"},"Domain":{"String":{"Values":["CvJit","Normalized"]}},"Values":["CvJit","Normalized"],"Pixmaps":[]},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":5,"Hidden":true,"Custom":"Flip","Exposed":"flip","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}}],"Outlets":[{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Count","Exposed":"count"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":1,"Hidden":false,"Custom":"Blobs","Exposed":"blobs"}]},{"uuid":"1d7e8c40-5a2b-49f6-8e31-6c0b9a4d2f57","ObjectName":"cv_contours","id":3,"Metadata":{"ScriptingName":"Contours","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":11289600000,"Height":300.0,"StartOffset":0,"LoopDuration":11289600000,"Pos":[3.061782445163857,-162.20321458527155],"Size":[152.0,145.5],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"In","Exposed":"in","Address":"Camera:/","RenderSize":[128,128],"Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Threshold","Exposed":"threshold","Value":{"Float":0.36666667461395264},"Init":{"Float":0.5},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"348b80a4-45dc-4f70-8f5f-6546c85089a2","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Min perimeter","Exposed":"min perimeter","Value":{"Int":16},"Init":{"Int":8},"Domain":{"Int":{"Min":0,"Max":4000}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":3,"Hidden":true,"Custom":"Epsilon","Exposed":"epsilon","Value":{"Float":33.06666564941406},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":64.0}}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":4,"Hidden":true,"Custom":"Find holes","Exposed":"find holes","Value":{"Bool":true},"Init":{"Bool":true},"Domain":{"Bool":null}}],"Outlets":[{"uuid":"f1c71046-b754-49a5-8e66-d01374773dfc","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Out","Exposed":"out"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":1,"Hidden":false,"Custom":"Count","Exposed":"count"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":2,"Hidden":false,"Custom":"Contours","Exposed":"contours"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":3,"Hidden":false,"Custom":"Points","Exposed":"points"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":4,"Hidden":false,"Custom":"Truncated","Exposed":"truncated"}]},{"uuid":"c1a70000-0030-4a00-9000-000000000005","ObjectName":"cv_blobs_centroids","id":5,"Metadata":{"ScriptingName":"Blobs centroids","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":11289600000,"Height":300.0,"StartOffset":0,"LoopDuration":11289600000,"Pos":[199.49575830321288,363.29527639562446],"Size":[165.0,110.5],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Blobs","Exposed":"blobs"},{"uuid":"348b80a4-45dc-4f70-8f5f-6546c85089a2","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Width","Exposed":"width","Value":{"Int":128},"Init":{"Int":640},"Domain":{"Int":{"Min":1,"Max":8192}}},{"uuid":"348b80a4-45dc-4f70-8f5f-6546c85089a2","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Height","Exposed":"height","Value":{"Int":128},"Init":{"Int":480},"Domain":{"Int":{"Min":1,"Max":8192}}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":3,"Hidden":true,"Custom":"Label indexed","Exposed":"label indexed","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}}],"Outlets":[{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Centroids","Exposed":"centroids"}]},{"uuid":"898078f0-b825-4c29-a997-dc856e351a97","ObjectName":"point2d_view","id":7,"Metadata":{"ScriptingName":"Point2D View","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":11289600000,"Height":300.0,"StartOffset":0,"LoopDuration":11289600000,"Pos":[619.6840439688704,353.4920914872432],"Size":[227.32914994532777,171.7789480453264],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":0,"Hidden":true,"Custom":"XY","Exposed":"xy","Value":{},"Init":{},"Domain":{}},{"uuid":"10d62b0d-5bc9-4ac9-9540-9e8ac0c24947","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Min X","Exposed":"min x","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":-8388608.0,"Max":8388608.0}}},{"uuid":"10d62b0d-5bc9-4ac9-9540-9e8ac0c24947","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Min Y","Exposed":"min y","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":-8388608.0,"Max":8388608.0}}},{"uuid":"10d62b0d-5bc9-4ac9-9540-9e8ac0c24947","ObjectName":"Inlet","id":3,"Hidden":true,"Custom":"Max X","Exposed":"max x","Value":{"Float":128.0},"Init":{"Float":1.0},"Domain":{"Float":{"Min":-8388608.0,"Max":8388608.0}}},{"uuid":"10d62b0d-5bc9-4ac9-9540-9e8ac0c24947","ObjectName":"Inlet","id":4,"Hidden":true,"Custom":"Max Y","Exposed":"max y","Value":{"Float":128.0},"Init":{"Float":1.0},"Domain":{"Float":{"Min":-8388608.0,"Max":8388608.0}}}],"Outlets":[]},{"uuid":"4cf2f89f-45b6-4878-92ff-23d3cee1c67e","ObjectName":"object_filter","id":9,"Metadata":{"ScriptingName":"Object filter","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":11289600000,"Height":300.0,"StartOffset":0,"LoopDuration":11289600000,"Pos":[375.6713527633452,364.5392224607272],"Size":[227.0,55.0],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Input","Exposed":"input"},{"uuid":"9ae797ea-d94c-4792-acec-9ec1932bae5d","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Filter","Exposed":"filter","Value":{"String":"[.[] | [.x, .y]]"},"Init":{"String":""},"Domain":{}}],"Outlets":[{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"bang","Exposed":"bang"}]},{"uuid":"7b1c4e89-2a05-4d3f-9e6b-8c0a1f2d5b40","ObjectName":"cv_floodfill","id":11,"Metadata":{"ScriptingName":"Flood fill","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":11289600000,"Height":300.0,"StartOffset":0,"LoopDuration":11289600000,"Pos":[-93.94560882457212,-610.2543712663273],"Size":[250.0,233.0],"Loops":false,"FoldMode":2,"Inlets":[{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"In","Exposed":"in","Address":"Camera:/","RenderSize":[128,128],"Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"8093743c-584f-4bb9-97d4-6c7602f87116","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Seed","Exposed":"seed","Value":{"Vec2f":[0.5,0.5]},"Init":{"Vec2f":[0.5,0.5]},"Domain":{"Vec2f":{"Min":[0.0,0.0],"Max":[1.0,1.0],"Values":[[],[]]}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Tolerance","Exposed":"tolerance","Value":{"Float":0.10000000149011612},"Init":{"Float":0.10000000149011612},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":3,"Hidden":true,"Custom":"Mode","Exposed":"mode","Value":{"String":"Tolerance"},"Init":{"String":"Tolerance"},"Domain":{"String":{"Values":["Tolerance","Binary"]}},"Values":["Tolerance","Binary"],"Pixmaps":[]},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":4,"Hidden":true,"Custom":"Threshold","Exposed":"threshold","Value":{"Float":0.5},"Init":{"Float":0.5},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"0adbbdda-fda4-451e-91cc-1da731bde9d5","ObjectName":"Inlet","id":5,"Hidden":true,"Custom":"Seed (px)","Exposed":"seed (px)","Value":{"Vec2f":[0.0,0.0]},"Init":{"Vec2f":[0.0,0.0]},"Domain":{"Vec2f":{"Min":[-8192.0,-8192.0],"Max":[8192.0,8192.0],"Values":[[],[]]}},"Integral":true},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":6,"Hidden":true,"Custom":"Seed units","Exposed":"seed units","Value":{"String":"Normalized"},"Init":{"String":"Normalized"},"Domain":{"String":{"Values":["Normalized","Pixels"]}},"Values":["Normalized","Pixels"],"Pixmaps":[]}],"Outlets":[{"uuid":"f1c71046-b754-49a5-8e66-d01374773dfc","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Out","Exposed":"out"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":1,"Hidden":false,"Custom":"Filled","Exposed":"filled"}]},{"uuid":"74ca45ff-92c9-44a0-8f1a-754dea05ee1b","ObjectName":"gfxProcess","id":12,"Metadata":{"ScriptingName":"Grid","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":11289600000,"Height":300.0,"StartOffset":0,"LoopDuration":11289600000,"Pos":[1510.9956598094177,-635.6472467736534],"Size":[253.0,320.0],"Loops":false,"FoldMode":2,"Vertex":"","Fragment":"/*{\n    \"CATEGORIES\": [\n        \"Utility\"\n    ],\n    \"CREDIT\": \"ossia score\",\n    \"ISFVSN\": \"2\",\n    \"DESCRIPTION\": \"Display up to 16 image inputs in a mosaic grid for previsualization. The grid layout adapts automatically to the number of active inputs.\",\n    \"INPUTS\": [\n        { \"NAME\": \"t0\",  \"LABEL\": \"Texture 1\",  \"TYPE\": \"image\" },\n        { \"NAME\": \"t1\",  \"LABEL\": \"Texture 2\",  \"TYPE\": \"image\" },\n        { \"NAME\": \"t2\",  \"LABEL\": \"Texture 3\",  \"TYPE\": \"image\" },\n        { \"NAME\": \"t3\",  \"LABEL\": \"Texture 4\",  \"TYPE\": \"image\" },\n        { \"NAME\": \"t4\",  \"LABEL\": \"Texture 5\",  \"TYPE\": \"image\" },\n        { \"NAME\": \"t5\",  \"LABEL\": \"Texture 6\",  \"TYPE\": \"image\" },\n        { \"NAME\": \"t6\",  \"LABEL\": \"Texture 7\",  \"TYPE\": \"image\" },\n        { \"NAME\": \"t7\",  \"LABEL\": \"Texture 8\",  \"TYPE\": \"image\" },\n        { \"NAME\": \"t8\",  \"LABEL\": \"Texture 9\",  \"TYPE\": \"image\" },\n        { \"NAME\": \"t9\",  \"LABEL\": \"Texture 10\", \"TYPE\": \"image\" },\n        { \"NAME\": \"t10\", \"LABEL\": \"Texture 11\", \"TYPE\": \"image\" },\n        { \"NAME\": \"t11\", \"LABEL\": \"Texture 12\", \"TYPE\": \"image\" },\n        { \"NAME\": \"t12\", \"LABEL\": \"Texture 13\", \"TYPE\": \"image\" },\n        { \"NAME\": \"t13\", \"LABEL\": \"Texture 14\", \"TYPE\": \"image\" },\n        { \"NAME\": \"t14\", \"LABEL\": \"Texture 15\", \"TYPE\": \"image\" },\n        { \"NAME\": \"t15\", \"LABEL\": \"Texture 16\", \"TYPE\": \"image\" },\n        {\n            \"NAME\": \"arrangement\",\n            \"LABEL\": \"Layout\",\n            \"TYPE\": \"long\",\n            \"DEFAULT\": 0,\n            \"VALUES\": [0, 1, 2],\n            \"LABELS\": [\"Grid\", \"Row\", \"Column\"]\n        },\n        {\n            \"NAME\": \"count\",\n            \"LABEL\": \"Input Count\",\n            \"TYPE\": \"long\",\n            \"DEFAULT\": 4,\n            \"VALUES\": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]\n        },\n        {\n            \"NAME\": \"gap\",\n            \"LABEL\": \"Gap\",\n            \"TYPE\": \"float\",\n            \"DEFAULT\": 0.005,\n            \"MIN\": 0.0,\n            \"MAX\": 0.05\n        },\n        {\n            \"NAME\": \"bgColor\",\n            \"LABEL\": \"Background\",\n            \"TYPE\": \"color\",\n            \"DEFAULT\": [0.1, 0.1, 0.1, 1.0]\n        }\n    ]\n}*/\n\nvec4 sampleTexture(int idx, vec2 uv) {\n    switch(idx) {\n        case 0:  return IMG_NORM_PIXEL(t0, uv);\n        case 1:  return IMG_NORM_PIXEL(t1, uv);\n        case 2:  return IMG_NORM_PIXEL(t2, uv);\n        case 3:  return IMG_NORM_PIXEL(t3, uv);\n        case 4:  return IMG_NORM_PIXEL(t4, uv);\n        case 5:  return IMG_NORM_PIXEL(t5, uv);\n        case 6:  return IMG_NORM_PIXEL(t6, uv);\n        case 7:  return IMG_NORM_PIXEL(t7, uv);\n        case 8:  return IMG_NORM_PIXEL(t8, uv);\n        case 9:  return IMG_NORM_PIXEL(t9, uv);\n        case 10: return IMG_NORM_PIXEL(t10, uv);\n        case 11: return IMG_NORM_PIXEL(t11, uv);\n        case 12: return IMG_NORM_PIXEL(t12, uv);\n        case 13: return IMG_NORM_PIXEL(t13, uv);\n        case 14: return IMG_NORM_PIXEL(t14, uv);\n        case 15: return IMG_NORM_PIXEL(t15, uv);\n        default: return bgColor;\n    }\n}\n\nvoid main() {\n    vec2 uv = isf_FragNormCoord;\n    int n = int(count);\n\n    int mode = int(arrangement);\n\n    // Grid dimensions based on layout mode\n    int cols, rows;\n    if (mode == 1) {\n        // Row: all side by side horizontally\n        cols = n; rows = 1;\n    } else if (mode == 2) {\n        // Column: all stacked vertically\n        cols = 1; rows = n;\n    } else {\n        // Grid: as square as possible\n        if      (n <= 1)  { cols = 1; rows = 1; }\n        else if (n <= 2)  { cols = 2; rows = 1; }\n        else if (n <= 4)  { cols = 2; rows = 2; }\n        else if (n <= 6)  { cols = 3; rows = 2; }\n        else if (n <= 9)  { cols = 3; rows = 3; }\n        else if (n <= 12) { cols = 4; rows = 3; }\n        else              { cols = 4; rows = 4; }\n    }\n\n    // Flip Y so row 0 is at the top (reading order: left-to-right, top-to-bottom)\n    float flippedY = 1.0 - uv.y;\n\n    // Determine which cell we're in\n    int col = int(floor(uv.x * float(cols)));\n    int row = int(floor(flippedY * float(rows)));\n\n    // Clamp to valid range (handles edge at uv = 1.0)\n    col = min(col, cols - 1);\n    row = min(row, rows - 1);\n\n    // Texture index in reading order\n    int idx = row * cols + col;\n\n    // Beyond the active count: show background\n    if (idx >= n) {\n        gl_FragColor = bgColor;\n        return;\n    }\n\n    // Local coordinates within the cell [0..1]\n    float localU = fract(uv.x * float(cols));\n    float localV = fract(flippedY * float(rows));\n\n    // Gap as border around each cell (in cell-local coordinates)\n    float gapU = gap * float(cols) * 0.5;\n    float gapV = gap * float(rows) * 0.5;\n\n    if (localU < gapU || localU > 1.0 - gapU ||\n        localV < gapV || localV > 1.0 - gapV) {\n        gl_FragColor = bgColor;\n        return;\n    }\n\n    // Remap to [0..1] excluding gap, flip V back for correct texture orientation\n    vec2 cellUV = vec2(\n        (localU - gapU) / (1.0 - 2.0 * gapU),\n        1.0 - (localV - gapV) / (1.0 - 2.0 * gapV)\n    );\n\n    gl_FragColor = sampleTexture(idx, cellUV);\n}\n","Root":"<LIBRARY>:packages/default/Presets/GLSL_shaders/utility/Grid.fs","Inlets":[{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"t0","Exposed":"t0","Address":"Camera:/","Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":1,"Hidden":false,"Custom":"t1","Exposed":"t1","Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":2,"Hidden":false,"Custom":"t2","Exposed":"t2","Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":3,"Hidden":false,"Custom":"t3","Exposed":"t3","Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":4,"Hidden":false,"Custom":"t4","Exposed":"t4","Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":5,"Hidden":false,"Custom":"t5","Exposed":"t5","Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":6,"Hidden":false,"Custom":"t6","Exposed":"t6","Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":7,"Hidden":false,"Custom":"t7","Exposed":"t7","Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":8,"Hidden":false,"Custom":"t8","Exposed":"t8","Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":9,"Hidden":false,"Custom":"t9","Exposed":"t9","Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":10,"Hidden":false,"Custom":"t10","Exposed":"t10","Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":11,"Hidden":false,"Custom":"t11","Exposed":"t11","Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":12,"Hidden":false,"Custom":"t12","Exposed":"t12","Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":13,"Hidden":false,"Custom":"t13","Exposed":"t13","Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":14,"Hidden":false,"Custom":"t14","Exposed":"t14","Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":15,"Hidden":false,"Custom":"t15","Exposed":"t15","Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":16,"Hidden":true,"Custom":"arrangement","Exposed":"arrangement","Value":{"Int":0},"Init":{"Int":0},"Domain":{"Int":{"Values":[0,1,2]}},"Values":[["Grid",{"Int":0}],["Row",{"Int":1}],["Column",{"Int":2}]],"FolderPort":"","FileExtensions":""},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":17,"Hidden":true,"Custom":"count","Exposed":"count","Value":{"Int":5},"Init":{"Int":4},"Domain":{"Int":{"Values":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]}},"Values":[["1",{"Int":1}],["2",{"Int":2}],["3",{"Int":3}],["4",{"Int":4}],["5",{"Int":5}],["6",{"Int":6}],["7",{"Int":7}],["8",{"Int":8}],["9",{"Int":9}],["10",{"Int":10}],["11",{"Int":11}],["12",{"Int":12}],["13",{"Int":13}],["14",{"Int":14}],["15",{"Int":15}],["16",{"Int":16}]],"FolderPort":"","FileExtensions":""},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":18,"Hidden":true,"Custom":"gap","Exposed":"gap","Value":{"Float":0.004999999888241291},"Init":{"Float":0.004999999888241291},"Domain":{"Float":{"Min":0.0,"Max":0.05000000074505806}}},{"uuid":"8f38638e-9f9f-48b0-ae36-1cba86ef5703","ObjectName":"Inlet","id":19,"Hidden":true,"Custom":"bgColor","Exposed":"bgcolor","Value":{"Vec4f":[0.10000000149011612,0.10000000149011612,0.10000000149011612,1.0]},"Init":{"Vec4f":[0.10000000149011612,0.10000000149011612,0.10000000149011612,1.0]},"Domain":{}}],"Outlets":[{"uuid":"f1c71046-b754-49a5-8e66-d01374773dfc","ObjectName":"Outlet","id":1,"Hidden":false,"Custom":"Texture Out","Exposed":"texture out","Address":"Window:/"}]},{"uuid":"c1a70000-0001-4a00-9000-000000000001","ObjectName":"cv_canny","id":13,"Metadata":{"ScriptingName":"Canny edges","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":11289600000,"Height":300.0,"StartOffset":0,"LoopDuration":11289600000,"Pos":[29.068229496398377,-327.78007197936],"Size":[126.0,110.5],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"In","Exposed":"in","Address":"Camera:/","RenderSize":[128,128],"Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Threshold","Exposed":"threshold","Value":{"Float":150.0},"Init":{"Float":150.0},"Domain":{"Float":{"Min":0.0,"Max":255.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Range","Exposed":"range","Value":{"Float":10.0},"Init":{"Float":10.0},"Domain":{"Float":{"Min":0.0,"Max":255.0}}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":3,"Hidden":true,"Custom":"Pre-smooth","Exposed":"pre-smooth","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}}],"Outlets":[{"uuid":"f1c71046-b754-49a5-8e66-d01374773dfc","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Out","Exposed":"out"}]},{"uuid":"898078f0-b825-4c29-a997-dc856e351a97","ObjectName":"point2d_view","id":14,"Metadata":{"ScriptingName":"Point2D View.1","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":11289600000,"Height":300.0,"StartOffset":0,"LoopDuration":11289600000,"Pos":[409.68190947240385,76.02225282778352],"Size":[200.5368687559258,168.3554902157398],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":0,"Hidden":true,"Custom":"XY","Exposed":"xy","Value":{},"Init":{},"Domain":{}},{"uuid":"10d62b0d-5bc9-4ac9-9540-9e8ac0c24947","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Min X","Exposed":"min x","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":-8388608.0,"Max":8388608.0}}},{"uuid":"10d62b0d-5bc9-4ac9-9540-9e8ac0c24947","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Min Y","Exposed":"min y","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":-8388608.0,"Max":8388608.0}}},{"uuid":"10d62b0d-5bc9-4ac9-9540-9e8ac0c24947","ObjectName":"Inlet","id":3,"Hidden":true,"Custom":"Max X","Exposed":"max x","Value":{"Float":1.0},"Init":{"Float":1.0},"Domain":{"Float":{"Min":-8388608.0,"Max":8388608.0}}},{"uuid":"10d62b0d-5bc9-4ac9-9540-9e8ac0c24947","ObjectName":"Inlet","id":4,"Hidden":true,"Custom":"Max Y","Exposed":"max y","Value":{"Float":1.0},"Init":{"Float":1.0},"Domain":{"Float":{"Min":-8388608.0,"Max":8388608.0}}}],"Outlets":[]},{"uuid":"4cf2f89f-45b6-4878-92ff-23d3cee1c67e","ObjectName":"object_filter","id":18,"Metadata":{"ScriptingName":"Object filter.1","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":11289600000,"Height":300.0,"StartOffset":0,"LoopDuration":11289600000,"Pos":[172.3106334877101,-122.13663294366958],"Size":[227.0,55.0],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Input","Exposed":"input"},{"uuid":"9ae797ea-d94c-4792-acec-9ec1932bae5d","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Filter","Exposed":"filter","Value":{"String":"[.[].centroid]"},"Init":{"String":""},"Domain":{}}],"Outlets":[{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"bang","Exposed":"bang"}]},{"uuid":"7be51631-fb4b-4152-9ca7-86fdafa8a989","ObjectName":"Display","id":19,"Metadata":{"ScriptingName":"Text Box","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":11289600000,"Height":300.0,"StartOffset":0,"LoopDuration":11289600000,"Pos":[-99.74925567517502,-780.2718346322545],"Size":[441.0,113.0],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"9ae797ea-d94c-4792-acec-9ec1932bae5d","ObjectName":"Inlet","id":0,"Hidden":true,"Custom":"in","Exposed":"in","Value":{"String":"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n<html><head><meta name=\"qrichtext\" content=\"1\" /><meta charset=\"utf-8\" /><style type=\"text/css\">\np, li { white-space: pre-wrap; }\nhr { height: 1px; border-width: 0; }\nli.unchecked::marker { content: \"\\2610\"; }\nli.checked::marker { content: \"\\2612\"; }\n</style></head><body style=\" font-family:'Ubuntu'; font-size:13px; font-weight:400; font-style:normal;\">\n<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">ossia score supports traditional computer vision algorithms<br />and utilities, ported from the open-source cv.jit library.<br />Note that they are CPU-based thus you need to be mindful <br />of the texture resolution: 4K is a no-go ; use the controls in the inlet to <br />set lower input resolution to the CV objects. <br />Here they are all set to 128x128 which is usually enough for primitive blob<br />tracking.</p></body></html>"},"Init":{"String":"(Double-click to edit)"},"Domain":{}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Auto-reflow","Exposed":"auto-reflow","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}}],"Outlets":[]},{"uuid":"2ef5f23f-2d22-4163-b299-976c9d9bd1c8","ObjectName":"avnd_point_tracker_2d","id":20,"Metadata":{"ScriptingName":"Point Tracker 2D","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":11289600000,"Height":300.0,"StartOffset":0,"LoopDuration":11289600000,"Pos":[425.6136555498142,-124.97018855950834],"Size":[431.0,183.5],"Loops":false,"FoldMode":2,"Inlets":[{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Points","Exposed":"points","Description":"Detections for this frame. Accepts a list of vec2f, a list of vec3f read as (x, y, confidence), sub-lists [x, y] or [x, y, confidence], {position, confidence} maps as emitted by Blob stats, or one flat list of numbers [x, y, x, y, ...]."},{"uuid":"10d62b0d-5bc9-4ac9-9540-9e8ac0c24947","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Max Speed","Exposed":"max speed","Description":"Fastest plausible object speed, in coordinate units per second - the primary association gate. 2 m/s suits human-scale motion in metric spaces; in [0,1] camera space 2.0 means crossing the frame in 0.5 s.","Value":{"Float":2.0},"Init":{"Float":2.0},"Domain":{"Float":{"Min":0.009999999776482582,"Max":100.0}}},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Motion Gate","Exposed":"motion gate","Description":"How to reject implausible jumps: Max Speed (analytic budget max_speed*dt*(1 + lost/coast)), Mahalanobis (chi-square on the Kalman innovation), or Off.","Value":{"Int":0},"Init":{"Int":0},"Domain":{"Int":{"Values":[0,1,2]}},"Values":[["Max speed",{"Int":0}],["Mahalanobis",{"Int":1}],["Off",{"Int":2}]],"FolderPort":"","FileExtensions":""},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":3,"Hidden":true,"Custom":"Two-Stage Association","Exposed":"two-stage association","Description":"ByteTrack: after matching high-confidence detections, let low-confidence ones sustain still-unmatched recent tracks (they never birth or revive). Worth 1-10 IDF1 points on crowded scenes.","Value":{"Bool":true},"Init":{"Bool":true},"Domain":{"Bool":null}},{"uuid":"82427d27-084a-4ab6-9c4e-db83929a1200","ObjectName":"Inlet","id":4,"Hidden":true,"Custom":"High Confidence","Exposed":"high confidence","Description":"Detections at or above this confidence are matched first and can sustain any track. Set it around the confidence your detector gives clearly-visible objects.","Value":{"Float":0.5},"Init":{"Float":0.5},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"82427d27-084a-4ab6-9c4e-db83929a1200","ObjectName":"Inlet","id":5,"Hidden":true,"Custom":"Low Confidence","Exposed":"low confidence","Description":"Detections between this and High Confidence only run in the second-stage recovery: they can sustain an existing track through an occlusion dip but never start or revive one. Below this they are dropped.","Value":{"Float":0.10000000149011612},"Init":{"Float":0.10000000149011612},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"82427d27-084a-4ab6-9c4e-db83929a1200","ObjectName":"Inlet","id":6,"Hidden":true,"Custom":"New Track Confidence","Exposed":"new track confidence","Description":"Minimum confidence for a detection to start a new track.","Value":{"Float":0.6000000238418579},"Init":{"Float":0.6000000238418579},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"82427d27-084a-4ab6-9c4e-db83929a1200","ObjectName":"Inlet","id":7,"Hidden":true,"Custom":"Direction Consistency","Exposed":"direction consistency","Description":"OC-SORT: penalize associations that reverse the track's direction of motion, averaged over 1-3 frame baselines so one noisy frame does not fake a turn. Helps crossings; 0 = off.","Value":{"Float":0.20000000298023224},"Init":{"Float":0.20000000298023224},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"82427d27-084a-4ab6-9c4e-db83929a1200","ObjectName":"Inlet","id":8,"Hidden":true,"Custom":"Confidence Modeling","Exposed":"confidence modeling","Description":"Hybrid-SORT: prefer the detection whose confidence continues the track's confidence trend (an occluded object's confidence sinks smoothly, so the trend tells crossing objects apart when position cannot). Needs a detector with meaningful per-detection confidence; 0 = off.","Value":{"Float":1.0},"Init":{"Float":1.0},"Domain":{"Float":{"Min":0.0,"Max":1.5}}},{"uuid":"10d62b0d-5bc9-4ac9-9540-9e8ac0c24947","ObjectName":"Inlet","id":9,"Hidden":true,"Custom":"Motion Noise","Exposed":"motion noise","Description":"Kalman process noise: expected acceleration (units/s^2). Human motion peaks near 2 m/s^2; 0.67 fits that as 3 sigma. Raise for erratic motion, lower for very smooth coasting.","Value":{"Float":0.6700000166893005},"Init":{"Float":0.6700000166893005},"Domain":{"Float":{"Min":0.0010000000474974513,"Max":50.0}}},{"uuid":"10d62b0d-5bc9-4ac9-9540-9e8ac0c24947","ObjectName":"Inlet","id":10,"Hidden":true,"Custom":"Position Noise","Exposed":"position noise","Description":"Detector jitter (standard deviation, coordinate units). Match it to your detector's actual noise: the association gates widen by this amount. Understating it makes a track reject its own noisy detections and be reborn under a new id; overstating it widens the gates until neighbouring entities compete for the same detection and swap.","Value":{"Float":0.012000000104308128},"Init":{"Float":0.004999999888241291},"Domain":{"Float":{"Min":0.00009999999747378752,"Max":1.0}}},{"uuid":"10d62b0d-5bc9-4ac9-9540-9e8ac0c24947","ObjectName":"Inlet","id":11,"Hidden":true,"Custom":"Confirm Time","Exposed":"confirm time","Description":"Minimum age (milliseconds, not frames) before a track can be confirmed - stable across frame rates.","Value":{"Float":100.0},"Init":{"Float":100.0},"Domain":{"Float":{"Min":0.0,"Max":2000.0}}},{"uuid":"238399a0-7e81-47e3-896f-08e8856e2973","ObjectName":"Inlet","id":12,"Hidden":true,"Custom":"Confirm Hits","Exposed":"confirm hits","Description":"A track is confirmed once it was detected in this many of the last Confirm Window detection frames (and is older than Confirm Time). Raise to demand more evidence before a track joins the stable set.","Value":{"Int":3},"Init":{"Int":3},"Domain":{"Int":{"Min":1,"Max":31}}},{"uuid":"238399a0-7e81-47e3-896f-08e8856e2973","ObjectName":"Inlet","id":13,"Hidden":true,"Custom":"Confirm Window","Exposed":"confirm window","Description":"Size of the recent-frames window that Confirm Hits is counted over. A wider window tolerates more dropped frames on the way to confirmation.","Value":{"Int":5},"Init":{"Int":5},"Domain":{"Int":{"Min":1,"Max":31}}},{"uuid":"82427d27-084a-4ab6-9c4e-db83929a1200","ObjectName":"Inlet","id":14,"Hidden":true,"Custom":"Instant Confirm Above","Exposed":"instant confirm above","Description":"A detection at or above this confidence confirms its track immediately, skipping M-of-N. Set above 1 to disable.","Value":{"Float":0.8999999761581421},"Init":{"Float":0.8999999761581421},"Domain":{"Float":{"Min":0.0,"Max":1.0010000467300415}}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":15,"Hidden":true,"Custom":"Emit Unconfirmed","Exposed":"emit unconfirmed","Description":"Emit provisional tracks immediately (flagged) instead of sitting out the ~100 ms confirmation latency. For musical onsets, keep this on and filter on the `provisional` field where it matters.","Value":{"Bool":true},"Init":{"Bool":true},"Domain":{"Bool":null}},{"uuid":"10d62b0d-5bc9-4ac9-9540-9e8ac0c24947","ObjectName":"Inlet","id":16,"Hidden":true,"Custom":"Coast Time","Exposed":"coast time","Description":"After a miss, keep emitting the Kalman-predicted position for this long (ms) before the track goes lost.","Value":{"Float":500.0},"Init":{"Float":500.0},"Domain":{"Float":{"Min":0.0,"Max":5000.0}}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":17,"Hidden":true,"Custom":"Revive","Exposed":"revive","Description":"Keep lost tracks in memory after coasting ends, so an object that reappears nearby gets its old id back instead of a new one.","Value":{"Bool":true},"Init":{"Bool":true},"Domain":{"Bool":null}},{"uuid":"10d62b0d-5bc9-4ac9-9540-9e8ac0c24947","ObjectName":"Inlet","id":18,"Hidden":true,"Custom":"Revive Time","Exposed":"revive time","Description":"After coasting ends, keep the lost track (unemitted) for this long (ms); a matching detection revives it with its id intact.","Value":{"Float":2000.0},"Init":{"Float":2000.0},"Domain":{"Float":{"Min":0.0,"Max":10000.0}}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":19,"Hidden":true,"Custom":"Re-update on Revive","Exposed":"re-update on revive","Description":"OC-SORT ORU: on revival, re-run the filter along a virtual trajectory across the gap, killing the post-occlusion lurch.","Value":{"Bool":true},"Init":{"Bool":true},"Domain":{"Bool":null}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":20,"Hidden":true,"Custom":"Smooth","Exposed":"smooth","Description":"One-Euro filter on the output positions (per track, per axis): removes detector jitter at rest with minimal lag during motion. Tune with Min Cutoff and Beta.","Value":{"Bool":false},"Init":{"Bool":true},"Domain":{"Bool":null}},{"uuid":"5554eb67-bcc8-45ab-8ec2-37a3f191aa64","ObjectName":"Inlet","id":21,"Hidden":true,"Custom":"Min Cutoff","Exposed":"min cutoff","Description":"One-Euro cutoff at rest, Hz. Lower = smoother = laggier.","Value":{"Float":1.0},"Init":{"Float":1.0},"Domain":{"Float":{"Min":0.004999999888241291,"Max":10.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":22,"Hidden":true,"Custom":"Beta","Exposed":"beta","Description":"One-Euro speed coefficient: how much motion raises the cutoff. MediaPipe ships 10-80 on landmarks; raise it if fast motion lags.","Value":{"Float":1.0},"Init":{"Float":1.0},"Domain":{"Float":{"Min":0.0,"Max":100.0}}},{"uuid":"10d62b0d-5bc9-4ac9-9540-9e8ac0c24947","ObjectName":"Inlet","id":23,"Hidden":true,"Custom":"Prediction Lead","Exposed":"prediction lead","Description":"Output position = estimate + velocity * lead (ms): compensates downstream latency at the price of overshoot.","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":100.0}}},{"uuid":"10d62b0d-5bc9-4ac9-9540-9e8ac0c24947","ObjectName":"Inlet","id":24,"Hidden":true,"Custom":"Output Deadband","Exposed":"output deadband","Description":"Suppress output changes smaller than this distance (coordinate units; ~half a pixel in normalized camera space). 0 = off.","Value":{"Float":0.0005000000237487257},"Init":{"Float":0.0005000000237487257},"Domain":{"Float":{"Min":0.0,"Max":0.10000000149011612}}},{"uuid":"238399a0-7e81-47e3-896f-08e8856e2973","ObjectName":"Inlet","id":25,"Hidden":true,"Custom":"Slot Count","Exposed":"slot count","Description":"Size of the dense reusable slot bank (for mapping to a fixed set of voices/parameters). 0 disables slots.","Value":{"Int":8},"Init":{"Int":8},"Domain":{"Int":{"Min":0,"Max":64}}},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":26,"Hidden":true,"Custom":"Allocation","Exposed":"allocation","Description":"How a newly confirmed track picks a slot: Lowest Free (deterministic, cv.jit-style), Round Robin (spread reuse over the bank, so a dead voice gets time to fade), or Nearest Vacated (an object re-entering where one just left inherits that slot).","Value":{"Int":0},"Init":{"Int":0},"Domain":{"Int":{"Values":[0,1,2]}},"Values":[["Lowest free",{"Int":0}],["Round robin",{"Int":1}],["Nearest vacated",{"Int":2}]],"FolderPort":"","FileExtensions":""},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":27,"Hidden":true,"Custom":"Steal Policy","Exposed":"steal policy","Description":"When every slot is taken and a new track confirms: Never (it stays unslotted until one frees up), or steal from the Stalest (unseen the longest) or Lowest Confidence track.","Value":{"Int":0},"Init":{"Int":0},"Domain":{"Int":{"Values":[0,1,2]}},"Values":[["Never",{"Int":0}],["Stalest",{"Int":1}],["Lowest confidence",{"Int":2}]],"FolderPort":"","FileExtensions":""},{"uuid":"10d62b0d-5bc9-4ac9-9540-9e8ac0c24947","ObjectName":"Inlet","id":28,"Hidden":true,"Custom":"Hold Time","Exposed":"hold time","Description":"Quarantine (ms): a vacated slot is not handed to a new track for this long, so a brief dropout does not shuffle the whole bank.","Value":{"Float":250.0},"Init":{"Float":250.0},"Domain":{"Float":{"Min":0.0,"Max":5000.0}}},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":29,"Hidden":true,"Custom":"Order By","Exposed":"order by","Description":"Ordering of the compact outputs.","Value":{"Int":0},"Init":{"Int":0},"Domain":{"Int":{"Values":[0,1,2,3,4]}},"Values":[["Id",{"Int":0}],["Slot",{"Int":1}],["Age",{"Int":2}],["Confidence",{"Int":3}],["Distance to anchor",{"Int":4}]],"FolderPort":"","FileExtensions":""},{"uuid":"0adbbdda-fda4-451e-91cc-1da731bde9d5","ObjectName":"Inlet","id":30,"Hidden":true,"Custom":"Anchor","Exposed":"anchor","Description":"Reference point for the Distance To Anchor ordering.","Value":{"Vec2f":[0.0,0.0]},"Init":{"Vec2f":[0.0,0.0]},"Domain":{"Vec2f":{"Min":[-1000.0,-1000.0],"Max":[1000.0,1000.0],"Values":[[],[]]}},"Integral":false},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":31,"Hidden":true,"Custom":"Data Format","Exposed":"data format","Description":"Positions/Ids layout: Compact = live tracks back-to-back in Order By order; Slots = Slot Count fixed positions indexed by slot, zero-padded (GPU/voice-bank friendly).","Value":{"Int":0},"Init":{"Int":0},"Domain":{"Int":{"Values":[0,1]}},"Values":[["Compact",{"Int":0}],["Slots",{"Int":1}]],"FolderPort":"","FileExtensions":""},{"uuid":"7cd210d3-ebd1-4f71-9de6-cccfb639cbc3","ObjectName":"Inlet","id":32,"Hidden":true,"Custom":"Reset IDs","Exposed":"reset ids","Description":"Forget every track and restart ids from 1.","Value":{"Impulse":null},"Init":{"Impulse":null},"Domain":{"Impulse":null}}],"Outlets":[{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Tracks","Exposed":"tracks","Description":"Every emitted track as a record: id, slot, state, creation_time, age, time_since_seen, position, position_raw, velocity, confidence, provisional, reacquired."},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":1,"Hidden":false,"Custom":"Count","Exposed":"count","Description":"Number of currently emitted tracks (confirmed + coasting + revived, plus provisional ones when Emit Unconfirmed is on)."},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":2,"Hidden":false,"Custom":"Positions","Exposed":"positions","Description":"Flat [x,y,...] float list of the smoothed track positions, in the chosen Data Format. Cables directly into Point2D View, Array to Mesh, and other renderers."},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":3,"Hidden":false,"Custom":"Ids","Exposed":"ids","Description":"Track id per entry of Positions (-1 for an empty slot in Slots format)."},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":4,"Hidden":false,"Custom":"Entered","Exposed":"entered","Description":"Fires with the track id the instant a detection births a new track (before confirmation) - the lowest-latency onset signal."},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":5,"Hidden":false,"Custom":"Confirmed","Exposed":"confirmed","Description":"Fires with the track id when a track passes confirmation and joins the stable set."},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":6,"Hidden":false,"Custom":"Exited","Exposed":"exited","Description":"Fires with the track id when a track is removed for good (coast and revival windows exhausted). Use it to release voices/mappings."},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":7,"Hidden":false,"Custom":"Revived","Exposed":"revived","Description":"Fires with the track id when a lost track is re-acquired with its identity intact."}]},{"uuid":"7be51631-fb4b-4152-9ca7-86fdafa8a989","ObjectName":"Display","id":21,"Metadata":{"ScriptingName":"Text Box.22","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":11289600000,"Height":300.0,"StartOffset":0,"LoopDuration":11289600000,"Pos":[416.85608013507215,-208.0644859392191],"Size":[335.0,53.0],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"9ae797ea-d94c-4792-acec-9ec1932bae5d","ObjectName":"Inlet","id":0,"Hidden":true,"Custom":"in","Exposed":"in","Value":{"String":"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n<html><head><meta name=\"qrichtext\" content=\"1\" /><meta charset=\"utf-8\" /><style type=\"text/css\">\np, li { white-space: pre-wrap; }\nhr { height: 1px; border-width: 0; }\nli.unchecked::marker { content: \"\\2610\"; }\nli.checked::marker { content: \"\\2612\"; }\n</style></head><body style=\" font-family:'Ubuntu'; font-size:13px; font-weight:400; font-style:normal;\">\n<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Point Tracker objects try to give a fixed id </p>\n<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">to a given input point, to enable tracking.<br />The [x,y,... ] outlet outputs the positions with a stable id.</p></body></html>"},"Init":{"String":"(Double-click to edit)"},"Domain":{}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Auto-reflow","Exposed":"auto-reflow","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}}],"Outlets":[]},{"uuid":"3127c11b-61d3-4d5e-a896-8b56e628dfbc","ObjectName":"avnd_arraytobuffer","id":22,"Metadata":{"ScriptingName":"Array to buffer","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":11289600000,"Height":300.0,"StartOffset":0,"LoopDuration":11289600000,"Pos":[891.2623415670738,-126.89653272433353],"Size":[198.0,80.0],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Input","Exposed":"input"},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Type","Exposed":"type","Value":{"String":"Float32"},"Init":{"String":"Float32"},"Domain":{"String":{"Values":["Float32","Float64","SInt32","UInt32","SInt16","UInt16","SInt8","UInt8"]}},"Values":["Float32","Float64","SInt32","UInt32","SInt16","UInt16","SInt8","UInt8"],"Pixmaps":[]}],"Outlets":[{"uuid":"f1c71046-b754-49a5-8e66-d01374773dfc","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Output","Exposed":"output"}]},{"uuid":"a5bbffe0-93d2-4e70-995c-cf46c2c43520","ObjectName":"CSF","id":23,"Metadata":{"ScriptingName":"Compute Shader","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":11289600000,"Height":300.0,"StartOffset":0,"LoopDuration":11289600000,"Pos":[1112.7561547491678,-124.48958001179162],"Size":[325.0,252.0],"Loops":false,"FoldMode":0,"Compute":"/*{\n  \"DESCRIPTION\": \"2D plot of moving points with their velocity. xyBuffer holds a flat [x, y, x, y, ...] array (e.g. Arraygen -> Array to buffer, Float32); the index of each pair is the point's id, and each id gets its own colour (golden-ratio hue). Every point is drawn as a disc, and an arrow leaving it shows the velocity: direction = direction of motion, length = speed * velocityScale. Velocity is measured only when a point's position actually changes: displacement / TIME elapsed since that id's previous sample, then low-pass filtered by 'smoothing' (per sample, not per frame), so an input slower than the frame rate does not flicker. If an id stops changing for longer than 'staleTime' its arrow decays to zero. Coordinates: inputMin..inputMax is stretched over the whole image; by default [0,1] with y = 0 at the top (image / blob-tracker convention), tick yUp for y = 0 at the bottom. Up to 256 ids.\",\n  \"CREDIT\": \"ossia score\",\n  \"ISFVSN\": \"2.0\",\n  \"MODE\": \"COMPUTE_SHADER\",\n  \"CATEGORIES\": [\"Generator\", \"Visualization\"],\n  \"RESOURCES\": [\n    {\n      \"NAME\": \"xyBuffer\",\n      \"TYPE\": \"storage\",\n      \"ACCESS\": \"read_only\",\n      \"LAYOUT\": [\n        { \"NAME\": \"points\", \"TYPE\": \"vec2[]\" }\n      ],\n      \"DESCRIPTION\": \"Flat [x,y,x,y...] positions for this frame; pair index = id.\"\n    },\n    {\n      \"NAME\": \"state\",\n      \"TYPE\": \"storage\",\n      \"ACCESS\": \"read_write\",\n      \"LAYOUT\": [\n        { \"NAME\": \"prevPos\",  \"TYPE\": \"vec4[256]\" },\n        { \"NAME\": \"velocity\", \"TYPE\": \"vec4[256]\" }\n      ]\n    },\n    { \"NAME\": \"outputImage\", \"TYPE\": \"image\", \"ACCESS\": \"write_only\", \"WIDTH\": \"$WIDTH\", \"HEIGHT\": \"$HEIGHT\" },\n    { \"NAME\": \"inputMin\",      \"TYPE\": \"point2D\", \"DEFAULT\": [0.0, 0.0], \"MIN\": [-10000.0, -10000.0], \"MAX\": [10000.0, 10000.0] },\n    { \"NAME\": \"inputMax\",      \"TYPE\": \"point2D\", \"DEFAULT\": [1.0, 1.0], \"MIN\": [-10000.0, -10000.0], \"MAX\": [10000.0, 10000.0] },\n    { \"NAME\": \"yUp\",           \"TYPE\": \"bool\",  \"DEFAULT\": false },\n    { \"NAME\": \"pointRadius\",   \"TYPE\": \"float\", \"DEFAULT\": 6.0,  \"MIN\": 1.0,  \"MAX\": 50.0 },\n    { \"NAME\": \"lineWidth\",     \"TYPE\": \"float\", \"DEFAULT\": 1.5,  \"MIN\": 0.5,  \"MAX\": 10.0 },\n    { \"NAME\": \"velocityScale\", \"TYPE\": \"float\", \"DEFAULT\": 0.25, \"MIN\": 0.0,  \"MAX\": 5.0 },\n    { \"NAME\": \"smoothing\",     \"TYPE\": \"float\", \"DEFAULT\": 0.6,  \"MIN\": 0.0,  \"MAX\": 0.99 },\n    { \"NAME\": \"staleTime\",     \"TYPE\": \"float\", \"DEFAULT\": 0.25, \"MIN\": 0.0,  \"MAX\": 5.0 },\n    { \"NAME\": \"background\",    \"TYPE\": \"color\", \"DEFAULT\": [0.05, 0.05, 0.07, 1.0] }\n  ],\n  \"PASSES\": [\n    { \"LOCAL_SIZE\": [16, 16, 1], \"EXECUTION_MODEL\": { \"TYPE\": \"2D_IMAGE\", \"TARGET\": \"outputImage\" } },\n    { \"LOCAL_SIZE\": [64, 1, 1],  \"EXECUTION_MODEL\": { \"TYPE\": \"MANUAL\", \"WORKGROUPS\": [4, 1, 1] } }\n  ]\n}*/\n\n// Pass 0 draws the plot: each pixel loops over the points (no write races).\n// Pass 1 stores this frame's positions / velocities for the next frame.\n\nconst uint MAX_POINTS = 256u;\n\nuint pointCount() { return min(uint(xyBuffer.points.length()), MAX_POINTS); }\n\n// Smoothed velocity (input units / second) of point i at position p, from\n// last frame's state. prevPos: xy = last *distinct* sample, z = 1 once the id\n// exists, w = TIME of that sample. TIMEDELTA is not used: it is the gap\n// between the last two scheduler ticks, not between rendered frames, so\n// dividing a frame's displacement by it gives huge, erratic speeds.\nvec2 currentVelocity(uint i, vec2 p)\n{\n  vec4 prev = state.prevPos[i];\n  vec2 oldVel = state.velocity[i].xy;\n  if(prev.z < 0.5)\n    return vec2(0.0);                // new id: no history yet\n\n  float dt = TIME - prev.w;\n  if(p == prev.xy)                   // no new sample this frame\n    return dt > staleTime ? oldVel * smoothing : oldVel;\n  if(dt < 1e-3)                      // paused, seek, or duplicate tick\n    return oldVel;\n\n  vec2 measured = (p - prev.xy) / dt;\n  return mix(measured, oldVel, smoothing);\n}\n\nvec3 idColor(uint i)\n{\n  float h = fract(float(i) * 0.61803398875);\n  vec3 k = clamp(abs(fract(h + vec3(0.0, 2.0 / 3.0, 1.0 / 3.0)) * 6.0 - 3.0) - 1.0, 0.0, 1.0);\n  return mix(vec3(1.0), k, 0.75);\n}\n\nfloat sdSegment(vec2 p, vec2 a, vec2 b)\n{\n  vec2 pa = p - a, ba = b - a;\n  float h = clamp(dot(pa, ba) / max(dot(ba, ba), 1e-8), 0.0, 1.0);\n  return length(pa - ba * h);\n}\n\n// Anti-aliased coverage of a shape at signed distance d with half-width w.\nfloat cover(float d, float w) { return clamp(w + 0.5 - d, 0.0, 1.0); }\n\nvoid drawPlot()\n{\n  ivec2 pix = ivec2(gl_GlobalInvocationID.xy);\n  ivec2 size = imageSize(outputImage);\n  if(pix.x >= size.x || pix.y >= size.y)\n    return;\n\n  // Input space -> pixels: inputMin..inputMax stretched over the image.\n  vec2 range = inputMax - inputMin;\n  range = vec2(abs(range.x) < 1e-6 ? 1.0 : range.x, abs(range.y) < 1e-6 ? 1.0 : range.y);\n  vec2 pxPerUnit = vec2(size) / range;\n  if(yUp)\n    pxPerUnit.y = -pxPerUnit.y;\n  vec2 origin = yUp ? vec2(0.0, float(size.y)) : vec2(0.0);\n  vec2 fragPx = vec2(pix) + 0.5;\n\n  vec3 col = background.rgb;\n\n  uint n = pointCount();\n  for(uint i = 0u; i < n; i++)\n  {\n    vec2 p = xyBuffer.points[i];\n    vec2 v = currentVelocity(i, p);\n    vec3 c = idColor(i);\n\n    vec2 pPx = origin + (p - inputMin) * pxPerUnit;\n    vec2 vPx = v * pxPerUnit * velocityScale;\n\n    // Cheap reject: skip points whose disc + arrow cannot reach this pixel.\n    float reach = pointRadius + length(vPx) + lineWidth + 2.0;\n    if(distance(fragPx, pPx) > reach)\n      continue;\n\n    float a = 0.0;\n    float len = length(vPx);\n    if(len > 1.0)\n    {\n      // Shaft, then a head of two 25-degree barbs.\n      vec2 tip = pPx + vPx;\n      vec2 dir = vPx / len;\n      float headLen = min(3.0 * pointRadius, 0.4 * len);\n      vec2 back = -dir * headLen;\n      const float cs = 0.9063, sn = 0.4226; // cos/sin 25 deg\n      vec2 b1 = vec2(cs * back.x - sn * back.y, sn * back.x + cs * back.y);\n      vec2 b2 = vec2(cs * back.x + sn * back.y, -sn * back.x + cs * back.y);\n\n      float d = sdSegment(fragPx, pPx, tip);\n      d = min(d, sdSegment(fragPx, tip, tip + b1));\n      d = min(d, sdSegment(fragPx, tip, tip + b2));\n      a = cover(d, lineWidth * 0.5);\n    }\n\n    // Disc with a dark outline so overlapping ids stay readable.\n    float dc = distance(fragPx, pPx);\n    col = mix(col, c, a);\n    col = mix(col, vec3(0.0), cover(dc, pointRadius + 1.0));\n    col = mix(col, c, cover(dc, pointRadius));\n  }\n\n  imageStore(outputImage, pix, vec4(col, 1.0));\n}\n\nvoid updateState()\n{\n  uint i = gl_GlobalInvocationID.x;\n  if(i >= MAX_POINTS)\n    return;\n\n  if(i >= pointCount())\n  {\n    // Id no longer present: forget it so it restarts cleanly if it comes back.\n    state.prevPos[i] = vec4(0.0);\n    state.velocity[i] = vec4(0.0);\n    return;\n  }\n\n  vec2 p = xyBuffer.points[i];\n  vec4 prev = state.prevPos[i];\n  state.velocity[i] = vec4(currentVelocity(i, p), 0.0, 0.0);\n  // Only a new sample moves the reference, so dt spans the real interval\n  // between input updates rather than one render frame.\n  if(prev.z < 0.5 || p != prev.xy)\n    state.prevPos[i] = vec4(p, 1.0, TIME);\n}\n\nvoid main()\n{\n  if(PASSINDEX == 0)\n    drawPlot();\n  else\n    updateState();\n}","Inlets":[{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"xyBuffer","Exposed":"xybuffer","Format":0,"FormatSet":false,"Filter":2,"AddressMode":1,"MipmapMode":0},{"uuid":"0adbbdda-fda4-451e-91cc-1da731bde9d5","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"inputMin","Exposed":"inputmin","Value":{"Vec2f":[0.0,0.0]},"Init":{"Vec2f":[0.0,0.0]},"Domain":{"Vec2f":{"Min":[-10000.0,-10000.0],"Max":[10000.0,10000.0],"Values":[[],[]]}},"Integral":false},{"uuid":"0adbbdda-fda4-451e-91cc-1da731bde9d5","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"inputMax","Exposed":"inputmax","Value":{"Vec2f":[1.0,1.0]},"Init":{"Vec2f":[1.0,1.0]},"Domain":{"Vec2f":{"Min":[-10000.0,-10000.0],"Max":[10000.0,10000.0],"Values":[[],[]]}},"Integral":false},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":3,"Hidden":true,"Custom":"yUp","Exposed":"yup","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":4,"Hidden":true,"Custom":"pointRadius","Exposed":"pointradius","Value":{"Float":6.0},"Init":{"Float":6.0},"Domain":{"Float":{"Min":1.0,"Max":50.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":5,"Hidden":true,"Custom":"lineWidth","Exposed":"linewidth","Value":{"Float":1.5},"Init":{"Float":1.5},"Domain":{"Float":{"Min":0.5,"Max":10.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":6,"Hidden":true,"Custom":"velocityScale","Exposed":"velocityscale","Value":{"Float":0.25},"Init":{"Float":0.25},"Domain":{"Float":{"Min":0.0,"Max":5.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":7,"Hidden":true,"Custom":"smoothing","Exposed":"smoothing","Value":{"Float":0.6000000238418579},"Init":{"Float":0.6000000238418579},"Domain":{"Float":{"Min":0.0,"Max":0.9900000095367432}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":8,"Hidden":true,"Custom":"staleTime","Exposed":"staletime","Value":{"Float":0.25},"Init":{"Float":0.25},"Domain":{"Float":{"Min":0.0,"Max":5.0}}},{"uuid":"8f38638e-9f9f-48b0-ae36-1cba86ef5703","ObjectName":"Inlet","id":9,"Hidden":true,"Custom":"background","Exposed":"background","Value":{"Vec4f":[0.05000000074505806,0.05000000074505806,0.07000000029802322,1.0]},"Init":{"Vec4f":[0.05000000074505806,0.05000000074505806,0.07000000029802322,1.0]},"Domain":{}}],"Outlets":[{"uuid":"f1c71046-b754-49a5-8e66-d01374773dfc","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"state","Exposed":"state"},{"uuid":"f1c71046-b754-49a5-8e66-d01374773dfc","ObjectName":"Outlet","id":1,"Hidden":false,"Custom":"outputImage","Exposed":"outputimage"}]},{"uuid":"7be51631-fb4b-4152-9ca7-86fdafa8a989","ObjectName":"Display","id":24,"Metadata":{"ScriptingName":"Text Box.23","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":11289600000,"Height":300.0,"StartOffset":0,"LoopDuration":11289600000,"Pos":[889.803978594046,-200.36941039703575],"Size":[257.0,38.0],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"9ae797ea-d94c-4792-acec-9ec1932bae5d","ObjectName":"Inlet","id":0,"Hidden":true,"Custom":"in","Exposed":"in","Value":{"String":"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n<html><head><meta name=\"qrichtext\" content=\"1\" /><meta charset=\"utf-8\" /><style type=\"text/css\">\np, li { white-space: pre-wrap; }\nhr { height: 1px; border-width: 0; }\nli.unchecked::marker { content: \"\\2610\"; }\nli.checked::marker { content: \"\\2612\"; }\n</style></head><body style=\" font-family:'Ubuntu'; font-size:13px; font-weight:400; font-style:normal;\">\n<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">From here we go to the GPU, <br />to draw our points with a compute shader.</p></body></html>"},"Init":{"String":"(Double-click to edit)"},"Domain":{}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Auto-reflow","Exposed":"auto-reflow","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}}],"Outlets":[]},{"uuid":"7be51631-fb4b-4152-9ca7-86fdafa8a989","ObjectName":"Display","id":25,"Metadata":{"ScriptingName":"Text Box.24","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":11289600000,"Height":300.0,"StartOffset":0,"LoopDuration":11289600000,"Pos":[-10.08601932790981,274.25858163485395],"Size":[259.0,53.0],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"9ae797ea-d94c-4792-acec-9ec1932bae5d","ObjectName":"Inlet","id":0,"Hidden":true,"Custom":"in","Exposed":"in","Value":{"String":"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n<html><head><meta name=\"qrichtext\" content=\"1\" /><meta charset=\"utf-8\" /><style type=\"text/css\">\np, li { white-space: pre-wrap; }\nhr { height: 1px; border-width: 0; }\nli.unchecked::marker { content: \"\\2610\"; }\nli.checked::marker { content: \"\\2612\"; }\n</style></head><body style=\" font-family:'Ubuntu'; font-size:13px; font-weight:400; font-style:normal;\">\n<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">The Blob stats object allows<br />to get a lot of geometrical data on blobs.<br />Various helpers can then extract that data.</p></body></html>"},"Init":{"String":"(Double-click to edit)"},"Domain":{}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Auto-reflow","Exposed":"auto-reflow","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}}],"Outlets":[]}],"SmallViewRack":[{"Processes":[1,3,5,7,9,11,12,13,14,18,19,20,21,22,23,24,25],"Process":null,"Height":200.0,"Nodal":true}],"FullViewRack":[{"Process":0,"Nodal":true}],"DefaultDuration":11289600000,"MinDuration":11289600000,"MaxDuration":11854080000,"GuiDuration":12418560000,"Speed":1.0,"Rigidity":false,"MinNull":false,"MaxInf":true,"Signatures":[[0,[4,4]]],"StartState":0,"EndState":1,"StartDate":0,"HeightPercentage":0.0,"NodalSlotHeight":100.0,"QuantizationRate":-1.0,"Zoom":16128000.0,"Center":0,"NodalCenter":[820.0194376751474,-188.40571696416208],"NodalScale":0.6534972422784922,"ViewMode":1,"SmallViewShown":true,"HasSignature":true},"StartTimeNode":{"ObjectName":"Scenario::TimeSyncModel","id":0,"Metadata":{"ScriptingName":"Sync.start","Comment":"","Color":"Gray","Label":"","Touched":true},"Date":0,"Events":[0],"MusicalSync":-1.0,"AutoTrigger":false,"Start":true,"Active":false,"Expression":" { true == false } "},"EndTimeNode":{"ObjectName":"Scenario::TimeSyncModel","id":1,"Metadata":{"ScriptingName":"Sync.end","Comment":"","Color":"Gray","Label":"","Touched":true},"Date":11289600000,"Events":[1],"MusicalSync":-1.0,"AutoTrigger":false,"Start":false,"Active":true,"Expression":" { true == false } "},"StartEvent":{"ObjectName":"Scenario::EventModel","id":0,"Metadata":{"ScriptingName":"Event.start","Comment":"","Color":"Emphasis4","Label":"","Touched":true},"TimeNode":0,"States":[0],"Condition":"","Date":0,"Offset":0},"EndEvent":{"ObjectName":"Scenario::EventModel","id":1,"Metadata":{"ScriptingName":"Event.end","Comment":"","Color":"Emphasis4","Label":"","Touched":true},"TimeNode":1,"States":[1],"Condition":"","Date":11289600000,"Offset":0},"StartState":{"ObjectName":"Scenario::StateModel","id":0,"Metadata":{"ScriptingName":"State.start","Comment":"","Color":"Base1","Label":"","Touched":true},"Event":0,"PreviousConstraint":null,"NextConstraint":0,"HeightPercentage":0.0,"Messages":{"Name":"","Accessors":[],"Unit":"none","Previous":[],"Following":[],"User":null,"Priorities":[1,2,0]},"StateProcesses":[]},"EndState":{"ObjectName":"Scenario::StateModel","id":1,"Metadata":{"ScriptingName":"State.end","Comment":"","Color":"Base1","Label":"","Touched":true},"Event":1,"PreviousConstraint":0,"NextConstraint":null,"HeightPercentage":0.0,"Messages":{"Name":"","Accessors":[],"Unit":"none","Previous":[],"Following":[],"User":null,"Priorities":[1,2,0]},"StateProcesses":[]}},"Speed":1.0,"Cables":[{"ObjectName":"Process::Cable","id":7,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"cv_blobs_centroids","ObjectId":5},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"object_filter","ObjectId":9},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":10,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"cv_floodfill","ObjectId":11},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"gfxProcess","ObjectId":12},{"ObjectName":"Inlet","ObjectId":1}]},{"ObjectName":"Process::Cable","id":3,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"cv_blob_stats","ObjectId":1},{"ObjectName":"Outlet","ObjectId":1}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"cv_blobs_centroids","ObjectId":5},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":16,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"cv_contours","ObjectId":3},{"ObjectName":"Outlet","ObjectId":2}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"object_filter","ObjectId":18},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":8,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"object_filter","ObjectId":9},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"point2d_view","ObjectId":7},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":20,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"cv_contours","ObjectId":3},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"gfxProcess","ObjectId":12},{"ObjectName":"Inlet","ObjectId":3}]},{"ObjectName":"Process::Cable","id":19,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"cv_canny","ObjectId":13},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"gfxProcess","ObjectId":12},{"ObjectName":"Inlet","ObjectId":2}]},{"ObjectName":"Process::Cable","id":17,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"object_filter","ObjectId":18},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"point2d_view","ObjectId":14},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":21,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"object_filter","ObjectId":18},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"avnd_point_tracker_2d","ObjectId":20},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":22,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"avnd_point_tracker_2d","ObjectId":20},{"ObjectName":"Outlet","ObjectId":2}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"avnd_arraytobuffer","ObjectId":22},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":23,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"avnd_arraytobuffer","ObjectId":22},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"CSF","ObjectId":23},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":24,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"CSF","ObjectId":23},{"ObjectName":"Outlet","ObjectId":1}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"gfxProcess","ObjectId":12},{"ObjectName":"Inlet","ObjectId":4}]}],"BusIntervals":[]},"Plugins":[{"uuid":"aac1402f-6851-4a1a-ab50-5f213acd1262","Name":"","Author":"","Description":"","Url":"","Platforms":"","Created":"2026-09-28T04:06:20.112Z","LastSaved":"2026-09-28T04:45:12.707Z","Thumbnail":"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","AutomaticThumbnail":true},{"uuid":"1f923578-08c3-49be-9ba9-69c144ee2e32","Refresh":false,"Reconnect":false,"MidiRatio":1.0},{"uuid":"6e610e1f-9de2-4c36-90dd-0ef570002a21","RootNode":{},"Children":[{"Device":{"Name":"Camera","Protocol":"d615690b-f2e2-447b-b70e-a800552db69c","Input":"default","Device":"default","Size":[-1,-1],"FPS":0.0,"Codec":0,"PixelFormat":-1,"ColorRange":0,"Custom":false}},{"Device":{"Name":"Window","Protocol":"5a181207-7d40-4ad8-814e-879fcdf8cc31","Mode":0,"Outputs":[],"InputWidth":1920,"InputHeight":1080,"SwapchainFlag":0,"SwapchainFormat":0},"Children":[{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"String":""},"Domain":{"String":{}},"Name":"screen"}},{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Vec2f":[100.0,100.0]},"Domain":{},"Name":"position"}},{"Address":{"ClipMode":"Free","RepetitionFilter":false,"Value":{},"Domain":{},"Name":"cursor"},"Children":[{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Vec2f":[0.0,0.0]},"Domain":{"Float":{"Min":0.0,"Max":1.0}},"Name":"scaled"}},{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Vec2f":[0.0,0.0]},"Domain":{"Float":{"Min":0.0,"Max":1.0}},"Name":"gl"}},{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Vec2f":[0.0,0.0]},"Domain":{"Vec2f":{"Min":[0.0,0.0],"Max":[1280.0,720.0],"Values":[[],[]]}},"Name":"absolute"}},{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Bool":false},"Domain":{},"Name":"visible"}}]},{"Address":{"ClipMode":"Free","RepetitionFilter":false,"Value":{},"Domain":{},"Name":"tablet"},"Children":[{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Vec2f":[0.0,0.0]},"Domain":{"Float":{"Min":0.0,"Max":1.0}},"Name":"scaled"}},{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Vec2f":[0.0,0.0]},"Domain":{"Vec2f":{"Min":[0.0,0.0],"Max":[1280.0,720.0],"Values":[[],[]]}},"Name":"absolute"}},{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Int":0},"Domain":{},"Name":"z"}},{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Float":0.0},"Domain":{},"Name":"pressure"}},{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Float":0.0},"Domain":{"Float":{"Min":-1.0,"Max":1.0}},"Name":"tangential"}},{"Address":{"ioType":"<->","ClipMode":"Free","Unit":"angle.degree","RepetitionFilter":false,"Value":{"Float":0.0},"Domain":{"Float":{"Min":-180.0,"Max":180.0}},"Name":"rotation"}},{"Address":{"ioType":"<->","ClipMode":"Free","Unit":"angle.degree","RepetitionFilter":false,"Value":{"Float":0.0},"Domain":{"Float":{"Min":-60.0,"Max":60.0}},"Name":"tilt_x"}},{"Address":{"ioType":"<->","ClipMode":"Free","Unit":"angle.degree","RepetitionFilter":false,"Value":{"Float":0.0},"Domain":{"Float":{"Min":-60.0,"Max":60.0}},"Name":"tilt_y"}}]},{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Vec2f":[1280.0,720.0]},"Domain":{},"Name":"size"}},{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Vec2f":[0.0,0.0]},"Domain":{},"Extended":{"description":"Set to [0, 0] to use the viewport's size"},"Name":"rendersize"}},{"Address":{"ClipMode":"Free","RepetitionFilter":false,"Value":{},"Domain":{},"Name":"key"},"Children":[{"Address":{"ClipMode":"Free","RepetitionFilter":false,"Value":{},"Domain":{},"Name":"press"},"Children":[{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Int":0},"Domain":{},"Name":"code"}},{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"String":""},"Domain":{},"Name":"text"}}]},{"Address":{"ClipMode":"Free","RepetitionFilter":false,"Value":{},"Domain":{},"Name":"release"},"Children":[{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Int":0},"Domain":{},"Name":"code"}},{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"String":""},"Domain":{},"Name":"text"}}]}]},{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Bool":false},"Domain":{},"Name":"fullscreen"}},{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"Float":0.0},"Domain":{},"Name":"fps"}}]}]},{"uuid":"05e72689-e02c-4c9d-a0bf-fe84c32d3d96","Data":""}],"Version":5,"Commit":"bd66e8f10dcefd3edec2a4b854432a2daf041112","Tag":"3.8.2"}