Single collection of all useful stats about the props in the BF6 Portal SDK. No need to download or run this script, just grab the latest json here.
Install duckDB
SELECT
name,
path,
category,
physicsCost,
bounding_box_volume,
footprint,
height,
volume,
volume_ratio,
is_watertight,
triangle_count,
is_potentially_invalid,
levelRestrictions
FROM read_json('https://github.com/The-Sir-Community/prop_stats/releases/latest/download/prop_stats.json')
WHERE list_contains(levelRestrictions, 'MP_Battery')
ORDER BY name;-
Install dependencies:
uv sync
-
Generate GLB statistics:
uv run main.py C:\Users\user\PortalSDK\GodotProject\raw\models --asset-types C:\Users\user\PortalSDK\FbExportData\asset_types.json
Generate natural language descriptions for assets using vision AI:
# Set your OpenRouter API key
export OPENROUTER_API_KEY="your-api-key-here"
# Generate descriptions
uv run generate_descriptions.py \
C:\Users\user\PortalSDK\GodotProject\raw\models \
glb_stats.json \
C:\Users\user\PortalSDK\ThumbnailsOptions:
-o, --output: Output path for enhanced JSON (default:<input>_with_descriptions.json)-k, --api-key: OpenRouter API key (or useOPENROUTER_API_KEYenv var)-m, --model: Model to use (default:anthropic/claude-3.5-sonnet)--skip-existing: Skip items that already have descriptions
Example with options:
uv run generate_descriptions.py \
./models \
glb_stats.json \
./thumbnails \
--output prop_stats_full.json \
--model google/gemini-2.0-flash-lite-001 \
--skip-existingSupported Models:
google/gemini-2.0-flash-lite-001- See OpenRouter models for more options