""" constants.py ------------ All module-level constants and default playlist configurations. Pure Python — no bpy imports — so this module can be imported and inspected without a running Blender instance. """ import math # --------------------------------------------------------------------------- # Default playlist # Each entry is a partial KnotConfig dict; missing keys fall back to the # defaults defined in KnotItem's PropertyGroup. # --------------------------------------------------------------------------- KNOT_CONFIGS = [ # 1. Standard Trefoil – classic glossy blue {"name": "Trefoil Knot", "torus_p": 2, "torus_q": 3, "shader_id": "GLOSS_BLUE"}, # 2. Cinquefoil – polished gold metal {"name": "Cinquefoil", "torus_p": 2, "torus_q": 5, "torus_R": 2.5, "torus_r": 0.5, "shader_id": "METALLIC"}, # 3. Mobius Strip {"name": "Mobius Strip", "shape_type": "MOBIUS", "mobius_twists": 1, "mobius_width": 1.5, "shader_id": "IRIDESCENT"}, # 4. Lissajous Figure {"name": "Lissajous 3D", "shape_type": "LISSAJOUS", "liss_kx": 3, "liss_ky": 2, "liss_kz": 4, "liss_amp": 2.5, "shader_id": "NEON_GLOW"}, # 5. Spherical Spiral {"name": "Spherical Spiral", "shape_type": "SPIRAL", "spiral_turns": 15, "spiral_R": 2.5, "shader_id": "GLASS"}, # 6. Extruded ribbon – glass {"name": "Glass Ribbon", "torus_p": 4, "torus_q": 5, "geo_extrude": 0.1, "geo_offset": 0.05, "geo_bDepth": 0.0, "shader_id": "GLASS"}, # 7. Exterior/Interior mode – lava {"name": "Lava Ring", "torus_p": 2, "torus_q": 7, "mode": "EXT_INT", "torus_eR": 3.0, "torus_iR": 1.0, "shader_id": "LAVA"}, # 8. Height variation – neon glow {"name": "Tall Pulse", "torus_p": 3, "torus_q": 7, "torus_h": 2.0, "shader_id": "NEON_GLOW"}, # 9. Flipped direction – metallic {"name": "Flipped Metallic", "torus_p": 4, "torus_q": 7, "flip_p": True, "flip_q": False, "shader_id": "METALLIC"}, # 10. Complex multiplier & multiple links – iridescent {"name": "Complex Multi-Link", "torus_p": 6, "torus_q": 9, "multiple_links": True, "torus_u": 3, "torus_v": 2, "shader_id": "HOLOGRAM"}, ] # --------------------------------------------------------------------------- # Scene defaults # --------------------------------------------------------------------------- CAMERA_LOCATION = (0.0, -8.0, 3.0) CAMERA_ROTATION = (math.radians(75), 0.0, 0.0) LIGHT_LOCATION = (4.0, -4.0, 6.0) LIGHT_ENERGY = 500.0 # --------------------------------------------------------------------------- # Well-known object / material name tags # --------------------------------------------------------------------------- KNOT_OBJ_NAME = "AnimKnot" KNOT_MAT_NAME = "KnotMaterial" # legacy name kept for unregister cleanup SHADER_BLEND_MAT_NAME = "KnotBlendMaterial" # cross-shader transition blend material