Web-Centric 3D Blender Project
Budget: $30 – $250 USD
Perfect reference. Below is a complete Blender Starter File specification that lets you recreate the attached image as a 3D-centric object, optimized for WebGL / WebXR / Safari AR Quick Look, not native apps.
This is written as a drop-in production handoff: geometry, materials, color codes, Blender scene setup, and a starter Python script to generate the object procedurally.
GEO GIFT — BLENDER STARTER FILE (WEB-CENTRIC)
Target Output
• .glb (primary web delivery)
• .usdz (optional iOS Safari AR Quick Look)
• Polygon-efficient, PBR-based, emissive-driven glow (no post FX required)
⸻
1. SCALE & SCENE SETUP (WEB SAFE)
Blender Version
• Blender 4.0+
Units
Unit Scale: 1.0
Length: Meters
Real-World Size
GeoGift Cube: 0.22m x 0.22m x 0.22m
Ribbon Height: +0.05m
Glow Ring Diameter: 0.40m
This ensures:
• Correct scale in WebXR
• Proper AR grounding in Safari
⸻
2. OBJECT HIERARCHY (CRITICAL FOR WEB EXPORT)
GeoGift_Root (EMPTY)
├── GiftCube_Body
├── GiftCube_Lid
├── Ribbon_Vertical
├── Ribbon_Horizontal
├── Bow_Loop_L
├── Bow_Loop_R
├── Logo_Plate
├── Glow_Ring
└── Base_Plane (optional hover reference)
Do NOT apply modifiers after animation. Apply transforms before animation.
⸻
3. GEOMETRY SPECIFICATION
GiftCube_Body
• Base: Cube
• Dimensions: 0.22 x 0.22 x 0.18
• Bevel:
Width: 0.005
Segments: 2
GiftCube_Lid
• Cube (separate object)
• Dimensions: 0.23 x 0.23 x 0.05
• Offset Y: +0.115
• Same bevel as body
⸻
Ribbon Geometry
Material shared across all ribbon parts
Vertical Ribbon
Plane → Solidify
Width: 0.025
Thickness: 0.004
Horizontal Ribbon
Duplicate + rotate 90° on Z
⸻
Bow Loops
• Base Shape: Torus
Major Radius: 0.035
Minor Radius: 0.006
• Rotate loops ±30° on Z
• Position above lid center
⸻
Glow Ring
• Torus
Major Radius: 0.20
Minor Radius: 0.004
• Float: Z + 0.01
⸻
Logo Plate
• Plane
• Size: 0.07 x 0.07
• Slight offset from cube face
• Logo should be emission-driven, not texture-only
⸻
4. MATERIAL SYSTEM (WEB OPTIMIZED PBR)
GiftCube Galaxy Material
Material Name
MAT_GeoGift_Galaxy
Base Color
#0B1D3A (Deep Space Blue)
Secondary Tint (Gradient / Noise Mix)
#3F8CFF (Electric Blue)
#8B5CF6 (Cosmic Violet)
Principled BSDF
Metallic: 0.25
Roughness: 0.18
Clearcoat: 0.4
Clearcoat Roughness: 0.2
Emission
Strength: 1.4
Color: #5EDBFF
Node Notes
• Use Noise Texture → ColorRamp → MixRGB
• Avoid procedural textures that won’t bake to GLB
⸻
Ribbon Material
Base Color: #6FF2FF
Metallic: 0.65
Roughness: 0.12
Emission Strength: 0.8
⸻
Glow Ring Material
Emission Color: #5EEBFF
Emission Strength: 3.5
Alpha: 0.85
Blend Mode: Alpha Blend
Web engines respect emission far better than bloom.
⸻
5. ANIMATION (WEB-SAFE)
Hover Animation (LOOPABLE)
GeoGift_Root
Frame 1: Z = 0.00
Frame 60: Z = 0.03
Frame 120: Z = 0.00
• Ease In/Out
• Total loop: 4 seconds
⸻
Glow Pulse (Emission)
Glow Ring
Emission Strength:
Frame 1: 2.8
Frame 60: 4.2
Frame 120: 2.8
⸻
Lid Reveal (Optional)
Rotation X:
0° → -18°
Duration: 30 frames
Use only if interaction-triggered (click/tap)
⸻
6. COLOR PALETTE (EXACT CODES)
Element Hex
Galaxy Base #0B1D3A
Electric Blue #3F8CFF
Cosmic Violet #8B5CF6
Glow Cyan #5EDBFF
Ribbon Highlight #6FF2FF
UI Accent #00E5FF
⸻
7. BLENDER PYTHON STARTER SCRIPT (AUTO-GENERATE)
Paste into Scripting → Run Script
import bpy
# Clean scene
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete()
# Root
root = bpy.data.objects.new("GeoGift_Root", None)
bpy.context.collection.objects.link(root)
# Cube Body
bpy.ops.mesh.primitive_cube_add(size=0.22)
body = bpy.context.object
body.name = "GiftCube_Body"
body.scale.z = 0.82
body.parent = root
# Lid
bpy.ops.mesh.primitive_cube_add(size=0.23, location=(0,0,0.115))
lid = bpy.context.object
lid.name = "GiftCube_Lid"
lid.scale.z = 0.22
lid.parent = root
# Glow Ring
bpy.ops.mesh.primitive_torus_add(
major_radius=0.20,
minor_radius=0.004,
location=(0,0,0.01)
)
ring = bpy.context.object
ring.name = "Glow_Ring"
ring.parent = root
This script:
• Sets scale correctly
• Creates web-safe geometry
• Establishes parent hierarchy
⸻
8. EXPORT SETTINGS (CRITICAL)
GLB (Primary)
Format: glTF Binary (.glb)
+ Apply Modifiers
+ Include Animations
+ Apply Transform
- Cameras
- Lights
Compression: Draco (optional)
USDZ (Safari AR)
No textures > 2K
No procedural nodes unbaked
Emission only (no bloom)
9. WHY THIS WORKS FOR WEB (NOT APPS)
• No shaders unsupported by WebGL
• Emission-driven glow (cross-platform)
• Single draw-call materials
• Clean node trees
• AR Quick Look compliant
This is written as a drop-in production handoff: geometry, materials, color codes, Blender scene setup, and a starter Python script to generate the object procedurally.
GEO GIFT — BLENDER STARTER FILE (WEB-CENTRIC)
Target Output
• .glb (primary web delivery)
• .usdz (optional iOS Safari AR Quick Look)
• Polygon-efficient, PBR-based, emissive-driven glow (no post FX required)
⸻
1. SCALE & SCENE SETUP (WEB SAFE)
Blender Version
• Blender 4.0+
Units
Unit Scale: 1.0
Length: Meters
Real-World Size
GeoGift Cube: 0.22m x 0.22m x 0.22m
Ribbon Height: +0.05m
Glow Ring Diameter: 0.40m
This ensures:
• Correct scale in WebXR
• Proper AR grounding in Safari
⸻
2. OBJECT HIERARCHY (CRITICAL FOR WEB EXPORT)
GeoGift_Root (EMPTY)
├── GiftCube_Body
├── GiftCube_Lid
├── Ribbon_Vertical
├── Ribbon_Horizontal
├── Bow_Loop_L
├── Bow_Loop_R
├── Logo_Plate
├── Glow_Ring
└── Base_Plane (optional hover reference)
Do NOT apply modifiers after animation. Apply transforms before animation.
⸻
3. GEOMETRY SPECIFICATION
GiftCube_Body
• Base: Cube
• Dimensions: 0.22 x 0.22 x 0.18
• Bevel:
Width: 0.005
Segments: 2
GiftCube_Lid
• Cube (separate object)
• Dimensions: 0.23 x 0.23 x 0.05
• Offset Y: +0.115
• Same bevel as body
⸻
Ribbon Geometry
Material shared across all ribbon parts
Vertical Ribbon
Plane → Solidify
Width: 0.025
Thickness: 0.004
Horizontal Ribbon
Duplicate + rotate 90° on Z
⸻
Bow Loops
• Base Shape: Torus
Major Radius: 0.035
Minor Radius: 0.006
• Rotate loops ±30° on Z
• Position above lid center
⸻
Glow Ring
• Torus
Major Radius: 0.20
Minor Radius: 0.004
• Float: Z + 0.01
⸻
Logo Plate
• Plane
• Size: 0.07 x 0.07
• Slight offset from cube face
• Logo should be emission-driven, not texture-only
⸻
4. MATERIAL SYSTEM (WEB OPTIMIZED PBR)
GiftCube Galaxy Material
Material Name
MAT_GeoGift_Galaxy
Base Color
#0B1D3A (Deep Space Blue)
Secondary Tint (Gradient / Noise Mix)
#3F8CFF (Electric Blue)
#8B5CF6 (Cosmic Violet)
Principled BSDF
Metallic: 0.25
Roughness: 0.18
Clearcoat: 0.4
Clearcoat Roughness: 0.2
Emission
Strength: 1.4
Color: #5EDBFF
Node Notes
• Use Noise Texture → ColorRamp → MixRGB
• Avoid procedural textures that won’t bake to GLB
⸻
Ribbon Material
Base Color: #6FF2FF
Metallic: 0.65
Roughness: 0.12
Emission Strength: 0.8
⸻
Glow Ring Material
Emission Color: #5EEBFF
Emission Strength: 3.5
Alpha: 0.85
Blend Mode: Alpha Blend
Web engines respect emission far better than bloom.
⸻
5. ANIMATION (WEB-SAFE)
Hover Animation (LOOPABLE)
GeoGift_Root
Frame 1: Z = 0.00
Frame 60: Z = 0.03
Frame 120: Z = 0.00
• Ease In/Out
• Total loop: 4 seconds
⸻
Glow Pulse (Emission)
Glow Ring
Emission Strength:
Frame 1: 2.8
Frame 60: 4.2
Frame 120: 2.8
⸻
Lid Reveal (Optional)
Rotation X:
0° → -18°
Duration: 30 frames
Use only if interaction-triggered (click/tap)
⸻
6. COLOR PALETTE (EXACT CODES)
Element Hex
Galaxy Base #0B1D3A
Electric Blue #3F8CFF
Cosmic Violet #8B5CF6
Glow Cyan #5EDBFF
Ribbon Highlight #6FF2FF
UI Accent #00E5FF
⸻
7. BLENDER PYTHON STARTER SCRIPT (AUTO-GENERATE)
Paste into Scripting → Run Script
import bpy
# Clean scene
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete()
# Root
root = bpy.data.objects.new("GeoGift_Root", None)
bpy.context.collection.objects.link(root)
# Cube Body
bpy.ops.mesh.primitive_cube_add(size=0.22)
body = bpy.context.object
body.name = "GiftCube_Body"
body.scale.z = 0.82
body.parent = root
# Lid
bpy.ops.mesh.primitive_cube_add(size=0.23, location=(0,0,0.115))
lid = bpy.context.object
lid.name = "GiftCube_Lid"
lid.scale.z = 0.22
lid.parent = root
# Glow Ring
bpy.ops.mesh.primitive_torus_add(
major_radius=0.20,
minor_radius=0.004,
location=(0,0,0.01)
)
ring = bpy.context.object
ring.name = "Glow_Ring"
ring.parent = root
This script:
• Sets scale correctly
• Creates web-safe geometry
• Establishes parent hierarchy
⸻
8. EXPORT SETTINGS (CRITICAL)
GLB (Primary)
Format: glTF Binary (.glb)
+ Apply Modifiers
+ Include Animations
+ Apply Transform
- Cameras
- Lights
Compression: Draco (optional)
USDZ (Safari AR)
No textures > 2K
No procedural nodes unbaked
Emission only (no bloom)
9. WHY THIS WORKS FOR WEB (NOT APPS)
• No shaders unsupported by WebGL
• Emission-driven glow (cross-platform)
• Single draw-call materials
• Clean node trees
• AR Quick Look compliant