"""
Batmobile - 1960s Classic Design
Generated by Grok AI
Creates the iconic 1966 Batmobile from the classic Batman TV series.
Features the legendary design with:
- Long, sleek black chassis with angular lines
- Bat-shaped front grille and fenders
- Rocket exhaust ports on the sides
- Bat wing fins on the rear deck
- Turbine-style wheels
- Low, wide stance with aggressive proportions
- Red interior details
Author: Grok AI
Category: robots
Tags: batman, batmobile, vehicle, classic, 1960s, tv-series, superhero
Dimensions: ~580x180x120cm
Complexity: medium
"""
import math
import bpy
# Clear scene
bpy.ops.object.select_all(action="SELECT")
bpy.ops.object.delete()
# 1. Main Chassis (The sleek black body)
bpy.ops.mesh.primitive_cube_add(size=1, location=(0, 0, 60))
chassis = bpy.context.active_object
chassis.dimensions = (580, 180, 120) # Long, wide, low
chassis.name = "Batmobile_Chassis"
# 2. Bat Nose (The distinctive front)
bpy.ops.mesh.primitive_cube_add(size=1, location=(-290, 0, 90))
nose = bpy.context.active_object
nose.dimensions = (80, 140, 80)
nose.name = "Bat_Nose"
# Bat ears/fins on the nose
for side in [-50, 50]:
bpy.ops.mesh.primitive_cube_add(size=1, location=(-250, side, 130))
ear = bpy.context.active_object
ear.dimensions = (20, 15, 40)
ear.name = f"Bat_Ear_{'Left' if side < 0 else 'Right'}"
# 3. Cockpit/Cabin
bpy.ops.mesh.primitive_cube_add(size=1, location=(-100, 0, 140))
cabin = bpy.context.active_object
cabin.dimensions = (120, 140, 60)
cabin.name = "Batmobile_Cabin"
# 4. Rear Deck with Bat Wings
bpy.ops.mesh.primitive_cube_add(size=1, location=(200, 0, 70))
rear_deck = bpy.context.active_object
rear_deck.dimensions = (180, 160, 80)
rear_deck.name = "Rear_Deck"
# Bat wings on the rear
for side in [-60, 60]:
bpy.ops.mesh.primitive_cube_add(size=1, location=(250, side, 120))
wing = bpy.context.active_object
wing.dimensions = (40, 20, 60)
wing.name = f"Bat_Wing_{'Left' if side < 0 else 'Right'}"
# 5. Rocket Exhausts (Side pods)
for side in [-90, 90]:
bpy.ops.mesh.primitive_cylinder_add(radius=15, depth=60, location=(0, side, 50))
exhaust = bpy.context.active_object
exhaust.name = f"Rocket_Exhaust_{'Left' if side < 0 else 'Right'}"
# 6. Turbine Wheels (The iconic style)
wheel_positions = [
(-200, -85, 25), # Front Left
(-200, 85, 25), # Front Right
(180, -85, 25), # Rear Left
(180, 85, 25), # Rear Right
]
for i, (x, y, z) in enumerate(wheel_positions):
# Main wheel cylinder
bpy.ops.mesh.primitive_cylinder_add(radius=35, depth=20, location=(x, y, z))
wheel = bpy.context.active_object
wheel.name = f"Turbine_Wheel_{i + 1}"
# Turbine blades (spokes)
for blade in range(6):
angle = (blade / 6) * math.pi * 2
blade_x = x + math.cos(angle) * 30
blade_y = y + math.sin(angle) * 30
bpy.ops.mesh.primitive_cube_add(size=1, location=(blade_x, blade_y, z))
blade_obj = bpy.context.active_object
blade_obj.dimensions = (8, 3, 25)
blade_obj.rotation_euler[2] = angle
blade_obj.name = f"Wheel_Blade_{i + 1}_{blade + 1}"
# 7. Bat Grille (Front decoration)
bpy.ops.mesh.primitive_cube_add(size=1, location=(-270, 0, 70))
grille = bpy.context.active_object
grille.dimensions = (30, 100, 50)
grille.name = "Bat_Grille"
# Add some bat-like cutouts (simplified)
for i in range(3):
bpy.ops.mesh.primitive_cube_add(size=1, location=(-270, (i - 1) * 20, 85))
cutout = bpy.context.active_object
cutout.dimensions = (35, 8, 15)
cutout.name = f"Grille_Cutout_{i + 1}"
# 8. Red Interior Details (Dashboard/console)
bpy.ops.mesh.primitive_cube_add(size=1, location=(-80, 0, 155))
console = bpy.context.active_object
console.dimensions = (80, 120, 20)
console.name = "Control_Console"
print("1960s Batmobile created successfully!")
print("Features: Bat nose, turbine wheels, rocket exhausts, bat wings, sleek black design")
print("Holy vehicle, Batman!")