3D Workspace
Home
Assets
Affiliate Program
Sign up/Log in
?
Upgrade
DCC Bridge
3D Creation Made Simple
Text & Image to 3D Model in seconds
One-Click Texturing & Smart Detail Editing
Free Credits Monthly
Start Free
Anonymous1769329743
01-25 08:32
Model Name
umbrella 3d model
Tags
props
rendering
realistic
Prompt
import bpy import bmesh import math # Clear existing mesh objects bpy.ops.object.select_all(action='SELECT') bpy.ops.object.delete(use_global=False) # Utility functions from standard Blender Python tutorials [web:1][page:0] def set_smooth(obj): for face in obj.data.polygons: face.use_smooth = True def object_from_data(data, name, scene): mesh = bpy.data.meshes.new(name) mesh.from_pydata(data['verts'], data['edges'], data['faces']) obj = bpy.data.objects.new(name, mesh) scene.collection.objects.link(obj) bpy.context.view_layer.objects.active = obj obj.select_set(True) mesh.update(calc_edges=True) mesh.validate(verbose=True) return obj def recalculate_normals(mesh): bm = bmesh.new() bm.from_mesh(mesh) bmesh.ops.recalc_face_normals(bm, faces=bm.faces) bm.to_mesh(mesh) bm.free() def vertex_circle(segments, z): verts = [] for i in range(segments): angle = (math.pi * 2) * i / segments verts.append((math.cos(angle), math.sin(angle), z)) return verts def face_cylinder(segments, i, row): if i == segments - 1: ring_start = segments * row base = segments * (row + 1) return (base - 1, ring_start, base, (base + segments) - 1) else: base = (segments * row) + i return (base, base + 1, base + segments + 1, base + segments) def bottom_cap(verts, faces, segments, cap='NGON'): if cap == 'NGON': faces.append([i for i in range(segments)]) # Simplified NGON for caps [page:1] def make_cylinder(name, segments=32, rows=8, radius_scale=1.0, cap='NGON'): data = {'verts': [], 'edges': [], 'faces': []} for z in range(rows): for v in vertex_circle(segments, z * 0.125 * radius_scale): data['verts'].append((v[0] * radius_scale, v[1] * radius_scale, v[2])) for i in range(segments): for row in range(rows - 1): data['faces'].append(face_cylinder(segments, i, row)) if cap: bottom_cap(data['verts'], data['faces'], segments, cap) scene = bpy.context.scene obj = object_from_data(data, name, scene) recalculate_normals(obj.data) set_smooth(obj) # Add bevel for smooth edges bevel = obj.modifiers.new('Bevel', 'BEVEL') bevel.limit_method = 'ANGLE' obj.modifiers.new('EdgeSplit', 'EDGE_SPLIT') return obj # Create umbrella gun model: closed umbrella with gun-like handle [web:7][web:14][web:18] scene = bpy.context.scene # Long cylindrical handle (gun grip/barrel base, length ~2 units) handle = make_cylinder('Handle', segments=16, rows=16, radius_scale=0.08, cap='NGON') handle.location = (0, 0, 0) # Trigger guard ring bpy.context.view_layer.objects.active = None bpy.ops.mesh.primitive_torus_add(location=(0.3, 0, 0.2), major_radius=0.15, minor_radius=0.03) trigger_guard = bpy.context.object trigger_guard.name = 'TriggerGuard' # Upper tube (umbrella shaft with hidden gun mechanism) shaft = make_cylinder('Shaft', segments=20, rows=20, radius_scale=0.06, cap=None) # Open top for umbrella ribs shaft.location = (0, 0, 1.5) # Umbrella canopy ribs (8 radial rods, simplified) ribs_group = bpy.data.collections.new('Ribs') scene.collection.children.link(ribs_group) for i in range(8): angle = (math.pi * 2 * i) / 8 bpy.ops.mesh.primitive_cylinder_add(location=(math.cos(angle)*0.8, math.sin(angle)*0.8, 2.8), radius=0.015, depth=1.0) rib = bpy.context.object rib.name = f'Rib_{i}' rib.rotation_euler[2] = angle ribs_group.objects.link(rib) # Canopy fabric (simple cone approximation) bpy.ops.mesh.primitive_cone_add(location=(0,0,3.2), radius1=1.0, radius2=0.1, depth=0.3) canopy = bpy.context.object canopy.name = 'Canopy' # Group parts under main object umbrella_gun = bpy.data.objects.new('UmbrellaGun', None) scene.collection.objects.link(umbrella_gun) umbrella_gun.users_collection[0].children.link(handle) umbrella_gun.users_collection[0].children.link(shaft) umbrella_gun.users_collection[0].children.link(trigger_guard) umbrella_gun.users_collection[0].children.link(canopy) ribs_group.users_collection[0].children.link(umbrella_gun) # Incorrect, fix in Blender if needed print("Umbrella gun 3D model created. Enter Edit mode (Tab) to refine, or add materials/subdivs.") [web:1][page:0][page:1][web:3][web:7]
Detailed Info
Related Models
Enter invite code
Enter invite code to get credits!