diff --git a/src/product_gen/__pycache__/generate_lamp.cpython-35.pyc b/src/product_gen/__pycache__/generate_lamp.cpython-35.pyc index 90f6010..0287860 100644 Binary files a/src/product_gen/__pycache__/generate_lamp.cpython-35.pyc and b/src/product_gen/__pycache__/generate_lamp.cpython-35.pyc differ diff --git a/src/product_gen/__pycache__/generate_product.cpython-35.pyc b/src/product_gen/__pycache__/generate_product.cpython-35.pyc index 92ae1f9..830b4ce 100644 Binary files a/src/product_gen/__pycache__/generate_product.cpython-35.pyc and b/src/product_gen/__pycache__/generate_product.cpython-35.pyc differ diff --git a/src/product_gen/__pycache__/generate_shades.cpython-35.pyc b/src/product_gen/__pycache__/generate_shades.cpython-35.pyc index e94eb12..e050024 100644 Binary files a/src/product_gen/__pycache__/generate_shades.cpython-35.pyc and b/src/product_gen/__pycache__/generate_shades.cpython-35.pyc differ diff --git a/src/product_gen/generate_lamp.py b/src/product_gen/generate_lamp.py index f6f7f02..47bc5ee 100644 --- a/src/product_gen/generate_lamp.py +++ b/src/product_gen/generate_lamp.py @@ -24,24 +24,27 @@ def generate_models(shape, height, radius): # Base - radius1 = 0.3 - radius2 = 0.07 - depth = 0.5 - location = (0.0, 0.0, height/2.0+depth/2.0) - base = product_gen.generate_lamp_base.generate_cone_base(radius1, - radius2, - depth, - location) - # Chord - radius = 0.05 - height = 6.0 - location = (0.0, 0.0, height/2.0) - chord = product_gen.generate_lamp_base.generate_chord(height, - radius, - location) - models = {shade.name: shade, - chord.name: chord, - base.name: base} + if "bio" not in shape: + radius1 = 0.3 + radius2 = 0.07 + depth = 0.5 + location = (0.0, 0.0, height/2.0+depth/2.0) + base = product_gen.generate_lamp_base.generate_cone_base(radius1, + radius2, + depth, + location) + # Chord + radius = 0.05 + height = 6.0 + location = (0.0, 0.0, height/2.0) + chord = product_gen.generate_lamp_base.generate_chord(height, + radius, + location) + models = {shade.name: shade, + chord.name: chord, + base.name: base} + else: + models = {shade.name: shade} return models def optimize_for_render(models): diff --git a/src/product_gen/generate_product.py b/src/product_gen/generate_product.py index 3bac93d..d902c3c 100644 --- a/src/product_gen/generate_product.py +++ b/src/product_gen/generate_product.py @@ -22,15 +22,17 @@ def generate(shape, product_gen.generate_lamp.optimize_for_render(models) # Set up materials and textures - colormap = {"shade": color, - "base": (132.0/255.0, 64.0/255.0, 11.0/255.0), - "chord": (5.0/255.0, 5.0/255.0, 5.0/255.0)} + if "bio" not in shape: + colormap = {"shade": color, + "base": (132.0/255.0, 64.0/255.0, 11.0/255.0), + "chord": (5.0/255.0, 5.0/255.0, 5.0/255.0)} + else: + colormap = {"shade": color} + product_gen.generate_lamp.apply_textures(colormap, models) rendering.setup_scene.setup_scene() - - # Do rendering prefix = os.getcwd() + "/" + output_prefix + "/" + output_prefix if is_final: diff --git a/src/product_gen/generate_shades.py b/src/product_gen/generate_shades.py index 4fd49e5..e476b0d 100644 --- a/src/product_gen/generate_shades.py +++ b/src/product_gen/generate_shades.py @@ -131,36 +131,14 @@ def generate_mesh_shade(radius1, radius2, depth): ob.select = False bpy.ops.object.join() -# mapped_rad = radius2 + delta**2 -# vert.co.x = mapped_rad*math.sin(theta) -# vert.co.y = mapped_rad*math.cos(theta) -# -# for face in bm.faces: -# if UpOrDown(face.normal): -# face.select = True -# else: -# face.select = False -# faces_select = [f for f in bm.faces if f.select] -# bmesh.ops.delete(bm, geom=faces_select, context=3) -# bmesh.update_edit_mesh(cone.data, True) -# -# # Extrude faces -# bpy.ops.mesh.select_mode( type = 'FACE' ) -# bpy.ops.mesh.select_all( action = 'SELECT' ) -# bpy.ops.mesh.extrude_region_move( -# TRANSFORM_OT_translate={"value":(0, 0, 0.01)} ) -# bpy.ops.mesh.extrude_region_shrink_fatten( -# TRANSFORM_OT_shrink_fatten={"value":-0.05}) - return cube -def generate_bio_shade(radius1, radius2, depth): - - bpy.ops.mesh.primitive_cone_add(radius1=radius1, - radius2=radius2, - depth=depth) - cone = bpy.data.objects["Cone"] - cone.name = "shade" +def make_square_ring(radius, depth, thickness): + + bpy.ops.mesh.primitive_cylinder_add(radius=radius, + depth=depth) + cone = bpy.data.objects["Cylinder"] + cone.name = "square_ring" bpy.ops.object.mode_set(mode='EDIT') bm = bmesh.from_edit_mesh(cone.data) for face in bm.faces: @@ -178,8 +156,41 @@ def generate_bio_shade(radius1, radius2, depth): bpy.ops.mesh.extrude_region_move( TRANSFORM_OT_translate={"value":(0, 0, 0.01)} ) bpy.ops.mesh.extrude_region_shrink_fatten( - TRANSFORM_OT_shrink_fatten={"value":-0.05}) + TRANSFORM_OT_shrink_fatten={"value":-thickness}) bpy.ops.object.mode_set(mode='OBJECT') - return cone + return bpy.data.objects["square_ring"] + +def generate_bio_shade(radius1, radius2, depth): + + ring1 = make_square_ring(3.0*radius1, depth/10.0, 0.2) + bpy.ops.transform.rotate(value=-math.pi/12.0, axis=(1.0,0.0,0.0)) + + ring2 = make_square_ring(1.5*radius1, depth/10.0, 0.2) + bpy.ops.transform.rotate(value=math.pi/12.0, axis=(1.0,0.0,0.0)) + + ring3 = make_square_ring(1.0*radius1, depth/10.0, 0.2) + bpy.ops.transform.rotate(value=-math.pi/8.0, axis=(1.0,0.0,0.0)) + + for ob in bpy.context.scene.objects: + if ob.type == 'MESH': + ob.select = True + bpy.context.scene.objects.active = ob + else: + ob.select = False + bpy.ops.object.join() + + bpy.context.scene.objects.active = bpy.data.objects["square_ring"] + bpy.data.objects["square_ring"].name = "shade" + + ring1 = make_square_ring(3.0*radius1+0.01, depth/16.0, 0.2) + bpy.ops.transform.rotate(value=-math.pi/12.0, axis=(1.0,0.0,0.0)) + + ring2 = make_square_ring(1.5*radius1+0.01, depth/16.0, 0.2) + bpy.ops.transform.rotate(value=math.pi/12.0, axis=(1.0,0.0,0.0)) + + ring3 = make_square_ring(1.1*radius1+0.01, depth/16.0, 0.2) + bpy.ops.transform.rotate(value=-math.pi/8.0, axis=(1.0,0.0,0.0)) + + return bpy.data.objects["shade"] diff --git a/test/test/test.blend b/test/test/test.blend index c14d32d..a94e527 100644 Binary files a/test/test/test.blend and b/test/test/test.blend differ diff --git a/test/test/test.blend1 b/test/test/test.blend1 index 5d8e9ea..045ed54 100644 Binary files a/test/test/test.blend1 and b/test/test/test.blend1 differ diff --git a/test/test/test.json b/test/test/test.json index fb87be3..8dec8eb 100644 --- a/test/test/test.json +++ b/test/test/test.json @@ -1 +1 @@ -{"color": [0.1, 0.1, 0.1], "shape": "mesh", "radius": 0.8, "height": 1.5} \ No newline at end of file +{"height": 1.5, "radius": 1.5, "color": [0.1, 0.1, 0.1], "shape": "bio"} \ No newline at end of file diff --git a/test/test/test.png b/test/test/test.png index 24d4089..5915d65 100644 Binary files a/test/test/test.png and b/test/test/test.png differ diff --git a/test/test_generate_lamp.py b/test/test_generate_lamp.py index 44c8f60..6e98f9e 100644 --- a/test/test_generate_lamp.py +++ b/test/test_generate_lamp.py @@ -7,14 +7,14 @@ from argparse import ArgumentParser if __name__ == "__main__": - shape = "mesh" + shape = "bio" output = "test" if not os.path.exists(os.getcwd() + "/" + output): os.makedirs(os.getcwd() + "/" + output) height = 1.5 - radius = 0.8 + radius = 1.5 color = [0.1, 0.1, 0.1] product_gen.generate_product.generate(shape, height, radius, color, output)