3D Workspace
Home
Assets
Affiliate Program
Sign up/Log in
?
Upgrade
DCC Bridge
Anonymous1769329743
01-25 08:34
Model Name
umbrella gun 3d model
Tags
game asset
game asset sci fi
import bpy
sci fi
weapon
weapon game asset
weapon game asset sci fi
weapon sci fi
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!