Agent skill
blender-interface-render-output-locations
Sub-skill of blender-interface: Render Output Locations (+3).
Install this agent skill to your Project
npx add-skill https://github.com/vamseeachanta/workspace-hub/tree/main/.claude/skills/_archive/engineering/cad/blender/render-output-locations
SKILL.md
Render Output Locations (+3)
Render Output Locations
# Default render output
output_path = bpy.context.scene.render.filepath # e.g., "//renders/frame_"
# Actual rendered files follow pattern:
# //renders/frame_0001.png, frame_0002.png, etc.
Export Geometry
def export_mesh(obj, filepath, format='STL'):
"""Export selected object to file."""
bpy.ops.object.select_all(action='DESELECT')
obj.select_set(True)
bpy.context.view_layer.objects.active = obj
exporters = {
'STL': lambda: bpy.ops.wm.stl_export(filepath=filepath),
'OBJ': lambda: bpy.ops.wm.obj_export(filepath=filepath),
'PLY': lambda: bpy.ops.wm.ply_export(filepath=filepath),
'FBX': lambda: bpy.ops.export_scene.fbx(filepath=filepath, use_selection=True),
'GLTF': lambda: bpy.ops.export_scene.gltf(filepath=filepath, use_selection=True),
}
try:
exporters[format]()
except AttributeError:
# Blender 3.x fallback
fallbacks = {
'STL': lambda: bpy.ops.export_mesh.stl(filepath=filepath, use_selection=True),
'OBJ': lambda: bpy.ops.export_scene.obj(filepath=filepath, use_selection=True),
}
fallbacks[format]()
Extract Scene Statistics
def get_scene_stats():
"""Extract scene statistics for validation."""
stats = {
"objects": len(bpy.data.objects),
"meshes": len(bpy.data.meshes),
"materials": len(bpy.data.materials),
"total_vertices": 0,
"total_faces": 0,
}
for mesh in bpy.data.meshes:
stats["total_vertices"] += len(mesh.vertices)
stats["total_faces"] += len(mesh.polygons)
return stats
Parse Render Console Output
import re
def parse_render_log(log_text):
"""Parse Blender render console output."""
results = {"frames": [], "total_time": None, "errors": []}
for line in log_text.splitlines():
# Frame render time: "Fra:1 Mem:256.00M (Peak 512.00M) | Time:00:01.23"
frame_match = re.search(
r'Fra:(\d+)\s+Mem:([\d.]+)M.*Time:([\d:.]+)', line
)
if frame_match:
results["frames"].append({
"frame": int(frame_match.group(1)),
"memory_mb": float(frame_match.group(2)),
"time": frame_match.group(3),
})
# Errors
if "Error" in line or "error" in line:
results["errors"].append(line.strip())
return results
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
gsd-complete-milestone
Archive completed milestone and prepare for next version
gsd-reapply-patches
Reapply local modifications after a GSD update
gsd-verify-work
Validate built features through conversational UAT
gsd-thread
Manage persistent context threads for cross-session work
clinical-trial-protocol
Generate clinical trial protocols for medical devices or drugs through a modular, waypoint-based architecture with research-only and full protocol modes.
single-cell-rna-qc
Performs quality control on single-cell RNA-seq data (.h5ad or .h5 files) using scverse best practices with MAD-based filtering and comprehensive visualizations.
Didn't find tool you were looking for?